<?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.13 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schinazi-connect-udp-listen-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.0 -->
  <front>
    <title abbrev="CONNECT-UDP Listen">Proxying Listener UDP in HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-schinazi-connect-udp-listen-00"/>
    <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="July" day="07"/>
    <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>
      <t>The mechanism to proxy UDP in HTTP only allows each 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
those 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://DavidSchinazi.github.io/draft-schinazi-connect-udp-listen/draft-schinazi-connect-udp-listen.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-schinazi-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/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/DavidSchinazi/draft-schinazi-connect-udp-listen"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>The mechanism to proxy UDP in HTTP <xref target="CONNECT-UDP"/>
allows proxying 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 that in turn relies on the ability to send and receive UDP packets to
multiple hosts. While it would be possible in theory to accomplish this by using
multiple UDP proxying HTTP requests, HTTP semantics <xref target="HTTP"/> do not guarantee
that those distinct requests will be handled by the same server, which can lead
to the UDP packets being sent from distinct IP addresses, which in turn prevents
ICE from operating correctly. Because of this, 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>
        <t>This document uses terminology from <xref target="CONNECT-UDP"/> and notational conventions
from <xref target="QUIC"/>.</t>
      </section>
    </section>
    <section anchor="proxied-udp-listener-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 Exansion 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 proxying request, with the value
equal to the context ID it has allocated, see <xref target="hdr"/>.</t>
      <section anchor="format">
        <name>HTTP Datagram Payload Format</name>
        <t>When HTTP Datagrams <xref target="HTTP-DGRAM"/> associated with
this listener UDP proxying request use the context ID sent with the
connect-udp-listen header field, their Payload field (as defined in <xref section="5" sectionFormat="of" target="CONNECT-UDP"/>) has the format defined in <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 HTTP Datagram 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 target host that the proxy will send this UDP payload to. When sent from
proxy to client, this represents the source IP address of the UDP packet
received by the proxy. This field has length 32 bits when the previous 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. When sent from client to proxy, this
is target port that the proxy will send this UDP payload to. 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 is an Item Structured Field, see <xref section="3.3" sectionFormat="of" target="STRUCT-FIELD"/>; its value <bcp14>MUST</bcp14> be an Integer; any other value
type <bcp14>MUST</bcp14> be handled as if the field were not present by recipients (for
example, if this field is included multiple times, its type will become a List
and the field will therefore 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>
    <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.</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="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="17" month="June" 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="Internet-Draft" value="draft-ietf-masque-connect-udp-15"/>
        </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">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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">
              <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="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="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="17" month="June" 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 sent unreliably 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-11"/>
        </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>
      </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">
              <organization/>
            </author>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg">
              <organization/>
            </author>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg">
              <organization/>
            </author>
            <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="CONNECT-IP">
          <front>
            <title>IP Proxying Support for HTTP</title>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Alex Chernyakhovsky">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Mirja Kuehlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Magnus Westerlund">
              <organization>Ericsson</organization>
            </author>
            <date day="4" month="March" year="2022"/>
            <abstract>
              <t>   This document describes a method of proxying IP packets over HTTP.
   This protocol is similar to CONNECT-UDP, but allows transmitting
   arbitrary IP packets, without being limited to just TCP like CONNECT
   or UDP like CONNECT-UDP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-01"/>
        </reference>
      </references>
    </references>
    <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 to another browser over a listener UDP proxying tunnel. It
then contacts a STUN server at 192.0.2.42. The STUN server then sends the
proxy's IP address to the other browser at 203.0.113.33 leading that other
browser to send a UDP packet to the proxy, and that packets gets 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 solved using IP Proxying in
HTTP <xref target="CONNECT-IP"/>, that would require that every
HTTP Datagram carry a complete IP header. This would not only cause
inefficiencies in the wire encoding, it would additionally reduce the available
Maximum Transmission Unit (MTU). Furthermore, it would require that Web browsers
implement IPv4 and IPv6 header generation and parsing, alongside with 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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

-->

</rfc>
