<?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.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-seemann-quic-nat-traversal-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="QUIC NAT Traversal">Using QUIC to traverse NATs</title>
    <seriesInfo name="Internet-Draft" value="draft-seemann-quic-nat-traversal-03"/>
    <author fullname="Marten Seemann">
      <organization/>
      <address>
        <email>martenseemann@gmail.com</email>
      </address>
    </author>
    <author fullname="Eric Kinnear">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>ekinnear@apple.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="08"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>QUIC</keyword>
    <keyword>ICE</keyword>
    <keyword>NAT traversal</keyword>
    <keyword>hole punching</keyword>
    <abstract>
      <?line 35?>

<t>This document specifies a QUIC extension for traversing Network Address
Translators (NATs). Endpoints use an existing proxied QUIC connection to
coordinate path validation attempts that create the NAT bindings needed for a
direct path and test its connectivity. Application data can be exchanged over
the proxied path while NAT traversal is in progress. Once a suitable direct
path has been validated, the connection can migrate to it.</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 44?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies an extension to QUIC (<xref target="RFC9000"/>) that enables
endpoints behind NATs to establish a direct path for an existing connection. The
extension uses QUIC's path validation mechanism to create NAT bindings and test
connectivity, and connection migration to move the connection to a suitable
direct path.</t>
      <t>The endpoints first establish a QUIC connection over a proxied path. This
connection carries both application data and the signaling needed to coordinate
NAT traversal. The server advertises its address candidates, and the client
pairs them with its own candidates and requests coordinated path validation
attempts. Both endpoints send path validation packets toward the selected peer
addresses to create the necessary NAT bindings.</t>
      <t>Application data can be exchanged over the proxied path while these attempts are
in progress. If a suitable direct path is validated, the connection can migrate
to it. Otherwise, the endpoints can continue using the proxied path.</t>
      <t>The extension borrows address candidate pairing concepts from Interactive
Connectivity Establishment (ICE; <xref target="RFC8445"/>), but does not use the ICE
protocol.</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?>

<dl>
        <dt>Sending base:</dt>
        <dd>
          <t>The local sending context used for an address candidate, such as a UDP socket
on a particular network interface or a tunnel.</t>
        </dd>
      </dl>
    </section>
    <section anchor="background-nat-traversal-with-ice">
      <name>Background: NAT Traversal with ICE</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. In particular, it does not
necessitate the negotiation of the extension defined in this document.</t>
      <t>For address discovery to work, QUIC and ICE need to use the same UDP socket.
Since this requires demultiplexing of QUIC and STUN packets, the QUIC bit cannot
be greased as described in <xref target="RFC9287"/>.</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="nat-traversal-extension-overview">
      <name>NAT Traversal Extension Overview</name>
      <t>QUIC's path validation mechanism can be used to establish the required NAT
mappings that allow for a direct connection. Once the NAT mappings are
established, QUIC's connection migration can be used to migrate the connection
to a direct path. During the path validation phase, multiple different paths
might be established in parallel. When using QUIC Multipath <xref target="MULTIPATH"/>, these
paths may be used at the same time; however, the mechanism described in this
document does not require the use of QUIC multipath.</t>
      <t>Although ICE is not directly used, the logic run on the client makes use of
ICE's candidate pairing logic (see especially <xref section="6.1.2.2" sectionFormat="of" target="RFC8445"/>).
Implementations are free to implement different algorithms as they see fit.</t>
      <t>This mode needs to be negotiated during the handshake; see
<xref target="negotiate-extension"/>.</t>
    </section>
    <section anchor="candidate-discovery-and-exchange">
      <name>Candidate Discovery and Exchange</name>
      <section anchor="gathering-address-candidates">
        <name>Gathering Address Candidates</name>
        <t>The gathering of address candidates is out of scope for this document. Endpoints
