<?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.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-13" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-13"/>
    <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 Tessares</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 80?>

<t>This document specifies a multipath extension for the QUIC protocol to
enable the simultaneous usage of multiple paths for a single connection.</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 85?>

<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. This contrasts with
the base QUIC protocol <xref target="QUIC-TRANSPORT"/> that includes a connection migration mechanism that
selects only one path at a time to exchange QUIC packets.</t>
      <t>The path management specified in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>
fulfills multiple goals: it directs a peer to switch sending through
a new preferred path, and it allows the peer to release resources
associated with the old path. The multipath extension specified in this document requires
several changes to that mechanism:</t>
      <ul spacing="normal">
        <li>
          <t>Simultaneous transmission on multiple paths.</t>
        </li>
        <li>
          <t>Introduction of a path identifier to manage connection IDs and
packet number spaces per path.</t>
        </li>
        <li>
          <t>Removal of paths that have been abandoned.</t>
        </li>
      </ul>
      <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 negotiation between the two endpoints using a new transport
parameter, as specified in <xref target="nego"/>. Further, as different packet number
spaces are used for each path, this specification requires the use of
non-zero connection IDs in order to identify the path and respective
packet number space.</t>
      <t>To add a new path to an existing QUIC connection with multipath support,
a client sends a packet with a connection ID belonging to a so-far unused Path ID on
the chosen path, as further described in <xref target="path-initiation"/>.
A new path can only be used once the associated 4-tuple has been validated
by ensuring that the peer is able to receive packets at that address
(see <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/>).
In this version of the document, a QUIC server does not initiate the creation
of a path, but it can validate a new path created by a client.</t>
      <t>Each endpoint may use several IP addresses for the connection. In
particular, the multipath extension supports the following scenarios.</t>
      <ul spacing="normal">
        <li>
          <t>The client uses multiple IP addresses and the server listens on only
one.</t>
        </li>
        <li>
          <t>The client uses only one IP address and the server listens on
several ones.</t>
        </li>
        <li>
          <t>The client uses multiple IP addresses and the server listens on
several ones.</t>
        </li>
        <li>
          <t>The client uses only one IP address and the server
listens on only one.</t>
        </li>
      </ul>
      <t>Note that in the last scenario, it still remains possible to have
multiple paths over the connection, given that a path is not only
defined by the IP addresses being used, but also the port numbers.
In particular, the client can use one or several ports per IP
address and the server can listen on one or several ports per IP
address.</t>
      <t>In addition to these core features, an application using the multipath extension will typically
need additional algorithms to handle multiple, simultaneously open paths and how they are used to
send packets. As these differ depending on the application's requirements,
this proposal only specifies a simple basic packet
scheduling algorithm (see <xref target="packet-scheduling"/>),
in order to provide some basic implementation
guidance. However, more advanced algorithms as well as potential
extensions to enhance signaling of the current path status are expected
as future work.</t>
      <t>Further, this proposal does also not cover address discovery and management. Addresses
and the actual decision process to setup or tear down paths are assumed
to be handled by the application that is using the QUIC multipath
extension. This is sufficient to address the first aforementioned
scenario. However, this document does not prevent future extensions from
defining mechanisms to address the remaining scenarios.</t>
      <section anchor="basic-design-points">
        <name>Basic Design Points</name>
        <t>This proposal is based on several basic design points:</t>
        <ul spacing="normal">
          <li>
            <t>Re-use as much as possible mechanisms of QUIC version 1. In
particular, this proposal uses path validation as specified for QUIC
version 1 and aims to re-use as much as possible of QUIC's connection
migration.</t>
          </li>
          <li>
            <t>Use the same packet header formats as QUIC version 1 to minimize
the difference between multipath and non-multipath traffic being
exposed on wire.</t>
          </li>
          <li>
            <t>Congestion Control must be per-path (following <xref target="QUIC-TRANSPORT"/>)
which usually also requires per-path RTT measurements</t>
          </li>
          <li>
            <t>PMTU discovery should be performed per-path</t>
          </li>
          <li>
            <t>The use of this multipath extension requires the use of non-zero
length connection IDs in both directions.</t>
          </li>
          <li>
            <t>Connection IDs are associated with a path ID. The path initiation
associates that path ID with a 4-tuple of source and destination IP
address as well as source and destination port.</t>
          </li>
          <li>
            <t>Migration is detected without ambiguity
when a packet arrives with a connection ID
pointing to an existing path ID, but the connection ID and/or the
4-tuple are different from the value currently used for that path.</t>
          </li>
          <li>
            <t>Paths can be closed at any time, as specified in <xref target="path-close"/>.</t>
          </li>
          <li>
            <t>It is possible to create multiple paths sharing the same 4-tuple.
Each of these paths can be closed at any time, like any other path.</t>
          </li>
        </ul>
        <t>Further the design of this extension introduces an explicit path identifier
and use of multiple packet number spaces as further explained in the next sections.</t>
      </section>
      <section anchor="explicit-path-id">
        <name>Introduction of an Explicit Path Identifier</name>
        <t>This extension specifies a new path identifier (Path ID), which is an
integer between 0 and 2^32-1 (inclusive). Path identifies are generated
monotonically increasing and cannot be reused.
The connection ID of a packet binds the packet to a path identifier, and therefore
to a packet number space.</t>
        <t>The same Path ID is used in both directions to
address a path in the new multipath control frames,
such as PATH_ABANDON <xref target="path-abandon-frame"/>, PATH_BACKUP <xref target="path-backup-available-frame"/>,
PATH_AVAILABLE <xref target="path-backup-available-frame"/> as well as PATH_ACK <xref target="mp-ack-frame"/>.
Further, connection IDs are issued per Path ID using the
PATH_NEW_CONNECTION_ID frame (see <xref target="mp-new-conn-id-frame"/>).
That means each connection ID is associated with exactly one path identifier
but multiple connection IDs are usually issued for each path identifier.</t>
        <t>The Path ID of the initial path is 0. Connection IDs
