<?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.34 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-21" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="Multiple Paths for QUIC">Managing multiple paths for a QUIC connection</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-21"/>
    <author fullname="刘彦梅" asciiFullname="Yanmei Liu" role="editor">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="马云飞" asciiFullname="Yunfei Ma">
      <organization>Uber Technologies Inc.</organization>
      <address>
        <email>yunfei.ma@uber.com</email>
      </address>
    </author>
    <author initials="Q." surname="De Coninck" fullname="Quentin De Coninck" role="editor">
      <organization>University of Mons (UMONS)</organization>
      <address>
        <email>quentin.deconinck@umons.ac.be</email>
      </address>
    </author>
    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain and WELRI</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <author initials="C." surname="Huitema" fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <email>huitema@huitema.net</email>
      </address>
    </author>
    <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind" role="editor">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <date/>
    <area>Transport</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 82?>

<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>
    <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/quicwg/multipath"/>.</t>
    </note>
  </front>
  <middle>
    <?line 90?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies an extension to QUIC version 1 <xref target="QUIC-TRANSPORT"/>
to enable the simultaneous usage of multiple paths for a single
connection, using the same or different 4-tuples (of source/destination
port numbers and source/destination IP addresses).</t>
      <t>Connection migration as specified in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>
directs a peer to switch sending through
a new preferred path, and, if successful, to release resources
associated with the old path. The multipath extension specified in this document
builds on this mechanism but introduces a path identifier, or path ID,
to manage connection IDs and packet number spaces per path, enabling the use
of multiple paths simultaneously. As such, a path in this extension is defined
by its path ID. Note that it therefore is possible to have multiple paths/paths ID for the same 4-tuple.</t>
      <t>The connection ID of a packet binds the packet to a path ID, and therefore
to a packet number space. That means each connection ID is associated with exactly one path ID
but multiple connection IDs are usually issued for each path ID.
The same path ID is used in both directions, starting with 0 for the initial path.
Path IDs are generated monotonically increasing and cannot be reused.</t>
      <t>This extension uses multiple packet number spaces, one for each path.
Each path ID-specific packet number space starts at packet number 0.
As such, each path maintains distinct packet number states for sending and receiving packets, as in <xref target="QUIC-TRANSPORT"/>.
Using multiple packet number spaces enables direct use of the
loss detection and congestion control mechanisms defined in
<xref target="QUIC-RECOVERY"/> on a per-path basis.
However, use of multiple packet number spaces requires
non-zero connection IDs in order to identify the path and the respective
packet number space as well as a modified AEAD calculation including the
path ID (see <xref target="nonce"/>).</t>
      <t>As such, this extension specifies a departure from the specification of
path management in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/> and therefore
requires a new transport parameter, as specified in <xref target="nego"/>, to indicate
support of the multipath extension specified in this document.</t>
      <t>Further, this document specifies the needed path management mechanisms for path
initiation in <xref target="path-initiation"/>, handling of per-path connection IDs in <xref target="consume-retire-cid"/>,
signaling of preferred path usage in <xref target="path-state"/>, and explicit
removal of paths that have been abandoned in <xref target="path-close"/>.
Note that in this extension, a QUIC server does not initiate the creation
of a path, but it has to validate a new path created by a client.</t>
      <t>This extension does not cover address discovery and management.
The extension specified in this document can be used as is if address
management and the actual decision to set up or tear down paths are
handled by the application. This document does not prevent future extensions from
defining mechanisms to cope with the remaining scenarios.</t>
      <t>Further, this document does not specify scheduling algorithms that define
how multiple, simultaneously open paths are used to send packets.
As these differ depending on application requirements,
only some basic implementation guidance is discussed in <xref target="impl-consideration"/>.
This extension can be used with different scheduling algorithms that,
e.g., can range from support for failover to simultaneous
use of the aggregated capacity across all open paths.
There are currently no IETF specifications that define scheduling
algorithms for simultaneously (i.e., concurrently) using multiple paths.</t>
      <t>Specifically, while failover between Wi-Fi
and mobile networks is a well-known multipath use case,
it only temporarily uses two paths at the same time
to avoid transmission pauses.
Simultaneous path usage generally, however, needs more consideration
than specified in this document to avoid negative performance
impacts, e.g., when stream data is distributed over multiple paths with
different delays.</t>
      <t>The operational considerations for QUIC are addressed in <xref target="RFC9312"/>.
They also apply to QUIC connections using the extensions defined in this
document. An additional complexity is that applications might use a combination
of monitored and non-monitored paths, but that complexity already
exists when using path migration as defined in <xref target="QUIC-TRANSPORT"/>.</t>
      <section anchor="definition">
        <name>Conventions and Definitions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" 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 the terminology defined in <xref target="QUIC-TRANSPORT"/>.
When this document uses the term "path", it refers
to the notion of "network path" used in <xref target="QUIC-TRANSPORT"/>.</t>
        <t>The packet diagrams in this document use the conventions defined
in <xref section="1.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, including the notation (i) to denote
variable-length integers, encoded as specified in <xref section="16" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      </section>
    </section>
    <section anchor="connection-lifecycle-and-packet-protection">
      <name>Connection Lifecycle and Packet Protection</name>
      <t>This document defines a new transport parameter initial_max_path_id
to indicate the support of the multipath extension.
If either of the endpoints does not advertise the initial_max_path_id transport
parameter, then both endpoints MUST NOT use any frame or
mechanism defined in this document.
If both endpoints advertise the initial_max_path_id transport parameter, once the handshake is completed
a new AEAD usage applies to all 1-RTT packets, as specified in <xref target="nonce"/>,
and new paths can be used, as specified in <xref target="path-management"/>.
As specified in <xref target="frames"/>, the new frames defined in this document can
only be sent in 1-RTT packets.</t>
      <t>The transport parameter negotiation enables incremental deployment of implementations
of the multipath extension.</t>
      <section anchor="nego">
        <name>initial_max_path_id Transport Parameter</name>
        <t>The new transport parameter is defined as follows:</t>
        <ul spacing="normal">
          <li>
            <t>initial_max_path_id (parameter ID 0x3e): parameter value is a
variable-length integer specifying the maximum path ID
an endpoint is willing to maintain at connection initiation.
This value MUST NOT exceed 2<sup>32</sup>-1, the maximum allowed value for the path ID due to
restrictions on the nonce calculation (see <xref target="nonce"/>).</t>
          </li>
        </ul>
        <t>The initial_max_path_id transport parameter limits the initial
maximum number of open paths that can be used during a connection.
For example, if initial_max_path_id is set to 1, only connection IDs
associated with path IDs 0 and 1 should be issued by the peer.
If an endpoint receives an initial_max_path_id transport parameter with value 0,
the peer aims to enable the multipath extension without allowing extra paths immediately.</t>
        <t>Setting initial_max_path_id parameter is equivalent to sending a
MAX_PATH_ID frame (<xref target="max-paths-frame"/>) with the same value.
As such to allow for the use of more paths later,
endpoints can send the MAX_PATH_ID frame to increase the maximum allowed path ID.</t>
        <t>If an initial_max_path_id transport parameter value higher than 2<sup>32</sup>-1
is received, the receiver MUST close the connection with an error of type
TRANSPORT_PARAMETER_ERROR.</t>
        <t>When advertising the initial_max_path_id transport parameter, endpoints
MUST use Source and Destination Connection IDs with non-zero lengths.
If an initial_max_path_id transport
parameter is received and the carrying packet contains a zero-length
connection ID, the receiver MUST treat this as a connection error of type
PROTOCOL_VIOLATION and close the connection.</t>
        <t>Cipher suites with a nonce shorter than 12 bytes cannot be used together with
the multipath extension. If such a cipher suite is selected and the use of the
multipath extension is supported, endpoints MUST abort the handshake with
an error of type TRANSPORT_PARAMETER_ERROR.</t>
        <t>The initial_max_path_id parameter MUST NOT be remembered
for use in a subsequent connection (<xref section="7.4.1" sectionFormat="of" target="QUIC-TRANSPORT"/>).</t>
      </section>
      <section anchor="relation-to-other-transport-parameters">
        <name>Relation to Other Transport Parameters</name>
        <t>When the QUIC multipath extension is used, the active_connection_id_limit transport parameter
<xref target="QUIC-TRANSPORT"/> limits the maximum number of active connection IDs per path.
As defined in <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/> connection IDs that are issued
and not retired are considered active.</t>
        <t>If an endpoint receives a disable_active_migration transport parameter,