<bcp14>MAY</bcp14> use the logic described in Sections <xref target="RFC8445" section="5.1.1" sectionFormat="bare"/> and <xref target="RFC8445" section="5.2" sectionFormat="bare"/> of <xref target="RFC8445"/>, or they
<bcp14>MAY</bcp14> use address candidates provided by the application.</t>
      </section>
      <section anchor="advertising-server-address-candidates">
        <name>Advertising Server Address Candidates</name>
        <t>The server advertises its address candidates using ALTERNATIVE_ADDRESS frames,
as defined in <xref target="ALTERNATIVE-ADDRESS"/>. Each frame advertises the complete set of
alternative addresses and replaces the previously advertised set. The server
<bcp14>SHOULD NOT</bcp14> wait until address candidate discovery has finished; instead, it
<bcp14>SHOULD</bcp14> update the advertised set as soon as new candidates become available.
This speeds up NAT traversal and is similar to Trickle ICE (<xref target="RFC8838"/>).</t>
        <t>The server stores the sending bases associated with each advertised address.
Candidates with different sending bases <bcp14>MUST</bcp14> be advertised as separate
entries, even if their advertised addresses are identical.</t>
        <t>Each advertisement of an address <bcp14>MUST</bcp14> retain one entry per base ever advertised
for it on this connection. Without an increase in the entry count, the client
cannot distinguish a replaced base from an unchanged one and might not schedule
another attempt.</t>
        <t>Across advertisements, entries for the same address <bcp14>MUST</bcp14> retain their relative
order and associated sending bases. Entries for new bases <bcp14>MUST</bcp14> follow the
existing entries for that address.</t>
        <t>The server <bcp14>MAY</bcp14> withdraw an address by omitting all its entries from a subsequent
address-set update.</t>
        <t>Since address matching is run on the client side, only the server advertises
address candidates. The client communicates selected address pairs to the server
using PUNCH_REQUEST frames.</t>
      </section>
      <section anchor="forming-candidate-pairs">
        <name>Forming Candidate Pairs</name>
        <t>The client matches the address candidates sent by the server with its own
address candidates, forming candidate pairs. <xref section="5.1" sectionFormat="of" target="RFC8445"/>
describes an algorithm for pairing address candidates. Since the pairing
algorithm is only run on the client side, the endpoints do not need to agree on
the algorithm used, and the client is free to use a different algorithm.</t>
        <t>The client <bcp14>MUST</bcp14> treat local candidates with different sending bases and
distinct server entries as separate candidates, even if their addresses are
identical. It <bcp14>SHOULD</bcp14> request one attempt per compatible pair. Across
advertisements, the client identifies a server candidate by its address and
position among entries for that address.</t>
      </section>
    </section>
    <section anchor="coordinated-probing">
      <name>Coordinated Path Probing</name>
      <t>The server authorizes attempts using PUNCH_GRANT (<xref target="punch-grant-frame"/>). Each
grant permits one independent path validation attempt for an address pair. The
client uses a grant by sending PUNCH_REQUEST with its Grant ID and the selected
address pair on an established path. It <bcp14>SHOULD</bcp14> start validation immediately
after sending this request; the server <bcp14>SHOULD</bcp14> start immediately upon accepting
it. Validation follows <xref section="8.2" sectionFormat="of" target="RFC9000"/>, with additional rate limits
(<xref target="amplification-attack"/>). Each endpoint <bcp14>MUST</bcp14> set its own timeout following
<xref section="8.2.4" sectionFormat="of" target="RFC9000"/>.</t>
      <t>Each endpoint <bcp14>MUST</bcp14> send probe packets containing PATH_CHALLENGE frames for an
attempt from a single sending base to the peer address specified in the
PUNCH_REQUEST.</t>
      <t>Each endpoint <bcp14>MUST</bcp14> report success or timeout using PUNCH_DONE
