<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.36 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-05" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-05"/>
    <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>Alibaba Inc.</organization>
      <address>
        <email>yunfei.ma@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="Q." surname="De Coninck" fullname="Quentin De Coninck" role="editor">
      <organization>UCLouvain</organization>
      <address>
        <email>quentin.deconinck@uclouvain.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 82?>

<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/mirjak/draft-lmbdhk-quic-multipath"/>.</t>
    </note>
  </front>
  <middle>
    <?line 87?>

<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.</t>
      <t>This proposal is based on several basic design points:</t>
      <ul spacing="normal">
        <li>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.</li>
        <li>Use the same packet header formats as QUIC version 1 to minimize
the difference between multipath and non-multipath traffic being
exposed on wire.</li>
        <li>Congestion Control must be per-path (following <xref target="QUIC-TRANSPORT"/>)
which usually also requires per-path RTT measurements</li>
        <li>PMTU discovery should be performed per-path</li>
        <li>The use of this multipath extension requires the use of non-zero
Connection IDs in both directions.</li>
        <li>A path is determined by the 4-tuple of source and destination IP
address as well as source and destination port. Therefore, there can be
at most one active paths/connection ID per 4-tuple.</li>
        <li>If the 4-tuple changes without the use of a new connection ID (e.g.
due to a NAT rebinding), this is considered as a migration event.</li>
      </ul>
      <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. Multipath requires several changes to
that mechanism:</t>
      <ul spacing="normal">
        <li>Allow simultaneous transmission of non-probing frames on multiple
paths.</li>
        <li>Continue using an existing path even if non-probing frames have
been received on another path.</li>
        <li>Manage the removal of paths that have been abandoned.</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"/>.</t>
      <t>This extension uses multiple packet number spaces.
When multipath is negotiated,
each destination connection ID is linked to a separate packet number space.
Using multiple packet number spaces enables direct use of the
loss recovery and congestion control mechanisms defined in
<xref target="QUIC-RECOVERY"/>.</t>
      <t>This specification
requires the sender to use a non-zero connection ID when opening an
additional path.
Some deployments of QUIC use zero-length connection IDs.
However, when a node selects to use zero-length connection IDs, it is not
possible to use different connection IDs for distinguishing packets
sent to that node over different paths.</t>
      <t>Each endhost may use several IP addresses to serve the connection. In
particular, the multipath extension supports the following scenarios.</t>
      <ul spacing="normal">
        <li>The client uses multiple IP addresses and the server listens on only
one.</li>
        <li>The client uses only one IP address and the server listens on
several ones.</li>
        <li>The client uses multiple IP addresses and the server listens on
several ones.</li>
      </ul>
      <t>This proposal does 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.
Further, this proposal only specifies a simple basic packet
scheduling algorithm, in order to provide some basic implementation
guidance. However, more advanced algorithms as well as potential
extensions to enhance signaling of the current path state are expected
as future work.</t>
      <section anchor="definition">
        <name>Conventions and Definitions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
        <t>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="overview">
      <name>High-level overview</name>
      <t>The multipath extensions to QUIC proposed in this document enable the simultaneous utilization of
different paths to exchange non-probing QUIC frames 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 to exchange such frames.</t>
      <t>A multipath QUIC connection starts with a QUIC handshake as a regular QUIC connection.
See further <xref target="nego"/>.
The peers use the enable_multipath transport parameter during the handshake to
negotiate the utilization of the multipath capabilities.
The active_connection_id_limit transport parameter limits the maximum number of active paths
that can be used during a connection. A multipath QUIC connection is thus an established QUIC
connection where the enable_multipath transport parameter
has been successfully negotiated.</t>
      <t>To add a new path to an existing multipath QUIC connection, a client starts a path validation on
the chosen path, as further described in <xref target="setup"/>.
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.
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"/>). The Destination Connection ID is used
to associate a packet to a packet number space that is used on a valid path. Further, the
sequence number of Destination Connection ID is used as numerical identifier
in control frames. E.g. an endpoint sends a PATH_ABANDON frame to request its peer to
abandon the path on which the sender uses the Destination Connection ID
with the sequence number contained in the PATH_ABANDON frame.</t>
      <t>In addition to these core features, an application using Multipath QUIC will typically
need additional algorithms to handle the number of active paths and how they are used to
send packets. As these differ depending on the application's requirements, their
specification is out of scope of this document.</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"/>,
and tighter constraints for key updates, as explained in <xref target="multipath-key-update"/>.</t>
    </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>enable_multipath (current version uses 0x0f739bbc1b666d05): the
enable_multipath transport parameter is included if the endpoint supports
the multipath extension as defined in this document. This parameter has
a zero-length value.</li>
      </ul>
      <t>If any of the endpoints does not advertise the enable_multipath transport
parameter, then the endpoints MUST NOT use any frame or
mechanism defined in this document.</t>
      <t>When advertising the enable_multipath transport parameter, the endpoint
MUST use non-zero source and destination connection IDs.
If an enable_multipath 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
MP_PROTOCOL_VIOLATION and close the connection.</t>
      <t>The enable_multipath parameter MUST NOT be remembered
