<?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-rfc version 1.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-masque-connect-udp-listen-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="CONNECT-UDP Listen">Proxying Listener UDP in HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-udp-listen-01"/>
    <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>
    <author initials="A." surname="Singh" fullname="Abhi Singh">
      <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>abhisinghietf@gmail.com</email>
      </address>
    </author>
    <date year="2023" month="September" day="08"/>
    <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>
    <keyword>listen</keyword>
    <abstract>
      <?line 62?>

<t>The mechanism to proxy UDP in HTTP only allows each UDP Proxying request to
transmit to a specific host and port. This is well suited for UDP client-server
protocols such as HTTP/3, but is not sufficient for some UDP peer-to-peer
protocols like WebRTC. This document proposes an extension to UDP Proxying in
HTTP that enables such use-cases.</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-listen/draft-ietf-masque-connect-udp-listen.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-masque-connect-udp-listen/"/>.
      </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/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/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-listen"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The mechanism to proxy UDP in HTTP <xref target="CONNECT-UDP"/> allows creating
tunnels for communicating UDP payloads <xref target="UDP"/> to a fixed host and
port. Combined with the HTTP CONNECT method (see <xref section="9.3.6" sectionFormat="of" target="HTTP"/>), it allows proxying the majority of a Web Browser's HTTP
traffic. However WebRTC <xref target="WebRTC"/> relies on ICE <xref target="ICE"/> to provide
connectivity between two Web browsers, and ICE relies on the ability to send and
receive UDP packets to multiple hosts. While in theory it might be possible to
accomplish this using multiple UDP Proxying HTTP requests, HTTP semantics
<xref target="HTTP"/> do not guarantee that distinct requests will be handled by the same
server. This can lead to the UDP packets being sent from distinct IP addresses,
thereby preventing ICE from operating correctly. Consequently, UDP Proxying
requests cannot enable WebRTC connectivity between peers.</t>
      <t>This document describes an extension to UDP Proxying in HTTP that allows sending
and receiving UDP payloads to multiple hosts within the scope of a single UDP
Proxying HTTP request.</t>
      <section anchor="conventions-and-definitions">
        <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>
        <?line -18?>

<t>This document uses terminology from <xref target="CONNECT-UDP"/> and notational conventions
from <xref target="QUIC"/>. This document uses the terms Integer and List from
<xref section="3" sectionFormat="of" target="STRUCTURED-FIELDS"/> to specify syntax and parsing.</t>
      </section>
    </section>
    <section anchor="mechanism">
      <name>Proxied UDP Listener Mechanism</name>
      <t>In unextended UDP Proxying requests, the target host is encoded in the HTTP
request path or query. For Listener UDP Proxying, it is instead conveyed in each
HTTP Datagram, see <xref target="format"/>.</t>
      <t>When performing URI Template Expansion of the UDP Proxying template (see
<xref section="3" sectionFormat="of" target="CONNECT-UDP"/>), the client sets both the target_host and the
target_port variables to the '*' character (ASCII character 0x2A).</t>
      <t>Before sending its UDP Proxying request to the proxy, the client allocates an
even-numbered context ID, see <xref section="4" sectionFormat="of" target="CONNECT-UDP"/>. The client then adds
the "connect-udp-listen" header field to its UDP Proxying request, with its
value set as the allocated context ID, see <xref target="hdr"/>.</t>
    </section>
    <section anchor="format">
      <name>HTTP Datagram Payload Format</name>
      <t>When HTTP Datagrams <xref target="HTTP-DGRAM"/> associated with this Listener UDP
Proxying request contain the context ID in the connect-udp-listen header field,
the format of their UDP Proxying Payload field (see <xref section="5" sectionFormat="of" target="CONNECT-UDP"/>) is defined by <xref target="dgram-format"/>:</t>
      <figure anchor="dgram-format">
        <name>Listener UDP Proxying HTTP Datagram Format</name>
        <artwork type="ascii-art"><![CDATA[
Listener UDP Proxying Payload {
  IP Version (8),
  IP Address (32..128),
  UDP Port (16),
  UDP Payload (..),
}
]]></artwork>
      </figure>
      <dl>
        <dt>IP Version:</dt>
        <dd>
          <t>The IP Version of the following IP Address field. <bcp14>MUST</bcp14> be 4 or 6.</t>
        </dd>
        <dt>IP Address:</dt>
        <dd>
          <t>The IP Address of this proxied UDP packet. When sent from client to proxy,
