draft-ietf-masque-ip-proxy-reqs-01.txt   draft-ietf-masque-ip-proxy-reqs-02.txt 
Network Working Group A. Chernyakhovsky Network Working Group A. Chernyakhovsky
Internet-Draft D. McCall Internet-Draft D. McCall
Intended status: Informational D. Schinazi Intended status: Informational D. Schinazi
Expires: 12 July 2021 Google LLC Expires: 1 November 2021 Google LLC
8 January 2021 30 April 2021
Requirements for a MASQUE Protocol to Proxy IP Traffic Requirements for a MASQUE Protocol to Proxy IP Traffic
draft-ietf-masque-ip-proxy-reqs-01 draft-ietf-masque-ip-proxy-reqs-02
Abstract Abstract
There is interest among MASQUE working group participants in There is interest among MASQUE working group participants in
designing a protocol that can proxy IP traffic over HTTP. This designing a protocol that can proxy IP traffic over HTTP. This
document describes the set of requirements for such a protocol. document describes the set of requirements for such a protocol.
Discussion of this work is encouraged to happen on the MASQUE IETF Discussion of this work is encouraged to happen on the MASQUE IETF
mailing list masque@ietf.org or on the GitHub repository which mailing list masque@ietf.org or on the GitHub repository which
contains the draft: https://github.com/ietf-wg-masque/draft-ietf- contains the draft: https://github.com/ietf-wg-masque/draft-ietf-
skipping to change at page 1, line 45 skipping to change at page 1, line 45
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 12 July 2021. This Internet-Draft will expire on 1 November 2021.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
skipping to change at page 2, line 41 skipping to change at page 2, line 41
3.2. Proxying of IP packets . . . . . . . . . . . . . . . . . 5 3.2. Proxying of IP packets . . . . . . . . . . . . . . . . . 5
3.3. Maximum Transmission Unit . . . . . . . . . . . . . . . . 5 3.3. Maximum Transmission Unit . . . . . . . . . . . . . . . . 5
3.4. IP Assignment . . . . . . . . . . . . . . . . . . . . . . 5 3.4. IP Assignment . . . . . . . . . . . . . . . . . . . . . . 5
3.5. Route Negotiation . . . . . . . . . . . . . . . . . . . . 5 3.5. Route Negotiation . . . . . . . . . . . . . . . . . . . . 5
3.6. Identity . . . . . . . . . . . . . . . . . . . . . . . . 6 3.6. Identity . . . . . . . . . . . . . . . . . . . . . . . . 6
3.7. Transport Security . . . . . . . . . . . . . . . . . . . 6 3.7. Transport Security . . . . . . . . . . . . . . . . . . . 6
3.8. Flow Control . . . . . . . . . . . . . . . . . . . . . . 6 3.8. Flow Control . . . . . . . . . . . . . . . . . . . . . . 6
3.9. Indistinguishability . . . . . . . . . . . . . . . . . . 6 3.9. Indistinguishability . . . . . . . . . . . . . . . . . . 6
3.10. Support HTTP/2 and HTTP/3 . . . . . . . . . . . . . . . . 6 3.10. Support HTTP/2 and HTTP/3 . . . . . . . . . . . . . . . . 6
3.11. Multiplexing . . . . . . . . . . . . . . . . . . . . . . 6 3.11. Multiplexing . . . . . . . . . . . . . . . . . . . . . . 6
3.12. Statefulness . . . . . . . . . . . . . . . . . . . . . . 7
4. Extensibility . . . . . . . . . . . . . . . . . . . . . . . . 7 4. Extensibility . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1. Load balancing . . . . . . . . . . . . . . . . . . . . . 7 4.1. Authentication . . . . . . . . . . . . . . . . . . . . . 7
4.2. Authentication . . . . . . . . . . . . . . . . . . . . . 7 4.2. Reliable Transmission of IP Packets . . . . . . . . . . . 7
4.3. Reliable Transmission of IP Packets . . . . . . . . . . . 7 4.3. Configuration of Congestion and Flow Control . . . . . . 7
4.4. Configuration of Congestion and Flow Control . . . . . . 7 4.4. Data Transport Compression . . . . . . . . . . . . . . . 8
4.5. Data Transport Compression . . . . . . . . . . . . . . . 8
5. Non-requirements . . . . . . . . . . . . . . . . . . . . . . 8 5. Non-requirements . . . . . . . . . . . . . . . . . . . . . . 8
5.1. Addressing Architecture . . . . . . . . . . . . . . . . . 8 5.1. Addressing Architecture . . . . . . . . . . . . . . . . . 8
5.2. Translation . . . . . . . . . . . . . . . . . . . . . . . 8 5.2. Translation . . . . . . . . . . . . . . . . . . . . . . . 8
5.3. IP Packet Extraction . . . . . . . . . . . . . . . . . . 9 5.3. IP Packet Extraction . . . . . . . . . . . . . . . . . . 9
6. Security Considerations . . . . . . . . . . . . . . . . . . . 9 6. Security Considerations . . . . . . . . . . . . . . . . . . . 9
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 9 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 9
References . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Normative References . . . . . . . . . . . . . . . . . . . . . 9 Normative References . . . . . . . . . . . . . . . . . . . . . 9
Informative References . . . . . . . . . . . . . . . . . . . . 10 Informative References . . . . . . . . . . . . . . . . . . . . 10
skipping to change at page 5, line 20 skipping to change at page 5, line 20
3.1. IP Session Establishment 3.1. IP Session Establishment
The protocol will allow the client to request establishment of an IP The protocol will allow the client to request establishment of an IP
Session, along with configuration options and one or more associated Session, along with configuration options and one or more associated
Data Transports. The server will have the ability to accept or deny Data Transports. The server will have the ability to accept or deny
the client's request. the client's request.
3.2. Proxying of IP packets 3.2. Proxying of IP packets
The protocol will establish Data Transports, which will be able to The protocol will establish Data Transports, which will be able to
forward IP packets. The Data Transports MUST be able to forward forward IP packets. The Data Transports MUST be able to take IP
packets in their unmodified entirety, although extensions may enable datagrams input on one side and egress them unmodified in their
the use of modified packet formats (e.g., compression). The protocol entirety on the other side, although extensions may enable IP packets
will support both IPv6 [IPV6] and IPv4 [IPV4]. to be modified in transit. The protocol will support both IPv6
[IPV6] and IPv4 [IPV4].
3.3. Maximum Transmission Unit 3.3. Maximum Transmission Unit
The protocol will allow endpoints to inform each other of the Maximum The protocol will allow endpoints to inform each other of the Maximum
Transmission Unit (MTU) they are willing to forward. This will allow Transmission Unit (MTU) they are willing to forward. This will allow
avoiding IP fragmentation, especially as IPv6 does not allow IP avoiding IP fragmentation, especially as IPv6 does not allow IP
fragmentation by nodes along the path. fragmentation by nodes along the path.
3.4. IP Assignment 3.4. IP Assignment
skipping to change at page 5, line 47 skipping to change at page 5, line 48
client, or decline the request. For symmetry, the server may request client, or decline the request. For symmetry, the server may request
assignment of an IP address range from the client, and the client assignment of an IP address range from the client, and the client
will either assign a range or decline the request. will either assign a range or decline the request.
3.5. Route Negotiation 3.5. Route Negotiation
At any point in an IP Session (not limited to its initial At any point in an IP Session (not limited to its initial
negotiation), the protocol will allow both client and server to negotiation), the protocol will allow both client and server to
inform its peer that it can route a set of IP prefixes. Both inform its peer that it can route a set of IP prefixes. Both
endpoints can also request a route to a given prefix, and the peer endpoints can also request a route to a given prefix, and the peer
can choose to provide that route or not. can choose to provide that route or not. This can be used to inform
peers of a default route for all prefixes.
Note that if an endpoint provides its peer with a route, the peer is Note that if an endpoint provides its peer with a route, the peer is
in no way obligated to route its traffic through the endpoint. in no way obligated to route its traffic through the endpoint.
3.6. Identity 3.6. Identity
When negotiating the creation of an IP Session, the protocol will When negotiating the creation of an IP Session, the protocol will
allow both endpoints to exchange an identifier. As examples, the allow both endpoints to exchange an identifier. As examples, the
identity could be a user name, an email address, a token, or a fully- identity could be a user name, an email address, a token, or a fully-
qualified domain name. Note that this requirement does not cover qualified domain name. Note that this requirement does not cover
skipping to change at page 6, line 42 skipping to change at page 6, line 42
the traffic. Specifically, any data sent unencrypted (such as the traffic. Specifically, any data sent unencrypted (such as
headers, or parts of the handshake) should look like the same headers, or parts of the handshake) should look like the same
unencrypted data that would be present for Web traffic. Traffic unencrypted data that would be present for Web traffic. Traffic
analysis is out of scope for this requirement. analysis is out of scope for this requirement.
3.10. Support HTTP/2 and HTTP/3 3.10. Support HTTP/2 and HTTP/3
The IP proxying protocol discussed in this document will run over The IP proxying protocol discussed in this document will run over
HTTP. The protocol SHOULD strongly prefer to use HTTP/3 [H3] and HTTP. The protocol SHOULD strongly prefer to use HTTP/3 [H3] and
SHOULD use the QUIC DATAGRAM frames [DGRAM] when available to improve SHOULD use the QUIC DATAGRAM frames [DGRAM] when available to improve
performance. The protocol SHOULD also support HTTP/2 [H2] as a performance. The protocol MUST also support HTTP/2 [H2] as a
fallback when UDP is blocked on the network path. Proxying IP over fallback when UDP is blocked on the network path. Proxying IP over
HTTP/2 MAY result in lower performance than over HTTP/3. HTTP/2 MAY result in lower performance than over HTTP/3.
3.11. Multiplexing 3.11. Multiplexing
Since recent HTTP versions support concurrently running multiple Since recent HTTP versions support concurrently running multiple
requests over the same connection, the protocol SHOULD support requests over the same connection, the protocol SHOULD support
multiple independent instances of IP proxying over a given HTTP multiple independent instances of IP proxying over a given HTTP
connection. connection.
3.12. Statefulness
The protocol should limit the amount of state a MASQUE client or
server needs to operate. Keeping minimal state simplifies
reconnection in the presence of failures and can facilitate
extensibility.
4. Extensibility 4. Extensibility
The protocol will provide a mechanism by which clients and servers The protocol will provide a mechanism by which clients and servers
can add extension information to the exchange that establishes the IP can add extension information to the exchange that establishes the IP
Session. If the solution uses an HTTP request and response, this Session. If the solution uses an HTTP request and response, this
could be accomplished using HTTP headers. could be accomplished using HTTP headers.
Once the IP Session is established, the protocol will provide a Once the IP Session is established, the protocol will provide a
mechanism that allows reliably exchanging extension messages in both mechanism that allows reliably exchanging extension messages in both
directions at any point in the lifetime of the IP Session. directions at any point in the lifetime of the IP Session.
The subsections below list possible extensions that designers of the The subsections below list possible extensions that designers of the
protocol will keep in mind to ensure it will be possible to design protocol will keep in mind to ensure it will be possible to design
such extensions. such extensions.
4.1. Load balancing 4.1. Authentication
This extension would allow for load balancing of the traffic sent
across the IP Session, such as to another server. This allows the IP
proxying mechanisms to scale-out to multiple servers.
4.2. Authentication
Since the protocol will offer a way to convey identity, extensions Since the protocol will offer a way to convey identity, extensions
will allow authenticating that identity, from both the client and will allow authenticating that identity, from both the client and
server, during the establishment of the IP Session. For example, an server, during the establishment of the IP Session. For example, an
extension could allow a client to offer an OAuth Access Token [OAUTH] extension could allow a client to offer an OAuth Access Token [OAUTH]
when requesting an IP Session. As another example, another extension when requesting an IP Session. As another example, another extension
could allow an endpoint to demonstrate knowledge of a cryptographic could allow an endpoint to demonstrate knowledge of a cryptographic
secret. secret.
4.3. Reliable Transmission of IP Packets 4.2. Reliable Transmission of IP Packets
While it is desirable to transmit IP packets unreliably in most While it is desirable to transmit IP packets unreliably in most
cases, an extension could provide a mechanism to allow forwarding cases, an extension could provide a mechanism to allow forwarding
some packets reliably. For example, when using HTTP/3, this can be some packets reliably. For example, when using HTTP/3, this can be
accomplished by allowing Data Transports to run over both DATAGRAM accomplished by allowing Data Transports to run over both DATAGRAM
and STREAM frames. and STREAM frames.
4.4. Configuration of Congestion and Flow Control 4.3. Configuration of Congestion and Flow Control
An extension will allow exchanging congestion and flow control An extension will allow exchanging congestion and flow control
parameters to improve performance. For example, an extension could parameters to improve performance. For example, an extension could
disable congestion control for non-retransmitted Data Transports if disable congestion control for non-retransmitted Data Transports if
it knows that the proxied traffic is itself congestion-controlled. it knows that the proxied traffic is itself congestion-controlled.
4.5. Data Transport Compression 4.4. Data Transport Compression
While the core protocol Data Transports will transmit IP packets in While the core protocol Data Transports will transmit IP packets in
their unmodified entirety, an extension can allow compressing these their unmodified entirety, an extension can allow compressing these
packets. packets.
5. Non-requirements 5. Non-requirements
This section discusses topics that are explicitly out of scope for This section discusses topics that are explicitly out of scope for
the IP Proxying protocol. These topics MAY be handled by the IP Proxying protocol. These topics MAY be handled by
implementers or future extensions. implementers or future extensions.
skipping to change at page 8, line 30 skipping to change at page 8, line 30
allows IP proxying. It does not discuss how the IPs assigned are allows IP proxying. It does not discuss how the IPs assigned are
determined, managed, or translated. While these details are determined, managed, or translated. While these details are
important for producing a functional system, they do not need to be important for producing a functional system, they do not need to be
handled by the protocol beyond the ability to convey those handled by the protocol beyond the ability to convey those
assignments. assignments.
Similarly, "ownership" of an IP range is out of scope. If an Similarly, "ownership" of an IP range is out of scope. If an
endpoint communicates to its peer that it can allocate addresses from endpoint communicates to its peer that it can allocate addresses from
a range, or route traffic to a range, the peer has no obligation to a range, or route traffic to a range, the peer has no obligation to
trust that information. Whether or not to trust this information is trust that information. Whether or not to trust this information is
left to individual implementations and deployments. left to individual implementations and extensions: the protocol will
be extensible enough to allow the development of extensions that
assist in assessing this trust.
5.2. Translation 5.2. Translation
Some servers may wish to perform Network Address Translation (NAT) or Some servers may wish to perform Network Address Translation (NAT) or
any other modification to packets they forward. Doing so is out of any other modification to packets they forward. Doing so is out of
scope for the proxying protocol. In particular, the ability to scope for the proxying protocol. In particular, the ability to
discover the presence of a NAT, negotiate NAT bindings, or check discover the presence of a NAT, negotiate NAT bindings, or check
connectivity through a NAT is explicitly out of scope and left to connectivity through a NAT is explicitly out of scope and left to
future extensions. future extensions.
skipping to change at page 9, line 34 skipping to change at page 9, line 34
The authors would like to thank participants of the MASQUE working The authors would like to thank participants of the MASQUE working
group for their feedback. group for their feedback.
References References
Normative References Normative References
[DGRAM] Pauly, T., Kinnear, E., and D. Schinazi, "An Unreliable [DGRAM] Pauly, T., Kinnear, E., and D. Schinazi, "An Unreliable
Datagram Extension to QUIC", Work in Progress, Internet- Datagram Extension to QUIC", Work in Progress, Internet-
Draft, draft-ietf-quic-datagram-01, 24 August 2020, Draft, draft-ietf-quic-datagram-02, 16 February 2021,
<http://www.ietf.org/internet-drafts/draft-ietf-quic- <https://tools.ietf.org/html/draft-ietf-quic-datagram-02>.
datagram-01.txt>.
[H2] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext [H2] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext
Transfer Protocol Version 2 (HTTP/2)", RFC 7540, Transfer Protocol Version 2 (HTTP/2)", RFC 7540,
DOI 10.17487/RFC7540, May 2015, DOI 10.17487/RFC7540, May 2015,
<https://www.rfc-editor.org/info/rfc7540>. <https://www.rfc-editor.org/rfc/rfc7540>.
[H3] Bishop, M., "Hypertext Transfer Protocol Version 3 [H3] Bishop, M., "Hypertext Transfer Protocol Version 3
(HTTP/3)", Work in Progress, Internet-Draft, draft-ietf- (HTTP/3)", Work in Progress, Internet-Draft, draft-ietf-
quic-http-33, 15 December 2020, <http://www.ietf.org/ quic-http-34, 2 February 2021,
internet-drafts/draft-ietf-quic-http-33.txt>. <https://tools.ietf.org/html/draft-ietf-quic-http-34>.
[IPV4] Postel, J., "Internet Protocol", STD 5, RFC 791, [IPV4] Postel, J., "Internet Protocol", STD 5, RFC 791,
DOI 10.17487/RFC0791, September 1981, DOI 10.17487/RFC0791, September 1981,
<https://www.rfc-editor.org/info/rfc791>. <https://www.rfc-editor.org/rfc/rfc791>.
[IPV6] Deering, S. and R. Hinden, "Internet Protocol, Version 6 [IPV6] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", STD 86, RFC 8200, (IPv6) Specification", STD 86, RFC 8200,
DOI 10.17487/RFC8200, July 2017, DOI 10.17487/RFC8200, July 2017,
<https://www.rfc-editor.org/info/rfc8200>. <https://www.rfc-editor.org/rfc/rfc8200>.
[QUIC] Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed [QUIC] Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed
and Secure Transport", Work in Progress, Internet-Draft, and Secure Transport", Work in Progress, Internet-Draft,
draft-ietf-quic-transport-33, 13 December 2020, draft-ietf-quic-transport-34, 14 January 2021,
<http://www.ietf.org/internet-drafts/draft-ietf-quic- <https://tools.ietf.org/html/draft-ietf-quic-transport-
transport-33.txt>. 34>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.
[TLS] Rescorla, E., "The Transport Layer Security (TLS) Protocol [TLS] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>. <https://www.rfc-editor.org/rfc/rfc8446>.
Informative References Informative References
[CONNECT-UDP] [CONNECT-UDP]
Schinazi, D., "The CONNECT-UDP HTTP Method", Work in Schinazi, D., "The CONNECT-UDP HTTP Method", Work in
Progress, Internet-Draft, draft-ietf-masque-connect-udp- Progress, Internet-Draft, draft-ietf-masque-connect-udp-
03, 5 January 2021, <http://www.ietf.org/internet-drafts/ 03, 5 January 2021, <https://tools.ietf.org/html/draft-
draft-ietf-masque-connect-udp-03.txt>. ietf-masque-connect-udp-03>.
[IKEV2] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. [IKEV2] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T.
Kivinen, "Internet Key Exchange Protocol Version 2 Kivinen, "Internet Key Exchange Protocol Version 2
(IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October
2014, <https://www.rfc-editor.org/info/rfc7296>. 2014, <https://www.rfc-editor.org/rfc/rfc7296>.
[OAUTH] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", [OAUTH] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework",
RFC 6749, DOI 10.17487/RFC6749, October 2012, RFC 6749, DOI 10.17487/RFC6749, October 2012,
<https://www.rfc-editor.org/info/rfc6749>. <https://www.rfc-editor.org/rfc/rfc6749>.
Authors' Addresses Authors' Addresses
Alex Chernyakhovsky Alex Chernyakhovsky
Google LLC Google LLC
1600 Amphitheatre Parkway 1600 Amphitheatre Parkway
Mountain View, California 94043, Mountain View, California 94043,
United States of America United States of America
Email: achernya@google.com Email: achernya@google.com
 End of changes. 26 change blocks. 
44 lines changed or deleted 48 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/