<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.5 (Ruby 3.0.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-masque-connect-udp-09" category="std" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title abbrev="HTTP UDP CONNECT">UDP Proxying Support for HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-udp-09"/>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="April" day="11"/>
    <area>Transport</area>
    <workgroup>MASQUE</workgroup>
    <keyword>quic</keyword>
    <keyword>http</keyword>
    <keyword>datagram</keyword>
    <keyword>udp</keyword>
    <keyword>proxy</keyword>
    <keyword>tunnels</keyword>
    <keyword>quic in quic</keyword>
    <keyword>turtles all the way down</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <abstract>
      <t>This document describes how to proxy UDP over HTTP. Similar to how the CONNECT
method allows proxying TCP over HTTP, this document defines a new mechanism to
proxy UDP. When using HTTP/2 or HTTP/3, it uses Extended CONNECT; when using
HTTP/1.1, it uses Upgrade.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-masque.github.io/draft-ietf-masque-connect-udp/draft-ietf-masque-connect-udp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-masque-connect-udp/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        MASQUE Working Group mailing list (<eref target="mailto:masque@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-masque/draft-ietf-masque-connect-udp"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document describes how to proxy UDP over HTTP. Similar to how the CONNECT
method (see <xref section="9.3.6" sectionFormat="of" target="HTTP"/>) allows
proxying TCP <xref target="TCP"/> over HTTP, this document defines a new mechanism
to proxy UDP <xref target="UDP"/>.</t>
      <t>UDP Proxying supports all versions of HTTP and uses HTTP Datagrams
<xref target="HTTP-DGRAM"/>. When using HTTP/2 <xref target="H2"/> or HTTP/3
<xref target="H3"/>, UDP proxying uses HTTP Extended CONNECT as described in
<xref target="EXT-CONNECT2"/> and <xref target="EXT-CONNECT3"/>.
When using HTTP/1.x <xref target="H1"/>, UDP proxying uses HTTP Upgrade as defined in
<xref section="7.8" sectionFormat="of" target="HTTP"/>.</t>
      <section anchor="conventions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>In this document, we use the term "proxy" to refer to the HTTP server that acts
upon the client's UDP proxying request to open a UDP socket to a target server,
and generates the response to this request. If there are HTTP intermediaries (as
defined in <xref section="3.7" sectionFormat="of" target="HTTP"/>) between the client and the proxy, those are
referred to as "intermediaries" in this document.</t>
        <t>Note that, when the HTTP version in use does not support multiplexing streams
(such as HTTP/1.1), any reference to "stream" in this document represents the
entire connection.</t>
      </section>
    </section>
    <section anchor="client-config">
      <name>Configuration of Clients</name>
      <t>Clients are configured to use UDP Proxying over HTTP via a URI Template
<xref target="TEMPLATE"/> with the variables "target_host" and "target_port".
Examples are shown below:</t>
      <figure anchor="fig-template-examples">
        <name>URI Template Examples</name>
        <artwork><![CDATA[
https://masque.example.org/.well-known/masque/udp/{target_host}/{target_port}/
https://proxy.example.org:4443/masque?h={target_host}&p={target_port}
https://proxy.example.org:4443/masque{?target_host,target_port}
]]></artwork>
      </figure>
      <t>The following requirements apply to the URI Template:</t>
      <ul spacing="normal">
        <li>The URI Template <bcp14>MUST</bcp14> be a level 3 template or lower.</li>
        <li>The URI Template <bcp14>MUST</bcp14> be in absolute form, and <bcp14>MUST</bcp14> include non-empty scheme,
authority and path components.</li>
        <li>The path component of the URI Template <bcp14>MUST</bcp14> start with a slash "/".</li>
        <li>All template variables <bcp14>MUST</bcp14> be within the path component of the URI.</li>
        <li>The URI template <bcp14>MUST</bcp14> contain the two variables "target_host" and
"target_port" and <bcp14>MAY</bcp14> contain other variables.</li>
        <li>The URI Template <bcp14>MUST NOT</bcp14> contain any non-ASCII unicode characters and <bcp14>MUST</bcp14>
only contain ASCII characters in the range 0x21-0x7E inclusive (note that
percent-encoding is allowed).</li>
        <li>The URI Template <bcp14>MUST NOT</bcp14> use Reserved Expansion ("+" operator), Fragment
Expansion ("#" operator), Label Expansion with Dot-Prefix, Path Segment
Expansion with Slash-Prefix, nor Path-Style Parameter Expansion with
Semicolon-Prefix.</li>
      </ul>
      <t>If any of the requirements above are not met by a URI Template, the client <bcp14>MUST</bcp14>
reject its configuration and fail the request without sending it to the proxy.</t>
      <t>Since the original HTTP CONNECT method allowed conveying the target host and
port but not the scheme, proxy authority, path, nor query, there exist proxy
configuration interfaces that only allow the user to configure the proxy host
and the proxy port. Client implementations of this specification that are
constrained by such limitations <bcp14>MAY</bcp14> attempt to access UDP Proxying capabilities
using the default template, which is defined as:
"https://$PROXY_HOST:$PROXY_PORT/.well-known/masque/udp/{target_host}/{target_port}/"
where $PROXY_HOST and $PROXY_PORT are the configured host and port of the
proxy respectively. Proxy deployments <bcp14>SHOULD</bcp14> offer service at this location if
they need to interoperate with such clients.</t>
      <t>Clients <bcp14>MAY</bcp14> interpret HTTP 400, 404, or 405 response codes as indications
that the URI template is not correct.  Servers <bcp14>MUST NOT</bcp14> return these
response codes if the request is well-formed and the URI matches a supported
template.</t>
    </section>
    <section anchor="http-exchanges">
      <name>HTTP Exchanges</name>
      <t>This document defines the "connect-udp" HTTP Upgrade Token. "connect-udp" uses
the Capsule Protocol as defined in <xref section="3.2" sectionFormat="of" target="HTTP-DGRAM"/>. The format of
HTTP Datagrams is defined in <xref target="format"/>.</t>
      <t>Clients issue requests containing a "connect-udp" upgrade token to initiate a
UDP tunnel associated with a single HTTP stream. Tunnels are commonly used to
create an end-to-end virtual connection, which can then be secured using QUIC
<xref target="QUIC"/> or another protocol running over UDP. The target of the tunnel
is indicated by the client to the proxy via the "target_host" and "target_port"
variables of the URI Template (see <xref target="client-config"/>). If the request is
successful, the proxy commits to converting received HTTP Datagrams into UDP
packets and vice versa until the tunnel is closed.</t>
      <t>When sending its UDP proxying request, the client <bcp14>SHALL</bcp14> perform URI Template
expansion to determine the path and query of its request. target_host supports
using DNS names, IPv6 literals and IPv4 literals. Note that this URI Template
expansion requires using pct-encoding, so for example if the target_host is
"2001:db8::42", it will be encoded in the URI as "2001%3Adb8%3A%3A42".</t>
      <t>By virtue of the definition of the Capsule Protocol (see <xref target="HTTP-DGRAM"/>), UDP
proxying requests do not carry any message content. Similarly, successful
UDP proxying responses also do not carry any message content.</t>
      <t>Responses to UDP proxying requests are not cacheable.</t>
      <section anchor="handling">
        <name>Proxy Handling</name>
        <t>Upon receiving a UDP proxying request, the recipient proxy extracts the
"target_host" and "target_port" variables from the URI it has reconstructed
from the request headers, and establishes a tunnel by directly opening a UDP
socket to the requested target.</t>
        <t>Unlike TCP, UDP is connection-less. The proxy that opens the UDP socket has no
way of knowing whether the destination is reachable. Therefore it needs to
respond to the request without waiting for a packet from the target. However, if
the target_host is a DNS name, the proxy <bcp14>MUST</bcp14> perform DNS resolution before
replying to the HTTP request. If errors occur during this process (for example,
a DNS resolution failure), the proxy <bcp14>MUST</bcp14> fail the request and <bcp14>SHOULD</bcp14> send
details using the Proxy-Status header field
<xref target="PROXY-STATUS"/>.</t>
        <t>Proxies can use connected UDP sockets if their operating system 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 uses a non-connected socket, it <bcp14>MUST</bcp14>
validate the IP source address and UDP source port on received packets to
ensure they match the client's request. Packets that do not match <bcp14>MUST</bcp14> be
discarded by the proxy.</t>
        <t>The lifetime of the socket is tied to the request stream. The proxy <bcp14>MUST</bcp14> keep
the socket open while the request stream is open. If a proxy is notified by its
operating system that its socket is no longer usable (for example, this can
happen when an ICMP "Destination Unreachable" message is received, see <xref section="3.1" sectionFormat="of" target="ICMP6"/>), it <bcp14>MUST</bcp14> close the request stream. Proxies <bcp14>MAY</bcp14> choose
to close sockets due to a period of inactivity, but they <bcp14>MUST</bcp14> close the request
stream when closing the socket. Proxies that close sockets after a period of
inactivity <bcp14>SHOULD NOT</bcp14> use a period lower than two minutes, see <xref section="4.3" sectionFormat="of" target="BEHAVE"/>.</t>
        <t>A successful response (as defined in <xref target="resp1"/> and <xref target="resp23"/>) indicates that
the proxy has opened a socket to the requested target and is willing to proxy
UDP payloads. Any response other than a successful response indicates that the
request has failed, and the client <bcp14>MUST</bcp14> therefore abort the request.</t>
        <t>Proxies <bcp14>MUST NOT</bcp14> introduce fragmentation at the IP layer when forwarding HTTP
Datagrams onto a UDP socket. In IPv4, the Don't Fragment (DF) bit <bcp14>MUST</bcp14> be set if
possible, to prevent fragmentation on the path. Future extensions <bcp14>MAY</bcp14> remove
these requirements.</t>
      </section>
      <section anchor="req1">
        <name>HTTP Request over HTTP/1.1</name>
        <t>When using HTTP/1.1 <xref target="H1"/>, a UDP proxying request will meet the following
requirements:</t>
        <ul spacing="normal">
          <li>the method <bcp14>SHALL</bcp14> be "GET".</li>
          <li>the request-target <bcp14>SHALL</bcp14> use absolute-form (see <xref section="3.2.2" sectionFormat="of" target="H1"/>).</li>
          <li>the request <bcp14>SHALL</bcp14> include a single Host header field containing the origin of
the proxy.</li>
          <li>the request <bcp14>SHALL</bcp14> include a single "Connection" header field with value
"Upgrade" (note that this requirement is case-insensitive as per <xref section="7.6.1" sectionFormat="of" target="HTTP"/>).</li>
          <li>the request <bcp14>SHALL</bcp14> include a single "Upgrade" header field with value
"connect-udp".</li>
        </ul>
        <t>For example, if the client is configured with URI Template
"https://proxy.example.org/.well-known/masque/udp/{target_host}/{target_port}/"
and wishes to open a
UDP proxying tunnel to target 192.0.2.42:443, it could send the following
request:</t>
        <figure anchor="fig-req-h1">
          <name>Example HTTP Request over HTTP/1.1</name>
          <artwork><![CDATA[
GET https://proxy.example.org/.well-known/masque/udp/192.0.2.42/443/ HTTP/1.1
Host: proxy.example.org
Connection: Upgrade
Upgrade: connect-udp
]]></artwork>
        </figure>
      </section>
      <section anchor="resp1">
        <name>HTTP Response over HTTP/1.1</name>
        <t>The proxy <bcp14>SHALL</bcp14> indicate a successful response by replying with the following
requirements:</t>
        <ul spacing="normal">
          <li>the HTTP status code on the response <bcp14>SHALL</bcp14> be 101 (Switching Protocols).</li>
          <li>the reponse <bcp14>SHALL</bcp14> include a single "Connection" header field with value
"Upgrade" (note that this requirement is case-insensitive as per <xref section="7.6.1" sectionFormat="of" target="HTTP"/>).</li>
          <li>the response <bcp14>SHALL</bcp14> include a single "Upgrade" header field with value
"connect-udp".</li>
          <li>the response <bcp14>SHALL NOT</bcp14> include any Transfer-Encoding or Content-Length header
fields.</li>
        </ul>
        <t>If any of these requirements are not met, the client <bcp14>MUST</bcp14> treat this proxying
attempt as failed and abort the connection.</t>
        <t>For example, the proxy could respond with:</t>
        <figure anchor="fig-resp-h1">
          <name>Example HTTP Response over HTTP/1.1</name>
          <artwork><![CDATA[
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: connect-udp
]]></artwork>
        </figure>
      </section>
      <section anchor="req23">
        <name>HTTP Request over HTTP/2 and HTTP/3</name>
        <t>When using HTTP/2 <xref target="H2"/> or HTTP/3 <xref target="H3"/>, UDP proxying requests use Extended
CONNECT. This requires that servers send an HTTP Setting as specified in
<xref target="EXT-CONNECT2"/> and <xref target="EXT-CONNECT3"/>, and that requests use HTTP pseudo-header
fields with the following requirements:</t>
        <ul spacing="normal">
          <li>The ":method" pseudo-header field <bcp14>SHALL</bcp14> be "CONNECT".</li>
          <li>The ":protocol" pseudo-header field <bcp14>SHALL</bcp14> be "connect-udp".</li>
          <li>The ":authority" pseudo-header field <bcp14>SHALL</bcp14> contain the authority of the proxy.</li>
          <li>The ":path" and ":scheme" pseudo-header fields <bcp14>SHALL NOT</bcp14> be empty. Their
values <bcp14>SHALL</bcp14> contain the scheme and path from the URI Template after the URI
template expansion process has been completed.</li>
        </ul>
        <t>A UDP proxying request that does not conform to these restrictions is
malformed (see <xref section="8.1.1" sectionFormat="of" target="H2"/>).</t>
        <t>For example, if the client is configured with URI Template
"https://proxy.example.org/{target_host}/{target_port}/" and wishes to open a
UDP proxying tunnel to target 192.0.2.42:443, it could send the following
request:</t>
        <figure anchor="fig-req-h2">
          <name>Example HTTP Request over HTTP/2</name>
          <artwork><![CDATA[
HEADERS
:method = CONNECT
:protocol = connect-udp
:scheme = https
:path = /.well-known/masque/udp/192.0.2.42/443/
:authority = proxy.example.org
]]></artwork>
        </figure>
      </section>
      <section anchor="resp23">
        <name>HTTP Response over HTTP/2 and HTTP/3</name>
        <t>The proxy <bcp14>SHALL</bcp14> indicate a successful response by replying with any 2xx
(Successful) HTTP status code, without any Transfer-Encoding or Content-Length
header fields.</t>
        <t>If any of these requirements are not met, the client <bcp14>MUST</bcp14> treat this proxying
attempt as failed and abort the request.</t>
        <t>For example, the proxy could respond with:</t>
        <figure anchor="fig-resp-h2">
          <name>Example HTTP Response over HTTP/2</name>
          <artwork><![CDATA[
HEADERS
:status = 200
]]></artwork>
        </figure>
      </section>
      <section anchor="note-about-draft-versions">
        <name>Note About Draft Versions</name>
        <t>[[RFC editor: please remove this section before publication.]]</t>
        <t>In order to allow implementations to support multiple draft versions of this
specification during its development, we introduce the "connect-udp-version"
header field. When sent by the client, it contains a list of draft numbers
supported by the client (e.g., "connect-udp-version: 0, 2"). When sent by the
proxy, it contains a single draft number selected by the proxy from the list
provided by the client (e.g., "connect-udp-version: 2"). Sending this header
field is <bcp14>RECOMMENDED</bcp14> but not required. The "connect-udp-version" header field is
a List Structured Field, see <xref section="3.1" sectionFormat="of" target="STRUCT-FIELD"/>. Each list
member <bcp14>MUST</bcp14> be an Integer.</t>
      </section>
    </section>
    <section anchor="context-id">
      <name>Context Identifiers</name>
      <t>This protocol allows future extensions to exchange HTTP Datagrams which carry
different semantics from UDP payloads. Some of these extensions can augment UDP
payloads with additional data, while others can exchange data that is completely
separate from UDP payloads. In order to accomplish this, all HTTP Datagrams
associated with UDP Proxying request streams start with a context ID, see
<xref target="format"/>.</t>
      <t>Context IDs are 62-bit integers (0 to 2<sup>62</sup>-1). Context IDs are encoded
as variable-length integers, see <xref section="16" sectionFormat="of" target="QUIC"/>. The context ID value of
0 is reserved for UDP payloads, while non-zero values are dynamically allocated:
non-zero even-numbered context IDs are client-allocated, and odd-numbered
context IDs are proxy-allocated. The context ID namespace is tied to a given
HTTP request: it is possible for a context ID with the same numeric value to be
simultaneously allocated in distinct requests, potentially with different
semantics. Context IDs <bcp14>MUST NOT</bcp14> be re-allocated within a given HTTP namespace
but <bcp14>MAY</bcp14> be allocated in any order. The context ID allocation restrictions to the
use of even-numbered and odd-numbered context IDs exist in order to avoid the
need for synchronisation between endpoints. However, once a context ID has been
allocated, those restrictions do not apply to the use of the context ID: it can
be used by any client or proxy, independent of which endpoint initially
allocated it.</t>
      <t>Registration is the action by which an endpoint informs its peer of the
semantics and format of a given context ID. This document does not define how
registration occurs. Future extensions <bcp14>MAY</bcp14> use HTTP header fields or capsules to
register contexts. Depending on the method being used, it is possible for
datagrams to be received with Context IDs which have not yet been registered,
for instance due to reordering of the packet containing the datagram and the
packet containing the registration message during transmission.</t>
    </section>
    <section anchor="format">
      <name>HTTP Datagram Payload Format</name>
      <t>When HTTP Datagrams (see <xref target="HTTP-DGRAM"/>) are associated with UDP proxying
request streams, the HTTP Datagram Payload field has the format defined in
<xref target="dgram-format"/>. Note that when HTTP Datagrams are encoded using QUIC DATAGRAM
frames, the Context ID field defined below directly follows the Quarter Stream
ID field which is at the start of the QUIC DATAGRAM frame payload:</t>
      <figure anchor="dgram-format">
        <name>UDP Proxying HTTP Datagram Format</name>
        <artwork><![CDATA[
UDP Proxying HTTP Datagram Payload {
  Context ID (i),
  Payload (..),
}
]]></artwork>
      </figure>
      <dl spacing="compact">
        <dt>Context ID:</dt>
        <dd>
          <t>A variable-length integer (see <xref section="16" sectionFormat="of" target="QUIC"/>) that contains the value
of the Context ID. If an HTTP/3 datagram which carries an unknown Context ID is
received, the receiver <bcp14>SHALL</bcp14> either drop that datagram silently or buffer it
temporarily (on the order of a round trip) while awaiting the registration of
the corresponding Context ID.</t>
        </dd>
        <dt>Payload:</dt>
        <dd>
          <t>The payload of the datagram, whose semantics depend on value of the previous
field. Note that this field can be empty.</t>
        </dd>
      </dl>
      <t>UDP packets are encoded using HTTP Datagrams with the Context ID set to zero.
When the Context ID is set to zero, the Payload field contains the
unmodified payload of a UDP packet (referred to as "data octets" in <xref target="UDP"/>).</t>
      <t>Clients <bcp14>MAY</bcp14> optimistically start sending UDP packets in HTTP Datagrams before
receiving the response to its UDP proxying request. However, implementors should
note that such proxied packets may not be processed by the proxy if it responds
to the request with a failure, or if the proxied packets are received by the
proxy before the request.</t>
      <t>By virtue of the definition of the UDP header <xref target="UDP"/>, it is not possible to
encode UDP payloads longer than 65527 bytes. Therefore, endpoints <bcp14>MUST NOT</bcp14> send
HTTP Datagrams with a Payload field longer than 65527 using Context ID zero. An
endpoint that receives a DATAGRAM capsule using Context ID zero whose Payload
field is longer than 65527 <bcp14>MUST</bcp14> abort the stream. If a proxy knows it can only
send out UDP packets of a certain length due to its underlying link MTU, it
<bcp14>SHOULD</bcp14> discard incoming DATAGRAM capsules using Context ID zero whose Payload
field is longer than that limit without buffering the capsule contents.</t>
    </section>
    <section anchor="performance">
      <name>Performance Considerations</name>
      <t>Proxies <bcp14>SHOULD</bcp14> strive to avoid increasing burstiness of UDP traffic: they
<bcp14>SHOULD NOT</bcp14> queue packets in order to increase batching.</t>
      <t>When the protocol running over UDP that is being proxied uses congestion
control (e.g., <xref target="QUIC"/>), the proxied traffic will incur at least two nested
congestion controllers. This can reduce performance but the underlying
HTTP connection <bcp14>MUST NOT</bcp14> disable congestion control unless it has an
out-of-band way of knowing with absolute certainty that the inner traffic is
congestion-controlled.</t>
      <t>If a client or proxy with a connection containing a UDP proxying request stream
disables congestion control, it <bcp14>MUST NOT</bcp14> signal ECN support on that connection.
That is, it <bcp14>MUST</bcp14> mark all IP headers with the Not-ECT codepoint. It <bcp14>MAY</bcp14>
continue to report ECN feedback via ACK_ECN frames, as the peer may not have
disabled congestion control.</t>
      <t>When the protocol running over UDP that is being proxied uses loss recovery
(e.g., <xref target="QUIC"/>), and the underlying HTTP connection runs over TCP, the proxied
traffic will incur at least two nested loss recovery mechanisms. This can reduce
performance as both can sometimes independently retransmit the same data. To
avoid this, UDP proxying <bcp14>SHOULD</bcp14> be performed over HTTP/3 to allow leveraging the
QUIC DATAGRAM frame.</t>
      <section anchor="mtu-considerations">
        <name>MTU Considerations</name>
        <t>When using HTTP/3 with the QUIC Datagram extension <xref target="DGRAM"/>, UDP
payloads are transmitted in QUIC DATAGRAM frames. Since those cannot be
fragmented, they can only carry payloads up to a given length determined by the
QUIC connection configuration and the path MTU. If a proxy is using QUIC
DATAGRAM frames and it receives a UDP payload from the target that will not fit
inside a QUIC DATAGRAM frame, the proxy <bcp14>SHOULD NOT</bcp14> send the UDP payload in a
DATAGRAM capsule, as that defeats the end-to-end unreliability characteristic
that methods such as Datagram Packetization Layer Path MTU Discovery (DPLPMTUD)
depend on <xref target="DPLPMTUD"/>. In this scenario, the proxy <bcp14>SHOULD</bcp14> drop the UDP
payload and send an ICMP "Packet Too Big" message to the target, see <xref section="3.2" sectionFormat="of" target="ICMP6"/>.</t>
      </section>
      <section anchor="tunneling-of-ecn-marks">
        <name>Tunneling of ECN Marks</name>
        <t>UDP proxying does not create an IP-in-IP tunnel, so the guidance in
<xref target="ECN-TUNNEL"/> about transferring ECN marks between inner and outer IP
headers does not apply. There is no inner IP header in UDP proxying tunnels.</t>
        <t>Note that UDP proxying clients do not have the ability in this specification to
control the ECN codepoints on UDP packets the proxy sends to the target, nor can
proxies communicate the markings of each UDP packet from target to proxy.</t>
        <t>A UDP proxy <bcp14>MUST</bcp14> ignore ECN bits in the IP header of UDP packets received from
the target, and <bcp14>MUST</bcp14> set the ECN bits to Not-ECT on UDP packets it sends to the
target. These do not relate to the ECN markings of packets sent between client
and proxy in any way.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>There are significant risks in allowing arbitrary clients to establish a tunnel
to arbitrary targets, as that could allow bad actors to send traffic and have
it attributed to the proxy. Proxies that support UDP proxying ought to restrict
its use to authenticated users.</t>
      <t>Because the CONNECT method creates a TCP connection to the target, the target
has to indicate its willingness to accept TCP connections by responding with a
TCP SYN-ACK before the proxy can send it application data. UDP doesn't have this
property, so a UDP proxy could send more data to an unwilling target than a
CONNECT proxy. However, in practice denial of service attacks target open TCP
ports so the TCP SYN-ACK does not offer much protection in real scenarios. While
a proxy could potentially limit the number of UDP packets it is willing to
forward until it has observed a response from the target, that is unlikely to
provide any protection against denial of service attacks because such attacks
target open UDP ports where the protocol running over UDP would respond, and
that would be interpreted as willingness to accept UDP by the proxy.</t>
      <t>UDP sockets for UDP proxying have a different lifetime than TCP sockets for
CONNECT, therefore implementors would be well served to follow the advice in
<xref target="handling"/> if they base their UDP proxying implementation on a preexisting
implementation of CONNECT.</t>
      <t>The security considerations described in <xref target="HTTP-DGRAM"/> also apply here.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="iana-upgrade">
        <name>HTTP Upgrade Token</name>
        <t>This document will request IANA to register "connect-udp" in the "HTTP Upgrade
Tokens" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/http-upgrade-tokens"/>&gt;.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>connect-udp</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>Proxying of UDP Payloads</t>
          </dd>
          <dt>Expected Version Tokens:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-uri">
        <name>Well-Known URI</name>
        <t>This document will request IANA to register "masque/udp" in the "Well-Known
URIs" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/well-known-uris"/>&gt;.</t>
        <dl spacing="compact">
          <dt>URI Suffix:</dt>
          <dd>
            <t>masque/udp</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent (if this document is approved)</t>
          </dd>
          <dt>Related Information:</dt>
          <dd>
            <t>Includes all resources identified with the path prefix
"/.well-known/masque/udp/"</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <displayreference target="H1" to="HTTP/1.1"/>
    <displayreference target="H2" to="HTTP/2"/>
    <displayreference target="H3" to="HTTP/3"/>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="H1">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="Roy T. Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <abstract>
              <t>   The Hypertext Transfer Protocol (HTTP) is a stateless application-
   level protocol for distributed, collaborative, hypertext information
   systems.  This document specifies the HTTP/1.1 message syntax,
   message parsing, connection management, and related security
   concerns.

   This document obsoletes portions of RFC 7230.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-messaging-19"/>
        </reference>
        <reference anchor="H2">
          <front>
            <title>HTTP/2</title>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Cory Benfield">
              <organization>Apple Inc.</organization>
            </author>
            <date day="24" month="January" year="2022"/>
            <abstract>
              <t>   This specification describes an optimized expression of the semantics
   of the Hypertext Transfer Protocol (HTTP), referred to as HTTP
   version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network
   resources and a reduced latency by introducing field compression and
   allowing multiple concurrent exchanges on the same connection.

   This document obsoletes RFC 7540 and RFC 8740.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-http2bis-07"/>
        </reference>
        <reference anchor="H3">
          <front>
            <title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title>
            <author fullname="Mike Bishop">
              <organization>Akamai</organization>
            </author>
            <date day="2" month="February" year="2021"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable
   in a transport for HTTP, such as stream multiplexing, per-stream flow
   control, and low-latency connection establishment.  This document
   describes a mapping of HTTP semantics over QUIC.  This document also
   identifies HTTP/2 features that are subsumed by QUIC, and describes
   how HTTP/2 extensions can be ported to HTTP/3.

DO NOT DEPLOY THIS VERSION OF HTTP

   DO NOT DEPLOY THIS VERSION OF HTTP/3 UNTIL IT IS IN AN RFC.  This
   version is still a work in progress.  For trial deployments, please
   use earlier versions.

Note to Readers

   Discussion of this draft takes place on the QUIC working group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/search/?email_list=quic.

   Working Group information can be found at https://github.com/quicwg;
   source code and issues list for this draft can be found at
   https://github.com/quicwg/base-drafts/labels/-http.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="Roy T. Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <abstract>
              <t>   The Hypertext Transfer Protocol (HTTP) is a stateless application-
   level protocol for distributed, collaborative, hypertext information
   systems.  This document describes the overall architecture of HTTP,
   establishes common terminology, and defines aspects of the protocol
   that are shared by all versions.  In this definition are core
   protocol elements, extensibility mechanisms, and the "http" and
   "https" Uniform Resource Identifier (URI) schemes.

   This document updates RFC 3864 and obsoletes RFC 2818, RFC 7231, RFC
   7232, RFC 7233, RFC 7235, RFC 7538, RFC 7615, RFC 7694, and portions
   of RFC 7230.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
        </reference>
        <reference anchor="TCP">
          <front>
            <title>Transmission Control Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel">
              <organization/>
            </author>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="793"/>
          <seriesInfo name="DOI" value="10.17487/RFC0793"/>
        </reference>
        <reference anchor="UDP">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel">
              <organization/>
            </author>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <reference anchor="HTTP-DGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Lucas Pardue">
              <organization>Cloudflare</organization>
            </author>
            <date day="11" month="April" year="2022"/>
            <abstract>
              <t>   This document describes HTTP Datagrams, a convention for conveying
   multiplexed, potentially unreliable datagrams inside an HTTP
   connection.

   In HTTP/3, HTTP Datagrams can be conveyed natively using the QUIC
   DATAGRAM extension.  When the QUIC DATAGRAM frame is unavailable or
   undesirable, they can be sent using the Capsule Protocol, a more
   general convention for conveying data in HTTP connections.

   HTTP Datagrams and the Capsule Protocol are intended for use by HTTP
   extensions, not applications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-h3-datagram-09"/>
        </reference>
        <reference anchor="EXT-CONNECT2">
          <front>
            <title>Bootstrapping WebSockets with HTTP/2</title>
            <author fullname="P. McManus" initials="P." surname="McManus">
              <organization/>
            </author>
            <date month="September" year="2018"/>
            <abstract>
              <t>This document defines a mechanism for running the WebSocket Protocol (RFC 6455) over a single stream of an HTTP/2 connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8441"/>
          <seriesInfo name="DOI" value="10.17487/RFC8441"/>
        </reference>
        <reference anchor="EXT-CONNECT3">
          <front>
            <title>Bootstrapping WebSockets with HTTP/3</title>
            <author fullname="Ryan Hamilton">
              <organization>Google</organization>
            </author>
            <date day="8" month="February" year="2022"/>
            <abstract>
              <t>   The mechanism for running the WebSocket Protocol over a single stream
   of an HTTP/2 connection is equally applicable to HTTP/3, but the HTTP
   version-specific details need to be specified.  This document
   describes how the mechanism is adapted for HTTP/3.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-h3-websockets-04"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="TEMPLATE">
          <front>
            <title>URI Template</title>
            <author fullname="J. Gregorio" initials="J." surname="Gregorio">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Hadley" initials="M." surname="Hadley">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="D. Orchard" initials="D." surname="Orchard">
              <organization/>
            </author>
            <date month="March" year="2012"/>
            <abstract>
              <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6570"/>
          <seriesInfo name="DOI" value="10.17487/RFC6570"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="PROXY-STATUS">
          <front>
            <title>The Proxy-Status HTTP Response Header Field</title>
            <author fullname="Mark Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Piotr Sikora">
              <organization>Google</organization>
            </author>
            <date day="13" month="October" year="2021"/>
            <abstract>
              <t>   This document defines the Proxy-Status HTTP field to convey the
   details of intermediary response handling, including generated
   errors.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-proxy-status-08"/>
        </reference>
        <reference anchor="STRUCT-FIELD">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="DGRAM">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly">
              <organization/>
            </author>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear">
              <organization/>
            </author>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9221"/>
          <seriesInfo name="DOI" value="10.17487/RFC9221"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="ICMP6">
          <front>
            <title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
            <author fullname="A. Conta" initials="A." surname="Conta">
              <organization/>
            </author>
            <author fullname="S. Deering" initials="S." surname="Deering">
              <organization/>
            </author>
            <author fullname="M. Gupta" initials="M." role="editor" surname="Gupta">
              <organization/>
            </author>
            <date month="March" year="2006"/>
            <abstract>
              <t>This document describes the format of a set of control messages used in ICMPv6 (Internet Control Message Protocol).  ICMPv6 is the Internet Control Message Protocol for Internet Protocol version 6 (IPv6).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="89"/>
          <seriesInfo name="RFC" value="4443"/>
          <seriesInfo name="DOI" value="10.17487/RFC4443"/>
        </reference>
        <reference anchor="BEHAVE">
          <front>
            <title>Network Address Translation (NAT) Behavioral Requirements for Unicast UDP</title>
            <author fullname="F. Audet" initials="F." role="editor" surname="Audet">
              <organization/>
            </author>
            <author fullname="C. Jennings" initials="C." surname="Jennings">
              <organization/>
            </author>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document defines basic terminology for describing different types of Network Address Translation (NAT) behavior when handling Unicast UDP and also defines a set of requirements that would allow many applications, such as multimedia communications or online gaming, to work consistently.  Developing NATs that meet this set of requirements will greatly increase the likelihood that these applications will function properly.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="127"/>
          <seriesInfo name="RFC" value="4787"/>
          <seriesInfo name="DOI" value="10.17487/RFC4787"/>
        </reference>
        <reference anchor="DPLPMTUD">
          <front>
            <title>Packetization Layer Path MTU Discovery for Datagram Transports</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst">
              <organization/>
            </author>
            <author fullname="T. Jones" initials="T." surname="Jones">
              <organization/>
            </author>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen">
              <organization/>
            </author>
            <author fullname="I. Rüngeler" initials="I." surname="Rüngeler">
              <organization/>
            </author>
            <author fullname="T. Völker" initials="T." surname="Völker">
              <organization/>
            </author>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document specifies Datagram Packetization Layer Path MTU Discovery (DPLPMTUD). This is a robust method for Path MTU Discovery (PMTUD) for datagram Packetization Layers (PLs). It allows a PL, or a datagram application that uses a PL, to discover whether a network path can support the current size of datagram.  This can be used to detect and reduce the message size when a sender encounters a packet black hole. It can also probe a network path to discover whether the maximum packet size can be increased.  This provides functionality for datagram transports that is equivalent to the PLPMTUD specification for TCP, specified in RFC 4821, which it updates. It also updates the UDP Usage Guidelines to refer to this method for use with UDP datagrams and updates SCTP.</t>
              <t>The document provides implementation notes for incorporating Datagram PMTUD into IETF datagram transports or applications that use datagram transports.</t>
              <t>This specification updates RFC 4960, RFC 4821, RFC 6951, RFC 8085, and RFC 8261.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8899"/>
          <seriesInfo name="DOI" value="10.17487/RFC8899"/>
        </reference>
        <reference anchor="ECN-TUNNEL">
          <front>
            <title>Tunnelling of Explicit Congestion Notification</title>
            <author fullname="B. Briscoe" initials="B." surname="Briscoe">
              <organization/>
            </author>
            <date month="November" year="2010"/>
            <abstract>
              <t>This document redefines how the explicit congestion notification (ECN) field of the IP header should be constructed on entry to and exit from any IP-in-IP tunnel.  On encapsulation, it updates RFC 3168 to bring all IP-in-IP tunnels (v4 or v6) into line with RFC 4301 IPsec ECN processing.  On decapsulation, it updates both RFC 3168 and RFC 4301 to add new behaviours for previously unused combinations of inner and outer headers.  The new rules ensure the ECN field is correctly propagated across a tunnel whether it is used to signal one or two severity levels of congestion; whereas before, only one severity level was supported.  Tunnel endpoints can be updated in any order without affecting pre-existing uses of the ECN field, thus ensuring backward compatibility.  Nonetheless, operators wanting to support two severity levels (e.g., for pre-congestion notification -- PCN) can require compliance with this new specification.  A thorough analysis of the reasoning for these changes and the implications is included.  In the unlikely event that the new rules do not meet a specific need, RFC 4774 gives guidance on designing alternate ECN semantics, and this document extends that to include tunnelling issues.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6040"/>
          <seriesInfo name="DOI" value="10.17487/RFC6040"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document is a product of the MASQUE Working Group, and the author thanks
all MASQUE enthusiasts for their contibutions. This 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. The extensibility
design in this document came out of the HTTP Datagrams Design Team, whose
members were Alan Frindell, Alex Chernyakhovsky, Ben Schwartz, Eric Rescorla,
Lucas Pardue, Marcus Ihlar, Martin Thomson, Mike Bishop, Tommy Pauly, Victor
Vasiliev, and the author of this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AX+aIj8kXwAA

-->

</rfc>