(<xref target="punch-done-frame"/>); the server <bcp14>MUST</bcp14> also report rejection. Before sending it,
the endpoint <bcp14>MUST</bcp14> permanently stop sending probe packets containing
PATH_CHALLENGE frames for that attempt.</t>
      <t>PUNCH_DONE does not stop the peer's probing or change its validation result.</t>
      <t>The client <bcp14>SHOULD</bcp14> request attempts as candidate pairs and unused grants become
available, but <bcp14>MAY</bcp14> delay requests to prioritize pairs.</t>
      <section anchor="grant-limits">
        <name>Grant Limits</name>
        <t>The client's nat_traversal transport parameter (<xref target="negotiate-extension"/>) sets
the initial cumulative grant limit. MAX_PUNCH_GRANTS
(<xref target="max-punch-grants-frame"/>) can increase it. The server <bcp14>MUST NOT</bcp14> issue a grant
whose Grant ID is greater than or equal to the largest limit received. The
client <bcp14>MUST</bcp14> treat receipt of a grant at or above its largest advertised limit
as a connection error of type PROTOCOL_VIOLATION.</t>
        <t>The server decides when to issue grants within the limit; the client decides
when to increase it.</t>
      </section>
      <section anchor="punching-cids">
        <name>Punching Connection IDs</name>
        <t>This document introduces punching connection IDs, a new type of connection ID
for coordinated path probing. They have the same wire format in packet headers
as ordinary connection IDs and <bcp14>MUST</bcp14> satisfy the unlinkability requirements in
<xref section="5.1" sectionFormat="of" target="RFC9000"/>.</t>
        <t>Each endpoint issues two punching connection IDs per grant, using PUNCH_GRANT or
PUNCH_REQUEST, respectively. The IDs <bcp14>MUST</bcp14> be distinct from all others issued by
that endpoint on the connection.</t>
        <t>In most circumstances, only one of the two connection IDs is needed, but there
are certain network setups where both need to be used (<xref target="different-base"/>).</t>
        <t>The NEW_CONNECTION_ID and RETIRE_CONNECTION_ID mechanisms of <xref target="RFC9000"/> and the
active_connection_id_limit transport parameter do not apply to punching
connection IDs.</t>
        <t>Packets containing PATH_CHALLENGE or PATH_RESPONSE frames for an attempt <bcp14>MUST</bcp14>
use one of the peer's punching connection IDs for that grant. Non-probing
packets <bcp14>MUST NOT</bcp14> use these IDs. If a peer receives a non-probing packet that
used a punching connection ID, it <bcp14>MUST</bcp14> close the connection with an error of
type PROTOCOL_VIOLATION.</t>
        <t>An endpoint retires a grant's punching connection IDs after both sending and
receiving PUNCH_DONE (<xref target="punch-done-frame"/>) for that attempt.</t>
        <section anchor="punching-multipath">
          <name>Use with Multipath</name>
          <t>When QUIC multipath <xref target="MULTIPATH"/> is negotiated, packets using punching
connection IDs <bcp14>MUST</bcp14> use the reserved Path ID 0xffffffff for nonce calculation
and acknowledgments. All grants share its packet number space, which <bcp14>MUST</bcp14>
persist for the connection's lifetime without resetting packet numbers. This
ID is excluded from ordinary path allocation, path limits, and path management.
PATH_ACK frames for this ID <bcp14>MUST</bcp14> be sent on a validated path using an ordinary
destination connection ID.</t>
        </section>
      </section>
      <section anchor="different-base">
        <name>Probes Received on a Different Base</name>
        <t>Under certain network configurations, a probe packet can arrive at a different
base than the one the receiving endpoint selected for its attempt. This can
happen when overlapping address spaces give candidates with different bases
the same address (<xref section="B.2" sectionFormat="of" target="RFC8445"/>).</t>
        <t>Both endpoints follow the path validation rules of <xref target="RFC9000"/> in addition to
