draft-ietf-masque-connect-udp-01.txt | draft-ietf-masque-connect-udp-02.txt | |||
---|---|---|---|---|
Network Working Group D. Schinazi | Network Working Group D. Schinazi | |||
Internet-Draft Google LLC | Internet-Draft Google LLC | |||
Intended status: Standards Track 12 December 2020 | Intended status: Standards Track 30 December 2020 | |||
Expires: 15 June 2021 | Expires: 3 July 2021 | |||
The CONNECT-UDP HTTP Method | The CONNECT-UDP HTTP Method | |||
draft-ietf-masque-connect-udp-01 | draft-ietf-masque-connect-udp-02 | |||
Abstract | Abstract | |||
This document describes the CONNECT-UDP HTTP method. CONNECT-UDP is | This document describes the CONNECT-UDP HTTP method. CONNECT-UDP is | |||
similar to the HTTP CONNECT method, but it uses UDP instead of TCP. | similar to the HTTP CONNECT method, but it uses UDP instead of TCP. | |||
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- | |||
masque-connect-udp. | masque-connect-udp. | |||
skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
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 15 June 2021. | This Internet-Draft will expire on 3 July 2021. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 21 ¶ | skipping to change at page 2, line 21 ¶ | |||
as described in Section 4.e of the Trust Legal Provisions and are | as described in Section 4.e of the Trust Legal Provisions and are | |||
provided without warranty as described in the Simplified BSD License. | provided without warranty as described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Conventions and Definitions . . . . . . . . . . . . . . . 2 | 1.1. Conventions and Definitions . . . . . . . . . . . . . . . 2 | |||
2. Supported HTTP Versions . . . . . . . . . . . . . . . . . . . 3 | 2. Supported HTTP Versions . . . . . . . . . . . . . . . . . . . 3 | |||
3. The CONNECT-UDP Method . . . . . . . . . . . . . . . . . . . 3 | 3. The CONNECT-UDP Method . . . . . . . . . . . . . . . . . . . 3 | |||
4. Datagram Encoding of Proxied UDP Packets . . . . . . . . . . 4 | 4. Datagram Encoding of Proxied UDP Packets . . . . . . . . . . 4 | |||
5. Stream Encoding of Proxied UDP Packets . . . . . . . . . . . 5 | 5. Stream Chunks . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
6. Proxy Handling . . . . . . . . . . . . . . . . . . . . . . . 6 | 6. Stream Encoding of Proxied UDP Packets . . . . . . . . . . . 6 | |||
7. HTTP Intermediaries . . . . . . . . . . . . . . . . . . . . . 6 | 7. Proxy Handling . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
8. Performance Considerations . . . . . . . . . . . . . . . . . 7 | 8. HTTP Intermediaries . . . . . . . . . . . . . . . . . . . . . 6 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 9. Performance Considerations . . . . . . . . . . . . . . . . . 7 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
10.1. HTTP Method . . . . . . . . . . . . . . . . . . . . . . 8 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
10.2. URI Scheme Registration . . . . . . . . . . . . . . . . 8 | 11.1. HTTP Method . . . . . . . . . . . . . . . . . . . . . . 8 | |||
10.3. Stream Chunk Type Registration . . . . . . . . . . . . . 8 | 11.2. URI Scheme Registration . . . . . . . . . . . . . . . . 8 | |||
11. Normative References . . . . . . . . . . . . . . . . . . . . 9 | 11.3. Stream Chunk Type Registration . . . . . . . . . . . . . 8 | |||
12. Normative References . . . . . . . . . . . . . . . . . . . . 9 | ||||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 10 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
1. Introduction | 1. Introduction | |||
This document describes the CONNECT-UDP HTTP method. CONNECT-UDP is | This document describes the CONNECT-UDP HTTP method. CONNECT-UDP is | |||
similar to the HTTP CONNECT method (see section 4.3.6 of [RFC7231]), | similar to the HTTP CONNECT method (see section 4.3.6 of [RFC7231]), | |||
but it uses UDP [UDP] instead of TCP [TCP]. | but it uses UDP [UDP] instead of TCP [TCP]. | |||
Discussion of this work is encouraged to happen on the MASQUE IETF | Discussion of this work is encouraged to happen on the MASQUE IETF | |||
skipping to change at page 5, line 30 ¶ | skipping to change at page 5, line 30 ¶ | |||
echoing the "Datagram-Flow-Id" header. If the proxy does this, it | echoing the "Datagram-Flow-Id" header. If the proxy does this, it | |||
MUST NOT treat receipt of datagrams as an error, because the client | MUST NOT treat receipt of datagrams as an error, because the client | |||
could have sent them optimistically before receiving the response. | could have sent them optimistically before receiving the response. | |||
In this scenario, the proxy MUST discard those datagrams. | In this scenario, the proxy MUST discard those datagrams. | |||
Extensions to CONNECT-UDP MAY leverage parameters on the "Datagram- | Extensions to CONNECT-UDP MAY leverage parameters on the "Datagram- | |||
Flow-Id" header (parameters are defined in Section 3.1.2 of | Flow-Id" header (parameters are defined in Section 3.1.2 of | |||
[STRUCT-HDR]). Proxies MUST NOT echo parameters on the "Datagram- | [STRUCT-HDR]). Proxies MUST NOT echo parameters on the "Datagram- | |||
Flow-Id" header if it does not understand their semantics. | Flow-Id" header if it does not understand their semantics. | |||
5. Stream Encoding of Proxied UDP Packets | 5. Stream Chunks | |||
If HTTP/3 datagrams are not supported, the stream is used to convey | The bidirectional stream that the CONNECT-UDP request was sent on is | |||
UDP payloads, by using the following format (using the notation from | a sequence of CONNECT-UDP Stream Chunks, which are defined as a | |||
the "Notational Conventions" section of [QUIC]): | sequence of type-length-value tuples using the following format | |||
(using the notation from the "Notational Conventions" section of | ||||
[QUIC]): | ||||
CONNECT-UDP Stream { | ||||
CONNECT-UDP Stream Chunk (..) ..., | ||||
} | ||||
Figure 1: CONNECT-UDP Stream Format | ||||
CONNECT-UDP Stream Chunk { | CONNECT-UDP Stream Chunk { | |||
CONNECT-UDP Stream Chunk Type (i) = 0x00, | CONNECT-UDP Stream Chunk Type (i), | |||
UDP Payload Length (i), | CONNECT-UDP Stream Chunk Length (i), | |||
UDP Payload (..), | CONNECT-UDP Stream Chunk Value (..), | |||
} | } | |||
Figure 1: CONNECT-UDP Stream Chunk Format | Figure 2: CONNECT-UDP Stream Chunk Format | |||
CONNECT-UDP Stream Chunk Type: A variable-length integer indicating | CONNECT-UDP Stream Chunk Type: A variable-length integer indicating | |||
the Type of the CONNECT-UDP Stream Chunk, set to 0x00 to indicate | the Type of the CONNECT-UDP Stream Chunk. Endpoints that receive | |||
a UDP Payload. | a chunk with an unknown CONNECT-UDP Stream Chunk Type MUST | |||
silently skip over that chunk. | ||||
UDP Payload Length: The length of the UDP Payload field following | CONNECT-UDP Stream Chunk Length: The length of the CONNECT-UDP | |||
this field. | Stream Chunk Value field following this field. Note that this | |||
field can have a value of zero. | ||||
UDP Payload: The payload of the UDP datagram. | CONNECT-UDP Stream Chunk Value: The payload of this chunk. Its | |||
semantics are determined by the value of the CONNECT-UDP Stream | ||||
Chunk Type field. | ||||
The bidirectional stream that the CONNECT-UDP request was sent on is | 6. Stream Encoding of Proxied UDP Packets | |||
a sequence of CONNECT-UDP Stream Chunks. The CONNECT-UDP Stream | ||||
Chunk Type is designed to allow future extensibility. Endpoints that | ||||
receive a chunk with an unknown CONNECT-UDP Stream Chunk Type MUST | ||||
silently skip over that chunk. | ||||
6. Proxy Handling | CONNECT-UDP Stream Chunks can be used to convey UDP payloads, by | |||
using a CONNECT-UDP Stream Chunk Type of UDP_PACKET (value 0x00). | ||||
The payload of UDP packets is encoded in its unmodified entirety in | ||||
the CONNECT-UDP Stream Chunk Value field. This is necessary when the | ||||
version of HTTP in use does not support QUIC DATAGRAM frames, but MAY | ||||
also be used when datagrams are supported. Note that empty UDP | ||||
payloads are allowed. | ||||
7. Proxy Handling | ||||
Unlike TCP, UDP is connection-less. The proxy that opens the UDP | Unlike TCP, UDP is connection-less. The proxy that opens the UDP | |||
socket has no way of knowing whether the destination is reachable. | socket has no way of knowing whether the destination is reachable. | |||
Therefore it needs to respond to the CONNECT-UDP request without | Therefore it needs to respond to the CONNECT-UDP request without | |||
waiting for a TCP SYN-ACK. | waiting for a TCP SYN-ACK. | |||
Proxies can use connected UDP sockets if their operating system | Proxies can use connected UDP sockets if their operating system | |||
supports them, as that allows the proxy to rely on the kernel to only | supports them, as that allows the proxy to rely on the kernel to only | |||
send it UDP packets that match the correct 5-tuple. If the proxy | send it UDP packets that match the correct 5-tuple. If the proxy | |||
uses a non-connected socket, it MUST validate the IP source address | uses a non-connected socket, it MUST validate the IP source address | |||
and UDP source port on received packets to ensure they match the | and UDP source port on received packets to ensure they match the | |||
client's CONNECT-UDP request. Packets that do not match MUST be | client's CONNECT-UDP request. Packets that do not match MUST be | |||
discarded by the proxy. | discarded by the proxy. | |||
The lifetime of the socket is tied to the CONNECT-UDP stream. The | The lifetime of the socket is tied to the CONNECT-UDP stream. The | |||
proxy MUST keep the socket open while the CONNECT-UDP stream is open. | proxy MUST keep the socket open while the CONNECT-UDP stream is open. | |||
Proxies MAY choose to close sockets due to a period of inactivity, | Proxies MAY choose to close sockets due to a period of inactivity, | |||
but they MUST close the CONNECT-UDP stream before closing the socket. | but they MUST close the CONNECT-UDP stream before closing the socket. | |||
7. HTTP Intermediaries | 8. HTTP Intermediaries | |||
HTTP/3 DATAGRAM flow identifiers are specific to a given HTTP/3 | HTTP/3 DATAGRAM flow identifiers are specific to a given HTTP/3 | |||
connection. However, in some cases, an HTTP request may travel | connection. However, in some cases, an HTTP request may travel | |||
across multiple HTTP connections if there are HTTP intermediaries | across multiple HTTP connections if there are HTTP intermediaries | |||
involved; see Section 2.3 of [RFC7230]. | involved; see Section 2.3 of [RFC7230]. | |||
Intermediaries that support both CONNECT-UDP and HTTP/3 datagrams | Intermediaries that support both CONNECT-UDP and HTTP/3 datagrams | |||
MUST negotiate flow identifiers separately on the client-facing and | MUST negotiate flow identifiers separately on the client-facing and | |||
server-facing connections. This is accomplished by having the | server-facing connections. This is accomplished by having the | |||
intermediary parse the "Datagram-Flow-Id" header on all CONNECT-UDP | intermediary parse the "Datagram-Flow-Id" header on all CONNECT-UDP | |||
skipping to change at page 7, line 22 ¶ | skipping to change at page 7, line 22 ¶ | |||
they are supported (as indicated by the H3_DATAGRAM SETTINGS | they are supported (as indicated by the H3_DATAGRAM SETTINGS | |||
parameter), the intermediary uses its own flow identifier allocation | parameter), the intermediary uses its own flow identifier allocation | |||
service to allocate a flow identifier for the server-facing | service to allocate a flow identifier for the server-facing | |||
connection, and waits for the server's reply to see if the server | connection, and waits for the server's reply to see if the server | |||
sent the "Datagram-Flow-Id" header on the response. The intermediary | sent the "Datagram-Flow-Id" header on the response. The intermediary | |||
then translates datagrams between the two connections by using the | then translates datagrams between the two connections by using the | |||
flow identifier specific to that connection. An intermediary MAY | flow identifier specific to that connection. An intermediary MAY | |||
also choose to use datagrams on only one of the two connections, and | also choose to use datagrams on only one of the two connections, and | |||
translate between datagrams and streams. | translate between datagrams and streams. | |||
8. Performance Considerations | 9. Performance Considerations | |||
Proxies SHOULD strive to avoid increasing burstiness of UDP traffic: | Proxies SHOULD strive to avoid increasing burstiness of UDP traffic: | |||
they SHOULD NOT queue packets in order to increase batching. | they SHOULD NOT queue packets in order to increase batching. | |||
When the protocol running over UDP that is being proxied uses | When the protocol running over UDP that is being proxied uses | |||
congestion control (e.g., [QUIC]), the proxied traffic will incur at | congestion control (e.g., [QUIC]), the proxied traffic will incur at | |||
least two nested congestion controllers. This can reduce performance | least two nested congestion controllers. This can reduce performance | |||
but the underlying HTTP connection MUST NOT disable congestion | but the underlying HTTP connection MUST NOT disable congestion | |||
control unless it has an out-of-band way of knowing with absolute | control unless it has an out-of-band way of knowing with absolute | |||
certainty that the inner traffic is congestion-controlled. | certainty that the inner traffic is congestion-controlled. | |||
When the protocol running over UDP that is being proxied uses loss | When the protocol running over UDP that is being proxied uses loss | |||
recovery (e.g., [QUIC]), and the underlying HTTP connection runs over | recovery (e.g., [QUIC]), and the underlying HTTP connection runs over | |||
TCP, the proxied traffic will incur at least two nested loss recovery | TCP, the proxied traffic will incur at least two nested loss recovery | |||
mechanisms. This can reduce performance as both can sometimes | mechanisms. This can reduce performance as both can sometimes | |||
independently retransmit the same data. To avoid this, HTTP/3 | independently retransmit the same data. To avoid this, HTTP/3 | |||
datagrams SHOULD be used. | datagrams SHOULD be used. | |||
9. Security Considerations | 10. Security Considerations | |||
There are significant risks in allowing arbitrary clients to | There are significant risks in allowing arbitrary clients to | |||
establish a tunnel to arbitrary servers, as that could allow bad | establish a tunnel to arbitrary servers, as that could allow bad | |||
actors to send traffic and have it attributed to the proxy. Proxies | actors to send traffic and have it attributed to the proxy. Proxies | |||
that support CONNECT-UDP SHOULD restrict its use to authenticated | that support CONNECT-UDP SHOULD restrict its use to authenticated | |||
users. | users. | |||
Because the CONNECT method creates a TCP connection to the target, | Because the CONNECT method creates a TCP connection to the target, | |||
the target has to indicate its willingness to accept TCP connections | the target has to indicate its willingness to accept TCP connections | |||
by responding with a TCP SYN-ACK before the proxy can send it | by responding with a TCP SYN-ACK before the proxy can send it | |||
application data. UDP doesn't have this property, so a CONNECT-UDP | application data. UDP doesn't have this property, so a CONNECT-UDP | |||
proxy could send more data to an unwilling target than a CONNECT | proxy could send more data to an unwilling target than a CONNECT | |||
proxy. However, in practice denial of service attacks target open | proxy. However, in practice denial of service attacks target open | |||
TCP ports so the TCP SYN-ACK does not offer much protection in real | TCP ports so the TCP SYN-ACK does not offer much protection in real | |||
scenarios. Proxies MUST NOT introspect the contents of UDP payloads | scenarios. Proxies MUST NOT introspect the contents of UDP payloads | |||
as that would lead to ossification of UDP-based protocols by proxies. | as that would lead to ossification of UDP-based protocols by proxies. | |||
10. IANA Considerations | 11. IANA Considerations | |||
10.1. HTTP Method | 11.1. HTTP Method | |||
This document will request IANA to register "CONNECT-UDP" in the HTTP | This document will request IANA to register "CONNECT-UDP" in the HTTP | |||
Method Registry (IETF review) maintained at | Method Registry (IETF review) maintained at | |||
<https://www.iana.org/assignments/http-methods>. | <https://www.iana.org/assignments/http-methods>. | |||
+-------------+------+------------+---------------+ | +-------------+------+------------+---------------+ | |||
| Method Name | Safe | Idempotent | Reference | | | Method Name | Safe | Idempotent | Reference | | |||
+-------------+------+------------+---------------+ | +-------------+------+------------+---------------+ | |||
| CONNECT-UDP | no | no | This document | | | CONNECT-UDP | no | no | This document | | |||
+-------------+------+------------+---------------+ | +-------------+------+------------+---------------+ | |||
10.2. URI Scheme Registration | 11.2. URI Scheme Registration | |||
This document will request IANA to register the URI scheme "masque". | This document will request IANA to register the URI scheme "masque". | |||
The syntax definition below uses Augmented Backus-Naur Form (ABNF) | The syntax definition below uses Augmented Backus-Naur Form (ABNF) | |||
[RFC5234]. The definitions of "host" and "port" are adopted from | [RFC5234]. The definitions of "host" and "port" are adopted from | |||
[RFC3986]. The syntax of a MASQUE URI is: | [RFC3986]. The syntax of a MASQUE URI is: | |||
masque-URI = "masque:" "//" host ":" port "/" | masque-URI = "masque:" "//" host ":" port "/" | |||
The "host" and "port" component MUST NOT be empty, and the "port" | The "host" and "port" component MUST NOT be empty, and the "port" | |||
component MUST NOT be 0. | component MUST NOT be 0. | |||
10.3. Stream Chunk Type Registration | 11.3. Stream Chunk Type Registration | |||
This document will request IANA to create a "CONNECT-UDP Stream Chunk | This document will request IANA to create a "CONNECT-UDP Stream Chunk | |||
Type" registry. This registry governs a 62-bit space, and follows | Type" registry. This registry governs a 62-bit space, and follows | |||
the registration policy for QUIC registries as defined in [QUIC]. In | the registration policy for QUIC registries as defined in [QUIC]. In | |||
addition to the fields required by the QUIC policy, registrations in | addition to the fields required by the QUIC policy, registrations in | |||
this registry MUST include the following fields: | this registry MUST include the following fields: | |||
Type: A short mnemonic for the type. | Type: A short mnemonic for the type. | |||
Description: A brief description of the type semantics, which MAY be | Description: A brief description of the type semantics, which MAY be | |||
skipping to change at page 9, line 15 ¶ | skipping to change at page 9, line 15 ¶ | |||
+-------+------------+-----------------------+---------------+ | +-------+------------+-----------------------+---------------+ | |||
| Value | Type | Description | Reference | | | Value | Type | Description | Reference | | |||
+-------+------------+-----------------------+---------------+ | +-------+------------+-----------------------+---------------+ | |||
| 0x00 | UDP_PACKET | Payload of UDP packet | This document | | | 0x00 | UDP_PACKET | Payload of UDP packet | This document | | |||
+-------+------------+-----------------------+---------------+ | +-------+------------+-----------------------+---------------+ | |||
Each value of the format "37 * N + 23" for integer values of N (that | Each value of the format "37 * N + 23" for integer values of N (that | |||
is, 23, 60, 97, ...) are reserved; these values MUST NOT be assigned | is, 23, 60, 97, ...) are reserved; these values MUST NOT be assigned | |||
by IANA and MUST NOT appear in the listing of assigned values. | by IANA and MUST NOT appear in the listing of assigned values. | |||
11. Normative References | 12. 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-01, 24 August 2020, | |||
<http://www.ietf.org/internet-drafts/draft-ietf-quic- | <http://www.ietf.org/internet-drafts/draft-ietf-quic- | |||
datagram-01.txt>. | 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/info/rfc7540>. | |||
[H3DGRAM] Schinazi, D., "Using QUIC Datagrams with HTTP/3", Work in | [H3DGRAM] Schinazi, D. and L. Pardue, "Using QUIC Datagrams with | |||
Progress, Internet-Draft, draft-schinazi-masque-h3- | HTTP/3", Work in Progress, Internet-Draft, draft-schinazi- | |||
datagram-01, 12 December 2020, <http://www.ietf.org/ | masque-h3-datagram-02, 14 December 2020, | |||
internet-drafts/draft-schinazi-masque-h3-datagram-01.txt>. | <http://www.ietf.org/internet-drafts/draft-schinazi- | |||
masque-h3-datagram-02.txt>. | ||||
[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-32, 20 October 2020, | draft-ietf-quic-transport-33, 13 December 2020, | |||
<http://www.ietf.org/internet-drafts/draft-ietf-quic- | <http://www.ietf.org/internet-drafts/draft-ietf-quic- | |||
transport-32.txt>. | transport-33.txt>. | |||
[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/info/rfc2119>. | |||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
RFC 3986, DOI 10.17487/RFC3986, January 2005, | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
<https://www.rfc-editor.org/info/rfc3986>. | <https://www.rfc-editor.org/info/rfc3986>. | |||
skipping to change at page 10, line 36 ¶ | skipping to change at page 10, line 41 ¶ | |||
[TCP] Postel, J., "Transmission Control Protocol", STD 7, | [TCP] Postel, J., "Transmission Control Protocol", STD 7, | |||
RFC 793, DOI 10.17487/RFC0793, September 1981, | RFC 793, DOI 10.17487/RFC0793, September 1981, | |||
<https://www.rfc-editor.org/info/rfc793>. | <https://www.rfc-editor.org/info/rfc793>. | |||
[UDP] Postel, J., "User Datagram Protocol", STD 6, RFC 768, | [UDP] Postel, J., "User Datagram Protocol", STD 6, RFC 768, | |||
DOI 10.17487/RFC0768, August 1980, | DOI 10.17487/RFC0768, August 1980, | |||
<https://www.rfc-editor.org/info/rfc768>. | <https://www.rfc-editor.org/info/rfc768>. | |||
Acknowledgments | Acknowledgments | |||
This proposal was inspired directly or indirectly by prior work from | This document is a product of the MASQUE Working Group, and the | |||
many people. The author would like to thank Eric Rescorla for | author thanks all MASQUE enthusiasts for their contibutions. This | |||
suggesting to use an HTTP method to proxy UDP. Thanks to Lucas | proposal was inspired directly or indirectly by prior work from many | |||
people. In particular, the author would like to thank Eric Rescorla | ||||
for suggesting to use an HTTP method to proxy UDP. Thanks to Lucas | ||||
Pardue for their inputs on this document. | Pardue for their inputs on this document. | |||
Author's Address | Author's Address | |||
David Schinazi | David Schinazi | |||
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 | |||
End of changes. 25 change blocks. | ||||
50 lines changed or deleted | 70 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/ |