<?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.25 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-04" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-04"/>
    <author initials="Y." surname="Liu" fullname="Yanmei Liu" role="editor">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="Y." surname="Ma" fullname="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>
      <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>
    <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 avoid the
risk of packets being dropped by middleboxes (which may only support
QUIC version 1)</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>name: enable_multipath (current version uses 0x0f739bbc1b666d04)</li>
        <li>value: 0 (default) for disabled.</li>
      </ul>
      <t>The valid options for the value field are listed in
<xref target="param_value_definition"/>:</t>
      <table anchor="param_value_definition">
        <name>Available value for enable_multipath</name>
        <thead>
          <tr>
            <th align="left">Option</th>
            <th align="left">Definition</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x0</td>
            <td align="left">don't support multipath</td>
          </tr>
          <tr>
            <td align="left">0x1</td>
            <td align="left">supports multipath as defined in this document</td>
          </tr>
        </tbody>
      </table>
      <t>If for any one of the endpoints, the parameter is absent or set to 0,
the endpoints MUST fallback to
<xref target="QUIC-TRANSPORT"/> with single active path and MUST NOT use any frame or
mechanism defined in this document.</t>
      <t>If the parameter is set to 1, both endpoints MUST use non-zero connection
IDs. If an enable_multipath parameter set to 1 is received and the carrying packet
does not contain a non-zero length connection ID, the receiver MUST treat this as a connection error of type
TRANSPORT_PARAMETER_ERROR (specified in <xref section="20.1" sectionFormat="of" target="QUIC-TRANSPORT"/>)
and close the connection.</t>
      <t>If endpoint receives an unexpected value for the transport parameter
"enable_multipath", it MUST treat this as a connection error of type
TRANSPORT_PARAMETER_ERROR (specified in <xref section="20.1" sectionFormat="of" target="QUIC-TRANSPORT"/>)
and close the connection.</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>Inline with the definition in <xref target="QUIC-TRANSPORT"/> disable_active_migration
also disables multipath support, except "after a client has acted on a
preferred_address transport parameter" (<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. For the QUIC multipath extension
this limit even applies when no connection ID is exposed in the QUIC
header.</t>
    </section>
    <section anchor="setup">
      <name>Path Setup and Removal</name>
      <t>After completing the handshake, endpoints have agreed to enable
multipath feature and can start using multiple paths. 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
SHOULD NOT assume that the initial server address and the addresses
contained in this parameter can be simultaneously used for multipath.
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>Following <xref target="QUIC-TRANSPORT"/>, each endpoint uses NEW_CONNECTION_ID frames
to issue usable connections IDs to reach it. Before an endpoint adds
a new path by initiating path validation, it MUST check whether at least
one unused Connection ID is available for each side.</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>
      </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. An Endpoint MAY ignore the PATH_STATUS frame
if it would make all the paths unavailable in a single connection.</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>The sender and receiver of a PATH_ABANDON frame should not release its resources
immediately, but 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 sent packet before sending the RETIRE_CONNECTION_ID frame
for the corresponding CID.
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>Retransmittable frames, that have previously been sent on the abandoned
path and are considered lost, will be retransmitted on a different
path.</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  |                                  |
 +------------+                                  |
       |                                         |
       | 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 frame (defined in <xref target="ack-mp-frame"/>) SHOULD be sent on the path
it received packet with the Connection ID of the packet number space it acknowledges.
However, an ACK_MP frame can be returned via a
different path, based on different strategies of sending ACK_MP frames.</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 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 32 bit Connection ID Sequence Number in 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>
      </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.
Because of network delays, packets protected with the older key might
arrive later than the packets protected with the new key. Therefore,
the endpoint needs to retain old packet keys to allow these delayed
packets to be processed and it must distinguish between the new key
and the old key. In QUIC version 1, this is done using packet numbers
so that the rule is made simple: Use the older key if packet number is
lower than any packet number frame the current key phase.</t>
        <t>When using multiple packet number spaces on different paths,