it is forbidden to establish new paths to the peer's handshake address. However,
establishment of additional paths to other peer addresses
(e.g., carried by peer's preferred_address) is immediately valid.</t>
        <t>If the server uses the preferred_address transport parameter, clients
cannot assume that the initial server address and the addresses
contained in this parameter can be simultaneously used for multipath
(<xref section="9.6.2" sectionFormat="of" target="QUIC-TRANSPORT"/>).
Use of the preferred address with the same local address is considered as a migration event
that does not change the path ID. A such, the path ID for
the connection ID specified in the preferred_address transport parameter is 0.</t>
      </section>
      <section anchor="handling-ack-and-pathack-in-0-rtt-and-1-rtt">
        <name>Handling ACK and PATH_ACK in 0-RTT and 1-RTT</name>
        <t>The PATH_ACK frame (see <xref target="mp-ack-frame"/>) is used to
acknowledge 1-RTT packets.
Compared to the ACK frame, as specified in <xref section="19.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, the PATH_ACK frame additionally
contains the path ID to identify the path-specific packet number space.
ACK frames when used with the multipath extension acknowledge packets for the path with path ID 0.
As multipath support is unknown during the handshake, acknowledgments of
Initial and Handshake packets are sent using ACK frames.</t>
        <t>After the handshake concludes with support for the multipath extension,
endpoints SHOULD use PATH_ACK frames instead of ACK frames,
including for so far unacknowledged 0-RTT packets using path ID 0.
Endpoints MUST still process ACK frames that acknowledge 0-RTT packets or 1-RTT packets.
For example, a sender could negotiate multipath support for later use and keep
only the initial path with path ID 0 for a while. During this single-path period,
the sender might prefer to send ACK frames.</t>
      </section>
      <section anchor="nonce">
        <name>Nonce Calculation after Handshake Completion</name>
        <t><xref section="5.3" sectionFormat="of" target="QUIC-TLS"/> specifies AEAD usage, and in particular
the use of a nonce, N, formed by combining the packet protection IV
with the packet number. When multiple packet number spaces are used,
the packet number alone would not guarantee the uniqueness of the nonce.
Therefore, the nonce N is calculated for 1-RTT packets if the multipath extension is used
by combining the packet protection
IV with the packet number and with the 32 bits of the
path ID. In order to guarantee the uniqueness of the nonce, the path ID
is limited to a max value of 2<sup>32</sup>-1, as specified in <xref target="nego"/>.</t>
        <t>To calculate the nonce, a 96-bit Path-and-Packet-Number (PPN) is composed of the
32 bits of the path ID in network byte order,
two zero bits, and the 62 bits of the reconstructed QUIC packet number in
network byte order, as illustrated in <xref target="fig-path-and-packet-number"/>.</t>
        <figure anchor="fig-path-and-packet-number">
          <name>96 Bits Path-And-Packet-Number</name>
          <artwork><![CDATA[
  PPN {
    Path ID (32),
    Zeroes (2) = 0b00,
    Packet Number (62)
  }
]]></artwork>
        </figure>
        <t>The IV length is equal to the nonce length. If the IV is larger than 96 bits, the path-and-packet-number
is left-padded with zeros to the size of the IV. The exclusive OR of the padded
packet number and the IV forms the AEAD nonce. An AEAD algorithm where the nonce length
is less than 12 bytes cannot be used with the QUIC multipath extension. The following
figure illustrates this for a 96-bits IV.</t>
        <figure anchor="fig-nonce-calculation">
          <name>Nonce Calculation</name>
          <artwork><![CDATA[
IV(12);
N(12) = IV xor PPN;
]]></artwork>
        </figure>
        <t>For example, assuming the IV value is <tt>0x6b26114b9cba2b63a9e8dd4f</tt>,
the path ID is <tt>3</tt>, and the packet number is <tt>54321</tt> (hex value <tt>0xd431</tt>),
the nonce will be set to <tt>0x6b2611489cba2b63a9e8097e</tt>, as illustrated below:</t>
        <figure anchor="fig-example-nonce">
          <name>Example Nonce Calculation</name>
          <artwork><![CDATA[
   IV:      6b26114b9cba2b63a9e8dd4f
⊕  PPN:     00000003000000000000d431
------------------------------------
   Nonce:   6b2611489cba2b63a9e8097e
]]></artwork>
        </figure>
      </section>
      <section anchor="multipath-key-update">
        <name>Key Phase Update Process</name>
        <t>The Key Phase bit update process is specified in
<xref section="6" sectionFormat="of" target="QUIC-TLS"/>. The general principles of key update
are not changed in this specification. Following <xref target="QUIC-TLS"/>, the Key Phase bit is used to
indicate which packet protection keys are used to protect the packet.
The Key Phase bit is toggled to signal each subsequent key update.</t>
        <t>Because of network delays, packets protected with the older key might
arrive later than the packets protected with the new key, however receivers
can solely rely on the Key Phase bit to determine the corresponding packet
protection key, assuming that there is sufficient interval between two
consecutive key updates (<xref section="6.5" sectionFormat="of" target="QUIC-TLS"/>).</t>
        <t>When this specification is used, endpoints SHOULD wait for at least three times
the largest Probe Timeout (PTO) (see <xref section="6.2" sectionFormat="of" target="QUIC-RECOVERY"/>)
among all the paths before initiating a new key update
after receiving an acknowledgment that confirms the receipt of the previous key
update. This interval is different from that in <xref target="QUIC-TLS"/>
which used three times the PTO of the single path.</t>
        <t>As packets that arrive after their decryption key has been discarded will be dropped,
the choice of three times the largest PTO is a trade-off: Longer delays
reduce the probability of losing packets but keeping old keys
longer can negatively impact the security of the protocol.
The use of three times the largest PTO aims to minimize packet lost for all paths
and therefore limits the impact on performance.</t>
        <t>Following <xref section="5.4" sectionFormat="of" target="QUIC-TLS"/>, the Key Phase bit is protected,
so sending multiple packets with Key Phase bit flipping at the same time
should not cause activity across different paths to be linkable by an observer.</t>
      </section>
      <section anchor="connection-closure">
        <name>Connection Closure</name>
        <t>CONNECTION_CLOSE frames and their processing are unchanged from <xref target="QUIC-TRANSPORT"/>.
They can be sent on any open path. <xref section="10.2" sectionFormat="of" target="QUIC-TRANSPORT"/> specifies that
the closing and draining connection states "SHOULD persist for at least three times the current PTO".
When this specification is used, these states SHOULD instead persist for at least three
times the largest PTO among all paths.</t>
      </section>
    </section>
    <section anchor="path-management">
      <name>Path Management</name>
      <t>After completing the handshake indicating
multipath support, endpoints can start using multiple paths.
In accordance with <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>,
this extension only enables clients to open a new path.
The client can open a new path when both endpoints
have issued available connection IDs for at least one unused, common path ID,
as the same path ID is used in both directions.</t>
      <t>This document specifies path initiation (see <xref target="path-initiation"/>),
issuing and retirement of per-path connection IDs (see
<xref target="consume-retire-cid"/>), path status management (see <xref target="path-state"/>) and
path closure (see <xref target="path-close"/>).
However, this document does not specify when a client decides to initiate or close a path,
or how multiple open paths are used for sending.</t>
      <t>For path management this extension specifies the following frames in <xref target="frames"/>:</t>
      <ul spacing="normal">
        <li>
          <t>PATH_ABANDON (see <xref target="path-abandon-frame"/>)</t>
        </li>
        <li>
          <t>PATH_STATUS_BACKUP (see <xref target="path-backup-available-frame"/>)</t>
        </li>
        <li>
          <t>PATH_STATUS_AVAILABLE (see <xref target="path-backup-available-frame"/>)</t>
        </li>
        <li>
          <t>PATH_NEW_CONNECTION_ID (see <xref target="mp-new-conn-id-frame"/>)</t>
        </li>
        <li>
          <t>PATH_RETIRE_CONNECTION_ID (see <xref target="mp-retire-conn-id-frame"/>)</t>
        </li>
        <li>
          <t>MAX_PATH_ID (see <xref target="max-paths-frame"/>)</t>
        </li>
        <li>
          <t>PATHS_BLOCKED (see <xref target="paths-and-cids-blocked-frame"/>)</t>
        </li>
        <li>
          <t>PATH_CIDS_BLOCKED (see <xref target="paths-and-cids-blocked-frame"/>)</t>
        </li>
      </ul>
      <section anchor="path-initiation">
        <name>Path Initiation and Validation</name>
        <t>To open a new path, an endpoint MUST use a new connection ID associated
with an unused path ID. An endpoint
MUST use a connection ID associated to the same path ID as used in the packet
received by the endpoint when it intends to send packets on the same path.</t>
        <t>A client that wants to use a
new path MUST validate the peer's address
as described in <xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>,
unless it has previously validated the 4-tuple used for that path.</t>
        <t>After receiving packets from the
client on a new path, if the server decides to use the new path,
the server MUST validate the peer's address before sending any data
as described in (<xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>),
unless it has previously validated the 4-tuple used for that path.
Until the client's address is
validated, the anti-amplification limit from <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/>
applies.</t>
        <t>If an endpoint sends a PATH_RESPONSE (<xref section="19.18" sectionFormat="of" target="QUIC-TRANSPORT"/>), it MUST be sent on the same path
as used by the packet that contained the PATH_CHALLENGE frame (<xref section="19.17" sectionFormat="of" target="QUIC-TRANSPORT"/>),
using a connection ID associated with the same path ID.</t>
        <t>The server might receive packets for a yet unused path ID that do not
contain a PATH_CHALLENGE frame. Such packets are valid if they can be properly decrypted
given a valid connection ID.</t>
        <t>Each endpoint MUST also validate that a minimum QUIC packet MTU of 1200 bytes is supported
on the path. This can be done during initial path validation or separately later if
the amplification limit prevents it initially, as specified in <xref section="8.2.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t>An endpoint that receives packets on a new path and does not want to establish
this path is expected to close the path by sending a PATH_ABANDON
on another path, as specified in <xref target="path-close"/>.</t>
        <t>An endpoint that has no active connection ID for this path or
lacks other resources to immediately configure a new path could
delay sending the PATH_RESPONSE until sufficient resources are available.
Long delays might cause the peer to repeat the PATH_CHALLENGE and eventually
send a PATH_ABANDON, in which case the procedures specified in
<xref target="path-close"/> apply.</t>
        <t>PATH_ACK frames (see <xref target="mp-ack-frame"/>) can be returned on any path.
If the PATH_ACK is preferred to be sent on the same path as the acknowledged
packet (see <xref target="compute-rtt"/> for further guidance), it can be beneficial
to bundle a PATH_ACK frame with the PATH_RESPONSE frame during
path validation.</t>
        <t>If validation succeeds, the client can continue to use the path.
If validation fails, the client MUST NOT use the path and can
remove any status associated to the path initiation attempt.
As the used path ID is consumed either way,
the endpoint MUST explicitly close the path, as specified in
<xref target="path-close"/>.</t>
        <section anchor="path-establishment-example">
          <name>Path Establishment Example</name>
          <t>In the example below it is assumed that both endpoints have
indicated an initial_max_path_id value of at least 2, which means
both endpoints can use path IDs 0, 1, and 2. Note that
path ID 0 is already used for the initial path.</t>
          <figure anchor="fig-example-new-path">
            <name>Example of new path establishment</name>
            <artwork><![CDATA[
   Client                                                  Server

   (Provide new CIDs for path 1 on an existing path 0)
   1-RTT[X]: DCID=S0, PATH_NEW_CONNECTION_ID[C1, Seq=0, PathID=1] -->
           <-- 1-RTT[Y]: DCID=C0,
                         PATH_NEW_CONNECTION_ID[S1, Seq=0, PathID=1],
                         PATH_ACK[PathID=0, PN=X]
           <-- 1-RTT[Y+1]: DCID=C0, PATH_NEW_CONNECTION_ID[S2, Seq=0,
                                                            PathID=2]
   ...
   (start sending packets on a new path using path ID 1)
   1-RTT[0]: DCID=S1, PATH_CHALLENGE[X] -->
        <-- 1-RTT[0]: DCID=C1, PATH_RESPONSE[X], PATH_CHALLENGE[Y],
                                             PATH_ACK[PathID=1, PN=0]
   1-RTT[1]: DCID=S1, PATH_RESPONSE[Y],
            PATH_ACK[PathID=1, PN=0], ... -->

]]></artwork>
          </figure>
          <t>In <xref target="fig-example-new-path"/>, the endpoints first exchange
new available connection IDs with the PATH_NEW_CONNECTION_ID frame,
as further explained in <xref target="consume-retire-cid"/>.
In this example, the client provides one connection ID (C1 with
path ID 1), and server provides two connection IDs
(S1 with path ID 1, and S2 with path ID 2).</t>
          <t>Before the client opens a new path by sending a packet on that path
with a PATH_CHALLENGE frame, it has to check whether there is
an unused connection ID for the same unused path ID available for each side.
In this example the path ID 1 is used which is the smallest unused path ID available
as recommended in <xref target="consume-retire-cid"/>.
Respectively, the client chooses the connection ID S1
as the Destination Connection ID of the new path when sending the PATH_CHALLENGE frame.
The server replies with a PATH_RESPONSE bundled with the PATH_ACK using connection ID C1
associated with the same path ID.</t>
        </section>
        <section anchor="relation-to-probing-and-migration">
          <name>Relation to Probing and Migration</name>
          <t><xref section="9.1" sectionFormat="of" target="QUIC-TRANSPORT"/> introduces the concept of
"probing" and "non-probing" frames. A packet that contains at least
one "non-probing" frame is a "non-probing" packet.
Migration as specified in <xref section="9.2" sectionFormat="of" target="QUIC-TRANSPORT"/> is initiated
by sending packets containing non-probing frames on a new (validated) path,
however, using the same path ID as on the old path.
When the multipath extension is negotiated, the reception of any packet,
no matter if "probing" or "non-probing", on a new path with a new, so far unused path ID
does not impact the path status of any existing
path. Therefore, any frame can be sent on a new path with a new path ID at any time
as long as the anti-amplification limits
(see <xref section="21.1.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>) and the congestion control
limits for this path are respected.</t>
          <t>An endpoint could receive a packet with a connection ID
associated to an active path ID where the packet's 4-tuple does not match the 4-tuple
currently used with that path ID. This MUST be treated as path migration,
as specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, with the constraint that
all connection IDs used during path migration MUST be
associated with the current path ID of the path being migrated.</t>
        </section>
        <section anchor="address-validation-token">
          <name>Address Validation Token</name>
          <t>As specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, the server is expected to send a new
address validation token to a client following the successful validation of a
new client address. The client will receive several tokens. When considering using a token
for subsequent connections, it might be difficult for the client
to pick the "right" token among multiple tokens obtained in a previous connection.
The client is likely to fall back to the strategy specified in <xref section="8.1.3" sectionFormat="of" target="QUIC-TRANSPORT"/>,
i.e., pick the last received token. To avoid issues when clients make the "wrong" choice,
a server SHOULD issue tokens that are capable of validating
any of the previously validated addresses. Including more addresses increases the
probability that the token will be useful in the future, but at the cost of a larger token.
Further guidance on token usage can be found in <xref section="8.1.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        </section>
      </section>
      <section anchor="consume-retire-cid">
        <name>Handling Connection IDs</name>
        <t>When the multipath extension is used,
endpoints have to use the PATH_NEW_CONNECTION_ID and PATH_RETIRE_CONNECTION_ID frames
to indicate the respective path ID together with associated sequence number
(see <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>), at least for all paths with a path ID other than 0.
Each path ID has its own connection ID sequence number space whose initial value is 0.</t>
        <t>Endpoints SHOULD also use PATH_NEW_CONNECTION_ID and
PATH_RETIRE_CONNECTION_ID for the initial path with path ID 0.
However, the use of NEW_CONNECTION_ID and RETIRE_CONNECTION_ID
is still valid and endpoints need to process these frames
as corresponding to path ID 0.</t>
        <section anchor="issuing-new-connection-ids">
          <name>Issuing New Connection IDs</name>
          <t>In order to let the peer open new paths, it is RECOMMENDED to proactively
issue at least one Connection ID for each unused path ID up to the
minimum of the peer's and the local maximum path ID limits.</t>
          <t>If for any reason an endpoint does not want to issue connection IDs for all
unused path ID, it SHOULD NOT introduce discontinuity
in the issuing of path IDs as path initiation
requires available connection IDs for the same path ID on both sides. For instance,
if the maximum path ID limit is 2 and the endpoint wants to provide connection IDs
for only one path ID inside range [1, 2], it should select path ID 1 (and not path
ID 2).</t>
          <t>Similarly, endpoints SHOULD consume path IDs in a continuous way, i.e., when
creating paths. However, endpoints cannot expect to receive new connection IDs
or path initiation attempts with in-order use of path IDs
due to out-of-order delivery or path validation failure.</t>
          <t>Each endpoint maintains the set of connection IDs received from its peer for each path,
any of which it can use when sending packets on that path; see also <xref section="5.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.
Usually, it is desired to provide at least one additional connection ID for
all used paths, to allow for (unintentional) migration events (<xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>).</t>
          <t>As further specified in <xref section="5.1" sectionFormat="of" target="QUIC-TRANSPORT"/> connection IDs
cannot be issued more than once on the same connection
and therefore are unique for the scope of the connection,
regardless of the associated path ID.</t>
          <t>Endpoints MUST NOT issue new connection IDs with path IDs greater than
the Maximum Path Identifier field in MAX_PATH_ID frames (see <xref target="max-paths-frame"/>)
or the value of initial_max_path_id transport parameter if no MAX_PATH_ID frame was received yet.
Receipt of a frame with a greater path ID is a connection error as specified
in <xref target="frames"/>.</t>
          <t>When an endpoint cannot open a path because there are no unused path IDs,
it SHOULD either send a MAX_PATH_ID frame to increase the maximum path ID limit
(when limited by the sender) or a PATHS_BLOCKED frame
(see <xref target="paths-and-cids-blocked-frame"/>) to inform the peer that
its current limit prevented the creation of the new path.</t>
        </section>
        <section anchor="rotating-and-retiring-connection-ids">
          <name>Rotating and Retiring Connection IDs</name>
          <t><xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> indicates that an endpoint
can change the connection ID it uses to another available one
at any time during the connection. For the extension specified in
this document, endpoints MUST only rotate to another connection ID associated
with the same path ID. Use of a connection ID associated with
another path ID will be considered as an attempt to open a new path instead.</t>
          <t>An endpoint is supposed to retire any connection ID that is not being used,
and the server is expected to provide
replacements, as specified in <xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/>.
As such, when receiving a PATH_RETIRE_CONNECTION_ID frame, an endpoint
SHOULD provide new connection IDs for that path, if still open, using PATH_NEW_CONNECTION_ID frames.</t>
          <t>While it is expected that the peer provides at least one unused connection ID
for all active paths using the PATH_NEW_CONNECTION_ID after retirement
of an old connection ID, an endpoint MAY send
a PATH_CIDS_BLOCKED (see <xref target="paths-and-cids-blocked-frame"/>)
if it wants to change the connection ID but no
unused connection ID for a that path is available. Further, an
endpoint MAY also send a PATH_CIDS_BLOCKED frame if it wants to
open a new path and has no connection IDs available for an unused
path ID even though the Maximum Path Identifier value would allow
for more paths.</t>
          <t>Retirement of connection IDs will not retire the path ID
that corresponds to the connection ID or any other path resources
as the packet number space is associated to the path ID.</t>
          <t>The peer that sends the PATH_RETIRE_CONNECTION_ID frame can keep sending data
on the path that the retired connection ID was used on but has
to use a different connection ID for the same path ID when doing so.</t>
        </section>
      </section>
      <section anchor="path-state">
        <name>Path Status Management</name>
        <t>An endpoint can send PATH_STATUS_BACKUP and PATH_STATUS_AVAILABLE frames (see
<xref target="path-backup-available-frame"/>) to inform the peer that it should
send packets on the paths with the preference expressed by these frames.
Note that an endpoint might not follow the peer's advertisements,
but these frames are still a clear signal of the peer's preference of path usage.</t>
        <t>Each peer indicates its preference of path usage independently of the other peer.
That means that peers could have different usage preferences for the same path.
Depending on the data sender's decisions, this might lead to usage of paths that have been
indicated as "backup" by the peer or non-usage of some locally available paths.</t>
        <t>PATH_STATUS_AVAILABLE indicates that a path is "available", i.e., it suggests to
the peer to use its own logic to split traffic among available paths.</t>
        <t>PATH_STATUS_BACKUP suggests that a path should only be used as backup, i.e., that no traffic
should be sent on that path if another path is available and usable.
If all established paths are indicated as backup paths, no guidance is provided about
which path should be used.</t>
        <t>Similarly, if no frame indicating a path usage preference was received for a certain path,
the preference of the peer is unknown and the sender needs to decide based on it
own local logic if the path should be used.</t>
        <t>If an endpoint starts using a backup path
because it has detected issues on the paths marked as "available", it is RECOMMENDED
to update its own path state signaling such that the peer avoids using the broken path.
An endpoint that detects a path breakage can also explicitly close the path
by sending a PATH_ABANDON frame (see <xref target="path-close"/>) in order to avoid
that its peer keeps using it and enable faster switchover to a backup path.
If the endpoints do not want to close the path immediately, as connectivity
could be re-established, PING frames can potentially be used to quickly detect
connectivity changes and switch back in a timely way.</t>
        <t>The PATH_STATUS_AVAILABLE and PATH_STATUS_BACKUP frames share a common, per-path sequence number space
to detect and ignore outdated information, as further described in <xref target="path-backup-available-frame"/>.
This is needed as they might arrive out-of-order,
e.g., if sent using different paths.</t>
      </section>
      <section anchor="path-close">
        <name>Path Close</name>
        <t>At any time in the connection, each endpoint can decide to
abandon a path, for example following changes in local
connectivity or local preferences.
An endpoint that wants to abandon a path MUST explicitly
close the path by sending a PATH_ABANDON frame (see <xref target="path-abandon-frame"/>).
This is true whether the decision to close the path results
from implicit signals such as an idle time-out (see <xref target="idle-time-close"/>)
or packet losses as well as for any other reason such as management
of local resources.</t>
        <t>Endpoints that send a PATH_ABANDON frame MUST treat all connection
IDs received from the peer for the path ID indicated in the PATH_ABANDON as immediately
retired, and subsequently cannot send any packet on that path anymore.
Note that while abandoning a path will cause
connection ID retirement, the inverse is not true: retiring the associated connection IDs
does not indicate path abandonment (see further <xref target="consume-retire-cid"/>).</t>
        <t>PATH_ABANDON frames can be sent on any open path,
not only on the path that is intended to be closed.
It is RECOMMENDED to send the PATH_ABANDON frames on another open path,
especially if connectivity on the to-be-abandoned path
is expected to be broken.</t>
        <t>When an endpoint receives a PATH_ABANDON frame, it MUST send a corresponding
PATH_ABANDON frame, if it has not already done so, and respectively treat all
connection IDs received from the peer for that path as immediately
retired. While that means retired connection IDs received from the peer cannot be used
for sending anymore, packets from the peer might still be in transit.
Therefore, knowledge of the
connection IDs issued to the peer and of the state
of the number space associated to the path SHOULD be retained for
3 PTO after the PATH_ABANDON frame has been received.
This avoids generating spurious stateless reset packets, as discussed in
<xref target="spurious-stateless-reset"/>, and helps acknowledge any
potentially reordered, outstanding packets from the peer (see <xref target="ack-after-abandon"/>).</t>
        <t>It is also possible that an endpoint will receive a PATH_ABANDON frame
before receiving or sending any traffic on a path. For example, if the client
tries to initiate a path and the path cannot be established, it will send a
PATH_ABANDON frame (see <xref target="path-initiation"/>). An endpoint could also decide
to abandon an unused path for any other reason, for example, removing a hole from
the sequence of path IDs in use. This is not an error.</t>
        <t>If a peer sends a PATH_ABANDON frame but never receives
a corresponding PATH_ABANDON frame, it might not be able to remove path state.
It is left to the implementation to handle this unexpected
behavior as it does not impact interoperability. If the endpoint is no longer
willing to process the issued connection IDs for the abandoned path,
it MAY close the connection, but SHOULD wait at least 3 PTOs after
sending the PATH_ABANDON frame.</t>
        <t>After a path is abandoned, the path ID MUST NOT be reused
for new paths, as the path ID is part of the nonce calculation <xref target="nonce"/>.</t>
        <t>If a PATH_ABANDON frame is received for the only open path of a QUIC
connection, the receiving peer SHOULD send a CONNECTION_CLOSE frame
and enter the closing state. Alternatively, a client MAY instead try to open a new path, if
available, and only initiate connection closure if path validation fails
or a CONNECTION_CLOSE frame is received from the server. Similarly,
the server MAY wait for a short, limited time such as one PTO, to see if a
packet is received on a new path before sending the
CONNECTION_CLOSE frame.</t>
        <t>Note that other explicit closing mechanisms of <xref target="QUIC-TRANSPORT"/> still
apply on the whole connection. In particular, the reception of either a
CONNECTION_CLOSE (<xref section="10.2" sectionFormat="of" target="QUIC-TRANSPORT"/>) or a Stateless
Reset (<xref section="10.3" sectionFormat="of" target="QUIC-TRANSPORT"/>) closes the connection.</t>
        <section anchor="path-closure-example">
          <name>Path Closure Example</name>
          <t>In the example below, the client wants to close the path with path ID 0.
It sends the PATH_ABANDON frame to terminate the path with path ID 0
on the path with path ID 1 using the connection ID S1. After receiving
the PATH_ABANDON frame for path ID 0, the server also sends a
PATH_ABANDON frame with path ID 0 together with a PATH_ACK frame
on the same path using connection ID C1.</t>
          <figure anchor="fig-example-path-close1">
            <name>Example of closing a path.</name>
            <artwork><![CDATA[
Client                                                      Server

(client tells server to abandon a path with path ID 0)
1-RTT[X]: DCID=S1 PATH_ABANDON[path ID=0]->
                           (server tells client to abandon a path)
                    <-1-RTT[Y]: DCID=C1 PATH_ABANDON[path ID=0],
                                           PATH_ACK[PATH ID=1, PN=X]
1-RTT[U]: DCID=S1 PATH_ACK[path ID=1, PN=Y] ->
]]></artwork>
          </figure>
          <t>Note that if the PATH_ABANDON frame is instead sent on the to-be-abandoned path,
the last acknowledgment still needs to be sent on a different path
as no further packets can be sent on the abandoned path after the
PATH_ABANDON frame.</t>
        </section>
        <section anchor="spurious-stateless-reset">
          <name>Avoiding Spurious Stateless Resets</name>
          <t>Due to network delays, packets sent on an abandoned path can
arrive well after the connection IDs have been retired.
If not recognized as bound to the local
connection, such a packet triggers the peer to send a Stateless Reset
packet. The requirement to retain knowledge of connection ID and about
the packet number space for 3 PTOs
after receiving a PATH_ABANDON frame, as specified in <xref target="path-close"/> above,
is intended to reduce the risk of sending such spurious stateless
packets, but it cannot completely avoid that risk.</t>
          <t><xref section="10.3" sectionFormat="of" target="QUIC-TRANSPORT"/> specified that the Stateless Reset Tokens
associated with retired connection IDs cannot be used to identify Stateless Reset packets.
The immediate retirement of connection IDs received from the peer for an abandoned
path guarantees that spurious Stateless Reset packets
sent by the peer will not cause the closure of the QUIC connection.</t>
        </section>
        <section anchor="ack-after-abandon">
          <name>Handling PATH_ACK for Abandoned Paths</name>
          <t>When an endpoint sends a PATH_ABANDON frame, there might
still be some packets in transit from the peer.
Further, if an endpoint receives a PATH_ABANDON frame, it might still receive
reordered packets on the abandoned path. Endpoints SHOULD
promptly send PATH_ACK frames for all unacknowledged packets received on
an abandoned path if path state is still retained to do so.</t>
          <t>PATH_ACK frames have to be sent on a different path than the path being abandoned
after sending the PATH_ABANDON frame as connection IDs are immediately retired.</t>
          <t>When an endpoint finally deletes all state associated with the path,
the packets sent over the path and not yet acknowledged MUST be considered lost.
PATH_ACK frames received with an abandoned path ID are silently ignored,
as specified in <xref target="frames"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="frames">
      <name>New Frames</name>
      <t>All frames defined in this document MUST only be sent in 1-RTT packets.
If an endpoint receives a multipath-specific frame in a different packet type,
it MUST close the connection with an error of type PROTOCOL_VIOLATION.</t>
      <t>Receipt of multipath-specific frames
that use a path ID that is greater than the announced Maximum Paths value
in the MAX_PATH_ID frame or in the initial_max_path_id transport parameter,
if no MAX_PATH_ID frame was received yet,
MUST be treated as a connection error of type PROTOCOL_VIOLATION.</t>
      <t>If an endpoint receives a multipath-specific frame
with a path ID that it cannot process
anymore (e.g., because the path might have been abandoned), it
MUST silently ignore the frame.</t>
      <section anchor="mp-ack-frame">
        <name>PATH_ACK Frame</name>
        <t>The PATH_ACK frame (types 0x3e and 0x3f)
is an extension of the ACK frame specified in <xref section="19.3" sectionFormat="of" target="QUIC-TRANSPORT"/>. It is
used to acknowledge packets that were sent on different paths, as
each path has its own packet number space. If the frame type is 0x3f, PATH_ACK frames
also contain the sum of QUIC packets with associated ECN marks received
on the acknowledged packet number space up to this point.</t>
        <t>PATH_ACK frame is formatted as shown in <xref target="fig-mp-ack-format"/>.</t>
        <figure anchor="fig-mp-ack-format">
          <name>PATH_ACK Frame Format</name>
          <artwork><![CDATA[
  PATH_ACK Frame {
    Type (i) = 0x3e..0x3f,
    Path Identifier (i),
    Largest Acknowledged (i),
    ACK Delay (i),
    ACK Range Count (i),
    First ACK Range (i),
    ACK Range (..) ...,
    [ECN Counts (..)],
  }
]]></artwork>
        </figure>
        <t>Compared to the ACK frame specified in <xref target="QUIC-TRANSPORT"/>, the following
field is added:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The path ID associated with the packet number space of the 0-RTT and 1-RTT packets
which are acknowledged by the PATH_ACK frame.</t>
          </dd>
        </dl>
      </section>
      <section anchor="path-abandon-frame">
        <name>PATH_ABANDON Frame</name>
        <t>The PATH_ABANDON frame informs the peer to abandon a path.
After the PATH_ABANDON frame is sent on a path, the path can no longer be used for sending.</t>
        <t>PATH_ABANDON frames are formatted as shown in <xref target="fig-path-abandon-format"/>.</t>
        <figure anchor="fig-path-abandon-format">
          <name>PATH_ABANDON Frame Format</name>
          <artwork><![CDATA[
  PATH_ABANDON Frame {
    Type (i) = 0x3e75,
    Path Identifier (i),
    Error Code (i),
  }
]]></artwork>
        </figure>
        <t>PATH_ABANDON frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The path ID associated to the to-be-abandoned path.</t>
          </dd>
          <dt>Error Code:</dt>
          <dd>
            <t>A variable-length integer that indicates the reason for abandoning
this path. NO_ERROR(0x0) indicates that the path is being abandoned
without any error being encountered. Other error codes can be found in <xref target="error-codes"/>.</t>
          </dd>
        </dl>
        <t>PATH_ABANDON frames are ack-eliciting. If a packet containing
a PATH_ABANDON frame is considered lost, the peer SHOULD repeat it.</t>
        <t>Use of the PATH_ABANDON frame is specified in <xref target="path-close"/>.</t>
        <section anchor="error-codes">
          <name>Error Codes</name>
          <t>QUIC transport error codes are 62-bit unsigned integers
(see <xref section="20.1" sectionFormat="of" target="QUIC-TRANSPORT"/>. In addition to
NO_ERROR(0x0), the following QUIC error codes are defined
for use in the PATH_ABANDON frame:</t>
          <dl>
            <dt>APPLICATION_ABANDON_PATH (0x3e):</dt>
            <dd>
              <t>The endpoint is abandoning the path at the
request of the application.</t>
            </dd>
            <dt>PATH_RESOURCE_LIMIT_REACHED (0x3e75):</dt>
            <dd>
              <t>The endpoint is abandoning the path because
it cannot allocate sufficient resources to maintain it.</t>
            </dd>
            <dt>PATH_UNSTABLE_OR_POOR (0x3e76):</dt>
            <dd>
              <t>The endpoint is abandoning the path because
the used interface is observed to be unstable or performance is considered poor. This condition can occur, e.g.,
due to frequent handover events during high-speed mobility or due to a weak wireless signal.</t>
            </dd>
            <dt>NO_CID_AVAILABLE_FOR_PATH (0x3e77):</dt>
            <dd>
              <t>The endpoint is abandoning the path due to
the lack of a connection ID for this path.
This might occur when the peer initiates a new path
but has not provided a corresponding connection ID for the path ID
(or the packet containing the connection IDs has not arrived yet).</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="path-backup-available-frame">
        <name>PATH_STATUS_AVAILABLE and PATH_STATUS_BACKUP frames</name>
        <t>PATH_STATUS_AVAILABLE frames (type=0x3e77) are used by endpoints to inform the peer
that the indicated path is available for sending.</t>
        <t>PATH_STATUS_AVAILABLE frames are formatted as shown in <xref target="fig-path-available-format"/>.</t>
        <figure anchor="fig-path-available-format">
          <name>PATH_STATUS_AVAILABLE Frame Format</name>
          <artwork><![CDATA[
  PATH_STATUS_AVAILABLE Frame {
    Type (i) = 0x3e77,
    Path Identifier (i),
    Path Status Sequence Number (i),
  }
]]></artwork>
        </figure>
        <t>PATH_STATUS_BACKUP frames (type=0x3e76) are used by endpoints to inform the peer
about its preference to not use the indicated path for sending.</t>
        <t>PATH_STATUS_BACKUP frames are formatted as shown in <xref target="fig-path-backup-format"/>.</t>
        <figure anchor="fig-path-backup-format">
          <name>PATH_STATUS_BACKUP Frame Format</name>
          <artwork><![CDATA[
  PATH_STATUS_BACKUP Frame {
    Type (i) = 0x3e76
    Path Identifier (i),
    Path Status Sequence Number (i),
  }
]]></artwork>
        </figure>
        <t>Both PATH_STATUS_AVAILABLE and PATH_STATUS_BACKUP frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The path ID that the status update corresponds to.
All path IDs below the maximum path ID limit can be indicated,
even if the path is not in active use yet.</t>
          </dd>
          <dt>Path Status Sequence Number:</dt>
          <dd>
            <t>A variable-length integer specifying the per-path sequence number assigned for
this frame.</t>
          </dd>
        </dl>
        <t>The sequence number space is common to the two frame types,
and monotonically increasing values MUST be used when sending PATH_STATUS_AVAILABLE or
PATH_STATUS_BACKUP frames for a given path ID.</t>
        <t>Frames might be received out of order. A peer MUST ignore an incoming
PATH_STATUS_AVAILABLE or
PATH_STATUS_BACKUP frame if it previously received another PATH_STATUS_BACKUP frame
or PATH_STATUS_AVAILABLE frame for the same path ID with a Path Status sequence number
equal to or higher than the Path Status sequence number of the incoming frame.</t>
        <t>The requirement of monotonically increasing sequence numbers
is per path. Receivers could very well receive the
same sequence number for PATH_STATUS_AVAILABLE or PATH_STATUS_BACKUP Frames
on different paths. As such, the receiver of
the PATH_STATUS_AVAILABLE or PATH_STATUS_BACKUP frame needs to use and compare the sequence numbers
separately for each path ID.</t>
        <t>PATH_STATUS_BACKUP and PATH_STATUS_AVAILABLE frames are ack-eliciting. If a packet containing a
PATH_STATUS_BACKUP or PATH_STATUS_AVAILABLE frame is considered lost, the peer SHOULD resend the frame
only if it contains the last status sent for that path -- as indicated
by the sequence number.</t>
        <t>A PATH_STATUS_BACKUP or a PATH_STATUS_AVAILABLE frame MAY be bundled with a PATH_NEW_CONNECTION_ID frame or
a PATH_RESPONSE frame in order to indicate the preferred path usage
before or during path initiation.</t>
      </section>
      <section anchor="mp-new-conn-id-frame">
        <name>PATH_NEW_CONNECTION_ID frame</name>
        <t>The PATH_NEW_CONNECTION_ID frame (type=0x3e78)
is an extension of the NEW_CONNECTION_ID frame specified in
<xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>.
It is used to provide its peer with alternative connection IDs for 1-RTT packets
for a specific path. The peer can then use a different connection ID on the same path
to break linkability when migrating on that path; see also <xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t>PATH_NEW_CONNECTION_ID frames are formatted as shown in <xref target="fig-mp-connection-id-frame-format"/>.</t>
        <figure anchor="fig-mp-connection-id-frame-format">
          <name>PATH_NEW_CONNECTION_ID Frame Format</name>
          <artwork><![CDATA[
PATH_NEW_CONNECTION_ID Frame {
  Type (i) = 0x3e78,
  Path Identifier (i),
  Sequence Number (i),
  Retire Prior To (i),
  Length (8),
  Connection ID (8..160),
  Stateless Reset Token (128),
}
]]></artwork>
        </figure>
        <t>Compared to the NEW_CONNECTION_ID frame specified in
<xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>, the following
field is added:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The path ID associated with the connection ID. This
means the provided connection ID can only be used on the corresponding path.</t>
          </dd>
        </dl>
        <t>Note that, other than for the NEW_CONNECTION_ID frame of <xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>,
the sequence number applies on a per-path context.
This means different connection IDs on different paths might have the same
sequence number value.</t>
        <t>The Retire Prior To field indicates which connection IDs
should be retired among those that share the path ID in the Path Identifier field.
Connection IDs associated with different path IDs are not affected.</t>
        <t>Note that the NEW_CONNECTION_ID frame can only be used to issue or retire
connection IDs for the initial path with path ID 0.</t>
        <t>The last paragraph of <xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> specifies how to
verify the Retire Prior To field of an incoming NEW_CONNECTION_ID frame.
The same rule
applies for PATH_NEW_CONNECTION_ID frames, but it applies per path. If the
multipath extension is used, the rule
for NEW_CONNECTION_ID frame is only applied for path ID 0.</t>
      </section>
      <section anchor="mp-retire-conn-id-frame">
        <name>PATH_RETIRE_CONNECTION_ID frame</name>
        <t>The PATH_RETIRE_CONNECTION_ID frame (type=0x3e79)
is an extension of the RETIRE_CONNECTION_ID frame specified in
<xref section="19.16" sectionFormat="of" target="QUIC-TRANSPORT"/>. It is used
to indicate that an endpoint will no longer use a connection ID for a specific path ID
that was issued by its peer. To retire the connection ID used
during the handshake on the initial path, path ID 0 is used.
Sending a PATH_RETIRE_CONNECTION_ID frame also serves as a request to the peer
to send additional connection IDs for this path (see also <xref section="5.1" sectionFormat="of" target="QUIC-TRANSPORT"/>),
unless the path specified by the path ID has been abandoned. New path-specific connection IDs can be
delivered to a peer using the PATH_NEW_CONNECTION_ID frame (see <xref target="mp-new-conn-id-frame"/>).</t>
        <t>PATH_RETIRE_CONNECTION_ID frames are formatted as shown in <xref target="fig-mp-retire-connection-id-frame-format"/>.</t>
        <figure anchor="fig-mp-retire-connection-id-frame-format">
          <name>PATH_RETIRE_CONNECTION_ID Frame Format</name>
          <artwork><![CDATA[
PATH_RETIRE_CONNECTION_ID Frame {
  Type (i) = 0x3e79,
  Path Identifier (i),
  Sequence Number (i),
}
]]></artwork>
        </figure>
        <t>Compared to the RETIRE_CONNECTION_ID frame specified in
<xref section="19.16" sectionFormat="of" target="QUIC-TRANSPORT"/>, the following
field is added:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The path ID associated with the connection ID to retire.</t>
          </dd>
        </dl>
        <t>Note that the RETIRE_CONNECTION_ID frame can only be used to retire
connection IDs for the initial path with path ID 0.</t>
        <t>As the PATH_NEW_CONNECTION_ID frames applies the sequence number per path,
the sequence number in the PATH_RETIRE_CONNECTION_ID frame is also per
path. The PATH_RETIRE_CONNECTION_ID frame retires the Connection ID with
the specified path ID and sequence number.</t>
        <t>The processing of an incoming RETIRE_CONNECTION_ID frame
is described in <xref section="19.16" sectionFormat="of" target="QUIC-TRANSPORT"/>. The same processing
applies for PATH_RETIRE_CONNECTION_ID frames per path, while with use of
the multipath extension the
processing of a RETIRE_CONNECTION_ID frame is only applied for path ID 0.</t>
      </section>
      <section anchor="max-paths-frame">
        <name>MAX_PATH_ID frame</name>
        <t>A MAX_PATH_ID frame (type=0x3e7a) informs the peer of the maximum path ID
it is permitted to use.</t>
        <t>MAX_PATH_ID frames are formatted as shown in <xref target="fig-max-paths-frame-format"/>.</t>
        <figure anchor="fig-max-paths-frame-format">
          <name>MAX_PATH_ID Frame Format</name>
          <artwork><![CDATA[
MAX_PATH_ID Frame {
  Type (i) = 0x3e7a,
  Maximum Path Identifier (i),
}
]]></artwork>
        </figure>
        <t>MAX_PATH_ID frames contain the following field:</t>
        <dl>
          <dt>Maximum Path Identifier:</dt>
          <dd>
            <t>The maximum path ID that the sending endpoint is willing to accept.
This value MUST NOT exceed 2<sup>32</sup>-1, which is the maximum allowed value for the path ID due to
restrictions on the nonce calculation (see <xref target="nonce"/>).
The Maximum Path Identifier value MUST NOT be lower than the value
advertised in the initial_max_path_id transport parameter.</t>
          </dd>
        </dl>
        <t>Receipt of an invalid Maximum Path Identifier value MUST be treated as a
connection error of type PROTOCOL_VIOLATION.</t>
        <t>Loss or reordering can cause an endpoint to receive a MAX_PATH_ID frame with
a smaller Maximum Path Identifier value than was previously received.
MAX_PATH_ID frames that do not increase the path limit MUST be ignored.</t>
        <t>MAX_PATH_ID frames are ack-eliciting and SHOULD be retransmitted when lost
and no more recent MAX_PATH_ID frame has been sent in the meantime.</t>
      </section>
      <section anchor="paths-and-cids-blocked-frame">
        <name>PATHS_BLOCKED and PATH_CIDS_BLOCKED frames</name>
        <t>A sender can send a PATHS_BLOCKED frame (type=0x3e7b) when
it wishes to open a path but is unable to do so due to the maximum path ID
limit set by its peer.</t>
        <t>A sender can send a PATH_CIDS_BLOCKED frame (type=0x3e7c) when
it wishes to open a path with a valid path ID or change the connection ID on an established path
but is unable to do so because there are no unused connection IDs available
for the corresponding path ID.</t>
        <t>Note that PATHS_BLOCKED and PATH_CIDS_BLOCKED frames are informational.
Sending a PATHS_BLOCKED or a PATH_CIDS_BLOCKED frame does not imply a particular action from the peer
like sending a MAX_PATH_ID frame with a new Maximum Path Identifier value,
but informs the peer that the maximum path ID limit
or the absence of unused connection IDs prevented the creation or the usage of paths.
If the successful reception of a PATHS_BLOCKED/PATH_CIDS_BLOCKED frame was acknowledged but
no action is taken by the peer, this is likely a deliberate decision by the peer and
repeating the PATHS_BLOCKED/PATH_CIDS_BLOCKED frame will not change that.</t>
        <t>PATHS_BLOCKED frames are formatted as shown in <xref target="fig-paths-blocked-frame-format"/>.</t>
        <figure anchor="fig-paths-blocked-frame-format">
          <name>PATHS_BLOCKED Frame Format</name>
          <artwork><![CDATA[
PATHS_BLOCKED Frame {
  Type (i) = 0x3e7b,
  Maximum Path Identifier (i),
}
]]></artwork>
        </figure>
        <t>PATHS_BLOCKED frames contain the following field:</t>
        <dl>
          <dt>Maximum Path Identifier:</dt>
          <dd>
            <t>A variable-length integer indicating the maximum path ID that was
allowed at the time the frame was sent. If the received value is lower than
the currently allowed maximum value, this frame can be ignored.</t>
          </dd>
        </dl>
        <t>PATH_CIDS_BLOCKED frames are formatted as shown in <xref target="fig-path-cid-blocked-frame-format"/>.</t>
        <figure anchor="fig-path-cid-blocked-frame-format">
          <name>PATH_CIDS_BLOCKED Frame Format</name>
          <artwork><![CDATA[
PATH_CIDS_BLOCKED Frame {
  Type (i) = 0x3e7c,
  Path Identifier (i),
  Next Sequence Number (i),
}
]]></artwork>
        </figure>
        <t>PATH_CIDS_BLOCKED frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>Identifier of the path for which unused connection IDs are not available.</t>
          </dd>
          <dt>Next Sequence Number:</dt>
          <dd>
            <t>The next sequence number that is expected to be issued for a connection ID for this path by the peer.</t>
          </dd>
        </dl>
        <t>Receipt of a value of Maximum Path Identifier or Path Identifier that is higher than
the local maximum value MUST be treated as a connection error of type PROTOCOL_VIOLATION.</t>
        <t>Receipt of a value of Next Sequence Number that is higher than
the sequence number of the next expected to be issued connection ID for this path
MUST be treated as a connection error of type PROTOCOL_VIOLATION.</t>
        <t>PATHS_BLOCKED and PATH_CIDS_BLOCKED frames are ack-eliciting and MAY be retransmitted
if the path is still blocked when the loss is detected.</t>
      </section>
    </section>
    <section anchor="impl-consideration">
      <name>Implementation Considerations</name>
      <t>This section provides informational guidance for implementors.</t>
      <section anchor="migration">
        <name>Connection ID Changes, Migration, and NAT Rebindings</name>
        <t>With the multipath extension, each
path uses a separate packet number space.
This is a major difference from
<xref target="QUIC-TRANSPORT"/>, which only defines three number spaces (Initial,
Handshake and Application data packets).</t>
        <t>For any given path, connection ID rotation, NAT rebinding, or client-initiated migration
as specified in <xref target="QUIC-TRANSPORT"/> might occur, like on a single path.
These events do not change the path ID, and do not affect the packet number
space associated with the path.</t>
        <t>It is generally preferable to use multipath mechanisms such as
creating a new path and later abandoning the old path,
rather than doing migration of a single path as specified in <xref target="QUIC-TRANSPORT"/>.
This enables a smoother handover and allows a more controlled migration handling
at the server side. However, migration of a single path cannot be
avoided in case of NAT rebinding, or if the server requests migration
to a "preferred address" during the handshake.</t>
        <t><xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/> allows an endpoint to skip validation of
a peer address if that address has been seen recently. However, when the
multipath extension is used and an endpoint has multiple addresses that
could lead to switching between different paths, it should rather maintain
multiple open paths instead.</t>
        <t>Servers observing a 4-tuple change will
perform path validation (see <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>).
If path validation process succeeds, the endpoints reset
the path's congestion controller and round-trip time
estimator according to <xref section="9.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      </section>
      <section anchor="same-tuple-n-paths">
        <name>Using Multiple Paths on the Same 4-tuple</name>
        <t>It is possible to create paths that
refer to the same 4-tuple. For example, endpoints might want
to create paths that use different Differentiated Service <xref target="RFC2475"/> markings.
This could be done in conjunction with scheduling algorithms
that match streams to paths, so that for example data frames for
low priority streams are sent over low priority paths.
Since these paths use different path IDs, they can be managed
independently to suit the needs of the application. (The application
would need to manage how client and server use differentiated services
on a path. This is not specified in this document.)</t>
        <t>There might be cases in which paths are created with different 4-tuples,
but end up using the same 4-tuples as a consequence of path
migrations. Consider the following example where all paths use the same
source and destination ports:</t>
        <ul spacing="normal">
          <li>
            <t>Client starts path 1 from address 192.0.2.1 to server address 198.51.100.1</t>
          </li>
          <li>
            <t>Client starts path 2 from address 192.0.2.2 to server address 198.51.100.1</t>
          </li>
          <li>
            <t>Both paths are used for a while.</t>
          </li>
          <li>
            <t>Server sends packet from address 198.51.100.1 to client address 192.0.2.1, with Connection ID indicating path ID 2.</t>
          </li>
          <li>
            <t>Client receives the packet, recognizes a path migration, updates the source address of path 2 to 192.0.2.1.</t>
          </li>
        </ul>
        <t>(For simplicity, this example uses IPv4 addresses but would work similarly for
IPv6 addresses.)</t>
        <t>Such unintentional use of the same 4-tuple on different paths ought to
be rare. When they happen, the two paths would be redundant, and the
endpoint could want to close one of them.</t>
      </section>
      <section anchor="congestion-control">
        <name>Congestion Control</name>
        <t>When the QUIC multipath extension is used, senders manage per-path
congestion status as required in <xref section="9.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.
However, in <xref target="QUIC-TRANSPORT"/> only one active path is assumed and as such
the requirement is to reset the congestion control status on path migration.
With the multipath extension, multiple paths can be used simultaneously,
therefore separate congestion control state is maintained for each path.
This means a sender is not allowed to send more data on a given path
than congestion control for that path indicates.</t>
        <t>When a Multipath QUIC connection uses two or more paths, there is no
guarantee that these paths are fully disjoint. When two (or more paths)
share the same bottleneck, using a standard congestion control scheme
could result in an unfair distribution of the bandwidth with
the multipath connection getting more bandwidth than competing single
paths connections. Multipath TCP uses the linked increases algorithm (LIA)
congestion control scheme
specified in <xref target="RFC6356"/> to solve this problem.  This scheme can
immediately be adapted to Multipath QUIC. Other coupled congestion
control schemes have been proposed for Multipath TCP such as <xref target="OLIA"/>.
Designers of congestion control algorithms specialized for Multipath QUIC
are advised to follow BCP 133; see <xref section="7.10" sectionFormat="of" target="RFC9743"/>.</t>
        <t><xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> indicates that an endpoint
can change the connection ID it uses to another available one
at any time during the connection. As such, a change of the Connection
ID without any change in the address does not indicate a path change and
the endpoint can keep the same congestion control and RTT measurement state.</t>
      </section>
      <section anchor="compute-rtt">
        <name>Computing Path RTT</name>
        <t>PATH_ACK frames indicate which path the acknowledged packets were sent on,
but they could be received through any open path. If successive acknowledgments are received
on different paths, the measured RTT samples can fluctuate widely,
which could result in poor performance depending on, for example, the congestion control
algorithm.</t>
        <t>Congestion control state as defined in <xref target="QUIC-RECOVERY"/> is kept
per path ID. However, depending on which path acknowledgments are
sent, the actual RTT of a path cannot be calculated or might not be
the right value to be used.</t>
        <t>Instead of using the real RTT of a path, it is recommended to consider
the sum of two one-way delays: the delay
on the packet sending path and the delay on the return path chosen
for the acknowledgments.  When different paths have different
characteristics, the delays can vary
widely. Consider for example a multipath transmission using both a
terrestrial path, with a latency of 50ms in each direction, and a
geostationary satellite path, with a latency of 300ms in each
direction.  The sum of the two one-way delays will depend on the combination
of paths used for the packet transmission and the acknowledgment transmission,
as shown in <xref target="fig-example-ack-delay"/>.</t>
        <table anchor="fig-example-ack-delay">
          <name>Example of ACK delays using multiple paths</name>
          <thead>
            <tr>
              <th align="left">ACK Path \ Data path</th>
              <th align="left">Terrestrial</th>
              <th align="left">Satellite</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Terrestrial</td>
              <td align="left">100ms</td>
              <td align="left">350ms</td>
            </tr>
            <tr>
              <td align="left">Satellite</td>
              <td align="left">350ms</td>
              <td align="left">600ms</td>
            </tr>
          </tbody>
        </table>
        <t>The computed values reflect both the state of the network path and the
scheduling decisions of the acknowledgment sender. If we
assume that the PATH_ACK will be sent over the terrestrial
link, because this decision provides the best response time, the
computed RTT value for the satellite path will be about 350ms. This is
lower than the 600ms that would be measured if the PATH_ACK came over
the satellite channel, but it is still the right value for computing
for example the PTO timeout: if a PATH_ACK is not received after more
than 350ms, either the packet or its PATH_ACK were probably lost.</t>
        <t>The simplest implementation is to use the delays measured when receiving new packet acknowledgments
to compute smoothed_rtt and rttvar per
<xref section="5.3" sectionFormat="of" target="QUIC-RECOVERY"/> regardless of the path through which PATH_ACK frames are
received. This approach will provide good results
as long as acknowledgments are sent consistently over one path.
If at any time the acknowledgment sender revisits its sending preferences,
this can also change the paths that are used to send acknowledgments.
However, this is not very
different from route changes on a single path.
The RTT, RTT variance and PTO estimates will rapidly converge to
reflect the new conditions.
There is one exception: the minimum RTT, which is also
a known challenge when route changes occurs on a single path.
An acknowledgment receiver
can, however, remember the path over which the PATH_ACK that produced
the minimum RTT was received, and restart the minimum RTT computation
if that acknowledgment path changes or is abandoned.
If acknowledgments are not sent consistently over one path, the
acknowledgment receiver can monitor over which path acknowledgments
are received and only use samples for acknowledgments received on the same
path on which the data was sent, if any.</t>
        <t>Further, congestion control functions that rely on delay estimates needs
to consider cases where acknowledgments are sent over multiple paths
with different delays explicitly.</t>
      </section>
      <section anchor="packet-scheduling">
        <name>Packet Scheduling</name>
        <t>The transmission of packets containing data is limited
by the arrival of data from the application and by congestion control.
Generally, QUIC packets that increase the number of bytes in flight can only be sent
when the congestion window for the selected path allows it.</t>
        <t>Most frames, including control frames (PATH_CHALLENGE and PATH_RESPONSE being the notable
exceptions), can be sent and received on any open path.
As such, a packet scheduler is needed to decide which path to use
for sending the next packet, among those paths with an open congestion window.
If multiple paths are used to send data frames belonging to the same stream,
data delivery will experience the maximum delay of all used paths due to in-order delivery.
The scheduling is a local decision, based on the preferences of the application and the
implementation.</t>
        <t>This implies that an endpoint might send and receive PATH_ACK
frames on a path different from the one that carried the acknowledged
packets. As noted in <xref target="compute-rtt"/>, RTT estimates computed using
the standard algorithm reflect both the characteristics of the
path and the scheduling algorithm of PATH_ACK frames. The estimates will converge
faster if the scheduling strategy of PATH_ACK frames is stable.
Implementations can choose different strategies such as, for instance, sending
PATH_ACK frames either simply on the path where the acknowledged packets was received,
or alternatively the shortest path, which results in shorter control loops
and potentially better performance.</t>
        <t>Since packets that only carry PATH_ACK frames
are not congestion controlled (see <xref section="7" sectionFormat="of" target="QUIC-RECOVERY"/>),
senders should carefully consider the load induced
by these packets, especially if the capacity is unknown on that path,
e.g., when that path is not used for sending data frames.</t>
      </section>
      <section anchor="retransmissions">
        <name>Retransmissions</name>
        <t>Simultaneous use of multiple paths enables different
retransmission strategies to cope with losses such as:
a) retransmitting lost frames over the
same path, b) retransmitting lost frames on a different or
dedicated path, and c) duplicate lost frames on several paths (not
recommended for general purpose use due to the network
overhead). While this document does not preclude a specific
strategy, more detailed specification is out of scope.</t>
        <t>As noted in <xref section="2.2" sectionFormat="of" target="QUIC-TRANSPORT"/>, STREAM frame boundaries are not
