<?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-08" category="std" consensus="true" 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-08"/>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View, California 94043</city>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="March" day="21"/>
    <workgroup>MASQUE</workgroup>
    <keyword>Internet-Draft</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. It is built using HTTP Extended CONNECT.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the MASQUE WG mailing list (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 or HTTP/3, UDP
proxying uses HTTP Extended CONNECT as described in <xref target="EXT-CONNECT2"/>
and <xref target="EXT-CONNECT3"/>. When using HTTP/1.x, 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 opens
the UDP socket and responds to the UDP proxying 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 an 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 URI template <bcp14>MUST</bcp14> be a level 3 template or lower. The URI template <bcp14>MUST</bcp14> be
in absolute form, and <bcp14>MUST</bcp14> include non-empty scheme, authority and path
components. The path component of the URI template <bcp14>MUST</bcp14> start with a slash "/".
All template variables <bcp14>MUST</bcp14> be within the path component of the URI. The URI
template <bcp14>MUST</bcp14> contain the two variables "target_host" and "target_port" and <bcp14>MAY</bcp14>
contain other variables. 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). 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. 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>MUST</bcp14> use 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> use the default template to
facilitate interoperability with such clients.</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 target="HTTP-DGRAM"/>.</t>
      <t>A "connect-udp" request requests that the recipient proxy establish a tunnel
over a single HTTP stream to the destination target identified by 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. 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.</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>A payload within a UDP proxying request message has no defined semantics; a UDP
proxying request with a non-empty payload is malformed.</t>
      <t>Responses to UDP proxying requests are not cacheable.</t>
      <section anchor="proxy-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 DNS resolution fails, the proxy <bcp14>MUST</bcp14> fail the
request and <bcp14>SHOULD</bcp14> send details using the Proxy-Status header
<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, 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 containing the origin of the
proxy.</li>
          <li>the request <bcp14>SHALL</bcp14> include a single "Connection" header with value "Upgrade".</li>
          <li>the request <bcp14>SHALL</bcp14> include a single "Upgrade" header 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 with value "Upgrade".</li>
          <li>the response <bcp14>SHALL</bcp14> include a single "Upgrade" header 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 HTTP pseudo-headers 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. 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 is <bcp14>RECOMMENDED</bcp14>
but not required. Its ABNF is:</t>
        <sourcecode type="abnf"><![CDATA[
connect-udp-version = sf-list
]]></sourcecode>
      </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 assigned different semantics 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. Once allocated, any context ID
can be used by both client and proxy - only allocation carries separate
namespaces to avoid requiring synchronization.</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 headers 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 datagram and the registration packets
during transmission.</t>
    </section>
    <section anchor="format">
      <name>HTTP Datagram Payload Format</name>
      <t>When associated with UDP proxying request streams, the HTTP Datagram Payload
field of HTTP Datagrams (see <xref target="HTTP-DGRAM"/>) 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>
        <dt>Context ID:</dt>
        <dd>
          <t>A variable-length integer 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 proxied UDP packets before receiving
the response to its UDP proxying request, noting however that those may not be
processed by the proxy if it responds to the request with a failure, or if the
datagrams are received by the proxy before the request.</t>
      <t>Endpoints <bcp14>MUST NOT</bcp14> send HTTP Datagrams with payloads longer than 65527 using
Context ID zero. An endpoint that receives a DATAGRAM capsule using Context ID
zero whose payload 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 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 <bcp14>SHOULD</bcp14> 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.</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
Token Registry maintained at
&lt;<eref target="https://www.iana.org/assignments/http-upgrade-tokens"/>&gt;.</t>
        <dl>
          <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/well-known-uris.xhtml"/>&gt;.</t>
        <dl>
          <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>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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>Using Datagrams with HTTP</title>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Lucas Pardue">
              <organization>Cloudflare</organization>
            </author>
            <date day="21" month="March" year="2022"/>
            <abstract>
              <t>   The QUIC DATAGRAM extension provides application protocols running
   over QUIC with a mechanism to send unreliable data while leveraging
   the security and congestion-control properties of QUIC.  However,
   QUIC DATAGRAM frames do not provide a means to demultiplex
   application contexts.  This document describes how to use QUIC
   DATAGRAM frames with HTTP/3 by association with HTTP requests.
   Additionally, this document defines the Capsule Protocol that can
   convey datagrams over prior versions of HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-h3-datagram-07"/>
        </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="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="DGRAM">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Eric Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="4" month="February" 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.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the QUIC Working Group
   mailing list (mailto:quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/quic/.

   Source for this draft and an issue tracker can be found at
   https://github.com/quicwg/datagram.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-datagram-10"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <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="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:
H4sIAJwKOWIAA71ceXMbx5X/vz9FB9rdkFkA4mUdWCtemqQsVnQwIuXE5bhc
jZkG0avBzOz0gBTMYj7Lfpb9ZPuu7ukBQFtONlG5TGCmz9fv+L2jMRqNVOva
wk70h9MLfdFUn1auvNaXy7qumlbPqka/urq6UGY6bezNhL5Q05N3b9+enVyp
vMpKs4D+eWNm7cjZdjZaGP/fSzvKqrK0WTta5vVo75nyy+nCee+qsl3V0OH8
7Oqlykxrr6tmNdG+zdXt9US/Ob7844czpVzdTHTbLH17sLf3fO9AfbSr26rJ
oWPZ2qa07egUp1TKt6bMfzRFVcKoK+tV7Sb6+7bKhtrDJho78/BptcAPPyhl
lu28aiZKj5SGf670Ez04HevLbO5K85Mb0GPe1ODU3Lh87VXVXJvS/WRa2Ao0
+aaqrgurX78+4dceZrQtvNh/srenjxf13LVza+CpvjDNx1uz4naZa2HbgzfV
smyNK/W3zt4O9YkpHFC9dEY/P9o7OpS22AipNPhQutbCilognNfVDCawjcsM
t7ML4wo4Cy8LHuN5/Oc1Ph1n1UIpNRqNtJnCGk0GpLuaO6/hCJcLW7Y6tz5r
3BTGnVe3uq10jfxAx13dWOYEoJNbuMI0+J6azW1khoUF0ubaFEV167k3ctPV
STLAEHr0J525EqY0urS3emGzORDXL2B4Facf6/NWQ6fp0hWtXnoclDjx7FNr
yxzoISsYyw4XLs8Lq9QjZJamypcZHpa+e+SSr/f/qP3veGv13d2l5Vmfjw/H
T/CofoMDvDgfndKxjOZtW0+dH3k4tbJ1mb+/3xXaqR7t7u5+A39evH95svf0
+eH9/a8mpurtBYaDPzzck2f390C0nvB7Fn6Pa9EwE4ossRqRHGQNTgDmoG+n
pjXXjVl4BaPik9HpN++P33SbFF0wPxzl0hQm1H+a2zI5x8cHWhTN48MhrrHb
fzfV+llr4+OJ5SDGuK+zP1+N5PUBbvDZ0dH+/b3CNfffHm4eAyzx1k59lX20
rd+2yP3xpwcX96GGreWW14RnICsKPPB0/CxQkAiuHj3SJ1V5A4dG1MUVnmJH
x9/vHmXdW2JUq0EBatSAHpTGh8urwZD/6rfv6PP7sz9+OH9/doqfL18dv34d
Pyhpcfnq3YfXp92nrufJuzdvzt6ecmd4qnuP1ODN8XfwBhc5eHdxdf7u7fHr
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
QAd62K292WCgak24xur/AF3wVE5UUwAA

-->

</rfc>