some care is needed when initiating the Key Update process,
as different paths use different packet number spaces but share
a single key. When a key update is initiated on one path, packets sent to
another path needs to know when the transition is complete. Otherwise,
it is possible that the other paths send packets with the old keys,
but skip sending any packets in the current key phase and directly
jump to sending packet in the next key phase. When that happens,
as the endpoint can only retain two sets of packet protection keys
with the 1-bit Key Phase bit, the other paths cannot distinguish
which key should be used to decode received packets, which results in
a key rotation synchronization problem.</t>
        <t>To address such a synchronization issue, if key update is
initialized on one path, the sender SHOULD send at least one packet
with the new key on all active paths. Further, an endpoint MUST NOT
initiate a subsequent key update until a packet with the current key
has been acknowledged on each 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>Using the default algorithm specified in <xref target="QUIC-RECOVERY"/> would result
in suboptimal performance, computing average RTT and standard
deviation from series of different delay measurements of different
combined paths.  At the same time, early tests showed that it is
desirable to send ACKs through the shortest path because a shorter
ACK delay results in a tighter control loop and better performances.
The tests also showed that it is desirable to send copies of the ACKs
on multiple paths, for robustness if a path experiences sudden losses.</t>
        <t>An early implementation mitigated the delay variation issue by using
time stamps, as specified in <xref target="QUIC-Timestamp"/>.  When the timestamps
are present, the implementation can estimate the transmission delay
on each one-way path, and can then use these one way delays for more
efficient implementations of recovery and congestion control
algorithms.</t>
        <t>If timestamps are not available, implementations could estimate one
way delays using statistical techniques.  For example, in the example
shown in Table 1, implementations can use "same path"
measurements to estimate the one way delay of the terrestrial path to
about 50ms in each direction, and that of the satellite path to about
300ms.  Further measurements can then be used to maintain estimates
of one way delay variations, using logical similar to Kalman filters.
But statistical processing is error-prone, and using time stamps
provides more robust measurements.</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. A reasonable default consists in sending ACK_MP frames on the
path they acknowledge packets, but the receiver must not assume its
peer will do so.</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, and MUST NOT
use other encryption levels.</t>
      <t>If an endpoint receives multipath-specific frames from packets of
other encryption levels, it MUST return MP_PROTOCOL_VIOLATION
as a connection error and close the connection.</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 connection 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 0xbaba00..0xbaba01),
    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 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 0xbaba05),
    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 SHOULD be acknowledged. 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 0xbaba06),
    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 SHOULD be acknowledged. If a packet containing
a PATH_STATUS frame is considered lost, the peer should only repeat it
if it was 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 0xba01): 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 0x0f739bbc1b666d04)</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 0xbaba00-0xbaba01)</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 0xbaba05)</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 0xbaba06)</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 0xba01)</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>TBD</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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Handley" initials="M." surname="Handley">
              <organization/>
            </author>
            <author fullname="D. Wischik" initials="D." surname="Wischik">
              <organization/>
            </author>
            <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="I-D.bonaventure-iccrg-schedulers">
          <front>
            <title>Multipath schedulers</title>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>UCLouvain</organization>
            </author>
            <author fullname="Maxime Piraux" initials="M." surname="Piraux">
              <organization>UCLouvain</organization>
            </author>
            <author fullname="Quentin De Coninck" initials="Q." surname="De Coninck">
              <organization>UCLouvain</organization>
            </author>
            <author fullname="Matthieu Baerts" initials="M." surname="Baerts">
              <organization>Tessares</organization>
            </author>
            <author fullname="Christoph Paasch" initials="C." surname="Paasch">
              <organization>Apple</organization>
            </author>
            <author fullname="Markus Amend" initials="M." surname="Amend">
              <organization>Deutsche Telekom</organization>
            </author>
            <date day="25" month="October" year="2021"/>
            <abstract>
              <t>   This document proposes a series of abstract packet schedulers for
   multipath transport protocols equipped with a congestion controller.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bonaventure-iccrg-schedulers-02"/>
        </reference>
        <reference anchor="QUIC-Invariants">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </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:
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
cxr1hZVN/j+6RBMfitcAAA==

-->

</rfc>