expected to be preserved when data is retransmitted. Especially when STREAM
frames have to be retransmitted over a different path with a smaller MTU limit,
smaller STREAM frames might need to be sent instead.</t>
      </section>
      <section anchor="pto-expiration">
        <name>PTO Expiration</name>
        <t>An implementation should follow the mechanism specified in <xref target="QUIC-RECOVERY"/>
for detecting packet loss on each individual path. A special case happens when
the PTO timer expires. According to <xref target="QUIC-RECOVERY"/>, no packet will be declared
lost until either the packet sender receives a new acknowledgment for this path,
or the path itself is finally declared broken. This cautious process minimizes
the risk of spurious retransmissions, but it might cause significant delivery delay
for the frames contained in these "lost packets".</t>
        <t>Endpoints could take advantage of the multipath extension, and retransmit the content
of the delayed packets on other available paths if the congestion control window on these
paths allows.</t>
      </section>
      <section anchor="paths-having-different-pmtu-sizes">
        <name>Paths Having Different PMTU Sizes</name>
        <t>An implementation should take care to handle different PMTU sizes across
multiple paths. As specified in <xref section="14.3" sectionFormat="of" target="QUIC-TRANSPORT"/> the
DPLPMTUD Maximum Packet Size (MPS) is maintained for each combination of local and remote IP addresses.
Note that with the multipath extension multiple paths could use the same 4-tuple
but might have different MPS due to other factors (see <xref target="same-tuple-n-paths"/>).</t>
        <t>One simple option, if the PMTUs are similar, is to apply the minimum PMTU of all paths to