the coordinated probing rules above. An endpoint sends a packet containing the
PATH_RESPONSE from the receiving base to the probe's source address. A matching
PATH_RESPONSE validates the path on which the corresponding probe was sent,
regardless of where the response arrives.</t>
      </section>
      <section anchor="amplification-attack">
        <name>Amplification Attack Mitigation</name>
        <t>TODO describe exactly how to mitigate amplification attacks</t>
      </section>
    </section>
    <section anchor="negotiate-extension">
      <name>Extension Negotiation</name>
      <t>Endpoints advertise their support of the extension by sending the nat_traversal
(0x3d7e9f0bca12fea6) transport parameter (<xref section="7.4" sectionFormat="of" target="RFC9000"/>).</t>
      <t>The client's value is a single variable-length integer specifying the initial
cumulative grant limit (<xref target="grant-limits"/>). The server <bcp14>MUST</bcp14> send an empty value.
An endpoint that understands this transport parameter <bcp14>MUST</bcp14> treat receipt of an
invalid value as a connection error of type TRANSPORT_PARAMETER_ERROR.</t>
      <t>The client <bcp14>MUST</bcp14> also send the alternative_address transport parameter defined in
<xref target="ALTERNATIVE-ADDRESS"/>. A server that understands nat_traversal <bcp14>MUST</bcp14> treat
receipt of nat_traversal without alternative_address as a connection error of
type TRANSPORT_PARAMETER_ERROR.</t>
      <t>This transport parameter <bcp14>MUST NOT</bcp14> be remembered for use in 0-RTT. The frames
defined in this document <bcp14>MUST</bcp14> only be sent in 1-RTT packets.</t>
    </section>
    <section anchor="frames">
      <name>Frames</name>
      <t>This extension defines the PUNCH_GRANT, MAX_PUNCH_GRANTS, PUNCH_REQUEST, and
PUNCH_DONE frames.</t>
      <section anchor="punch-grant-frame">
        <name>PUNCH_GRANT Frame</name>
        <artwork><![CDATA[
PUNCH_GRANT Frame {
    Type (i) = 0x3d7e96,
    Grant ID (i),
    Connection ID 1 Length (8),
    Connection ID 1 (8..160),
    Connection ID 2 Length (8),
    Connection ID 2 (8..160),
}
]]></artwork>
        <t>PUNCH_GRANT authorizes one attempt and supplies the two server-issued punching
connection IDs (<xref target="punching-cids"/>). The server <bcp14>MUST</bcp14> number new grants
consecutively from 0 within each connection, subject to the client's grant
limit (<xref target="grant-limits"/>).</t>
        <t>Both Connection ID Length fields specify a length in bytes from 1 to 20;
other values <bcp14>MUST</bcp14> be treated as FRAME_ENCODING_ERROR.</t>
        <t>PUNCH_GRANT is ack-eliciting and sent on a validated path. The Grant ID <bcp14>SHOULD</bcp14>
be retransmitted on loss until acknowledged.</t>
        <t>This frame is only sent from the server to the client. Servers <bcp14>MUST</bcp14> treat
receipt of a PUNCH_GRANT frame as a connection error of type PROTOCOL_VIOLATION.</t>
      </section>
      <section anchor="max-punch-grants-frame">
        <name>MAX_PUNCH_GRANTS Frame</name>
        <artwork><![CDATA[
MAX_PUNCH_GRANTS Frame {
    Type (i) = 0x3d7e97,
    Maximum Grants (i),
}
]]></artwork>
        <t>Maximum Grants is the cumulative number of grants the server may issue,
including grants already used. Servers <bcp14>MUST</bcp14> ignore values that do not increase
the limit.</t>
        <t>MAX_PUNCH_GRANTS is ack-eliciting and sent on a validated path. On loss, the
client <bcp14>MUST</bcp14> retransmit its current limit unless it has already been
acknowledged.</t>
        <t>This frame is only sent from the client to the server. Clients <bcp14>MUST</bcp14> treat