which are issued by a NEW_CONNECTION_ID frame <xref section="19.15." sectionFormat="of" target="QUIC-TRANSPORT"/>
respectively are associated with Path ID 0. Also, the Path ID for
the connection ID specified in the "preferred address" transport parameter is 0.
Use of the "preferred address" is considered as a migration event
that does not change the Path ID.</t>
      </section>
      <section anchor="use-of-multiple-packet-number-spaces">
        <name>Use of Multiple Packet Number Spaces</name>
        <t>This extension uses multiple packet number spaces, one for each path.
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.</t>
        <t>Each Path ID-specific packet number space starts at packet number 0. When following
the packet number encoding algorithm described in <xref section="A.2" sectionFormat="of" target="QUIC-TRANSPORT"/>,
the largest packet number (largest_acked) that has been acknowledged by the
peer in the Path ID-specific packet number space is initially set to "None".</t>
        <t>Using multiple packet number spaces requires changes in the way AEAD is
applied for packet protection, as explained in <xref target="multipath-aead"/>.
More concretely, the Path ID is used to construct the
packet protection nonce in addition to the packet number
in order to enable use of the same packet number on different paths.
Respectively, the Path ID is limited to 32 bits to ensure a unique nonce.
Additional consideration on key updates are explained in <xref target="multipath-key-update"/>.</t>
      </section>
      <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>We assume that the reader is familiar with the terminology used 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>
      </section>
    </section>
    <section anchor="nego">
      <name>Handshake Negotiation and Transport Parameter</name>
      <t>This extension defines a new transport parameter, used to negotiate
the use of the multipath extension during the connection handshake,
as specified in <xref target="QUIC-TRANSPORT"/>. The new transport parameter is
defined as follows:</t>
      <ul spacing="normal">
        <li>
          <t>initial_max_path_id (current version uses 0x0f739bbc1b666d0c): a
variable-length integer specifying the maximum path identifier
an endpoint is willing to maintain at connection initiation.
This value MUST NOT exceed 2^32-1, the maximum allowed value for the Path ID due to
restrictions on the nonce calculation (see <xref target="multipath-aead"/>).</t>
        </li>
      </ul>
      <t>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>If an initial_max_path_id transport parameter value that is higher than 2^32-1
is received, the receiver MUST close the connection with an error of type
TRANSPORT_PARAMETER_ERROR.</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 identifier.</t>
      <t>If either of the endpoints does not advertise the initial_max_path_id transport
parameter, then the endpoints MUST NOT use any frame or
mechanism defined in this document.</t>
      <t>When advertising the initial_max_path_id transport parameter, the endpoint
MUST use non-zero length Source and Destination Connection IDs.
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>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"/>).
New paths can only be used after handshake completion.</t>
      <t>This extension does not change the definition of any transport parameter
defined in <xref section="18.2." sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>The initial_max_path_id transport parameter limits the initial maximum number of open paths
that can be used during a connection.</t>
      <t>The active_connection_id_limit transport parameter
<xref target="QUIC-TRANSPORT"/> limits the maximum number of active connection IDs per path when the
initial_max_path_id parameter is negotiated successfully.
As defined in <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/> connection IDs that are issued and not retired are considered active.
Endpoints might prefer to retain spare connection IDs so that they can
respond to unintentional migration events (<xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>).</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 negotiated, endpoints MUST abort the handshake with a
an error of type TRANSPORT_PARAMETER_ERROR.</t>
      <t>The PATH_ACK frame, as specified in <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 receiver's Path ID to identify the path-specific packet number space.</t>
      <t>As multipath support is unknown during the handshake, acknowledgments of
Initial and Handshake packets are sent using ACK frames.
If the multipath extension has been successfully
negotiated, ACK frames in 1-RTT packets acknowledge packets for the path with
Path ID 0.</t>
      <t>After the handshake concluded if negotiation of multipath support succeeded,
endpoints SHOULD use PATH_ACK frames instead of ACK frames,
including for acknowledging so far unacknowledged 0-RTT packets using Path ID 0.
Endpoints MUST process ACK frames that acknowledge 0-RTT packets or 1-RTT packets
for Path ID 0, even after successful negotiation of this extension. For example,
ACK frames might be preferred by the sender as long as only the initial path
with Path ID 0 is in use.
Similarly after a successful handshake, endpoints SHOULD also use
the PATH_NEW_CONNECTION_ID frame to provide new connection IDs for Path ID 0 and,
respectively, the PATH_RETIRE_CONNECTION_ID frame to retire connection IDs for
Path ID 0.</t>
    </section>
    <section anchor="path-management">
      <name>Path Management</name>
      <t>After completing the handshake, endpoints have agreed to enable
multipath support. They can start using multiple paths when both endpoints
have issued available connection IDs for at least one unused Path ID.
If an endpoint receives a disable_active_migration transport parameter
provided by the peer, it is forbidden to use a new local address
to establish new paths to the peer's handshake address. However,
establishment of additional paths from any local address to other peer addresses
(e.g carried by peer’s preferred_address) is valid immediately.</t>
      <t>This document
does not specify how an endpoint that is reachable via several addresses
announces these addresses to the other endpoint. In particular, 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"/>).
Furthermore, this document
does not discuss when a client decides to initiate a new path. We
delegate such discussion to separate documents.</t>
      <t>To open a new path, an endpoint MUST use a connection ID associated with
