<?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 2.6.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-masque-connect-udp-10" category="std" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title>Proxying UDP in HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-udp-10"/>
    <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="18"/>
    <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 in HTTP, similar to how the HTTP
CONNECT method allows proxying TCP in HTTP. More specifically, this document
defines a protocol that allows HTTP clients to create a tunnel for UDP
communications through an HTTP server that acts as a proxy.</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>While HTTP provides the CONNECT method (see <xref section="9.3.6" sectionFormat="of" target="HTTP"/>) for creating a TCP <xref target="TCP"/> tunnel
to a proxy, it lacks a method for doing so for UDP <xref target="UDP"/> traffic.</t>
      <t>This document describes a protocol for tunnelling UDP to a server acting as a
UDP-specific proxy over HTTP. UDP 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. Unlike CONNECT, the UDP
proxy itself is identified with an absolute URL containing the traffic's
destination. Clients generate those URLs using a URI Template
<xref target="TEMPLATE"/>, as described in <xref target="client-config"/>.</t>
      <t>This protocol supports all versions of HTTP by using HTTP Datagrams
<xref target="HTTP-DGRAM"/>. When using HTTP/2 <xref target="H2"/> or HTTP/3
<xref target="H3"/>, it uses HTTP Extended CONNECT as described in <xref target="EXT-CONNECT2"/>
and <xref target="EXT-CONNECT3"/>. When using HTTP/1.x
<xref target="H1"/>, it 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 "UDP proxy" to refer to the HTTP server that
acts upon the client's UDP tunnelling 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 UDP 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>Client Configuration</name>
      <t>HTTP clients are configured to use a UDP proxy with a URI Template
<xref target="TEMPLATE"/> that has 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 or query components 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 the client detects that 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 UDP proxy. While clients <bcp14>SHOULD</bcp14> validate the requirements
above, some clients <bcp14>MAY</bcp14> use a general-purpose URI Template implementation that
lacks this specific validation.</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 UDP
proxy respectively. UDP proxy deployments <bcp14>SHOULD</bcp14> offer service at this location
if they need to interoperate with such clients.</t>
    </section>
    <section anchor="tunnelling-udp-over-http">
      <name>Tunnelling UDP over HTTP</name>
      <t>To allow negotiation of a tunnel for UDP over HTTP, this document defines the
"connect-udp" HTTP Upgrade Token. The resulting UDP tunnels use the Capsule
Protocol (see <xref section="3.2" sectionFormat="of" target="HTTP-DGRAM"/>) with HTTP Datagram in the format
defined in <xref target="format"/>.</t>
      <t>To initiate a UDP tunnel associated with a single HTTP stream, clients issue a
request containing the "connect-udp" upgrade token. The target of the tunnel is
indicated by the client to the UDP proxy via the "target_host" and "target_port"
variables of the URI Template, see <xref target="client-config"/>. If the request is
successful, the UDP 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>
      <section anchor="handling">
        <name>UDP Proxy Handling</name>
        <t>Upon receiving a UDP proxying request, the recipient UDP 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 UDP 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 UDP 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 UDP proxy <bcp14>MUST</bcp14> fail the request and <bcp14>SHOULD</bcp14> send
details using an appropriate "Proxy-Status" header field
<xref target="PROXY-STATUS"/>.</t>
        <t>UDP proxies can use connected UDP sockets if their operating system supports
them, as that allows the UDP proxy to rely on the kernel to only send it UDP
packets that match the correct 5-tuple. If the UDP 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 UDP proxy.</t>
        <t>The lifetime of the socket is tied to the request stream. The UDP proxy <bcp14>MUST</bcp14>
keep the socket open while the request stream is open. If a UDP 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. UDP 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. UDP 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 UDP 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>UDP 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/1.1 Request</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 <bcp14>SHALL</bcp14> include a single "Host" header field containing the origin
of the UDP proxy.</li>
          <li>the request <bcp14>SHALL</bcp14> include a "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 an "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/1.1 Request</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>
        <t>In HTTP/1.1, this protocol uses the GET method to mimic the design of the
WebSocket Protocol <xref target="WEBSOCKET"/>.</t>
      </section>
      <section anchor="resp1">
        <name>HTTP/1.1 Response</name>
        <t>The UDP 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 UDP proxy could respond with:</t>
        <figure anchor="fig-resp-h1">
          <name>Example HTTP/1.1 Response</name>
          <artwork><![CDATA[
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: connect-udp
]]></artwork>
        </figure>
      </section>
      <section anchor="req23">
        <name>HTTP/2 and HTTP/3 Requests</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 UDP
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/2 Request</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/2 and HTTP/3 Responses</name>
        <t>The UDP 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 UDP proxy could respond with:</t>
        <figure anchor="fig-resp-h2">
          <name>Example HTTP/2 Response</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
UDP proxy, it contains a single draft number selected by the UDP 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 UDP 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 UDP proxy if it
responds to the request with a failure, or if the proxied packets are received
by the UDP 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 UDP 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>UDP 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 UDP 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 UDP 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 UDP 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 UDP 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 UDP proxy sends to the target, nor
can UDP proxies communicate the markings of each UDP packet from target to UDP
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 UDP 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 UDP proxy. HTTP servers 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 CONNECT 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 UDP 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 UDP
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="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="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="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="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="WEBSOCKET">
          <front>
            <title>The WebSocket Protocol</title>
            <author fullname="I. Fette" initials="I." surname="Fette">
              <organization/>
            </author>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov">
              <organization/>
            </author>
            <date month="December" year="2011"/>
            <abstract>
              <t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code.  The security model used for this is the origin-based security model commonly used by web browsers.  The protocol consists of an opening handshake followed by basic message framing, layered over TCP.  The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or &lt;iframe&gt;s and long polling).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6455"/>
          <seriesInfo name="DOI" value="10.17487/RFC6455"/>
        </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. The author is indebted to Mark Nottingham and Lucas Pardue for the many
improvements they contributed to 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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
dER1qP4b5YmwgfhgAAA=

-->

</rfc>