receipt of a MAX_PUNCH_GRANTS frame as a connection error of type
PROTOCOL_VIOLATION.</t>
      </section>
      <section anchor="punchrequest-frame">
        <name>PUNCH_REQUEST Frame</name>
        <artwork><![CDATA[
PUNCH_REQUEST Frame {
    Type (i) = 0x3d7e92,
    Grant ID (i),
    Connection ID Length (8),
    Connection ID (8..160),
    Client Address Type (8),
    Client IP Address (32..128),
    Client Port (16),
    Advertisement Sequence Number (i),
    Entry Index (i),
}
]]></artwork>
        <t>The PUNCH_REQUEST frame contains the following fields:</t>
        <dl>
          <dt>Grant ID:</dt>
          <dd>
            <t>The grant used for this attempt (<xref target="punch-grant-frame"/>).</t>
          </dd>
          <dt>Connection ID Length and Connection ID:</dt>
          <dd>
            <t>The length in bytes and value of a client-issued punching connection ID
(<xref target="punching-cids"/>). Lengths outside 1 to 20 <bcp14>MUST</bcp14> be treated as
FRAME_ENCODING_ERROR.</t>
          </dd>
          <dt>Client Address Type:</dt>
          <dd>
            <t>The address family of the Client IP Address field. The values 0x01 and
 0x02 indicate IPv4 and IPv6, respectively, as in <xref target="ALTERNATIVE-ADDRESS"/>.
 Receipt of any other value <bcp14>MUST</bcp14> be treated as a connection error of type
 FRAME_ENCODING_ERROR.</t>
          </dd>
          <dt>Client IP Address:</dt>
          <dd>
            <t>The client's address candidate. This field is 32 bits long for IPv4 and 128
 bits long for IPv6, as indicated by Client Address Type.</t>
          </dd>
          <dt>Client Port:</dt>
          <dd>
            <t>The port number of the client's address candidate.</t>
          </dd>
          <dt>Advertisement Sequence Number:</dt>
          <dd>
            <t>The Sequence Number of the referenced ALTERNATIVE_ADDRESS frame.</t>
          </dd>
          <dt>Entry Index:</dt>
          <dd>
            <t>The zero-based index of the selected IPv4 or IPv6 entry in that frame,
counting all entries, including CURRENT_PATH.</t>
          </dd>
        </dl>
        <t>The client <bcp14>MUST</bcp14> use a received, unused grant for each new attempt. Sending
PUNCH_REQUEST permanently binds that grant to the client address and server
entry reference, even if rejected. The client <bcp14>MUST</bcp14> send PUNCH_REQUEST:</t>
        <ul spacing="normal">
          <li>
            <t>On an established path, using an ordinary destination connection ID and
carrying one of its punching connection IDs. Only this copy starts the
server's validation.</t>
          </li>
          <li>
            <t>In every probe packet containing PATH_CHALLENGE for the attempt, carrying
its other punching connection ID.</t>
          </li>
        </ul>
        <t>The server <bcp14>MUST</bcp14> process both forms in either arrival order, ignoring duplicates
of each form, and process the direct copy before answering its PATH_CHALLENGE.
Both forms <bcp14>MUST</bcp14> use the same Grant ID, client address, Advertisement Sequence
Number, and Entry Index; retransmissions <bcp14>MUST</bcp14> repeat each form's connection ID.
Unissued Grant IDs, mismatched destination connection IDs, and detected
conflicting values <bcp14>MUST</bcp14> be treated as PROTOCOL_VIOLATION.</t>
        <t>For the first established-path copy, the server <bcp14>MUST</bcp14> send PUNCH_DONE with
Status STALE_ADVERTISEMENT if the referenced advertisement is older than its
latest, without starting validation. Otherwise, an unsent advertisement or
an index that does not select an IPv4 or IPv6 entry <bcp14>MUST</bcp14> be treated as
PROTOCOL_VIOLATION.</t>
        <t>For accepted attempts, the server <bcp14>MUST</bcp14> use the selected entry's sending base.