each path, which could also help to simplify retransmission processing.</t>
      </section>
      <section anchor="idle-time-close">
        <name>Idle Timeout and Keep-Alives</name>
        <t><xref target="QUIC-TRANSPORT"/> defines an idle timeout for closing the connection
which applies in case of multipath usage
if no packet is received on any path for the duration of the idle timeout.</t>
        <t>This document does not specify per-path idle timeouts. An endpoint
can decide to close a path at any time, whether the path is in active
use or not. For example, an endpoint might wait to send
the initial PATH_ABANDON frame until it anyway sends another frame.
Note that the receiver of an initial PATH_ABANDON frame is, however,
required to immediately reply (see <xref target="path-close"/>).</t>
        <t>If a path is not actively used for a while, it might not be usable anymore,
e.g., due to middlebox timeouts. To avoid such path breakage, endpoints
can send ack-eliciting packets such as packets containing PING frames
(<xref section="19.2" sectionFormat="of" target="QUIC-TRANSPORT"/>) on that path to keep it alive.
However, this specification does not recommend sending keep-alives as it can
create unnecessary overhead, especially if there are other, actively used paths.</t>
        <t><xref section="5.3" sectionFormat="of" target="QUIC-TRANSPORT"/> defines an optional keep-alive process.
This process can be applied to each path separately depending on application needs.
Some applications could decide to not keep any not-actively used path alive,
keep only one additional path alive, or multiple paths, e.g., for more redundancy.
As discussed in <xref section="10.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/>, the keep-alive interval
needs to incorporate timeouts in middleboxes on the path.</t>
        <t>If a path was not actively used for a while and no keep-alives have been sent,