(<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 transport parameter "active_connection_id_limit"
<xref target="QUIC-TRANSPORT"/> limits the number of usable Connection IDs, and also
limits the number of concurrent paths. However, 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 nonce shorter than 12 bytes cannot be used together with
the multipath extension. If such cipher suite is selected and the use of the
multipath extension is negotiated, endpoints MUST abort the handshake with a
TRANSPORT_PARAMETER error.</t>
    </section>
    <section anchor="setup">
      <name>Path Setup and Removal</name>
      <t>After completing the handshake, endpoints have agreed to enable
multipath feature. They can also start using multiple paths, unless both
server preferred addresses and a disable_active_migration transport parameter
were provided by the server, in which case a client is forbidden to establish
new paths until "after a client has acted on a preferred_address transport
parameter" (<xref section="18.2." sectionFormat="of" target="QUIC-TRANSPORT"/>).</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 in separate documents.</t>
      <t>To open a new path, an endpoint SHALL use different Connection IDs on different paths.
Still, the receiver may observe the same Connection ID used on different
4-tuples due to, e.g., NAT rebinding. In such case, the receiver reacts
as specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>This proposal adds two multipath control frames for path management:</t>
      <ul spacing="normal">
        <li>PATH_ABANDON frame for the receiver side to abandon the path
(see <xref target="path-abandon-frame"/>)</li>
        <li>PATH_STATUS frame to express a preference in path usage
(see <xref target="path-status-frame"/></li>
      </ul>
      <t>All the new frames are sent in 1-RTT packets <xref target="QUIC-TRANSPORT"/>.</t>
      <section anchor="path-initiation">
        <name>Path Initiation</name>
        <t>Connection IDs cannot be reused, thus opening a new path requires the
use of a new Connection ID (see <xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>).
Following <xref target="QUIC-TRANSPORT"/>, each endpoint uses NEW_CONNECTION_ID frames
to issue usable connections IDs to reach it. As such to open
a new path by initiating path validation, both sides need at least
one unused Connection ID (see <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>).</t>
        <t>If the transport parameter "active_connection_id_limit" is negotiated as N,
the server provided N Connection IDs, and the client is already actively
using N paths, the limit is reached. If the client wants to start
a new path, it has to retire one of the established paths.</t>
        <t>When the multipath option is negotiated, clients that want to use an
additional path MUST first initiate the Address Validation procedure
with PATH_CHALLENGE and PATH_RESPONSE frames described in
<xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>. After receiving packets from the
client on a new path, if the server decides to use the new path,
the server MUST perform path validation (<xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>)
unless it has previously validated that address.</t>
        <t>If validation succeed, the client can send non-probing, 1-RTT packets
on the new paths.  In contrast with the specification in
<xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>, the server MUST NOT assume that
receiving non-probing packets on a new path indicates an attempt
to migrate to that path.  Instead, servers SHOULD consider new paths
over which non-probing packets have been received as available
for transmission.</t>
        <t>As specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, the server is expected send a new
address validation token to a client following the successful validation of a
new client address. In situations where multiple paths are activated, the
client may be recipient of several tokens, each tied to a different address.
When considering using a token for subsequent connections, the client ought to
carefully select the token to use, due to the inherent ambiguity associated
with determining the exact address to which a token is bound. To alleviate such a
token ambiguity issue, a server may issue a token that is capable of validating
any of the previously validated addresses.</t>
      </section>
      <section anchor="path-state-management">
        <name>Path State Management</name>
        <t>An endpoint uses PATH_STATUS frames to inform that the peer should
send packets in the preference expressed by these frames.
Notice that the endpoint might not follow the peer’s advertisements,
but the PATH_STATUS frame is still a clear signal of suggestion
for the preference of path usage by the peer.</t>
        <t>PATH_STATUS frame describes 2 kinds of path states:</t>
        <ul spacing="normal">
          <li>Mark a path as "available", i.e., allow the peer to use its own logic
to split traffic among available paths.</li>
          <li>Mark a path as "standby", i.e., suggest that no traffic should be sent
on that path if another path is available.</li>
        </ul>
        <t>Endpoints use Destination Connection ID Sequence Number field
in PATH_STATUS frame to identify which path state is going to be
changed. Notice that PATH_STATUS frame
can be sent via a different path.</t>
        <t>If all available path are marked as "standby", no guidance is provided about
which path should be used preferably.</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, following for example changes in local
connectivity or changes in local preferences. After an endpoint abandons
a path, the peer will not receive any more non-probing packets on
that path. Non-probing packets are defined in <xref section="9.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t>An endpoint that wants to close a path SHOULD use explicit request to
terminate the path by sending the PATH_ABANDON frame (see
<xref target="path-abandon-close"/>). Note that while abandoning a path will cause
Connection ID retirement, only retiring the associated Connection ID
does not necessarily advertise path abandon (see <xref target="retire-cid-close"/>).
However, implicit signals such as idle time or packet losses might be
the only way for an endhost to detect path closure (see
<xref target="idle-time-close"/>).</t>
        <t>Note that other explicit closing mechanisms of <xref target="QUIC-TRANSPORT"/> still
apply on the whole connection. In particular, the reception of either a
CONNECTION_CLOSE (<xref section="10.2" sectionFormat="of" target="QUIC-TRANSPORT"/>) or a Stateless
Reset (<xref section="10.3" sectionFormat="of" target="QUIC-TRANSPORT"/>) closes the connection.</t>
        <section anchor="path-abandon-close">
          <name>Use PATH_ABANDON Frame to Close a Path</name>
          <t>Both endpoints, namely the client and the server, can initiate path closure,
by sending a PATH_ABANDON frame (see <xref target="path-abandon-frame"/>) which
requests the peer to stop sending packets with the corresponding Destination Connection ID.</t>
          <t>When sending or receiving a PATH_ABANDON frame, endpoints SHOULD wait for at
least three times the current Probe Timeout (PTO) interval as defined in
<xref section="6.2" sectionFormat="of" target="QUIC-RECOVERY"/> after the last packet was sent on the path,
before sending the RETIRE_CONNECTION_ID frame for the corresponding Connection
ID. This is inline with the requirement of <xref section="10.2" sectionFormat="of" target="QUIC-TRANSPORT"/>
to ensure that paths close cleanly and that delayed or reordered packets
are properly discarded.
The effect of receiving a RETIRE_CONNECTION_ID frame is specified in the
next section.</t>
          <t>Usually, it is expected that the PATH_ABANDON frame is used by the client
to indicate to the server that path conditions have changed such that
the path is or will be not usable anymore, e.g. in case of a mobility
event. The PATH_ABANDON frame therefore recommends to the receiver
that no packets should be sent on that path anymore.
In addition, the RETIRE_CONNECTION_ID frame is used indicate to the receiving peer
that the sender will not send any packets associated to the
Connection ID used on that path anymore.
The receiver of a PATH_ABANDON frame MAY also send
a PATH_ABANDON frame to indicate its own unwillingness to receive
any packet on this path anymore.</t>
          <t>PATH_ABANDON frames can be sent on any path,
not only the path that is intended to be closed. Thus, a path can
be abandoned even if connectivity on that path is already broken.</t>
          <t>If a PATH_ABANDON frame is received for the only active 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>
        <section anchor="refusing-a-new-path">
          <name>Refusing a New Path</name>
          <t>An endpoint may deny the establishment of a new path initiated by its
peer during the address validation procedure. According to
<xref target="QUIC-TRANSPORT"/>, the standard way to deny the establishment of a path
is to not send a PATH_RESPONSE in response to the peer's PATH_CHALLENGE.</t>
        </section>
        <section anchor="retire-cid-close">
          <name>Effect of RETIRE_CONNECTION_ID Frame</name>
          <t>Receiving a RETIRE_CONNECTION_ID frame causes an endpoint to discard
the resources associated with that Connection ID. Specifically, the endpoint
should not use the sequence number of the retired Connection ID anymore in
any control frames, as the peer will not be able to associate those frames to
a path and will therefore ignore them. This means an endpoint is also not required
to acknowledge any late packets carrying that Connection ID and, hence,
it can remove the list of received packets used to send acknowledgements after
receiving the RETIRE_CONNECTION_ID frame.</t>
          <t>The peer, that sent RETIRE_CONNECTION_ID frame, can keep sending data using
the same IP addresses and UDP ports previously associated with
that Connection ID, but MUST use a different connection ID when doing so.
If no new connection ID is available anymore, the endpoint cannot send on
this path. This can happen if, e.g., the Connection ID issuer requests retirement of a
Connection ID using the Retire Prior To field in the NEW_CONNECTION_ID frame but does
provide sufficient new CIDs.</t>
          <t>Note that even if a peer cannot send on a path anymore because it does not have
a valid Connection ID to use, it can still acknowledge packets received on the path,
by sending ACK_MP frames on another path, if available. But also note that,
as there is no valid CID associated with the path, the other end cannot send
multipath control frames that contain the sequence number of a Connection ID, such
as PATH_ABANDON or PATH_STATUS.</t>
          <t>If the peer cannot send on a path and no data is received on the path, the idle time-out will close
the path. If, before the idle timer expires, a new Connection ID gets issued
by its peer, the endpoint can re-activate the path by
sending a packet with a new Connection ID on that path.</t>
          <t>If the sender retires a Connection ID that is still used by
in-flight packets, it may receive ACK_MP frames referencing the retired
Connection ID. If the sender stops tracking sent packets with retired
Connection ID, these would be spuriously marked as lost. To avoid such
performance issue without keeping retired Connection ID state, an
endpoint should first stop sending packets with the to-be-retired
Connection ID, then wait for all in-flight packets to be either
acknowledged or marked as lost, and finally retire the Connection ID.</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 in multipath QUIC 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>When more than one path is available, hosts shall monitor the arrival of
non-probing packets and the acknowledgements for the packets sent over each
path. Hosts SHOULD stop sending traffic on a path if for at least the period of the
idle timeout as specified in <xref section="10.1." sectionFormat="of" target="QUIC-TRANSPORT"/>
(a) no non-probing packet was received or (b) no
non-probing packet sent over this path was acknowledged, but MAY ignore that
rule if it would disqualify all available paths. To avoid idle timeout of a path, 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.  Sending
periodic PING frames also helps prevent middlebox timeout, as discussed in
<xref section="10.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
          <t>Server MAY release the resource associated with paths for
which no non-probing packet was received for a sufficiently long
path-idle delay, but SHOULD only release resource for the last
available path if no traffic is received for the duration of the idle
timeout, as specified in <xref section="10.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.
This means if all paths remain idle for the idle timeout, the connection
is implicitly closed.</t>
          <t>Server implementations need to select the sub-path idle timeout as a trade-
off between keeping resources, such as connection IDs, in use
for an excessive time or having to promptly reestablish a path
after a spurious estimate of path abandonment by the client.</t>
        </section>
      </section>
      <section anchor="path-states">
        <name>Path States</name>
        <t><xref target="fig-path-states"/> shows the states that an endpoint's path can have.</t>
        <figure anchor="fig-path-states">
          <name>States of a path</name>
          <artwork><![CDATA[
       o
       | PATH_CHALLENGE sent/received on new path
       v
 +------------+    Path validation abandoned
 | Validating |----------------------------------+
 +------------+                                  |
       |                                         |
       | PATH_RESPONSE received                  |
       |                                         |
       v                                         |
 +------------+     Path blackhole detected      |
 |   Active   |----------------------------------+
 +------------+                                  |
       |                                         |
       | PATH_ABANDON sent/received              |
       v                                         |
 +------------+                                  |
 |   Closing  |                                  |
 +------------+                                  |
       |                                         |
       | RETIRE_CONNECTION_ID sent && received   |
       | or                                      |
       | Path's draining timeout                 |
       | (at least 3 PTO)                        |
       v                                         |
 +------------+                                  |
 |   Closed   |<---------------------------------+
 +------------+
]]></artwork>
        </figure>
        <t>In non-final states, hosts have to track the following information.</t>
        <ul spacing="normal">
          <li>Associated 4-tuple: The tuple (source IP, source port, destination IP,
destination port) used by the endhost to send packets over the path.</li>
          <li>Associated Destination Connection ID: The Connection ID used to send
packets over the path.</li>
        </ul>
        <t>In Active state, hosts MUST also track the following information:</t>
        <ul spacing="normal">
          <li>Associated Source Connection ID: The Connection ID used to receive
packets over the path. The endpoint relies on its sequence number to
send path control information and specifically acknowledge packets belonging to that Connection ID-specific
packet number space.</li>
        </ul>
        <t>A path in the "Validating" state performs path validation as described
in <xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>. An endhost should not send
non-probing frames on a path in "Validating" state, as it has no
guarantee that packets will actually reach the peer.</t>
        <t>The endhost can use all the paths in the "Active" state, provided
that the congestion control and flow control currently allow sending
of new data on a path. Note that if a path became idle due to a timeout,
endpoints SHOULD send PATH_ABANDON frame before closing the path.</t>
        <t>In the "Closing" state, the endhost SHOULD NOT send packets on this
path anymore, as there is no guarantee that the peer can still map
the packets to the connection. The endhost SHOULD wait for
the acknowledgment of the PATH_ABANDON frame before moving the path
to the "Closed" state to ensure a graceful termination of the path.</t>
        <t>When a path reaches the "Closed" state, the endhost releases all the
path's associated resources, including the associated Connection IDs.
Endpoints SHOULD send RETIRE_CONNECTION_ID frames for releasing the
associated Connection IDs following <xref target="QUIC-TRANSPORT"/>. Considering
endpoints are not expected to send packets on the current path in the "Closed"
state, endpoints can send RETIRE_CONNECTION_ID frames on other
available paths. Consequently, the endhost is not able to send nor
receive packets on this path anymore.</t>
      </section>
    </section>
    <section anchor="multipath-operation-with-multiple-packet-number-spaces">
      <name>Multipath Operation with Multiple Packet Number Spaces</name>
      <t>The QUIC multipath extension uses different packet number spaces for each path.
This also means that the same packet number can occur on each path and the
packet number is not a unique identifier anymore. This requires changes to
the ACK frame as well as packet protection as described in the following subsections.</t>
      <t>When multipath is negotiated,
each Destination Connection ID is linked to a separate packet number space.
Each CID-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 this new CID's packet number space is initially set to "None".</t>
      <section anchor="sending-acknowledgements">
        <name>Sending Acknowledgements</name>
        <t>The ACK_MP frame, as specified in <xref target="ack-mp-frame"/>, is used to
acknowledge 1-RTT packets.
Compared to the QUIC version 1 ACK frame, the ACK_MP frame additionally
contains the receiver's Destination Connection ID Sequence Number field
to distinguish the Connection ID-specific packet number space.</t>
        <t>Acknowledgements of Initial and Handshake packets MUST be carried using
ACK frames, as specified in <xref target="QUIC-TRANSPORT"/>. The ACK frames, as defined
in <xref target="QUIC-TRANSPORT"/>, do not carry the Destination Connection ID
Sequence Number field to identify the packet number space.
If the multipath extension has been successfully
negotiated, ACK frames in 1-RTT packets acknowledge packets sent with
the Connection ID having sequence number 0.</t>
        <t>As soon as the negotiation of multipath support is completed,
endpoints SHOULD use ACK_MP frames instead of ACK frames to acknowledge application
data packets, including 0-RTT packets, using the initial Connection ID with
sequence number 0 after the handshake concluded.</t>
        <t>ACK_MP frames (defined in <xref target="ack-mp-frame"/>) can be returned on any path.</t>
      </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
QUIC Multipath. 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>
        <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.</t>
        <t>In order to guarantee the uniqueness of the nonce, the nonce N is
calculated by combining the packet protection IV with the packet number
and with the least significant 32 bits of the Destination Connection ID
sequence number.</t>
        <t><xref section="19" sectionFormat="of" target="QUIC-TRANSPORT"/> encodes the Connection ID Sequence
Number as a variable-length integer,
allowing values up to 2^62-1; in this specification, a range of less than 2^32-1
values MUST be used before updating the packet protection key.</t>
        <t>To calculate the nonce, a 96 bit path-and-packet-number is composed of the least
significant 32 bits of the Connection ID Sequence Number in network byte order,
two zero bits, and the 62 bits of the reconstructed QUIC packet number in
network byte order. 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.</t>
        <t>For example, assuming the IV value is <tt>6b26114b9cba2b63a9e8dd4f</tt>,
the Connection ID Sequence Number is <tt>3</tt>, and the packet number is <tt>aead</tt>,
the nonce will be set to <tt>6b2611489cba2b63a9e873e2</tt>.</t>
        <t>Due to the way the nonce is constructed, endpoints MUST NOT use more than 2^32
Connection IDs without a key update.</t>
      </section>
      <section anchor="multipath-key-update">
        <name>Key Update</name>
        <t>The Key Phase bit update process for QUIC version 1 is specified in
<xref section="6" sectionFormat="of" target="QUIC-TLS"/>.
The general principles of key update are not changed in this
specification. Following QUIC version 1, 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 acknowledgement that confirms receipt of the previous key
update. This interval is different from that of QUIC version 1 which used three times the PTO of the only one active path.</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>
        <figure anchor="fig-example-new-path">
          <name>Example of new path establishment</name>
          <artwork><![CDATA[
   Client                                                  Server

   (Exchanges start on default path)
   1-RTT[]: NEW_CONNECTION_ID[C1, Seq=1] -->
                       <-- 1-RTT[]: NEW_CONNECTION_ID[S1, Seq=1]
                       <-- 1-RTT[]: NEW_CONNECTION_ID[S2, Seq=2]
   ...
   (starts new path)
   1-RTT[0]: DCID=S2, PATH_CHALLENGE[X] -->
                   Checks AEAD using nonce(CID sequence 2, PN 0)
     <-- 1-RTT[0]: DCID=C1, PATH_RESPONSE[X], PATH_CHALLENGE[Y],
                                              ACK_MP[PID=2,PN=0]
   Checks AEAD using nonce(CID sequence 1, PN 0)
   1-RTT[1]: DCID=S2, PATH_RESPONSE[Y],
             ACK_MP[PID=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
sequence number 1), and server provides two Connection IDs
(S1 with sequence number 1, and S2 with sequence number 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 available for each side.
In this example, the client chooses the Connection ID S2
as the Destination Connection ID in the new path.</t>
        <t>If the client has used all the allocated CID, it is supposed to retire
those that are not used anymore, and the server is supposed to provide
replacements, as specified in <xref target="QUIC-TRANSPORT"/>.
Usually, it is desired to provide one more Connection ID as currently
in use, to allow for new paths or migration.</t>
      </section>
      <section anchor="path-closure">
        <name>Path Closure</name>
        <t>In this example, the client detects the network environment change
(client's 4G/Wi-Fi is turned off, Wi-Fi signal is fading to a threshold,
or the quality of RTT or loss rate is becoming worse) and wants to close
the initial path.</t>
        <t><xref target="fig-example-path-close1"/> illustrates an example of path closing. For the first path, the
server's 1-RTT packets use DCID C1, which has a sequence number of 1; the
client's 1-RTT packets use DCID S2, which has a sequence number of 2. For the
second path, the server's 1-RTT packets use DCID C2, which has a sequence
number of 2; the client's 1-RTT packets use DCID S3, which has a sequence number
of 3. Note that the paths use different packet number spaces. In this case, the
client is going to close the first path. It identifies the path by the sequence
number of the DCID its peer uses for sending packets over that path,
hence using the DCID sequence number 1 (which relates to C1). Optionally, the
server confirms the path closure
by sending an PATH_ABANDON frame by indicating the sequence number of the DCID
the client uses to send over that path, which corresponds to the sequence number
2 (of S2). Both the client and
the server can close the path after receiving the RETIRE_CONNECTION_ID frame
for that path.</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)
1-RTT[X]: DCID=S2 PATH_ABANDON[dcid_seq_num=1]->
                           (server tells client to abandon a path)
               <-1-RTT[Y]: DCID=C1 PATH_ABANDON[dcid_seq_num=2],
                                               ACK_MP[PID=2, PN=X]
(client retires the corresponding CID)
1-RTT[U]: DCID=S3 RETIRE_CONNECTION_ID[2], ACK_MP[PID=1, PN=Y] ->
                            (server retires the corresponding CID)
 <- 1-RTT[V]: DCID=C2 RETIRE_CONNECTION_ID[1], ACK_MP[PID=3, PN=U]
]]></artwork>
        </figure>
      </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 multipath is negotiated, each
Destination Connection ID is linked to a separate packet number space.
This a big difference between implementations of QUIC as specified in
<xref target="QUIC-TRANSPORT"/>, which only have to manage three number spaces for Initial,
Handshake and Application packets.</t>
        <t>Implementation of multipath capable QUIC will need to carefully
model the relations between paths and number spaces, as shown
in <xref target="fig-number-spaces"/>.</t>
        <figure anchor="fig-number-spaces">
          <name>Send and Receive number spaces</name>
          <artwork><![CDATA[
   +-------------------------+
   | CID received from peer: |
   | Previous Sender Number  |
   | Space                   |-- - - - - - +
   +-------------------------+
   +-------------------------+             |
   | CID received from peer: |
   | Sender Number Space     |             |
   +-------------------------+             v
                      ^             +----------------+
                      |             | Path (4 tuple) |
                      +-------------| - RTT          |
                +------------------>| - Congestion   |
                |                   |   state        |
                v                   +----------------+
   +-------------------------+             ^
   | CID provided to peer:   |             |
   | Receiver Number Space   |
   +-------------------------+             |
   +-------------------------+
   | CID previously used by  |-- - - - - - +
   | Peer: old Receiver      |
   | Number Space            |
   +-------------------------+
]]></artwork>
        </figure>
        <t>The path is defined by the 4-tuple through which packets are
received and sent. Packets sent on the path will include the
Destination Connection ID currently used for that path, selected
from the list of CID provided by the peer. Packets received
on the path carry a Destination CID selected by the peer from
the list provided to that peer.</t>
        <t>The relation between CIDs and paths is not fixed. A node may
decide to rotate the Destination CID it uses, a NAT may decide
to change the 4-tuple over which packets from that path will be
received.
Implementation will have to manage these evolving relations.</t>
        <t>Data associated with the transmission and reception on a given
path can be associated to either the "path state", or to the
state of either the sender or receiver number spaces. For example:</t>
        <ul spacing="normal">
          <li>RTT measurements and congestion state are logically associated
with the 4-tuple. They will remain unchanged if data starts
being received or sent through the same 4-tuple using new CIDs.</li>
          <li>Implementations of loss recovery typically maintain lists of
packets sent and not yet acknowledged. Such information, along
with the value of the next PN to use for sending, is
logically associated with the "Sender Number Space", and
with the peer-provided CID used for sending on the path.</li>
          <li>Sending of acknowledgement requires keeping track of the PN of
received packets and of acknowledgements previously sent. Such
information is logically associated with the "Receiver Number Space",
and with the CID used by the peer for sending on the path.</li>
        </ul>
        <t>When the link between paths and CID changes, the information tied
to the now unused CID remains useful for some time. For example,
the list of packet numbers to acknowledge maintained in the old
receiver number space could still be used to send ACK_MP frames
for that number space. Similarly, the list of packets sent but
not yet acknowledged with an old sender number space can be used
when processing incoming ACK_MP frames for that number space. Such
data should not be discarded immediately after a CID change, but
only later, for example when the CID is retired.</t>
      </section>
      <section anchor="congestion-control">
        <name>Congestion Control</name>
        <t>When the QUIC multipath extension is used, senders manage per-path
congestion status as required in <xref section="9.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.
However, in <xref target="QUIC-TRANSPORT"/> only one active path is assumed and as such
the requirement is to reset the congestion control status on path migration.
With the multipath extension, multiple paths can be used simultaneously,
therefore separate congestion control state is maintained for each path.
This means a sender is not allowed to send more data on a given path
than congestion control for that path indicates.</t>
        <t>When a Multipath QUIC connection uses two or more paths, there is no
guarantee that these paths are fully disjoint. When two (or more paths)
share the same bottleneck, using a standard congestion control scheme
could result in an unfair distribution of the bandwidth with
the multipath connection getting more bandwidth than competing single
paths connections. Multipath TCP uses the 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>Acknowledgement 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 acknowledgements.  When different paths have different
characteristics, this can cause acknowledgement 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 acknowledgement 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 ACK_MP 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 acknowledgements 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 ACK_MP frames. In the example
above, we may assume that the ACK_MP 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 ACK_MP came over
the satellite channel, but it is still the right value for computing
for example the PTO timeout: if an ACK_MP is not received after more
than 350ms, either the data packet or its ACK_MP were probably lost.</t>
        <t>The simplest implementation is to compute smoothedRTT and RTTvar per
<xref section="5.3" sectionFormat="of" target="QUIC-RECOVERY"/> regardless of the path through which MP_ACKs are
received. This algorithm will provide good results,
except if the set of paths changes and the ACK_MP 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 ACK MP 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 active 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 ACK_MP
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 ACK_MP frames. The estimates will converge
faster if the scheduling strategy is stable, but besides that
implementations can choose between multiple strategies such as sending
ACK_MP frames on the path they acknowledge packets, or sending
ACK_MP frames on the shortest path, which results in shorter control loops
and thus better performance.</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>
      </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. 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 wish to ensure that one path remains active, while others could prefer to have
two or more active 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-and-nat-rebindings">
        <name>Connection ID Changes and NAT Rebindings</name>
        <t><xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> indicates that an endpoint
can change the Connection ID it uses for 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>
        <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
performs 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>If an endpoint uses a new Connection ID after an idle period
and a NAT rebinding leads to a 4-tuple changes on the same packet,
the receiving endpoint may not be able to associate the packet to
an existing path and will therefore consider this as a new path.
This leads to an inconsistent view of open paths at both peers,
however, as the "old" path will not work anymore, it will be silently
closed after the idle timeout expires.</t>
      </section>
    </section>
    <section anchor="frames">
      <name>New Frames</name>
      <t>All the new frames MUST only be sent in 1-RTT packet.</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 FRAME_ENCODING_ERROR.</t>
      <t>All multipath-specific frames relate to a Destination Connection
ID sequence number. If an endpoint receives a Destination Connection ID
sequence number greater than any previously sent to the peer, it MUST
treat this as a connection error of type MP_PROTOCOL_VIOLATION. If an
endpoint receives a multipath-specific frame
with a Destination Connection ID sequence number that it cannot process
anymore (e.g., because the Connection ID might have been retired), it
MUST silently ignore the frame.</t>
      <section anchor="ack-mp-frame">
        <name>ACK_MP Frame</name>
        <t>The ACK_MP frame (types TBD-00 and TBD-01; experiments use 0xbaba00..0xbaba01)
is an extension of the ACK frame defined by <xref target="QUIC-TRANSPORT"/>. It is
used to acknowledge packets that were sent on different paths using
multiple packet number spaces. If the frame type is TBD-01, ACK_MP 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>ACK_MP frame is formatted as shown in <xref target="fig-ack-mp-format"/>.</t>
        <figure anchor="fig-ack-mp-format">
          <name>ACK_MP Frame Format</name>
          <artwork><![CDATA[
  ACK_MP Frame {
    Type (i) = TBD-00..TBD-01
         (experiments use  0x15228c00-0x15228c01),
    Destination Connection ID Sequence Number (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>Destination Connection ID Sequence Number:</dt>
          <dd>
            <t>The sequence number of the Connection ID identifying the packet number
space of the 0-RTT and 1-RTT packets which are acknowledged by the ACK_MP
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),
    Destination Connection ID Sequence Number (i),
    Error Code (i),
    Reason Phrase Length (i),
    Reason Phrase (..),
  }
]]></artwork>
        </figure>
        <t>PATH_ABANDON frames contain the following fields:</t>
        <dl>
          <dt>Destination Connection ID Sequence Number:</dt>
          <dd>
            <t>The sequence number of the Destination Connection ID used by the
receiver of the frame to send packets over the path to abandon.</t>
          </dd>
          <dt>Error Code:</dt>
          <dd>
            <t>A variable-length integer that indicates the reason for abandoning
this path.</t>
          </dd>
          <dt>Reason Phrase Length:</dt>
          <dd>
            <t>A variable-length integer specifying the length of the reason phrase
in bytes. Because an PATH_ABANDON frame cannot be split between packets,
any limits on packet size will also limit the space available for
a reason phrase.</t>
          </dd>
          <dt>Reason Phrase:</dt>
          <dd>
            <t>Additional diagnostic information for the closure. This can be
zero length if the sender chooses not to give details beyond
the Error Code value. This SHOULD be a UTF-8 encoded string <xref target="RFC3629"/>,
though the frame does not carry information, such as language tags,
that would aid comprehension by any entity other than the one
that created the text.</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>
      </section>
      <section anchor="path-status-frame">
        <name>PATH_STATUS frame</name>
        <t>PATH_STATUS Frame are used by endpoints to inform the peer of the current
status of one path, and the peer should send packets according to
the preference expressed in these frames.
PATH_STATUS frames are formatted as shown in <xref target="fig-path-status-format"/>.</t>
        <figure anchor="fig-path-status-format">
          <name>PATH_STATUS Frame Format</name>
          <artwork><![CDATA[
  PATH_STATUS Frame {
    Type (i) = TBD-03 (experiments use 0x15228c06),
    Destination Connection ID Sequence Number (i),
    Path Status sequence number (i),
    Path Status (i),
  }
]]></artwork>
        </figure>
        <t>PATH_STATUS Frames contain the following fields:</t>
        <dl>
          <dt>Destination Connection ID Sequence Number:</dt>
          <dd>
            <t>The sequence number of the Destination Connection ID used by the
receiver of this frame to send packets over the path the status update
corresponds to.</t>
          </dd>
          <dt>Path Status sequence number:</dt>
          <dd>
            <t>A variable-length integer specifying
the sequence number assigned for this PATH_STATUS frame. The sequence
number MUST be monotonically increasing generated by the sender of
the PATH_STATUS frame in the same connection. The receiver of
the PATH_STATUS frame needs to use and compare the sequence numbers
separately for each Destination Connection ID Sequence
Number.</t>
          </dd>
        </dl>
        <t>Available values of Path Status field are:</t>
        <ul spacing="normal">
          <li>1: Standby</li>
          <li>2: Available</li>
        </ul>
        <t>Endpoints use PATH_STATUS frame to inform the peer whether it prefer to
use this path or not. If an endpoint receives a PATH_STATUS frame
containing 1-Standby status, it SHOULD stop sending non-probing packets
on the corresponding path, until it receives a new PATH_STATUS frame
containing 2-Available status with a higher sequence number referring to
the same path.</t>
        <t>Frames may be received out of order. A peer MUST ignore an incoming
PATH_STATUS frame if it previously received another PATH_STATUS frame
for the same Destination Connection ID Sequence Number with a
Path Status sequence number equal to or higher than the Path Status
sequence number of the incoming frame.</t>
        <t>PATH_STATUS frames are ack-eliciting. If a packet containing a
PATH_STATUS 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>
      </section>
    </section>
    <section anchor="error-codes">
      <name>Error Codes</name>
      <t>Multipath QUIC transport error codes are 62-bit unsigned integers
following <xref target="QUIC-TRANSPORT"/>.</t>
      <t>This section lists the defined multipath QUIC transport error codes
that can be used in a CONNECTION_CLOSE frame with a type of 0x1c.
These errors apply to the entire connection.</t>
      <t>MP_PROTOCOL_VIOLATION (experiments use 0x1001d76d3ded42f3): An endpoint detected
an error with protocol compliance that was not covered by
more specific error codes.</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 0x0f739bbc1b666d05)</td>
            <td align="left">enable_multipath</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">ACK_MP</td>
            <td align="left">
              <xref target="ack-mp-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 0x15228c06)</td>
            <td align="left">PATH_STATUS</td>
            <td align="left">
              <xref target="path-status-frame"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following transport error code defined in <xref target="tab-error-code"/> should
be added to the "QUIC Transport Error Codes" registry under
the "QUIC Protocol" heading.</t>
      <table anchor="tab-error-code">
        <name>Error Code 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 (experiments use 0x1001d76d3ded42f3)</td>
            <td align="left">MP_PROTOCOL_VIOLATION</td>
            <td align="left">Multipath protocol violation</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </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>Qing An</li>
        <li>Zhenyu Li</li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Marten Seemann and Kazuho Oku for their thorough reviews and valuable contributions!</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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="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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
      </references>
      <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="QUIC-Timestamp">
          <front>
            <title>Quic Timestamps For Measuring One-Way Delays</title>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date day="28" month="August" year="2022"/>
            <abstract>
              <t>   The TIMESTAMP frame can be added to Quic packets when one way delay
   measurements are useful.  The timestamp is set to the number of
   microseconds from the beginning of the node's epoch to the time at
   which the packet is sent.  The draft defines the "enable_timestamp"
   transport parameter for negotiating the use of this extension frame,
   and the TIMESTAMP frame.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-huitema-quic-ts-08"/>
        </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>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA819224cSZbYe3xFLgVskzNVtSTVrenm7BjDpqgZeiSSS1Ld
227PaLIqs8hcZWXWZmSRqpG08IsBv/rNfvGDDRgw4C8w4J8xvAb2L3yuccnM
KlG9i8VqgOliVWbEiRMnzv2cGI/Hpi3aMj9KXq3Ktlim7V1y+q7NK1vUVTKv
m+SvXp+dmHQ6bfL78CH6OqtnVbqAl7MmnbfjIm/n479dFbPxQp8b739lsrSF
R94/P745/Whm8Mdt3ayPEttmxhTL5ihpm5VtD/f3v9k/NGmTp0fJTZNWdlk3
rXmom7e3Tb1aHtGUyffwd1HdJr/B78zbfA0PZEfJWdXmTZW34+cIiTG2Tavs
TVrWFUy9zq1ZFkfJj209GyUWhm3yuYVP6wV++L0x6aq9q5sjMzZJMl+VJa0K
PuO/o6Nk5+//w3/6+//93//ff/33O/JlamcFjLjzQ1ot8iJ5Wazwl6ZGTOZZ
0dYN/Fk3t0fJcVlM02kKEM4m8F2+SIvyKFkUaf03xaRcL36d8gPjAh6Y1QuC
oQsEwvAP/+N//t//9R//4b/9F4HBgbCq5gDCq5S+H5pTJ13Tk5NFOjxnUVlA
8iR5nicndQU/vcVveYP/apVXbVF1fuuslyd/ffKyXt2nRRXM/Lf8+iTLZ/z2
r1ezkp+aTPNg+otJ8m1dpffw+KrJ/fwXZXFf5E33x3jCBPY8ucmtBSKywew1
vzyZ+pc3zX8ySX67Klp40c99ctcUti3SKvyJZr5sinug5+Ri1tbLle3i+44f
/7X8dwL0GUz1apL8bpXflflDUWV+tldF8zdp55dBPJ82xczaOkTzAt+dvHXv
/jqXZ2iTjanqZpG2xT2R1dWLk8ODg2/wI56s8c3V8fn15cXVzVHSzGff7O/v
u19eXut3B/rd1enJxXenVz/oD4dwlqt5Z/xnT7965scvFjkcywWc5LPx84kg
hflFi9t18fLsmOldWNLOq8ubk8uksElVt8kSdrWtx/WyLRYpLHaZNzRfNcvh
EbvKLe6/SZNlbW0xLXM46eWqBT7GB4bZ0M7h/sEhf2EBO7lFqOHry6ae5YDh
6tYm9Txp7/Lka2BzBfGVFEdJywSId543Oc4IeD9d5M0t8iLY1wdhS/k7AAsW
WrUETdLms7uqLutbmGmUHJ+84qmV3+DnsbAUIoorIIo7OJ1l0f/tfJL8JrVt
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
pO6oP82MYq/+DmLr+osT6tw9Jhl6i8NilEvfnxApi8g+vgB48DINJDi5TsPF
o4K8kpPAwMKkiat8WtB8Nm5osaEjuY9L9HQUw1LSZV10MiJbn/ONVCLnxLuW
YOtNGlyTPLhtpJ3wMadiW52v1zDASGcYqubGO574OYmP6nVejvu6wma95I4f
15Tq6JIR2jsX/9jQirGTNiG3yWEoB+k46ExnsaKjf6NIHcgBRxGS5DDSzgSW
7tkJWuHjhja6oXTIFsjPvTv2C2ecNaaeUopvJCpdjsa1XN/AD3FYR3MsBDl4
QMzGlp27Mf8Z7JKxR62Tum8qLyHXYZ7ZbmGbzf3ll1/YgQ0opRkCmPFVNm6b
Ysl1rqIrYplycGHbYyKkJnxmkJGqNda5/sy+hcmDtdVzI1ciKQmq2at/+4ZR
+H+4WZgEFrSyUYvQbIkXc3AgAAVHdaLaX5xFyi5z05JuJgSI4dTM7ihGIZpu
zy1buJaqwAPxEGvA1GsD7vJD1xdKrnwMYOLr4gbu4En1AnLiaXzlAmmwaYfA
EWaROTFtem3Z9xkcSXBaix8i02rLDW8+klEb8sxw5zTvye3c9DbTcBDJyDQs
NZQAsge7oqwGeN6S2nFfwINAXAH2UjGdkGbsyNwpFYjCslOX2U7gTcV1kJ/Z
Fd4VgbkNrIfK3fj+gqBF1gbhYZ7QxYovWC1+/4SFEQYAxXGKCxOlmbpshK6L
bjezPgEIJ7JhsMy3npO7KmNVXrdiveQr7WhWX+USyHdNNcmbpmY3OryTvLg6
fnX65vT85OL52flv3pxeXV1cTXg9m0CwUlTEdDacsGn6NUnUKmbDah/daSi5
bXLfm4J6jsVJU+HNj3zPKCDEtPhWQH8BWmJ0vLp8c3l1cXNxcvHyzXdnFy+P
sVZDIDefs09aI7s5n7XXkZq8Yu42PGH6Ru+E2+V773wwoqtPsC/Tx7klBWcP
sWCILJTcg7sXg+tD1ZmgF19GPd/6AbZkFxFmk5tvn4/39+nc08eDX1JT2abg
kBbCuv9umk7T/f3JRD4d7JEDqQr4tA/ryPBB2vFQ50OsuLNGs7WG2gL2w33d
8Df7abY3VdD+RnJJMdJIIYs+GHUSxMirGF1Lx3H/yPnJdOET905Pzum+rX4a
cpQoNtTZk1tfcS4F5ajETfyoJpZy8Fq+zKsTT9YNpkeCKpGYDiip/wbXvVvs
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

-->

</rfc>