Later advertisements <bcp14>MUST NOT</bcp14> change the selected address or base.</t>
        <t>PUNCH_REQUEST is a probing frame (<xref section="9.1" sectionFormat="of" target="RFC9000"/>) and is
ack-eliciting. The established-path copy <bcp14>MUST</bcp14> be retransmitted on loss until it
is acknowledged or the server's PUNCH_DONE is received, even after local probing
ends. Direct copies <bcp14>MUST NOT</bcp14> be retransmitted independently.</t>
        <t>This frame is only sent from the client to the server. Clients <bcp14>MUST</bcp14> treat
receipt of a PUNCH_REQUEST frame as a connection error of type
PROTOCOL_VIOLATION.</t>
      </section>
      <section anchor="punch-done-frame">
        <name>PUNCH_DONE Frame</name>
        <artwork><![CDATA[
PUNCH_DONE Frame {
    Type (i) = 0x3d7e95,
    Grant ID (i),
    Status (i),
}
]]></artwork>
        <t>The Grant ID identifies the attempt. Status reports the sender's result:</t>
        <ul spacing="normal">
          <li>
            <t>SUCCEEDED (0x00): The sender's path validation succeeded.</t>
          </li>
          <li>
            <t>FAILED (0x01): The sender's path validation timed out.</t>
          </li>
          <li>
            <t>REJECTED (0x02): The server declined to start the attempt. The client <bcp14>SHOULD
NOT</bcp14> retry the same candidate pair.</t>
          </li>
          <li>
            <t>STALE_ADVERTISEMENT (0x03): The referenced advertisement was superseded.</t>
          </li>
        </ul>
        <t>After STALE_ADVERTISEMENT, the client <bcp14>MUST</bcp14> use a newer advertisement for any
retry.</t>
        <t>Each endpoint's Status <bcp14>MUST</bcp14> remain unchanged for a given Grant ID. Endpoints
<bcp14>MUST</bcp14> treat detected conflicting statuses from the peer for a grant as a
connection error of type PROTOCOL_VIOLATION.</t>
        <t>PUNCH_DONE can only be sent in response to a PUNCH_REQUEST. A client that
receives a PUNCH_DONE frame with a Grant ID for which it didn't send a
PUNCH_REQUEST frame <bcp14>MUST</bcp14> close the connection with an error of type
PROTOCOL_VIOLATION. Due to packet reordering, a server might receive a
PUNCH_DONE frame before receiving the corresponding PUNCH_REQUEST frame.
Servers <bcp14>MUST</bcp14> treat an unissued Grant ID as a connection error of type
PROTOCOL_VIOLATION.</t>
        <t>An unknown Status, or REJECTED or STALE_ADVERTISEMENT received by a server, <bcp14>MUST</bcp14>
be treated as a connection error of type FRAME_ENCODING_ERROR.</t>
        <t>If PUNCH_DONE arrives before the request sent on the established path, the
server <bcp14>MUST</bcp14> retain the Status and process that request normally when it arrives.</t>
        <t>PUNCH_DONE is a non-probing, ack-eliciting frame sent on a validated path. It