an endpoint can probe it before switching to active use if there are still other paths
that are currently usable.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Note to IANA: the values marked below as "suggested" are the values
that we would like to see assigned.</t>
      <t>This document defines a new transport parameter to
enable simultaneous use of multiple paths within one QUIC connection.
Further, it specifies new frame types for path management and new error codes
when a path is abandoned.</t>
      <t>The current draft defines provisional values for experiments,
but, if the draft is approved, IANA is requested to allocate short values
as permanent with "IETF" as change controller and
the QUIC WG as contact to the respective registries under
<eref target="https://www.iana.org/assignments/quic/quic.xhtml">https://www.iana.org/assignments/quic/quic.xhtml</eref>.</t>
      <t>The following entry in <xref target="transport-parameters"/> should be added to
the "QUIC Transport Parameters" registry.</t>
      <table anchor="transport-parameters">
        <name>Addition to QUIC Transport Parameters Entries</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Parameter Name.</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x3e (suggested)</td>
            <td align="left">initial_max_path_id</td>
            <td align="left">
              <xref target="nego"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following frame types defined in <xref target="frame-types"/> should be added to
the "QUIC Frame Types" registry.</t>
      <table anchor="frame-types">
        <name>Addition to QUIC Frame Types Entries</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Frame Type Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x3e - 0x3f (suggested)</td>
            <td align="left">PATH_ACK</td>
            <td align="left">
              <xref target="mp-ack-frame"/></td>
          </tr>
          <tr>
            <td align="left">0x3e75 (suggested)</td>
            <td align="left">PATH_ABANDON</td>
            <td align="left">
              <xref target="path-abandon-frame"/></td>
          </tr>
          <tr>
            <td align="left">0x3e76 (suggested)</td>
            <td align="left">PATH_STATUS_BACKUP</td>
            <td align="left">
              <xref target="path-backup-available-frame"/></td>
          </tr>
          <tr>
            <td align="left">0x3e77 (suggested)</td>
            <td align="left">PATH_STATUS_AVAILABLE</td>
            <td align="left">
              <xref target="path-backup-available-frame"/></td>
          </tr>
          <tr>
            <td align="left">0x3e78 (suggested)</td>
            <td align="left">PATH_NEW_CONNECTION_ID</td>
            <td align="left">
              <xref target="mp-new-conn-id-frame"/></td>
          </tr>
          <tr>
            <td align="left">0x3e79 (suggested)</td>
            <td align="left">PATH_RETIRE_CONNECTION_ID</td>
            <td align="left">
              <xref target="mp-retire-conn-id-frame"/></td>
          </tr>
          <tr>
            <td align="left">0x3e7a (suggested)</td>
            <td align="left">MAX_PATH_ID</td>
            <td align="left">
              <xref target="max-paths-frame"/></td>
          </tr>
          <tr>
            <td align="left">0x3e7b (suggested)</td>
            <td align="left">PATHS_BLOCKED</td>
            <td align="left">
              <xref target="paths-and-cids-blocked-frame"/></td>
          </tr>
          <tr>
            <td align="left">0x3e7c (suggested)</td>
            <td align="left">PATH_CIDS_BLOCKED</td>
            <td align="left">
              <xref target="paths-and-cids-blocked-frame"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following transport error code defined in <xref target="tab-error-code"/> are to