this is the target host to which the proxy will send this UDP payload. When sent
from proxy to client, this represents the source IP address of the UDP packet
received by the proxy. This field has a length of 32 bits when the corresponding
IP Version field value is 4, and 128 when the IP Version is 6.</t>
        </dd>
        <dt>UDP Port:</dt>
        <dd>
          <t>The UDP Port of this proxied UDP packet in network byte order. When sent from
client to proxy, this is the target port to which the proxy will send this UDP
payload. When sent from proxy to client, this represents the source UDP port of
the UDP packet received by the proxy.</t>
        </dd>
        <dt>UDP Payload:</dt>
        <dd>
          <t>The unmodified UDP Payload of this proxied UDP packet (referred to as "data
octets" in <xref target="UDP"/>).</t>
        </dd>
      </dl>
    </section>
    <section anchor="hdr">
      <name>The connect-udp-listen Header Field</name>
      <t>The "connect-udp-listen" header field’s value is an Integer. It is set as the
Context ID allocated for Listener UDP Proxying; see <xref target="mechanism"/>. Any other
value type <bcp14>MUST</bcp14> be handled as if the field were not present by the recipients
(for example, if this field is defined multiple times, its type becomes a List
and therefore is to be ignored). This document does not define any parameters
for the connect-udp-listen header field value, but future documents might define
parameters. Receivers <bcp14>MUST</bcp14> ignore unknown parameters.</t>
    </section>
    <section anchor="proxy-behavior">
      <name>Proxy behavior</name>
      <t>After accepting the Connect-UDP Listener proxying request, the proxy uses a UDP
port to transmit UDP payloads received from the client to the target IP Address
and UDP Port specified in each Listener Datagram Payload received from the
client. The proxy uses the same port to listen for UDP packets from any
authorized target and encapsulates the packets in the Listener Datagram
Payload format, specifying the IP and port of the target and forwards it to
the client.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations described in <xref section="7" sectionFormat="of" target="CONNECT-UDP"/> also apply
here. Since TURN can be run over this mechanism, implementors should review the
security considerations in <xref section="21" sectionFormat="of" target="TURN"/>.</t>
      <t>Since unextended UDP Proxying requests carry the target as part of the request,
the proxy can protect unauthorized targets by rejecting requests before creating
the tunnel, and communicate the rejection reason in response header fields.
Listener UDP Proxying requests do not have this ability. Therefore, proxies <bcp14>MUST</bcp14>
validate the target on every datagram and <bcp14>MUST NOT</bcp14> forward individual datagrams
with unauthorized targets. Proxies can either silently discard such datagrams or
abort the corresponding request stream.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document will request IANA to register the following entry in the "HTTP
Field Name" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/http-fields"/>&gt;:</t>
      <dl spacing="compact">
        <dt>Field Name:</dt>
        <dd>
          <t>connect-udp-listen</t>
        </dd>
        <dt>Template:</dt>
        <dd>
          <t>None</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>provisional (permanent if this document is approved)</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Comments:</dt>
        <dd>
          <t>None</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="CONNECT-UDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="August" year="2022"/>
            <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 an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </reference>
        <reference anchor="UDP">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <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">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <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.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </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"/>
            <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"/>
            <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="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <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="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <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="HTTP-DGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="WebRTC" target="https://www.w3.org/TR/webrtc/">
          <front>
            <title>WebRTC</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="January" day="26"/>
          </front>
          <seriesInfo name="W3C" value="Recommendation"/>
        </reference>
        <reference anchor="ICE">
          <front>
            <title>Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal</title>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>This document describes a protocol for Network Address Translator (NAT) traversal for UDP-based communication. This protocol is called Interactive Connectivity Establishment (ICE). ICE makes use of the Session Traversal Utilities for NAT (STUN) protocol and its extension, Traversal Using Relay NAT (TURN).</t>
              <t>This document obsoletes RFC 5245.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8445"/>
          <seriesInfo name="DOI" value="10.17487/RFC8445"/>
        </reference>
        <reference anchor="TURN">
          <front>
            <title>Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)</title>
            <author fullname="T. Reddy" initials="T." role="editor" surname="Reddy"/>
            <author fullname="A. Johnston" initials="A." role="editor" surname="Johnston"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>If a host is located behind a NAT, it can be impossible for that host to communicate directly with other hosts (peers) in certain situations. In these situations, it is necessary for the host to use the services of an intermediate node that acts as a communication relay. This specification defines a protocol, called "Traversal Using Relays around NAT" (TURN), that allows the host to control the operation of the relay and to exchange packets with its peers using the relay. TURN differs from other relay control protocols in that it allows a client to communicate with multiple peers using a single relay address.</t>
              <t>The TURN protocol was designed to be used as part of the Interactive Connectivity Establishment (ICE) approach to NAT traversal, though it can also be used without ICE.</t>
              <t>This document obsoletes RFCs 5766 and 6156.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8656"/>
          <seriesInfo name="DOI" value="10.17487/RFC8656"/>
        </reference>
        <reference anchor="CONNECT-IP">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Alex Chernyakhovsky" initials="A." surname="Chernyakhovsky">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Magnus Westerlund" initials="M." surname="Westerlund">
              <organization>Ericsson</organization>
            </author>
            <date day="28" month="April" year="2023"/>
            <abstract>
              <t>   This document describes how to proxy IP packets in HTTP.  This
   protocol is similar to UDP proxying in HTTP, but allows transmitting
   arbitrary IP packets.  More specifically, this document defines a
   protocol that allows an HTTP client to create an IP tunnel through an
   HTTP server that acts as an IP proxy.  This document updates RFC
   9298.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-13"/>
        </reference>
      </references>
    </references>
    <?line 232?>