a new, unused Path ID. To let the peer open a new path, an endpoint needs
to provide its peer with connection IDs for at least one unused path identifier.
Still, the receiver may observe a connection ID associated with a used Path ID
on different 4-tuples due to, e.g., NAT rebinding. In such a case, the receiver reacts
as specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/> by initiating path validation
but MUST use a new connection ID for the same Path ID.</t>
      <t>This proposal adds six multipath control frames for path management:</t>
      <ul spacing="normal">
        <li>
          <t>PATH_ABANDON frame for the receiver side to abandon the path
(see <xref target="path-abandon-frame"/>),</t>
        </li>
        <li>
          <t>PATH_BACKUP and PATH_AVAILABLE frames to express a preference
in path usage (see <xref target="path-backup-available-frame"/>), and</t>
        </li>
        <li>
          <t>MAX_PATH_ID frame (see <xref target="max-paths-frame"/>) for increasing the limit of
path identifiers,</t>
        </li>
        <li>
          <t>PATHS_BLOCKED and PATH_CIDS_BLOCKED frames (see <xref target="paths-and-cids-blocked-frame"/>)
to notify the peer of being blocked to open new paths as
the limit of active paths set by the peer has been reached
or there are no unused connection IDs available
for the corresponding Path ID.</t>
        </li>
      </ul>
      <t>All new frames are sent in 1-RTT packets <xref target="QUIC-TRANSPORT"/>.</t>
      <section anchor="path-initiation">
        <name>Path Initiation</name>
        <t>Opening a new path requires the use of a new connection ID (see <xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>)
mapped to an unused Path ID (see <xref target="explicit-path-id"/>).
Instead of NEW_CONNECTION_ID frame as specified in <xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>,
each endpoint uses the PATH_NEW_CONNECTION_ID frame as specified in this extension
to issue Path ID-specific connections IDs.
The same Path ID is used in both directions. As such to open
a new path, both sides need at least
one connection ID (see <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>), which is associated
with the same, unused Path ID. When the peer receives the PATH_CHALLENGE,
it MUST pick a Connection ID with the same Path ID for sending the PATH_RESPONSE.</t>
        <t>When the multipath extension is negotiated, a client that wants to use an
additional path MUST validate the peer's address before sending any data packets
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 packets
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>The server may receive packets for a yet unused Path ID that do not
contain a path challenge. Such packets are valid if they can be properly decrypted
and if they contain 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 Section 8.2.1 of RFC9000.</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 section <xref target="path-close"/>.</t>
        <t>An endpoint that has no active connection ID for this path or