be added to the "QUIC Transport Error Codes" registry.</t>
      <table anchor="tab-error-code">
        <name>Error Codes for Multipath QUIC</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Code</th>
            <th align="left">Description</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x3e (suggested)</td>
            <td align="left">APPLICATION_ABANDON_PATH</td>
            <td align="left">Path abandoned at the application's request</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
          <tr>
            <td align="left">0x3e75 (suggested)</td>
            <td align="left">PATH_RESOURCE_LIMIT_REACHED</td>
            <td align="left">Path abandoned due to resource limitations in the transport</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
          <tr>
            <td align="left">0x3e76 (suggested)</td>
            <td align="left">PATH_UNSTABLE_OR_POOR</td>
            <td align="left">Path abandoned due to unstable interfaces or poor performance</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
          <tr>
            <td align="left">0x3e77 (suggested)</td>
            <td align="left">NO_CID_AVAILABLE_FOR_PATH</td>
            <td align="left">Path abandoned due to no available connection IDs for the path</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
        </tbody>
      </table>
      <section anchor="removing-provisional-registrations">
        <name>Removing Provisional Registrations</name>
        <t>RFC Editor's Note: Please remove this section prior to publication of
a final version of this document.</t>
        <t>The values noted here were provisionally registered during the development
of this draft. The provisonal registrations should be deleted when the
final version of this document.</t>
        <t>The following entries were provisionally registered in the registry of QUIC
