<?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.36 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-seemann-quic-nat-traversal-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="QUIC NAT Traversal">Using QUIC to traverse NATs</title>
    <seriesInfo name="Internet-Draft" value="draft-seemann-quic-nat-traversal-00"/>
    <author fullname="Marten Seemann">
      <organization>Protocol Labs</organization>
      <address>
        <email>martenseemann@gmail.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="10"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>QUIC</keyword>
    <keyword>ICE</keyword>
    <keyword>NAT traversal</keyword>
    <keyword>hole punching</keyword>
    <abstract>
      <?line 29?>

<t>QUIC (<xref target="RFC9000"/>) is well-suited to various NAT traversal techniques. As it
operates over UDP, and because the QUIC header was designed to be demultipexed
from other protocols, STUN (<xref target="RFC5389"/>) can be used on the same UDP socket.
This allows for using ICE (<xref target="RFC8445"/>) with QUIC. Furthermore, QUIC’s path
validation mechanism can be used to test the viability of an address candidate
pair, allowing the immediate use of a new path.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    QUIC Working Group mailing list (quic@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/marten-seemann/draft-seemann-quic-nat-traversal"/>.</t>
    </note>
  </front>
  <middle>
    <?line 38?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines three distinct modes for traversing NATs using QUIC:</t>
      <ol spacing="normal" type="1"><li>Using ICE with an external signaling channel to select a pair of UDP
addresses. Once candidate nomination is completed, a new QUIC connection
between the two endpoints can be established.</li>
        <li>Using a (proxied) QUIC connection as the signaling channel for ICE. Once ICE
has nominated a candidate pair (i.e., selected a usable path), the proxied
connection is migrated using QUIC's connection migration.</li>
        <li>Using a (proxied) QUIC connection as the signaling channel for ICE. Instead
of using ICE's connectivity checks, QUIC's path validation logic is used to
determine possible paths.</li>
      </ol>
      <t>The first mode doesn't require any changes to existing QUIC and ICE stacks. The
only requirement is the ability to send non-QUIC (STUN) packets on the UDP
socket that a QUIC server is listening on. However, it necessitates running a
separate signaling channel for the communication between the two ICE agents.</t>
      <t>The second mode requires a minor modification of the QUIC stacks involved, as
they now need to be capable of exchanging ICE messages on top of the proxied
QUIC connection. This is achieved by defining an ICE frame to carry these
messages. This mode makes it possible to start exchanging application data (via
QUIC streams) on the proxied connection. The migration event is transparent to
the application.</t>
      <t>The third mode necessitates changes to both the QUIC and ICE stacks. The ICE
delegates responsibility for performing connectivity checks to the QUIC stack.
The QUIC stack utilizes QUIC's path validation logic to perform the connectivity
check. In addition to the path validation mechanism described in <xref target="RFC9000"/>,
the QUIC server needs the capability to initiate path validation, which, as per
<xref target="RFC9000"/>, is solely executed by the client. Compared to the second mode,
this mode elimitates the need to effectively probe a path twice (once at the ICE
and once at the QUIC layer), leading to a faster connection migration.</t>
    </section>
    <section anchor="modes">
      <name>Modes</name>
      <section anchor="using-an-external-signaling-channel">
        <name>Using an External Signaling Channel</name>
        <t>When an external signaling channel is used, the QUIC connection is established
after the two ICE agents have agreed on a candidate pair. This mode doesn't
require any modification to existing QUIC stacks, particularly, it does not
necessitate the negotiation of the ICE extension defined in this document.</t>
        <t>Once ICE has completed, the client immediately initiates a normal QUIC handshake
using the server's address from the nominated address pair. The ICE connectivity
checks should have created the necessary NAT bindings for the client's first
flight to reach the server, and for the server's first flight to reach the
client.</t>
      </section>
      <section anchor="using-a-quic-connection-as-a-signaling-channel-using-ice-for-connectivity-checks">
        <name>Using a QUIC Connection as a Signaling Channel, using ICE for Connectivity Checks</name>
        <t>A (proxied) QUIC connection (e.g. using CONNECT-UDP (<xref target="RFC9298"/>)) can be used
as the signaling channel required by the ICE protocol (see section 1 of
<xref target="RFC8445"/>). ICE messages are sent on this QUIC connection using the ICE frame
defined in this document. This mode requires the ICE extension defined in this
document to be negotiated (<xref target="negotiating-extension-use"/>). Implementions <bcp14>MAY</bcp14> use
Trickle ICE (<xref target="RFC8838"/>) to speed up the exchange of address candidates.</t>
        <t>Once ICE has successfully nominated a candidate pair, this path can be used as a
direct connection between the two endpoints. The client <bcp14>SHOULD</bcp14> initiate a QUIC
connection migration (section 9 of <xref target="RFC9000"/>) in a timely manner. The ICE
connectivity check should have created all the NAT bindings needed for the QUIC
path validation to complete successfully, however, these NAT bindings are
usually only valid for a limited amount of time.</t>
      </section>
      <section anchor="using-a-quic-connection-as-a-signaling-channel-using-quic-for-connectivity-checks">
        <name>Using a QUIC Connection as a Signaling Channel, using QUIC for Connectivity Checks</name>
        <t>Similar to mode 2, in this mode a (proxied) QUIC connection is used as the ICE
signaling channel. Instead of performing the connectivy checks (section 7 of
<xref target="RFC8445"/>) themselves, the ICE stacks delegates them to the QUIC stack.</t>
        <t>The QUIC client <bcp14>MUST</bcp14> ensure that it ends up as the controlling agent (see
section 2.3 of <xref target="RFC8445"/>). This can be achieved by sending the maximum
allowed value for the tiebreaker value (see section 7.3.1. of <xref target="RFC8445"/>).</t>
        <t>When the ICE stack requests to perform a connectivity check for an address
candidate pair, each QUIC endpoint probes the path by sending a probing packet
containing a PATH_CHALLENGE frames, as described in section 8.2 of <xref target="RFC9000"/>.
Note that this differs slightly from <xref target="RFC9000"/>, where only the client sends a
probing packet. To create the required NAT bindings, it's necessary for both
endpoints to send packets.</t>
        <t>Upon the completion of path validation, the QUIC stack passes the result
(successful or failed) back to the ICE stack. The ICE stack then nominates an
address pair. The client <bcp14>SHOULD</bcp14> then migrate the QUIC connection to this path in
a timely manner.</t>
      </section>
    </section>
    <section anchor="negotiating-extension-use">
      <name>Negotiating Extension Use</name>
      <t>Endpoints advertise their support of the extension needed for mode 2 and 3 by
sending the ice (0x3d7e9f0bca12fea6) transport parameter (section 7.4 of
<xref target="RFC9000"/>) with an empty value. An implementation that understands this
transport parameter <bcp14>MUST</bcp14> treat the receipt of a non-empty value as a connection
error of type TRANSPORT_PARAMETER_ERROR.</t>
      <t>In order to the use of this extension in 0-RTT packets, the client <bcp14>MUST</bcp14> remember
the value of this transport parameter. If 0-RTT data is accepted by the server,
the server <bcp14>MUST</bcp14> not disable this extension on the resumed connection.</t>
    </section>
    <section anchor="ice-frame">
      <name>ICE Frame</name>
      <artwork><![CDATA[
ICE Frame {
    Type (i) = 0x1ce,
    Length (i),
    Data (...),
}
]]></artwork>
      <t>The ICE frame contains the following fields:</t>
      <t>Length: A variable-length integer encoding the length of the following Data field.</t>
      <t>Data: The ICE message.</t>
      <t>If the Length is larger than the remaining payload of the QUIC packet, the
receiver <bcp14>MUST</bcp14> close the connection with a connection error of type
FRAME_ENCODING_ERROR.</t>
      <t>ICE frames are ack-eliciting. When lost, they <bcp14>MUST NOT</bcp14> be retransmitted, as the
ICE layer is handling retransmission of messages.</t>
    </section>
    <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?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC9000">
        <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="RFC5389">
        <front>
          <title>Session Traversal Utilities for NAT (STUN)</title>
          <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
          <author fullname="R. Mahy" initials="R." surname="Mahy"/>
          <author fullname="P. Matthews" initials="P." surname="Matthews"/>
          <author fullname="D. Wing" initials="D." surname="Wing"/>
          <date month="October" year="2008"/>
          <abstract>
            <t>Session Traversal Utilities for NAT (STUN) is a protocol that serves as a tool for other protocols in dealing with Network Address Translator (NAT) traversal. It can be used by an endpoint to determine the IP address and port allocated to it by a NAT. It can also be used to check connectivity between two endpoints, and as a keep-alive protocol to maintain NAT bindings. STUN works with many existing NATs, and does not require any special behavior from them.</t>
            <t>STUN is not a NAT traversal solution by itself. Rather, it is a tool to be used in the context of a NAT traversal solution. This is an important change from the previous version of this specification (RFC 3489), which presented STUN as a complete solution.</t>
            <t>This document obsoletes RFC 3489. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5389"/>
        <seriesInfo name="DOI" value="10.17487/RFC5389"/>
      </reference>
      <reference anchor="RFC8445">
        <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="RFC9298">
        <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="RFC8838">
        <front>
          <title>Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol</title>
          <author fullname="E. Ivov" initials="E." surname="Ivov"/>
          <author fullname="J. Uberti" initials="J." surname="Uberti"/>
          <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
          <date month="January" year="2021"/>
          <abstract>
            <t>This document describes "Trickle ICE", an extension to the Interactive Connectivity Establishment (ICE) protocol that enables ICE agents to begin connectivity checks while they are still gathering candidates, by incrementally exchanging candidates over time instead of all at once. This method can considerably accelerate the process of establishing a communication session.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8838"/>
        <seriesInfo name="DOI" value="10.17487/RFC8838"/>
      </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>
    </references>
    <?line 196?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
DoerdiUC9B/PMtD1FR4AAA==

-->

</rfc>