lacks other resource to immediately configure a new path could
delay sending the PATH_RESPONSE until sufficient resource are available.
Long delays may cause the peer to repeat the PATH_CHALLENGE and eventually
send a PATH_ABANDON, in which case the procedures specified in
Section <xref target="path-close"/> apply.</t>
        <t>PATH_ACK frames (defined in <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.
However, as the used Path ID is anyway consumed,
the endpoint MUST explicitly close the path as specified in
<xref target="path-close"/>.</t>
        <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. When the multipath extension
is negotiated, the reception of a "non-probing"
packet 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 at any time
as long as the anti-amplification limits
(<xref section="21.1.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>) and the congestion control
limits for this path are respected.</t>
        <t>Connection ID changes as specified in <xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> and
in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/> for connection migration apply for
connection IDs associated to the same Path ID.
With the successful negotiation of the extension specified
in this draft, endpoints have to consider the reception of
a packet with a connection ID associated to an
so far unused Path ID as an attempt to establish a new path.</t>
        <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 a token that is capable of validating
any of the previously validated addresses. Further guidance on token usage can be
found in <xref section="8.1.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      </section>
      <section anchor="path-status-management">
        <name>Path Status Management</name>
        <t>An endpoint uses the PATH_BACKUP and PATH_AVAILABLE frames to inform the peer that it should
send packets 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.
Each peer indicates its preference of path usage independently of the other peer.
That means that peers may have different usage preferences for the same path.
Depending on the data sender's decisions, this may lead to usage of paths that have been
indicated as "standby" by the peer or non-usage of some locally available paths.</t>
        <t>PATH_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_BACKUP marks a path as "standby", i.e., it suggests that no traffic
should be sent on that path if another path is available.
If all established paths are marked as "standby", no guidance is provided about
which path should be used.</t>
        <t>If an endpoint starts using a path that was marked as "standby" by its peer
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 switch over to a standby 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>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>Endpoints use the Path ID
in these frames to identify which path state is going to be
changed. Note that both frames can be sent via a different path
and therefore might arrive in different orders.
The PATH_AVAILABLE and PATH_BACKUP frames share a common sequence number space
to detect and ignore outdated information.</t>
      </section>
      <section anchor="path-close">
        <name>Path Close</name>
        <t>Each endpoint manages the set of paths that are available for
transmission. At any time in the connection, each endpoint can decide to
abandon one of these paths, for example following changes in local
connectivity or local preferences. After an endpoint abandons
a path, the peer can expect to not receive any more packets on
that path.</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>
        <t>An endpoint that wants to close a path MUST explicitly
terminate the path by sending a PATH_ABANDON frame.
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"/>).
This is true whether the decision to close the path results
from implicit signals such as idle time or packet losses
(see <xref target="idle-time-close"/>) or for any other reason, such as management
of local resources. It is also possible to abandon a path for which no
packet has been sent (see <xref target="abandon-early"/>).</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. It MUST stop sending
any new packet on the abandoned path, and it MUST treat all
connection identifiers received from the peer for that path as immediately
retired. However, knowledge of the
connection identifiers received from the peer and of the state
of the number space associated to the path SHOULD be retained while
packets from the peer might still be in transit, i.e., for a delay of
3 PTO after the PATH_ABANDON frame has been received from the peer,
both to avoid generating spurious stateless packets as specified in
<xref target="spurious-stateless-reset"/> and to be able to acknowledge the
last packets received from the peer as specified in <xref target="ack-after-abandon"/>.</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 receiving or sending a PATH_ABANDON frame, the endpoints SHOULD
promptly send PATH_ACK frames to acknowledge all packets received on
the path and not yet acknowledged, as specified in <xref target="ack-after-abandon"/>.
When an endpoint finally deletes all resource associated with the path,
the packets sent over the path and not yet acknowledged MUST be considered lost.</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="multipath-aead"/>.</t>
        <t>PATH_ABANDON frames can be sent on any path,
not only the path that is intended to be closed.
It is RECOMMENDED to send the PATH_ABANDON frames on another path,
especially if connectivity on the to-be-abandoned path
is expected to be broken.</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. If the client received a PATH_ABANDON
frame for the last open path, it 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 if a path
probing packet is received on a new path before sending the
CONNECTION_CLOSE frame.</t>
        <section anchor="spurious-stateless-reset">
          <name>Avoiding Spurious Stateless Resets</name>
          <t>The peers that send a PATH_ABANDON frame MUST treat all connection
identifiers received from the peer for the Path ID as immediately
retired. The Stateless Reset Tokens associated with these connection
identifiers MUST NOT be used to identify Stateless Reset packets
per <xref section="10.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
          <t>Due to packet losses and network delays, packets sent on the path may
well arrive after the PATH_ABANDON frames have been sent or received.
If these packets arrive after the connection identifiers sent to the peer
have been retired, they will not be recognized as bound for the local
connection and could trigger the peer to send a Stateless Reset
packet. The rule to "retain knowledge of connection ID for 3 PTO
after receiving a PATH_ABANDON"
is intended to reduce the risk of sending such spurious stateless
packets, but it cannot completely avoid that risk.</t>
          <t>The immediate retirement of connection identifiers received for the
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 decides to send a PATH_ABANDON frame, there may
still be some unacknowledged packets. Some of these packets may well
be in transit, and could be received shortly after sending the
PATH_ABANDON frame. As specified above, the endpoints SHOULD
send PATH_ACK frames promptly, to avoid unnecessary data
retransmission after the peer deletes path resources.</t>
          <t>These PATH_ACK frames MUST be sent on a different path than the
path being abandoned.</t>
          <t>PATH_ACK frames received after the endpoint has entirely deleted
a path MUST be silently discarded.</t>
        </section>
        <section anchor="idle-time-close">
          <name>Idle Timeout</name>
          <t><xref target="QUIC-TRANSPORT"/> allows for closing of connections if they stay idle
for too long. The connection idle timeout when using the multipath extension is defined
as "no packet received on any path for the duration of the idle timeout".
When only one path is available, servers MUST follow the specifications
in <xref target="QUIC-TRANSPORT"/>.</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, by sending a PATH_ABANDON frame. It is not required
to send a PATH_ABANDON frame at any specific point in time.
For example, an endpoint may wait until it will anyway send another frame.</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.
As discussed in
<xref section="10.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/>, the keep-alive interval depends
on the timeout in the middlebox.</t>
          <t>If a path was not actively used for a while, an endpoint can
probe it before switching to active use if there are still other paths
that are currently usable.</t>
        </section>
        <section anchor="abandon-early">
          <name>Early Abandon</name>
          <t>There are scenarios in which 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 may also decide
to abandon a path for any reason, for example, removing a hole from
the sequence of path IDs in use. This is not an error. An endpoint that
receives such a PATH_ABANDON frame must treat it as specified in <xref target="path-close"/>.</t>
        </section>
      </section>
      <section anchor="consume-retire-cid">
        <name>Allocating, Consuming, and Retiring Connection IDs</name>
        <t>With the multipath extension, each connection ID is associated with one path
that is identified by the Path ID that is specified in the Path Identifier field of
the PATH_NEW_CONNECTION_ID frame <xref target="mp-new-conn-id-frame"/>.
The Path ID 0 indicates the initial path of the connection.
Respectively, the connection IDs used during the handshake belong to the initial path
with Path ID 0.
The PATH_NEW_CONNECTION_ID frame is used to issue new connection IDs for all paths.
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>When issuing path-specific connection IDs, an endpoint associates a sequence number
as specified in <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>. Each Path ID has its own
connection ID sequence number space whose initial value is 0. On non-initial paths
(i.e., Path ID different from 0), the initial path connection ID is provided by a
PATH_NEW_CONNECTION_ID frame with a sequence number value of 0.</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 migration.
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><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 draft, endpoints MUST only rotate to another connection IDs associated
to 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>Over a given path, both endpoints use connection IDs associated to a given Path
ID. To initiate a path, each endpoint needs to advertise at least one connection ID
for a given Path ID to its peer. Endpoints SHOULD NOT introduce discontinuity
in the issuing of Path IDs through their connection ID advertisements 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). 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><xref section="5.1.2." sectionFormat="of" target="QUIC-TRANSPORT"/> specifies the retirement of connection IDs.
In order to identify a connection ID correctly when the multipath extension is used,
endpoints have to use the PATH_RETIRE_CONNECTION_ID frame instead
of the RETIRE_CONNECTION_ID frame to indicate the respective Path ID together with the
connection ID sequence number, at least for all paths with a Path ID other than 0.
Endpoints can 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 as well and endpoints need to process these frames accordingly
as corresponding to Path ID 0.</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"/>.
When an endpoint finds it has not enough available unused path identifiers,
it SHOULD either send a MAX_PATH_ID frame to increase the active path limit
(when limited by the sender) or a PATHS_BLOCKED frame
(see Section <xref target="paths-and-cids-blocked-frame"/>) to inform the peer that a new path
identifier was needed but the current limit set by the peer prevented the
creation of the new path.</t>
        <t>If the client has consumed all the allocated connection IDs for a path, it is supposed to retire
those that are not used anymore, and the server is supposed to provide
replacements for that path, see <xref section="5.1.2." sectionFormat="of" target="QUIC-TRANSPORT"/>.
Sending a PATH_RETIRE_CONNECTION_ID frame indicates that the connection ID
will not be used anymore. In response, if the path is still open, the peer
SHOULD provide new connection IDs using PATH_NEW_CONNECTION_ID frames.
While it it 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 if it wants to change the connection ID but no
unused connection ID for a certain 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 with a path.</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="multipath-aead">
      <name>Packet Protection</name>
      <t>Packet protection for QUIC version 1 is specified in <xref section="5" sectionFormat="of" target="QUIC-TLS"/>.
The general principles of packet protection are not changed for
the multipath extension specified in this document.
No changes are needed for setting packet protection keys,
initial secrets, header protection, use of 0-RTT keys, receiving
out-of-order protected packets, receiving protected packets,
or retry packet integrity. However, the use of multiple number spaces
for 1-RTT packets requires changes in AEAD usage.</t>
      <section anchor="nonce-calculation">
        <name>Nonce Calculation</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 by combining the packet protection
IV with the packet number and with the least significant 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^32-1.</t>
        <t>To calculate the nonce, a 96-bit path-and-packet-number is composed of the least
significant 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. 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 MUST NOT be used with the QUIC multipath extension.</t>
        <t>For example, assuming the IV value is <tt>6b26114b9cba2b63a9e8dd4f</tt>,
the Path ID is <tt>3</tt>, and the packet number is <tt>aead</tt>,
the nonce will be set to <tt>6b2611489cba2b63a9e873e2</tt>.</t>
      </section>
      <section anchor="multipath-key-update">
        <name>Key Update</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 PTO 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 sole single path.</t>
        <t>The choice of three times the largest PTO is a trade-off:
Packets that arrive after their decryption key has been discarded will be dropped.
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 linkability issue.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="path-establishment">
        <name>Path Establishment</name>
        <t><xref target="fig-example-new-path"/> illustrates an example of new path establishment
using multiple packet number spaces.</t>
        <t>In this example 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

   (Exchanges start on default path)
   1-RTT[]: PATH_NEW_CONNECTION_ID[C1, Seq=0, PathID=1] -->
             <-- 1-RTT[]: PATH_NEW_CONNECTION_ID[S1, Seq=0, PathID=1]
             <-- 1-RTT[]: PATH_NEW_CONNECTION_ID[S2, Seq=0, PathID=2]
   ...
   (starts new path)
   1-RTT[0]: DCID=S1, PATH_CHALLENGE[X] -->
                           Checks AEAD using nonce(Path ID 1, PN 0)
        <-- 1-RTT[0]: DCID=C1, PATH_RESPONSE[X], PATH_CHALLENGE[Y],
                                             PATH_ACK[PathID=1, PN=0]
   Checks AEAD using nonce(Path ID 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 NEW_CONNECTION_ID frame.
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 IDs 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.</t>
      </section>
      <section anchor="path-closure">
        <name>Path Closure</name>
        <t><xref target="fig-example-path-close1"/> illustrates an example of path closure.</t>
        <t>In this example, 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 send a
PATH_ABANDON frame with Path ID 0 together with an 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 send on a different path
as no further packets can be sent on the abandoned path after the
PATH_ABANDON frame.</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="number-spaces">
        <name>Number Spaces</name>
        <t>As stated in <xref target="introduction"/>, when the multipath extension is negotiated, 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 packets).</t>
        <t>The relation between packet number spaces and paths is fixed.
Connection IDs are separately allocated for each Path ID.
Rotating the connection ID on a path does not change the Path ID.
NAT rebinding, though it changes the 4-tuple of the path,
also does not change the path identifier.
The packet number space does not change when connection ID
rotation happens within a given Path ID.</t>
        <t>Data associated with the transmission and reception such RTT measurements,
congestion control state, or loss recovery are maintained per packet number
space and as such per Path ID.</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 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 increased 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"/>.</t>
      </section>
      <section anchor="compute-rtt">
        <name>Computing Path RTT</name>
        <t>Acknowledgment delays are 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, this can cause acknowledgment delays to 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 both
directions.  The acknowledgment delay will depend on the combination
of paths used for the packet transmission and the ACK 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 PATH_ACK frames describe packets that were sent on the specified path,
but they may be received through any available path. There is an
understandable concern that if successive acknowledgments are received
on different paths, the measured RTT samples will fluctuate widely,
and that might result in poor performance. While this may be a concern,
the actual behavior is complex.</t>
        <t>The computed values reflect both the state of the network path and the
scheduling decisions by the sender of the PATH_ACK frames. In the example
above, we may assume that the PATH_ACK will be sent over the terrestrial
link, because that provides the best response time. In that case, the
computed RTT value for the satellite path will be about 350ms. This
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 data packet or its PATH_ACK were probably lost.</t>
        <t>The simplest implementation is 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 algorithm will provide good results,
except if the set of paths changes and the PATH_ACK sender
revisits its sending preferences. This is not very
different from what happens on a single path if the routing changes.
The RTT, RTT variance and PTO estimates will rapidly converge to
reflect the new conditions.
There is however an exception: some congestion
control functions rely on estimates of the minimum RTT. It might be prudent
for nodes to remember the path over which the PATH_ACK that produced
the minimum RTT was received, and to restart the minimum RTT computation
if that path is abandoned.</t>
      </section>
      <section anchor="packet-scheduling">
        <name>Packet Scheduling</name>
        <t>The transmission of QUIC packets on a regular QUIC connection is regulated
by the arrival of data from the application and the congestion control
scheme. QUIC packets that increase the number of bytes in flight can only be sent
when the congestion window allows it.
Multipath QUIC implementations also need to include a packet scheduler
that decides, among the paths whose congestion window is open, the path
over which the next QUIC packet will be sent. Most frames, including
control frames (PATH_CHALLENGE and PATH_RESPONSE being the notable
exceptions), can be sent and received on any open path. The scheduling
is a local decision, based on the preferences of the application and the
implementation.</t>
        <t>Note that this implies that an endpoint may 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"/> the values 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 is stable, but besides that
implementations can choose between multiple strategies such as sending
PATH_ACK frames on the path they acknowledge packets, or sending
PATH_ACK frames on the shortest path, which results in shorter control loops
and thus better performance. However, 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.</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,
new smaller STREAM frames might need to be sent instead.</t>
      </section>
      <section anchor="handling-pto">
        <name>Handling PTO</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 acknowledgement for this path,
or the path itself is finally declared broken. This cautious process minimizes
the risk of spurious retransmissions, but it may 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="handling-different-pmtu-sizes">
        <name>Handling 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.
One simple option, if the PMTUs are relatively similar, is to apply the minimum PMTU of all paths to
each path. The benefit of such an approach is to simplify retransmission
processing as the content of lost packets initially sent on one path can be sent
on another path without further frame scheduling adaptations.</t>
      </section>
      <section anchor="keep-alive">
        <name>Keep Alive</name>
        <t>The QUIC specification defines an optional keep alive process, see <xref section="5.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.
Implementations of the multipath extension should map this keep alive process to a number of paths.
Some applications may keep only one path alive, while others could prefer to maintain
liveliness on two or more paths during the connection lifetime.
Different applications will likely require different strategies.
Once the implementation has decided which paths to keep alive, it can do so by sending Ping frames
on each of these paths before the idle timeout expires.</t>
      </section>
      <section anchor="connection-id-changes">
        <name>Connection ID Changes</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. As such a sole 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="migration">
        <name>Migration and NAT Rebindings</name>
        <t>While endpoints assign a connection ID to a specific sending 4-tuple,
networks events such as NAT rebinding may make the packet's receiver
observe a different 4-tuple. 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 set
the path's congestion controller and round-trip time
estimator according to <xref section="9.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.</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>More generally, while migration cannot be avoided in case of network-based
NAT rebindings, opening a new path instead of active client migration
should be strongly preferred when the multipath extension is supported.
This enables a smoother handover and allows a simplified migration
handling at the server as NAT rebindings imply immediate loss of the old
address.</t>
      </section>
      <section anchor="using-multiple-paths-on-the-same-4-tuple">
        <name>Using multiple paths on the same 4-tuple</name>
        <t>As noted in <xref target="basic-design-points"/>, it is possible to create paths that
refer to the same 4-tuple. For example, the endpoints may 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.</t>
        <t>There may 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. For example:</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 CID indicating path=2.</t>
          </li>
          <li>
            <t>Client receives packet, recognizes a path migration, update source address of path 2 to 192.0.2.1.</t>
          </li>
        </ul>
        <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 will want to close one of them.
Uncoordinated abandon from both ends of the connection may result in deleting
two paths instead of just one. To avoid this pitfall, endpoints could
adopt a simple coordination rule, such as only letting the client
initiate closure of duplicate paths, or perhaps relying on
the application protocol to decide which paths should be closed.</t>
      </section>
    </section>
    <section anchor="frames">
      <name>New Frames</name>
      <t>All frames defined in this document MUST only be sent in 1-RTT packets.</t>
      <t>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 identifier 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 TBD-00 and TBD-01)
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 as its own packet number space. If the frame type is TBD-01, 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) = TBD-00..TBD-01
         (experiments use  0x15228c00-0x15228c01),
    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.</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) = TBD-02 (experiments use 0x15228c05),
    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 to abandon.</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 section <xref target="path-close"/>.</t>
      </section>
      <section anchor="path-backup-available-frame">
        <name>PATH_BACKUP and PATH_AVAILABLE frames</name>
        <t>PATH_AVAILABLE frames are used by endpoints to inform the peer