transport parameters:</t>
        <table anchor="transport-parameters-exp">
          <name>Provisional QUIC transport parameters</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Parameter Name.</th>
              <th align="left">Registered for</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0f739bbc1b666d0d</td>
              <td align="left">initial_max_path_id</td>
              <td align="left">draft 15</td>
            </tr>
            <tr>
              <td align="left">0x0f739bbc1b666d05</td>
              <td align="left">enable_multipath</td>
              <td align="left">draft-05</td>
            </tr>
            <tr>
              <td align="left">0x0f739bbc1b666d06</td>
              <td align="left">enable_multipath</td>
              <td align="left">draft-06</td>
            </tr>
          </tbody>
        </table>
        <t>The following entries were provisionally registered in the registry of QUIC
Frame Types:</t>
        <table anchor="frame-types-exp">
          <name>Provisional QUIC frame types</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Frame Type Name</th>
              <th align="left">Registered for</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x15228c00-0x15228c01</td>
              <td align="left">PATH_ACK</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x15228c05</td>
              <td align="left">PATH_ABANDON</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x15228c06</td>
              <td align="left">PATH_STATUS</td>
              <td align="left">draft-05</td>
            </tr>
            <tr>
              <td align="left">0x15228c07</td>
              <td align="left">PATH_STATUS_BACKUP</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x15228c08</td>
              <td align="left">PATH_STATUS_AVAILABLE</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x15228c09</td>
              <td align="left">PATH_NEW_CONNECTION_ID</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x15228c0a</td>
              <td align="left">PATH_RETIRE_CONNECTION_ID</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x15228c0c</td>
              <td align="left">MAX_PATH_ID</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x15228c0d</td>
              <td align="left">PATHS_BLOCKED</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x15228c0e</td>
              <td align="left">PATH_CIDS_BLOCKED</td>
              <td align="left">draft-15</td>
            </tr>
          </tbody>
        </table>
        <t>The following entries were provisionally registered in the registry of QUIC
Transport Error Codes:</t>
        <table anchor="error-codes-exp">
          <name>Provisional QUIC transport error codes</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Transport Error Code</th>
              <th align="left">Registered for</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x004150504142414e</td>
              <td align="left">APPLICATION_ABANDON_PATH</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x004e4f5f4349445f</td>
              <td align="left">NO_CID_AVAILABLE_FOR_PATH</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x0052534c494d4954</td>
              <td align="left">PATH_RESOURCE_LIMIT_REACHED</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x00554e5f494e5446</td>
              <td align="left">APPLICATION_ABANDON_PATH</td>
              <td align="left">draft-15</td>
            </tr>
            <tr>
              <td align="left">0x1001d76d3ded42f3</td>
              <td align="left">MP_PROTOCOL_VIOLATION</td>
              <td align="left">draft-05</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The multipath extension retains all security properties of <xref target="QUIC-TRANSPORT"/> and <xref target="QUIC-TLS"/>