<section anchor="example">
      <name>Example</name>
      <t>In the example below, the client is configured with URI Template
"https://example.org/.well-known/masque/udp/{target_host}/{target_port}/" and
wishes to use WebRTC with another browser over a listener UDP Proxying tunnel.
It contacts a STUN server at 192.0.2.42. The STUN server, in response, sends the
proxy's IP address to the other browser at 203.0.113.33. Using this information,
the other browser sends a UDP packet to the proxy, which is proxied over HTTP
back to the client.</t>
      <artwork type="ascii-art"><![CDATA[
 Client                                             Server

 STREAM(44): HEADERS            -------->
   :method = CONNECT
   :protocol = connect-udp
   :scheme = https
   :path = /.well-known/masque/udp/*/*/
   :authority = proxy.example.org
   connect-udp-listen = 2
   capsule-protocol = ?1

 DATAGRAM                       -------->
   Quarter Stream ID = 11
   Context ID = 2
   IP Version = 4
   IP Address = 192.0.2.42
   UDP Port = 1234
   UDP Payload = Encapsulated UDP Payload

            <--------  STREAM(44): HEADERS
                         :status = 200
                         capsule-protocol = ?1

/* Wait for STUN server to respond to UDP packet. */

            <--------  DATAGRAM
                         Quarter Stream ID = 11
                         Context ID = 2
                         IP Version = 4
                         IP Address = 192.0.2.42
                         UDP Port = 1234
                         UDP Payload = Encapsulated UDP Payload

/* Wait for the STUN server to send the proxy's IP and */
/* port to the other browser and for the other browser */
/* to send a UDP packet to the proxy. */

            <--------  DATAGRAM
                         Quarter Stream ID = 11
                         Context ID = 2
                         IP Version = 4
                         IP Address = 203.0.113.33
                         UDP Port = 4321
                         UDP Payload = Encapsulated UDP Payload
]]></artwork>
    </section>
    <section anchor="comparison-with-connect-ip">
      <name>Comparison with CONNECT-IP</name>
      <t>While the use-cases described in <xref target="intro"/> could be supported using IP Proxying
in HTTP <xref target="CONNECT-IP"/>, it would require that every
HTTP Datagram carries a complete IP header. This would lead to both
inefficiencies in the wire encoding and reduction in available Maximum
Transmission Unit (MTU). Furthermore, Web browsers would need to support IPv4
and IPv6 header generation, parsing, validation and error handling.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This proposal is the result of many conversations with MASQUE working group
participants.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
+j9RIy6eKykAAA==

-->

</rfc>