<bcp14>MUST</bcp14> be retransmitted on loss until acknowledged.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document expands QUIC's path validation logic to QUIC servers, allowing a
QUIC client to request the sending of path validation packets on unverified
paths. A malicious client can direct traffic to a target IP. This attack is
similar to the IP address spoofing attack that address validation during
connection establishment (see <xref section="8.1" sectionFormat="of" target="RFC9000"/>) is designed to
prevent. In practice, however, IP address spoofing is often additionally
mitigated by ingress and egress filtering at the IP layer. This mitigation is
not possible when using this extension. The server therefore needs to carefully
limit the amount of data it sends on unverified paths.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO: fill out registration request for the transport parameter and frame types</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="ALTERNATIVE-ADDRESS">
          <front>
            <title>QUIC Alternative Server Address Frames</title>
            <author fullname="Marco Munizaga" initials="M." surname="Munizaga">
              <organization>Ethereum Foundation</organization>
            </author>
            <author fullname="Marten Seemann" initials="M." surname="Seemann">
         </author>
            <date day="25" month="September" year="2026"/>
            <abstract>
              <t>   This document specifies an extension to QUIC that allows a server to
   advertise a prioritized set of alternative addresses.  This allows a
   client to migrate the connection as the availability of, or
   preference among, server addresses changes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-munizaga-quic-alternative-server-address-02"/>
        </reference>
        <reference anchor="MULTIPATH">
          <front>
            <title>Managing multiple paths for a QUIC connection</title>
            <author fullname="Yanmei Liu" initials="Y." surname="Liu">
              <organization>Alibaba Inc.</organization>
            </author>
            <author fullname="Yunfei Ma" initials="Y." surname="Ma">
              <organization>Uber Technologies Inc.</organization>
            </author>
            <author fullname="Quentin De Coninck" initials="Q." surname="De Coninck">
              <organization>University of Mons (UMONS)</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>UCLouvain and WELRI</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <date day="17" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies a multipath extension for the QUIC protocol
   to enable the simultaneous usage of multiple paths for a single
   connection.  It introduces explicit path identifiers to create,
   delete, and manage multiple paths.  This document does not specify
   address discovery or management, nor how applications using QUIC
   schedule traffic over multiple paths.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-21"/>
        </reference>
        <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="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="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="RFC9287">
          <front>
            <title>Greasing the QUIC Bit</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes a method for negotiating the ability to send an arbitrary value for the second-most significant bit in QUIC packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9287"/>
          <seriesInfo name="DOI" value="10.17487/RFC9287"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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>
      </references>
    </references>
    <?line 490?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7Vc63IbR3b+30/RkX5I2gJQpCTbMrU3mIRsZiWS4cXOVirF