but requires some additional consideration regarding:</t>
      <ul spacing="normal">
        <li>
          <t>potential additional resource usage for per-path connection IDs and multiple concurrent path contexts;</t>
        </li>
        <li>
          <t>a potentially increased amplification risk for denial-of-service attacks if multiple paths are used simultaneously;</t>
        </li>
        <li>
          <t>changes to the nonce calculation due to the use of multiple packet number spaces.</t>
        </li>
      </ul>
      <section anchor="memory-allocation-for-per-path-resources">
        <name>Memory Allocation for Per-Path Resources</name>
        <t>The maximum path ID limit in initial_max_path_id or MAX_PATH_ID frame
limits the number of paths an endpoint is willing
to maintain and thereby also limits the associated path resources.
Furthermore, as connection IDs have to be issued by both endpoints for the
same path ID before an endpoint can open a path, each endpoint could also
control the per-path resource usage by only
issuing connection IDs for a limited number of paths. However, using
the maximum path ID limit in initial_max_path_id or the MAX_PATH_ID frame is preferred.</t>
        <t>To avoid unnecessary resource usage that could be exploited
in a resource exhaustion attack, endpoints SHOULD allocate additional path resources,
such as e.g., for packet number handling, only after path validation has successfully completed.</t>
      </section>
      <section anchor="denial-of-service-with-multiple-paths">
        <name>Denial of Service with Multiple Paths</name>
        <t>Path validation as specified in <xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>
for migration is used
unchanged for path initiation in this extension.
Further, the multipath extension allows for the creation of multiple paths, which means
that in addition to the security considerations
on source address spoofing outlined in <xref section="21.5.4" sectionFormat="of" target="QUIC-TRANSPORT"/>,
there is a risk of amplified DoS attacks through simultaneous opening
or migration of multiple paths. For example, an attacker could set or spoof the
4-tuples used in multiple paths so that packets sent by the server would
travel through common network paths in an attempt to overwhelm a target.</t>
        <t><xref target="QUIC-TRANSPORT"/> only allows the use of one path
and the number of concurrent path validation attempts is
limited by number of issued connection IDs.
This extension allows for multiple open paths that could in theory be migrated
all at the same time, still limited by number of issued connection IDs for each path.
Further, multiple paths could be initialized simultaneously, limited by the maximum
number of allowed paths.</t>
        <t>Therefore, endpoints are advised to keep the maximum number of paths small
and might consider
additional measures to limit the number of concurrent path validation processes
e.g., by pacing them out or limiting the number of path initiation attempts
over a certain time period.</t>
        <t>However, the use of multipath does not change the
anti-amplification limits as specified in <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/>.
The attacker would need to send a separate challenge on each path
used in the attack, and the amplification limits would apply to the
amount of data sent by the server on that path. The attacker could get the same effect
by opening many QUIC connections and conducting the attack on each of them,
without negotiating the multipath option.</t>
      </section>
      <section anchor="cryptographic-handshake-and-aead-nonce">
        <name>Cryptographic Handshake and AEAD Nonce</name>
        <t>The multipath extension as specified in this document is only enabled after a
successful handshake when both endpoints indicate support for this extension.
All new frames defined in this extension are only used in 1-RTT packets.</t>
        <t>As the handshake is not changed by this extension, the transport security mechanisms
as specified in <xref target="QUIC-TLS"/>, such as encryption key exchange and peer authentication,
remain unchanged. As such, the security considerations in <xref target="QUIC-TLS"/> apply unaltered.</t>
        <t>The limits as discussed on <xref section="B" sectionFormat="of" target="QUIC-TLS"/>
apply to the total number of packets sent on all paths,
not each path separately.</t>
        <t>This specification changes the AEAD nonce calculation by including the path ID
as part of the calculation (see <xref target="nonce"/>). To ensure unique nonces, path IDs
are limited to 32 bits and cannot be reused for another path of the same connection.</t>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document is a collaboration of authors that combines work from
three proposals. Further authors of one of the original proposals are Qing An and Zhenyu Li.</t>
      <t>Thanks to Marten Seemann, Kazuho Oku, Martin Thomson, Magnus Westerlund, Mike Bishop,
Lucas Pardue, Michael Eriksson, Yu Zhu, Gorry Fairhurst, Tilmann Zäschke, and Tommy Pauly
for their thorough reviews and valuable contributions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC-TRANSPORT">
          <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="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="QUIC-RECOVERY">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6356">
          <front>
            <title>Coupled Congestion Control for Multipath Transport Protocols</title>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="D. Wischik" initials="D." surname="Wischik"/>
            <date month="October" year="2011"/>
            <abstract>
              <t>Often endpoints are connected by multiple paths, but communications are usually restricted to a single path per connection. Resource usage within the network would be more efficient were it possible for these multiple paths to be used concurrently. Multipath TCP is a proposal to achieve multipath transport in TCP.</t>
              <t>New congestion control algorithms are needed for multipath transport protocols such as Multipath TCP, as single path algorithms have a series of issues in the multipath context. One of the prominent problems is that running existing algorithms such as standard TCP independently on each path would give the multipath flow more than its fair share at a bottleneck link traversed by more than one of its subflows. Further, it is desirable that a source with multiple paths available will transfer more traffic using the least congested of the paths, achieving a property called "resource pooling" where a bundle of links effectively behaves like one shared link with bigger capacity. This would increase the overall efficiency of the network and also its robustness to failure.</t>
              <t>This document presents a congestion control algorithm that couples the congestion control algorithms running on different subflows by linking their increase functions, and dynamically controls the overall aggressiveness of the multipath flow. The result is a practical algorithm that is fair to TCP at bottlenecks while moving traffic away from congested links. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6356"/>
          <seriesInfo name="DOI" value="10.17487/RFC6356"/>
        </reference>
        <reference anchor="RFC9312">
          <front>
            <title>Manageability of the QUIC Transport Protocol</title>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document discusses manageability of the QUIC transport protocol and focuses on the implications of QUIC's design and wire image on network operations involving QUIC traffic. It is intended as a "user's manual" for the wire image to provide guidance for network operators and equipment vendors who rely on the use of transport-aware network functions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9312"/>
          <seriesInfo name="DOI" value="10.17487/RFC9312"/>
        </reference>
        <reference anchor="OLIA">
          <front>
            <title>MPTCP is not pareto-optimal: performance issues and a possible solution</title>
            <author initials="R." surname="Khalili">
              <organization/>
            </author>
            <author initials="N." surname="Gast">
              <organization/>
            </author>
            <author initials="M." surname="Popovic">
              <organization/>
            </author>
            <author initials="U." surname="Upadhyay">
              <organization/>
            </author>
            <author initials="J." surname="Le Boudec">
              <organization/>
            </author>
            <date year="2012"/>
          </front>
          <seriesInfo name="Proceedings of the 8th international conference on Emerging networking experiments and technologies, ACM" value=""/>
        </reference>
        <reference anchor="RFC2475">
          <front>
            <title>An Architecture for Differentiated Services</title>
            <author fullname="S. Blake" initials="S." surname="Blake"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <author fullname="M. Carlson" initials="M." surname="Carlson"/>
            <author fullname="E. Davies" initials="E." surname="Davies"/>
            <author fullname="Z. Wang" initials="Z." surname="Wang"/>
            <author fullname="W. Weiss" initials="W." surname="Weiss"/>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines an architecture for implementing scalable service differentiation in the Internet. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2475"/>
          <seriesInfo name="DOI" value="10.17487/RFC2475"/>
        </reference>
        <reference anchor="RFC9743">
          <front>
            <title>Specifying New Congestion Control Algorithms</title>
            <author fullname="M. Duke" initials="M." role="editor" surname="Duke"/>
            <author fullname="G. Fairhurst" initials="G." role="editor" surname="Fairhurst"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>RFC 5033 discusses the principles and guidelines for standardizing new congestion control algorithms. This document obsoletes RFC 5033 to reflect changes in the congestion control landscape by providing a framework for the development and assessment of congestion control mechanisms, promoting stability across diverse network paths. This document seeks to ensure that proposed congestion control algorithms operate efficiently and without harm when used in the global Internet. It emphasizes the need for comprehensive testing and validation to prevent adverse interactions with existing flows.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="133"/>
          <seriesInfo name="RFC" value="9743"/>
          <seriesInfo name="DOI" value="10.17487/RFC9743"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA829y24kSZY2trencDEXTf6KiCKZl6rM6R41i8mqojovHJJZ
PTU9jWyPCCfpnRHhMe4eyWRn1ewECNppIUArLSRBgAA9gQCt9CaCfgH/W+hc
zY6ZuweZPT3An0B3ZUaEm9vl2Ll+55zxeOzasl0UL7LX+Sq/LlfX2XKzaMv1
osjWeXvTZFdVneXZP7w7Pc5m1WpVzNqyWrl8Oq2Lj/CU/vjM/xh/6ubVbJUv
Ydh5nV+147Jor8b/silnYx4dfjw+PHDzvIWffH55dHnyi5vBP66r+u5F1rRz
17R1kS9fZKcnl985V67rF1lbb5r2cH//+f6hy+HbF9llna+adVW37raqP1zX
1Wb9gqf6e/g3LuZ7/Mx9KO7gB3MYbdUW9apoxy9xWg7ekq/m7/NFtYJ53BWN
W5cvsj+01WyUNTBsXVw18Le7Jf7lj87lm/amql+4scuyq81iQUuEv+OfFy+y
nf/43/6P//H/+t/+v//5v9mRD/NmVsKIOz/lq2VRZq/KDX5TV7jhxbxsqxr+
WdXXL7KjRTnNpznMcDaBz4plXi5eZMsyr/5cThZ3y9/m/INxCT+YVUuaQzoJ
nMN/+t//j//3//zv/9P/8j/JHPwUNqsrmMLrnD6nd76bFnV2WcxuVtWiui6L
Rt+ur7+jZybL/Lcb+Gl4bblqYJ8n2csiO65WMKMP+Ckf+D9silVbrpLvkiXL
+1flx6JuyvYuq66y19WqyXbfvX775mLPzOFfeLzJvJjxcL/dLOGXk3w2mRZm
Om8n2bfVKv8Iv97URZjP20X5sYR1Jl/yBI5fVZuPOcwWyCD7/cmr81Pz5oqf
nEzDk7/dzBb8RPzy40n2w6Zs4cHw4uObumzaMl/Zr+i1Z3X5EYg9eztrq/Wm
s+s3/PPfyn8nQK/mVa8n2e82xc2iuC1X8/C212X95zz5pnfTT+py1jRwhTND
ZfDs5IN/9reF/IZO3LlVVS/zFs4KyQyv1/jy/OjNxdnb88sXWX01e76/v++/
eXWhnx3oZ+cnx29/PDn/Sb84hAu9urKDnn93/Ozx02fy1+ePDw7xr29fnR4x
ZQuP2nl9dnl8lpVNtqpa4E910Vbjat2WyxyWsS5qGnQ1K+AnzQboGY7V5dm6
appyCkyqqRYbZF98NZj77BzuHxzyBw2su2hwavDxWV3NCti71XWD1NneFNk3
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

-->

</rfc>