that the indicated path is available for sending.
PATH_AVAILABLE frames are formatted as shown in <xref target="fig-path-available-format"/>.</t>
        <figure anchor="fig-path-available-format">
          <name>PATH_AVAILABLE Frame Format</name>
          <artwork><![CDATA[
  PATH_AVAILABLE Frame {
    Type (i) = TBD-04 (experiments use 0x15228c08),
    Path Identifier (i),
    Path Status Sequence Number (i),
  }
]]></artwork>
        </figure>
        <t>PATH_BACKUP frames are used by endpoints to inform the peer
about its preference to not use the indicated path for sending.
PATH_BACKUP frames are formatted as shown in <xref target="fig-path-backup-format"/>.</t>
        <figure anchor="fig-path-backup-format">
          <name>PATH_BACKUP Frame Format</name>
          <artwork><![CDATA[
  PATH_BACKUP Frame {
    Type (i) = TBD-03 (experiments use 0x15228c07)
    Path Identifier (i),
    Path Status Sequence Number (i),
  }
]]></artwork>
        </figure>
        <t>Both PATH_AVAILABLE and PATH_BACKUP Frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID the status update corresponds to.
All Path IDs that have been issued
MAY be specified, even if they are not yet in use over a path.</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_AVAILABLE or
PATH_BACKUP frames for a given Path ID.</t>
        <t>Frames may be received out of order. A peer MUST ignore an incoming