GmAa4KwGM9i5kMKytM+SZ8mT5XzndPd0DwaynFT8x+Jcuvvcv3MZjMdj1WRN
bo70k5s6K1b6325Oj3VT6qZK7k1VG302va6fqGQ+r8w9PcX36Zq+lgeS/Ila
JI1ZldX2SNdNqlRaLopkTUumVbJsxrUx66Qoxn9vs8W4SJpx494cH7xSdTtf
Z3WdlUWz3dA7p7Prd2pRFrUp6rY+onO0RtHGr1RSmYQOQPsW9aasmifqoaw+
rqqy3dhzPVEfzZYupkdKj5kS/P/0eIb/4cx+Z1y4K3OjN22xuCO6lUra5q6s
8KbS9N+yzXOh4kNSNabQV0IG36R/ZfmRXvMdS9+fV7g4WZRrtbvGrMoW+i9Z
UZik4ltltUqK7B9JQ4Qf6elmQ2c5LRYTvlk3lTHNkT4vjL11kVQf9S/Jlm8v
soZYfdxuTNVkRTnSx0meLcuqyBL9/TcHh6/lqbItGsjkpsgak+qrhqRU63Kp
p2tDx0lCSsxHOdufE2wnRBRltabz3ZsjPDl9fz27JB6e/jwbT09OLmdXVySs
8clk3YKOVSLyTfLGVAW/RoKviNvjJE0rU9dY5MPN++vTi+n1T/JqZpqlvLZu
8ybbJM2dUuPxWCdzYkGyaJS6vstqTQrVrk3R6HpjFtkyIzISUVTzCQIgHmqi
34kXanxmGmiHntrNWWvypCmrWj+HSr+Y6FmRbsqsaGrdkp4nBa2W1Q3e3lTl
p4x4xnuQMhZmAUGRXZBqkn5lRCHpDp1X3xPvUxajTprGrDe0XHOXNHpB6koP
NXdsQnqeFfTaqtaFMSktjfMmKs0qWlpWSopUk4QandESbtN7kvWElYAkxrvQ
Zole0Gnnhg68uEuKFS1XEuEKe7mj85IPd1luYs3XxM+swGMrMGZCSrYg4nXd
Zk0yp6flSIrfv0tq2oaU31Jp0hETFLAEJ1lnq4ppLensExHhOkvT3Cj1lNS6
qcq05ce/INAiECYtxKx//vj4L5fvjr8/ODj4/PmF8NUUOGatjJfe3JAFp+yo
8CaxkJ7IauKoDvnLHA+E3BEx0dd3RnXbkzrUfIBn9Y6Q1wYsz+o1trIyjuTr
xKhCEY74csA2YZmldU3S6/OVLndCCfVkAh6S6D35y6wipQmp7qstlIMuh6oB
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
MBWmSHx+cu57RmS0CTcD7yAjNFp5AdorWl5erlFs6RrNZ8EQw+PToSSCUJXX
A4+dbf2pbjcconfGH4JSB3fawwxGPT/49Cr9zny/PJgvksOXS5N8+2JfWuPA
3ne95P3FpJckkdgId2d1l3jfJ1WG3Gycm2KFAkvRmBX7UeTbW3c2mxip4cQI
Z4hyM5Qh+skO1wwQTMmCt3KSSRQ2OYq18DUAdOhtwsqHSN6T0xQqK1gxLZ1f
zlmuCb6SNl9e315ML6cfZtezy9vZ5eX55UDhktN+JkCKo76Pdut8xSAS8907
tbd7N3U82qE+Tmg7klVAcvyMi2FD59vHC/UVvPiSFADP5rDctUGctM66lWbP
wfjy+lo0QeKb2jfxI4sxfncRjx45xPsOb3AB9J0sI4fqDxKJMwqSk9FOwj7S
vWQFcCsAWWEvIcxyeF+HoKLaqFL//Oc/1cCzPNx/De4+z17oP2hrz9+O+IZP
8emmXInyV32o34tBPn+z5/7zN5PJ4bcHg3df/srbL4O3PzMBEQVBqTisiAPB
wJnlmWU18iv7iYHN3vahQQdefTo+5CEshEPOLShPvkJZtJJLShA7cPUC7rN2
22Ceb46CnItp3ulJZWWvo7JxPGaQZd8yM3nqio9bsiDvJcl5N66pdogtXx68
VdJuZOfTJbyNHaYiC3wH27qdnR2fn5ye/egtLGQ9fPPi49jk2SJrbD6wFwEK
C70qSbFOsTmywaIVKDAvR9vTtug9qjapM28ZH3DtI97OIwbnn0KuTuwYRL3H
LyWR8djhhN9eQSIj7Buwt8Q9ZTcxx31v7bHJ78RGPiSfsnW7FobWYpnWOnq3
Mjtg0UVDq7tEjk1QAtZhMIrtY0QBCpkD5GofS3LiXSojSj2uZqsCRWWrThwf
bG7vimDK18yIWTs0/0ZVOhctGQXTd773bZVJvotpKwbNYlBtwTCO/oXxDkcN
vlhRv1XR7J5Rw3eij/nqfkXbIfsrtE3t07a448RKE/r36MZebXr5dR7+yx66
592FNW7oSPZ8E988vfD3n796SW+/7D1wgfD9/PBbe3UajYFc8UwAYf8zUWR/
6BkPa5wSMPkUWcS1D7VRH96lIWIAvsdkPemRUo4tfnZbcKSf1WZY4CLOvm6k
UoO8hIJHN7oB8Z7fxpMCElmJRPX6QaxX8dXDUUz25sE2dNldNBjw/7TCnggw
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
TgAA

-->

</rfc>