PATH_AVAILABLE or
PATH_BACKUP frame if it previously received another PATH_BACKUP frame
or PATH_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_AVAILABLE or PATH_BACKUP Frames
on different paths. The receiver of
the PATH_AVAILABLE or PATH_BACKUP frame needs to use and compare the sequence numbers
separately for each Path ID.</t>
        <t>PATH_BACKUP and PATH_AVAILABLE frames are ack-eliciting. If a packet containing a
PATH_BACKUP or PATH_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_BACKUP or a PATH_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=0x15228c09)
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) = TBD-05 (experiments use 0x15228c09),
  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 may 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_RETIRE_CONNECTION_ID frames, but it applies per path. After the
multipath extension is negotiated successfully, the rule
for RETIRE_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=0x15228c0a)
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 it will no longer use a connection ID for a specific path
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) = TBD-06 (experiments use 0x15228c0a),
  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 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=0x15228c0c) informs the peer of the maximum path identifier
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) = TBD-07 (experiments use 0x15228c0c),
  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 identifier that the sending endpoint is willing to accept.
This value MUST NOT exceed 2^32-1, the maximum allowed value for the Path ID due to
restrictions on the nonce calculation (see <xref target="multipath-aead"/>).
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=0x15228c0d) when
it wishes to open a path but is unable to do so due to the maximum path identifier
limit set by its peer.</t>
        <t>A sender can send a PATH_CIDS_BLOCKED frame (type=0x15228c0e) when
it wishes to open a path with a valid Path ID or change the CID 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 updating the new Max Path ID value, but informs the peer that the maximum path identifier 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>MAX_PATH_ID_BLOCKED Frame Format</name>
          <artwork><![CDATA[
PATHS_BLOCKED Frame {
  Type (i) = TBD-08 (experiments use 0x15228c0d),
  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 identifier 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) = TBD-09 (experiments use 0x15228c0e),
  Path Identifier (i),
  Next Sequence Number (i),
}
]]></artwork>
        </figure>
        <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 lost is detected.</t>
      </section>
    </section>
    <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>
      <t>APPLICATION_ABANDON (TBD-10): The endpoint is abandoning the path at the
request of the application. The application has determined that it no
longer needs this path. This error is used when the application layer
decides to stop using a specific path.</t>
      <t>RESOURCE_LIMIT_REACHED (TBD-11): The endpoint is abandoning the path because
it cannot allocate sufficient resources to maintain it. This is due to
limitations in the transport layer's capacity. This error indicates that
resource constraints prevent the continuation of the path.</t>
      <t>UNSTABLE_INTERFACE (TBD-12): The endpoint is abandoning the path because
the used interface is considered to be unstable. This condition can occur, e.g.,
due to a weak wireless signal or frequent handover events during high-speed mobility.</t>
      <t>NO_CID_AVAILABLE (TBD-13): The endpoint is abandoning the path due to
the lack of a connection ID for this path.
This may 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>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document defines a new transport parameter for the negotiation of
enable multiple paths for QUIC, and three new frame types. The draft defines
provisional values for experiments, but we expect IANA to allocate
short values if the draft is approved.</t>
      <t>The following entry in <xref target="transport-parameters"/> should be added to
the "QUIC Transport Parameters" registry under the "QUIC Protocol" heading.</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">TBD (current version uses 0x0f739bbc1b666d0d)</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 under the "QUIC Protocol" heading.</t>
      <table anchor="frame-types">
        <name>Addition to QUIC Frame Types Entries</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Frame Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD-00 - TBD-01 (experiments use 0x15228c00-0x15228c01)</td>
            <td align="left">PATH_ACK</td>
            <td align="left">
              <xref target="mp-ack-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-02 (experiments use 0x15228c05)</td>
            <td align="left">PATH_ABANDON</td>
            <td align="left">
              <xref target="path-abandon-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-03 (experiments use 0x15228c07)</td>
            <td align="left">PATH_BACKUP</td>
            <td align="left">
              <xref target="path-backup-available-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-04 (experiments use 0x15228c08)</td>
            <td align="left">PATH_AVAILABLE</td>
            <td align="left">
              <xref target="path-backup-available-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-05 (experiments use 0x15228c09)</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">TBD-06 (experiments use 0x15228c0a)</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">TBD-07 (experiments use 0x15228c0c)</td>
            <td align="left">MAX_PATH_ID</td>
            <td align="left">
              <xref target="max-paths-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-08 (experiments use 0x15228c0d)</td>
            <td align="left">PATHS_BLOCKED</td>
            <td align="left">
              <xref target="paths-and-cids-blocked-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-09 (experiments use 0x15228c0e)</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 under
the "QUIC Protocol" heading.</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">TBD-10 (experiments use 0x004150504142414e)</td>
            <td align="left">APPLICATION_ABANDON</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">TBD-11 (experiments use 0x0052534c494d4954)</td>
            <td align="left">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">TBD-12 (experiments use 0x00554e5f494e5446)</td>
            <td align="left">UNSTABLE_INTERFACE</td>
            <td align="left">Path abandoned due to unstable interfaces</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
          <tr>
            <td align="left">TBD-13 (experiments use 0x004e4f5f4349445f)</td>
            <td align="left">NO_CID_AVAILABLE</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>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The multipath extension retains all the security features of <xref target="QUIC-TRANSPORT"/> and <xref target="QUIC-TLS"/>
but requires some additional consideration regarding the following amendments:</t>
      <ul spacing="normal">
        <li>
          <t>the need of potential additional resources as connection IDs are now maintained per-path;</t>
        </li>
        <li>
          <t>the provisioning of multiple concurrent path contexts and the associated resources;</t>
        </li>
        <li>
          <t>the possibility to create and use multiple simultaneous paths and the corresponding increased amplification risk for request forgery attacks;</t>
        </li>
        <li>
          <t>the changes on encryption requirements 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 initial_max_path_id transport parameter and the Max Path ID field
in the MAX_PATH_ID frame limit the number of paths an endpoint is willing
to maintain and accordingly limit the associated path resources.</t>
        <t>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 can further
control the per-path resource usage (beyond the connection IDs) by limiting
the number of Path ID that it issues connection IDs for.</t>
        <t>Therefore, to avoid unnecessarily resource usage, that potentially could be exploited
in a resource exhaustion attack, endpoints should allocate those additional path resource,
such as e.g. for packet number handling, only after path validation has successfully completed.</t>
      </section>
      <section anchor="request-forgery-with-spoofed-address">
        <name>Request Forgery with Spoofed Address</name>
        <t>The path validation mechanism as specified in <xref section="8.2." sectionFormat="of" target="QUIC-TRANSPORT"/> for migration is used
unchanged for initiation of new paths in this extension. Therefore, the security considerations
on source address spoofing as outlined in <xref section="21.5.4" sectionFormat="of" target="QUIC-TRANSPORT"/> equally apply.
Similarly, the anti-amplification limits as specified in <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/> need to be
followed to limit the amplification risk.</t>
        <t>However, while <xref target="QUIC-TRANSPORT"/> only allows the use of one path simultaneously
and therefore only one path migration at the time should be validated,
this extension allows for multiple open paths, that could in theory be migrated
all at the same time, and it allows for multiple paths that could be initialized
simultaneously. Therefore, each path could be used to further amplify an attack.
Endpoints need to limit the number of maximum paths 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>
      </section>
      <section anchor="use-of-transport-layer-security-and-the-aead-encryption-nonce">
        <name>Use of Transport Layer Security and the AEAD Encryption 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.
Respectively, all new frames defined in this extension are only used in 1-RTT packets.
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 well and the respective security considerations in <xref target="QUIC-TLS"/> applied unaltered.
Note that with the use of this extension, multiple nonces can be in use simultaneously
for the same AEAD key.</t>
        <t>Further note, that the limits as discussed on Appendix B of <xref target="QUIC-TLS"/>
apply to the total number of packets sent on all paths.</t>
        <t>This specification changes the AEAD calculation by using the path identifier as part of
AEAD encryption nonce (see <xref target="multipath-aead"/>). To ensure a unique nonce, path identifiers
are limited to 32 bits and cannot be reused for another path in the same connection.</t>
      </section>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>This document is a collaboration of authors that combines work from
three proposals. Further contributors that were also involved
one of the original proposals are:</t>
      <ul spacing="normal">
        <li>
          <t>Qing An</t>
        </li>
        <li>
          <t>Zhenyu Li</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Marten Seemann, Kazuho Oku, Martin Thomson, Magnus Westerlund, Mike Bishop, Lucas Pardue, Michael Eriksson, and Yu Zhu 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="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>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V9S28k2ZXe/v6KMGshcpCZQ7Ie3VUzssVmsSVaVSSHZLXU
1silyMxIMlSZEamIyGJR1T3wxoC33tkbL2zAgAH/AgP+M4bHwPwLn+d9xY0k
S5oB7AZGw8qMvHEf5573+c54PDZd2S2LV9nbzbIr13l3m5186oqqLesqW9RN
9jfvTo9NPp02xUf/Ifp4Xs+qfAU/njf5ohuXRbcY/2FTzsYrfW588NTM8w4e
+fz66PrkRzODf9zUzf2rrO3mxpTr5lXWNZu2O9zff7l/aPKmyF9l101eteu6
6cxd3Xy4aerN+hW9MvsV/LusbrKf42fmQ3EPD8xfZadVVzRV0Y1f40yMabu8
mr/Pl3UFr74vWrMuX2W/6erZKGth2KZYtPDX/Qr/+K0x+aa7rZtXZmyybLFZ
LmlV8Df+9+pVtvP3/+4//P3//K//5z//2x35MG9nJYy4831erYoye1Nu8Jum
xp0s5mVXN/DPurl5lR0ty2k+zWGGswl8VqzycvkqW5V5/ftysrxf/SznB8Yl
PDCrVzSHeBI4h3/4b//9f/+Pf/8P/+U/yRzsFDbVAqbwNqfP6Z3vpkWTXRez
26pe1jdl0erb9fX39JvJKv/ZBh51ry2rFvZ5kr0usuO6ghl9wE/5jP9mU1Rd
WUXfRUuW91flx6Jpy+4+qxfZ27pqs913b8/Prva8OfyBx5vMixkP97PNCp6c
5LPJtPCmcz7Jvqmr/CM8vWkKN5/zZfmxhHVGX/IEjt/Um485zBbIAHaibYGu
Wu/lNf94MnU//tlmtuQfhe8/nmS/2JQd/NC9+/i2KduuzCv/K3rzRVN+BBLP
zmddvd70Nv6WH/+Z/P8JkKz3qreT7Jeb4nZZ3JXV3L3tbdn8Po++Se77SVPO
2rauvBeu8LeTD/a3PyvkGTp0Y6q6WeUdHBdSGt6w8fXl0dnVxfnl9ausWcxe
7u/v22/eXOlnB/rZ5cnx+Xcnl9/rF4dwp6uFP+jlt8cvnj5/gX+evzk9YooW
prPz9uL6+CIr26yqu2wNh9TV43rdlasc5r4uGhqpmhXwSLsBOobjNHm2rtu2
nC4LuMvLTQeciq8EM5qdw/2DQ/6ghcUWLc4HPr5o6lkBG1bdtEiV3W2RfQ2M
rCTOkeMo+TIDUlwUTYFvhG08WRXNDXIbOKY7YTzFJ5hWuQKaodlknXfNRtnR
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
RzXTjr0vAQA=

-->

</rfc>
