<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.8 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-07" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.1 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-07"/>
    <author fullname="刘彦梅" asciiFullname="Yanmei Liu" role="editor">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="马云飞" asciiFullname="Yunfei Ma">
      <organization>Uber Technologies Inc.</organization>
      <address>
        <email>yunfei.ma@uber.com</email>
      </address>
    </author>
    <author initials="Q." surname="De Coninck" fullname="Quentin De Coninck" role="editor">
      <organization>University of Mons (UMONS)</organization>
      <address>
        <email>quentin.deconinck@umons.ac.be</email>
      </address>
    </author>
    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain and Tessares</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <author initials="C." surname="Huitema" fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <email>huitema@huitema.net</email>
      </address>
    </author>
    <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind" role="editor">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <date/>
    <area>Transport</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 80?>

<t>This document specifies a multipath extension for the QUIC protocol to
enable the simultaneous usage of multiple paths for a single connection.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    QUIC Working Group mailing list (quic@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/mirjak/draft-lmbdhk-quic-multipath"/>.</t>
    </note>
  </front>
  <middle>
    <?line 85?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies an extension to QUIC version 1 <xref target="QUIC-TRANSPORT"/>
to enable the simultaneous usage of multiple paths for a single
connection.</t>
      <t>This proposal is based on several basic design points:</t>
      <ul spacing="normal">
        <li>
          <t>Re-use as much as possible mechanisms of QUIC version 1. In
particular, this proposal uses path validation as specified for QUIC
version 1 and aims to re-use as much as possible of QUIC's connection
migration.</t>
        </li>
        <li>
          <t>Use the same packet header formats as QUIC version 1 to minimize
the difference between multipath and non-multipath traffic being
exposed on wire.</t>
        </li>
        <li>
          <t>Congestion Control must be per-path (following <xref target="QUIC-TRANSPORT"/>)
which usually also requires per-path RTT measurements</t>
        </li>
        <li>
          <t>PMTU discovery should be performed per-path</t>
        </li>
        <li>
          <t>The use of this multipath extension requires the use of non-zero
Connection IDs in both directions.</t>
        </li>
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>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.</t>
        </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>
          <t>Allow simultaneous transmission of non-probing frames on multiple
paths.</t>
        </li>
        <li>
          <t>Continue using an existing path even if non-probing frames have
been received on another path.</t>
        </li>
        <li>
          <t>Manage the removal of paths that have been abandoned.</t>
        </li>
      </ul>
      <t>As such, this extension specifies a departure from the specification of
path management in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/> and therefore
requires negotiation between the two endpoints using a new transport
parameter, as specified in <xref target="nego"/>.</t>
      <t>This extension uses multiple packet number spaces.
When multipath is negotiated, each separate packet number space is linked to a path ID.
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>
          <t>The client uses multiple IP addresses and the server listens on only
one.</t>
        </li>
        <li>
          <t>The client uses only one IP address and the server listens on
several ones.</t>
        </li>
        <li>
          <t>The client uses multiple IP addresses and the server listens on
several ones.</t>
        </li>
        <li>
          <t>The client uses only one IP address and the server
listens on only one.</t>
        </li>
      </ul>
      <t>Note that in the last scenario, it still remains possible to have
multiple paths over the connection, given that a path is not only
defined by the IP addresses being used, but also the port numbers.
In particular, the client can use one or several ports per IP
address and the server can listen on one or several ports per IP
address.</t>
      <t>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"/>.
In addition, we define the following term:</t>
        <ul spacing="normal">
          <li>
            <t>Path Identifier (Path ID): An identifier that is used to identify
a path in a QUIC connection at an endpoint. Path Identifier is used
in multipath control frames (etc. PATH_ABANDON frame) to identify a path.
Connection IDs are issued per path ID. When endpoints address a path in
multipath control frames, it refers to the Path Identifier related to
the destination Connection ID used for sending packets on that
particular path.</t>
          </li>
        </ul>
      </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 initial_max_paths transport parameter during the handshake to
negotiate the utilization of the multipath capabilities.
The initial_max_paths transport parameter limits the initial maximum number of active paths
that can be used during a connection. The active_connection_id_limit
transport parameter limits the maximum number of active Connection IDs
per path. A multipath QUIC connection is thus an established QUIC
connection where the initial_max_paths transport parameter
has been successfully negotiated.</t>
      <t>Endpoints need to pre-allocate new Connection IDs with associating Path Identifiers
before initiating new paths.
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 Path Identifier communicated when advertising a
Destination Connection ID is used to associate a packet to a packet number space
that is used on a valid path. Further, the
Path Identifier associated with 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 Path Identifier 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>
          <t>initial_max_paths (current version uses 0x0f739bbc1b666d07): the
initial_max_paths transport parameter is included if the endpoint supports
the multipath extension as defined in this document. This is
a variable-length integer value specifying the maximum number of
active concurrent paths an endpoint is willing to build.
The value of the initial_max_paths parameter MUST be at least 2.
An endpoint that receives a value less than 2 MUST close
the connection with an error of type TRANSPORT_PARAMETER_ERROR. Setting
this parameter is equivalent to sending a MAX_PATHS (<xref target="max-paths-frame"/>)
of the corresponding type with the same value.</t>
        </li>
      </ul>
      <t>If any of the endpoints does not advertise the initial_max_paths transport
parameter, then the endpoints MUST NOT use any frame or
mechanism defined in this document.</t>
      <t>When advertising the initial_max_paths transport parameter, the endpoint
MUST use non-zero source and destination connection IDs.
If an initial_max_paths 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 initial_max_paths 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 per path when the
initial_max_paths parameter is negotiated successfully.
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>Endpoints SHOULD use MP_NEW_CONNECTION_ID and MP_RETIRE_CONNECTION_ID
frames to provide new Connection IDs for the peer after the initial_max_paths parameter is negotiated.</t>
      <t>Endpoints MUST NOT issue Connection IDs with Path Identifiers larger than
the path limitation declared by the initial_max_paths transport parameter
and MAX_PATHS frames.</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="pathid">
      <name>Path Identifier</name>
      <t>The explicit Path Identifier is an integer between 0 and 2^32 - 1 (inclusive).
The Path Identifier is pre-allocated when endpoints provide new Connection IDs
with MP_NEW_CONNECTION_ID frames <xref target="mp-new-conn-id-frame"/>.</t>
      <t>Each Connection ID is associated with a Path Identifier, as documented in <xref target="mp-new-conn-id-frame"/>.
Multiple connection IDs can be associated with the same path identifier.</t>
      <t>Endpoints use Path Identifier to address a path in the multipath control frames,
such as PATH_ABANDON, PATH_STANDBY, and PATH_AVAILABLE frames.</t>
      <t>Path IDs are generated monotonically increasing, which means the retired Path IDs
MUST NOT be reused. Once a Path ID is retired by PATH_ABANDON,
it MUST NOT be reused on any other path.</t>
      <t>Each endpoint associates a Receiver Packet Number space to each Path Identifier
that it provides to the peer. Each endpoint associates a Sender Packet Number space
to each Path Identifier received from the peer.</t>
      <t>The Path Identifier associated with the Destination Connection ID is used to
construct the packet protection nonce defined in {#multipath-aead}.</t>
      <t>The Path Identifier associated with the Destination Connection ID
is used to identify the path in ACK_MP frames {#ack-mp-frame}.</t>
      <t>Note that the Path Identifier for the initial path is 0. Connection IDs
which are issued by origin NEW_CONNECTION_ID frames <xref section="19.15." sectionFormat="of" target="QUIC-TRANSPORT"/>
MUST be treated as their Path Identifier is 0. Also, the Path Identifier for
the connection ID specified in the "preferred address" transport parameter is 0.
Use of the "preferred address" is considered as a migration event
that does not change the path ID.</t>
      <t>Endpoints use PATH_ABANDON frame to inform the peer of the retirement of associated
Path Identifier. When there is not enough unused Path Identifiers, endpoints SHOULD
send MAX_PATHS frame to inform the peer that new Path Identifiers are available.</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 let the peer open a new path, an endpoint needs to provide its peer with connection IDs
and associated Path Identifiers for the new path.</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"/> by initiating path validation
and using a new Connection ID for the same path ID.</t>
      <t>This proposal adds three multipath control frames for path management:</t>
      <ul spacing="normal">
        <li>
          <t>PATH_ABANDON frame for the receiver side to abandon the path
(see <xref target="path-abandon-frame"/>)</t>
        </li>
        <li>
          <t>PATH_STANDBY and PATH_AVAILABLE frames to express a preference
in path usage (see <xref target="path-standby-frame"/> and <xref target="path-available-frame"/></t>
        </li>
      </ul>
      <t>All new frames are sent in 1-RTT packets <xref target="QUIC-TRANSPORT"/>.</t>
      <section anchor="path-initiation">
        <name>Path Initiation</name>
        <t>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 MP_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 Connection ID (see <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>), which is associated with an unused Path ID.</t>
        <t>If the transport parameter "initial_max_paths" is negotiated as N,
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"/>, unless it has previously validated
that address. 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 succeeds, the client can continue to use the path.
If validation fails, the client MUST NOT use the path and can
remove any status associated to the path initation attempt.
<xref section="9.1" sectionFormat="of" target="QUIC-TRANSPORT"/> introduces the concept of
"probing" and "non-probing" frames. When the multipath extension
is negotiated, the reception of "non-probing"
packet on a new path needs to be considered as a path initiation
attempt that does not impact the path status of any existing
path. Therefore, any frame can be sent on a new path at any time
as long as the anti-amplification limits
(<xref section="21.1.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>) and the congestion control
limits for this path are respected.</t>
        <t>Further, 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 with a new Connection ID
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. Reception of QUIC packets on a new
path containing a Connection ID that is already in use on another path
should be considered as a path migration as further discussed in <xref target="migration"/>.</t>
        <t>As specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, the server is expected to send a new
address validation token to a client following the successful validation of a
new client address. 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. Further guidance on token usage can be
found in <xref section="8.1.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      </section>
      <section anchor="path-state-management">
        <name>Path State Management</name>
        <t>An endpoint uses PATH_STANDBY and PATH_AVAILABLE frames to inform that the peer should
send packets in the preference expressed by these frames.
Note that the endpoint might not follow the peer’s advertisements,
but these frames are still a clear signal of suggestion
for the preference of path usage by the peer.
Each peer indicates its preference of path usage independently of the other peer.
It means that peers may have different usage preferences for the same path.
Depending on the sender's decisions, this may lead to usage of paths that have been
indicated as "standby" by the peer or non-usage of some locally available paths.</t>
        <t>PATH_AVAILABLE indicates that a path is "available", i.e., it suggests to
the peer to use its own logic to split traffic among available paths.
PATH_STANDBY marks a path as "standby", i.e., it suggests that no traffic
should be sent on that path if another path is available.
If no frame indicating a path usage preference was received for a certain path,
the preference of the peer is unknown and the sender needs to decide based on it
own local logic if the path should be used.</t>
        <t>Endpoints use Path Identifier
in these frames to identify which path state is going to be
changed. Notice that both frames can be sent via a different path
and therefore might arrive in different orders.
The PATH_AVAILABLE and PATH_STANDBY frames share a common sequence number space
to detect and ignore outdated information.</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 Path Identifier.</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 MP_RETIRE_CONNECTION_ID frame for all the corresponding Connection
IDs used for this path. 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 MP_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 MP_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.
Respectively, if there is still an active path, it is RECOMMENDED to
send a PATH_ABANDON frame after an idle time on another 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>
          <t>Note that PATH_ABANDON frame is also used as a signal for the retirement
of the associated Path Identifier. When endpoint received PATH_ABANDON frame,
it SHOULD not use the associated Path Identifier in future packets, it can
only use the Path ID in ACK_MP frames for inflight packets or
in MP_RETIRE_CONNECTION_ID frames for CID retirement.</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>
          <t>A failed path validation consumes the Path ID used for probing of this path.
An endpoint MUST not use the same Path ID to probe a different path. Instead, it
MUST send a PATH_ABANDON frame to retire the Path ID.</t>
        </section>
        <section anchor="consume-retire-cid">
          <name>Allocating, Consuming and Retiring Connection IDs</name>
          <t>Each endpoints pre-allocate a Path Identifier for each new Connection ID.
The Path Identifier 0 indicates the initial path of the connection.
Endpoints SHOULD issue at least one unused Connection ID with unused Path Identifier.</t>
          <t>An endpoint maintains a set of connection IDs received from its peer for each path,
any of which it can use when sending packets, as the same in <xref target="QUIC-TRANSPORT"/>.
The difference of multi-path extension is that Connection IDs are pre-allocated
for each paths. Each Connection ID is belonging to one path specified by
the Path Identifier field of MP_NEW_CONNECTION_ID frame in <xref target="mp-new-conn-id-frame"/>.
The Connection IDs used during handshake are belonging to the initial path
with Path Identifier 0.</t>
          <t>When the endpoint wishes to remove a connection ID from use, it sends
a MP_RETIRE_CONNECTION_ID frame <xref target="mp-retire-conn-id-frame"/> to its peer.
Sending a MP_RETIRE_CONNECTION_ID frame indicates that the connection ID
will not be used again. If the path is still active, the peer SHOULD replace it with a new connection ID using a MP_NEW_CONNECTION_ID frame.</t>
          <t>Note that Connection Sequeunce number and Retire Prior To field are both used for
the corresponding path specified by a Path Identifier.</t>
          <t>Upon receipt of an increased Retire Prior To field, the peer MUST stop
using the corresponding connection IDs of the specified path and retire them
with MP_RETIRE_CONNECTION_ID frames before adding the newly provided connection ID
to the set of active connection IDs belonging to the specified path.</t>
          <t>Endpoints MUST NOT issue new Connection IDs which has Path Identifiers larger than
the max path identifier field in MP_MAX_PATHS frames <xref target="max-paths-frame"/>.
When endpoint finds it has not enough available unused Path Identifiers,
it SHOULD send a MP_MAX_PATHS frame to inform the peer that it could use larger active
Path Identifiers.</t>
        </section>
        <section anchor="retire-cid-close">
          <name>Effect of MP_RETIRE_CONNECTION_ID Frame</name>
          <t>Receiving a MP_RETIRE_CONNECTION_ID frame causes an endpoint to discard
the resources associated with that Connection ID. Note that retirement of
Connection IDs will not effect the use of Path Identifier for the specific path.
The list of received packets used to send acknowledgements is also remain
uneffected as the packet number space is associated with a path.</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. Also note that,
as there is no valid CID associated with the path, both endpoints can still send
multipath control frames that contain the Path Identifier on available paths, such
as PATH_ABANDON, PATH_STANDBY or PATH_AVAILABLE.</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  |                                  |
 +------------+                                  |
       |                                         |
       | MP_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>
            <t>Associated 4-tuple: The tuple (source IP, source port, destination IP,
destination port) used by the endhost to send packets over the path.</t>
          </li>
          <li>
            <t>Associated Path Identifier: The Path Identifier used to address the path.
The endpoint relies on its sequence number to send path control information
and specifically acknowledge packets belonging to that path-specific
packet number space.</t>
          </li>
          <li>
            <t>Associated Destination Connection ID: The Connection ID used to send
packets over the path.</t>
          </li>
        </ul>
        <t>In Active state, hosts MUST also track the following information:</t>
        <ul spacing="normal">
          <li>
            <t>Associated Source Connection ID: The Connection ID used to receive
packets over the path.</t>
          </li>
        </ul>
        <t>A path in the "Validating" state performs path validation as described
in <xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>.</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 MP_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 MP_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 Path Identifier is linked to a separate packet number space.
Each PathID-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 Path Identifier associated with the Destination Connection ID
to distinguish the path-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
Path Identifier 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 path identifier 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
path identifier 0 after the handshake concluded.</t>
        <t>ACK_MP frames (defined in <xref target="ack-mp-frame"/>) can be returned on any path.
If the ACK_MP is preferred to be sent on the same path as the acknowledged
packet (see <xref target="compute-rtt"/> for further guidance), it can be beneficial
to bundle an ACK_MP frame with the PATH_RESPONSE frame during
path validation.</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 path identifier pre-allocated
for the Destination Connection ID.</t>
        <t><xref target="mp-new-conn-id-frame"/> encodes the Path Identifier for Connection IDs
as a variable-length integer, allowing values up to 2^32-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 Path Identifier 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 Path Identifier 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[]: MP_NEW_CONNECTION_ID[C1, Seq=0, PathID=1] -->
             <-- 1-RTT[]: MP_NEW_CONNECTION_ID[S1, Seq=0, PathID=1]
             <-- 1-RTT[]: MP_NEW_CONNECTION_ID[S2, Seq=0, PathID=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
Path Identifier 1), and server provides two Connection IDs
(S1 with Path Identifier 1, and S2 with Path Identifier 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 path identifier of 1; the
client's 1-RTT packets use DCID S2, which has a path identifier of 2. For the
second path, the server's 1-RTT packets use DCID C2, which has a path identifier of 2;
the client's 1-RTT packets use DCID S3, which has a path identifier
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 Path Identifier
of the DCID its peer uses for sending packets over that path,
hence using the DCID with path identifier 1 (which relates to C1). Optionally, the
server confirms the path closure by sending an PATH_ABANDON frame
by indicating the path identifier the client uses to send over that path,
which corresponds to the path identifier 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[PathID=1]->
                           (server tells client to abandon a path)
               <-1-RTT[Y]: DCID=C1 PATH_ABANDON[PathID=2],
                                               ACK_MP[PID=2, PN=X]
(client retires the corresponding CID)
1-RTT[U]: DCID=S3 MP_RETIRE_CONNECTION_ID[PathId=2, Seq=0], 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>
        <t>After a path is abandoned, the Path Identifier associated with the path
is considered retired and MUST NOT be reused in new paths for security
consideration <xref target="multipath-aead"/>.</t>
        <t>Endpoint SHOULD send MAX_PATHS frames <xref target="max-paths-frame"/> to raise
the limit of Path Identifiers when endpoint finds there are not enough unused
Path Identifiers (e.g. more than half of the available Path Identifiers
are used).</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="number-spaces">
        <name>Number Spaces</name>
        <t>As stated in <xref target="introduction"/>, when multipath is negotiated, each
Path Identifier 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: |-- - - - - - +
   | Sender Number Space     |             |
   +-------------------------+             v
                      ^             +----------------+
                      |             | Path (4 tuple) |
                      +-------------| - RTT          |
                +------------------>| - Congestion   |
                |                   |   state        |
                v                   +----------------+
   +-------------------------+             ^
   | CID provided to peer:   |             |
   | 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 packet number spaces and paths is fixed.
CIDs are pre-allocated for each Path Identifier. Once CIDs are issued,
they are assigned to one specific Path Identifier. 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. The packet number space does not change when CID
rotation happens within a given Path ID.</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>
            <t>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.</t>
          </li>
          <li>
            <t>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", which remain
unchanged when CID rotation happens.</t>
          </li>
          <li>
            <t>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",
which remain unchanged when CID rotation happens.</t>
          </li>
        </ul>
      </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="migration">
        <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
perform path validation (see <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>).
If path validation process succeeds, the endpoints set
the path's congestion controller and round-trip time
estimator according to <xref section="9.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t><xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/> allows an endpoint to skip validation of
a peer address if that address has been seen recently. However, when the
multipath extension is used and an endpoint has multiple addresses that
could lead to switching between different paths, it should rather maintain
multiple open paths instead.</t>
        <t>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 Path Identifier of Destination Connection
ID. If an endpoint receives a Path Identifier 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 Path Identifier that it cannot process
anymore (e.g., because the path might have been abandoned), it
MUST silently ignore the frame.</t>
      <section anchor="ack-mp-frame">
        <name>ACK_MP Frame</name>
        <t>The ACK_MP frame (types TBD-00 and TBD-01)
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),
    Path Identifier (i),
    Largest Acknowledged (i),
    ACK Delay (i),
    ACK Range Count (i),
    First ACK Range (i),
    ACK Range (..) ...,
    [ECN Counts (..)],
  }
]]></artwork>
        </figure>
        <t>Compared to the ACK frame specified in <xref target="QUIC-TRANSPORT"/>, the following
field is added.</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The path identifier pre-allocated of the Destination Connection ID. This
field identifies 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 and retire the Path ID associated.</t>
        <t>PATH_ABANDON frames are formatted as shown in <xref target="fig-path-abandon-format"/>.</t>
        <figure anchor="fig-path-abandon-format">
          <name>PATH_ABANDON Frame Format</name>
          <artwork><![CDATA[
  PATH_ABANDON Frame {
    Type (i) = TBD-02 (experiments use 0x15228c05),
    Path Identifier (i),
    Error Code (i),
    Reason Phrase Length (i),
    Reason Phrase (..),
  }
]]></artwork>
        </figure>
        <t>PATH_ABANDON frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path Identifier 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-standby-frame">
        <name>PATH_STANDBY frame</name>
        <t>PATH_STANDBY Frames are used by endpoints to inform the peer
about its preference to not use the path associated to
the Destination Connection IDs in the frame for sending.
PATH_STANDBY frames are formatted as shown in <xref target="fig-path-standby-format"/>.</t>
        <figure anchor="fig-path-standby-format">
          <name>PATH_STANDBY Frame Format</name>
          <artwork><![CDATA[
  PATH_STANDBY Frame {
    Type (i) = TBD-03 (experiments use 0x15228c07)
    Path Identifier (i),
    Path Status sequence number (i),
  }
]]></artwork>
        </figure>
        <t>PATH_STANDBY Frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path Identifier of the Destination Connection ID used by the
receiver of this frame to send packets over the path the status update
corresponds to. All Destination Connection IDs that have been issued
MAY be specified, even if they are not yet in use over a path.</t>
          </dd>
          <dt>Path Status sequence number:</dt>
          <dd>
            <t>A variable-length integer specifying the sequence number assigned for
this PATH_STANDBY frame. The sequence number space is shared with the
PATH_AVAILABLE frame and the sequence
number MUST be monotonically increasing generated by the sender of
the PATH_STANDBY frame in the same connection. The receiver of
the PATH_STANDBY frame needs to use and compare the sequence numbers
separately for each Path Identifier.</t>
          </dd>
        </dl>
        <t>Frames may be received out of order. A peer MUST ignore an incoming
PATH_STANDBY frame if it previously received another PATH_STANDBY frame
or PATH_AVAILABLE
for the same Path Identifier with a
Path Status sequence number equal to or higher than the Path Status
sequence number of the incoming frame.</t>
        <t>PATH_STANDBY frames are ack-eliciting. If a packet containing a
PATH_STANDBY frame is considered lost, the peer SHOULD resend the frame
only if it contains the last status sent for that path -- as indicated
by the sequence number.</t>
        <t>A PATH_STANDBY frame MAY be bundled with a MP_NEW_CONNECTION_ID frame or
a PATH_RESPONSE frame in order to indicate the preferred path usage
before or during path initiation.</t>
      </section>
      <section anchor="path-available-frame">
        <name>PATH_AVAILABLE frame</name>
        <t>PATH_AVAILABLE frames are used by endpoints to inform the peer
that the path associated to
the Destination Connection IDs in the frame is available for sending.
PATH_AVAILABLE frames are formatted as shown in <xref target="fig-path-available-format"/>.</t>
        <figure anchor="fig-path-available-format">
          <name>PATH_AVAILABLE Frame Format</name>
          <artwork><![CDATA[
  PATH_AVAILABLE Frame {
    Type (i) = TBD-03 (experiments use 0x15228c08),
    Path Identifier (i),
    Path Status sequence number (i),
  }
]]></artwork>
        </figure>
        <t>PATH_AVAILABLE frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path Identifier 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_AVAILABLE frame.
The sequence number space is shared with the PATH_STANDBY frame and the sequence
number MUST be monotonically increasing generated by the sender of
the PATH_AVAILABLE frame in the same connection. The receiver of
the PATH_AVAILABLE frame needs to use and compare the sequence numbers
separately for each Path Identifier.</t>
          </dd>
        </dl>
        <t>Frames may be received out of order. A peer MUST ignore an incoming
PATH_AVAILABLE frame if it previously received another PATH_AVAILABLE frame
or PATH_STANDBY frame for the same Path Identifier with a
Path Status sequence number equal to or higher than the Path Status
sequence number of the incoming frame.</t>
        <t>PATH_AVAILABLE frames are ack-eliciting. If a packet containing a
PATH_AVAILABLE frame is considered lost, the peer SHOULD resend the frame
only if it contains the last status sent for that path -- as indicated
by the sequence number.</t>
        <t>A PATH_AVAILABLE frame MAY be bundled with a MP_NEW_CONNECTION_ID frame or
a PATH_RESPONSE frame in order to indicate the preferred path usage
before or during path initiation.</t>
      </section>
      <section anchor="mp-new-conn-id-frame">
        <name>MP_NEW_CONNECTION_ID frames</name>
        <t>An endpoint sends a MP_NEW_CONNECTION_ID frame (type=0x15228c09) instead of
the NEW_CONNECTION_ID frame to provide its peer with alternative connection IDs
that can be used to break linkability when migrating connections;
see <xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t>MP_NEW_CONNECTION_ID frames are formatted as shown in <xref target="fig-mp-connection-id-frame-format"/>.</t>
        <figure anchor="fig-mp-connection-id-frame-format">
          <name>MP_NEW_CONNECTION_ID Frame Format</name>
          <artwork><![CDATA[
MP_NEW_CONNECTION_ID Frame {
  Type (i) = 0x15228c09,
  Path Identifier (i),
  Sequence Number (i),
  Retire Prior To (i),
  Length (8),
  Connection ID (8..160),
  Stateless Reset Token (128),
}
]]></artwork>
        </figure>
        <t>MP_NEW_CONNECTION_ID frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>A path identifier which is pre allocated when the Connection ID is generated, which
means the current Connection ID can only be used on the corresponding path.</t>
          </dd>
        </dl>
        <t>Sequence Number:
The sequence number assigned to the connection ID by the sender on the path
specified by Path Identifier, encoded as a variable-length integer.
Note that the sequence number is allocated dependently on each path,
which means different Connection IDs on different paths may have the same
sequence number value.</t>
        <dl>
          <dt>Retire Prior To:</dt>
          <dd>
            <t>A variable-length integer indicating which connection IDs should be retired
on the path specified by Path Identifier; see <xref target="consume-retire-cid"/>.</t>
          </dd>
        </dl>
        <t>Length:
An 8-bit unsigned integer containing the length of the connection ID. Values
less than 1 and greater than 20 are invalid and MUST be treated as a connection
error of type FRAME_ENCODING_ERROR.</t>
        <t>Connection ID:
A connection ID of the specified length.</t>
        <t>Stateless Reset Token:
A 128-bit value that will be used for a stateless reset when the associated
connection ID is used.</t>
        <t>The Sequence Number field and Retire Prior To field is allocated
for each path independently. The Retire Prior To field indicates which connection IDs
should be retired on the corresponding path of Path Identifier.</t>
        <t>The Retire Prior To field applies to connection IDs established during
connection setup if the Path Identifier is 0 indicating the initial path; see <xref target="consume-retire-cid"/>.
The value in the Retire Prior To field MUST be less than or equal to the value
in the Sequence Number field. Receiving a value in the Retire Prior To field
that is greater than that in the Sequence Number field MUST be treated as
a connection error of type FRAME_ENCODING_ERROR.</t>
        <t>Length, Connection ID, Stateless Reset Token fields have exactly the same
definition in NEW_CONNECTION_ID frame <xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t>Note that Connection IDs issued in NEW_CONNECTION_ID frames MUST be treated as
their Path Identifier is 0. Also the retire prior to field of NEW_CONNECTION_ID frames
just effect the Connection IDs of initial path with path ID 0. This machanism
is compatible with <xref target="QUIC-TRANSPORT"/>.</t>
      </section>
      <section anchor="mp-retire-conn-id-frame">
        <name>MP_RETIRE_CONNECTION_ID frames</name>
        <t>An endpoint sends a MP_RETIRE_CONNECTION_ID frame (type=0x15228c0a) instead of
RETIRE_CONNECTION_ID frame to indicate that it will no longer use a connection ID
that was issued by its peer. This includes the connection ID provided during the handshake.
Sending a MP_RETIRE_CONNECTION_ID frame also serves as a request to the peer
to send additional connection IDs for future use, unless the path specified
by Path Identifier has been abandoned. New connection IDs can be
delivered to a peer using the MP_NEW_CONNECTION_ID frame (<xref target="mp-new-conn-id-frame"/>).</t>
        <t>Retiring a connection ID invalidates the stateless reset token associated with that connection ID.</t>
        <t>MP_RETIRE_CONNECTION_ID frames are formatted as shown in <xref target="fig-mp-retire-connection-id-frame-format"/>.</t>
        <figure anchor="fig-mp-retire-connection-id-frame-format">
          <name>MP_RETIRE_CONNECTION_ID Frame Format</name>
          <artwork><![CDATA[
MP_RETIRE_CONNECTION_ID Frame {
  Type (i) = 0x15228c0a,
  Path Identifier (i),
  Sequence Number (i),
}
]]></artwork>
        </figure>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>A path identifier which is pre allocated when the Connection ID is generated, which
means the current Connection ID can only be used on the corresponding path.</t>
          </dd>
        </dl>
        <t>Sequence Number:
The sequence number assigned to the connection ID by the sender on the path
specified by Path Identifier, encoded as a variable-length integer.</t>
      </section>
      <section anchor="max-paths-frame">
        <name>MAX_PATHS frames</name>
        <t>A MAX_PATHS frame (type=0x15228c0b) informs the peer of the cumulative number of paths
it is permitted to open.</t>
        <t>MAX_PATHS frames are formatted as shown in <xref target="fig-max-paths-frame-format"/>.</t>
        <figure anchor="fig-max-paths-frame-format">
          <name>MAX_PATHS Frame Format</name>
          <artwork><![CDATA[
MAX_PATHS Frame {
  Type (i) = 0x15228c0b,
  Maximum Paths (i),
}
]]></artwork>
        </figure>
        <t>MAX_PATHS frames contain the following field:</t>
        <dl>
          <dt>Maximum Path Identifier:</dt>
          <dd>
            <t>A count of the cumulative number of path that can be opened
over the lifetime of the connection. This value cannot exceed 2^32-1, as it is not
possible to encode Path IDs larger than 2^32-1. Receipt of a frame that permits
opening of a path with Path Identifier larger than this limit MUST be treated
as a connection error of type FRAME_ENCODING_ERROR.</t>
          </dd>
        </dl>
        <t>Loss or reordering can cause an endpoint to receive a MAX_PATHS frame with
a lower path limit than was previously received. MAX_PATHS frames that
do not increase the path limit MUST be ignored.</t>
        <t>An endpoint MUST NOT initiate a path with a path ID higher than the Maximum Paths value.
An endpoint MUST terminate the a connection with an error of type MP_PROTOCOL_VIOLATION if a peer opens more paths than was permitted.</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 0x0f739bbc1b666d07)</td>
            <td align="left">initial_max_paths</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 0x15228c07)</td>
            <td align="left">PATH_STANDBY</td>
            <td align="left">
              <xref target="path-standby-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-04 (experiments use 0x15228c08)</td>
            <td align="left">PATH_AVAILABLE</td>
            <td align="left">
              <xref target="path-available-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-05 (experiments use 0x15228c09)</td>
            <td align="left">MP_NEW_CONNECTION_ID</td>
            <td align="left">
              <xref target="mp-new-conn-id-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-06 (experiments use 0x15228c0a)</td>
            <td align="left">MP_RETIRE_CONNECTION_ID</td>
            <td align="left">
              <xref target="mp-retire-conn-id-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-06 (experiments use 0x15228c0b)</td>
            <td align="left">MAX_PATHS</td>
            <td align="left">
              <xref target="max-paths-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>
          <t>Qing An</t>
        </li>
        <li>
          <t>Zhenyu Li</t>
        </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 anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="QUIC-RECOVERY">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6356">
          <front>
            <title>Coupled Congestion Control for Multipath Transport Protocols</title>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="D. Wischik" initials="D." surname="Wischik"/>
            <date month="October" year="2011"/>
            <abstract>
              <t>Often endpoints are connected by multiple paths, but communications are usually restricted to a single path per connection. Resource usage within the network would be more efficient were it possible for these multiple paths to be used concurrently. Multipath TCP is a proposal to achieve multipath transport in TCP.</t>
              <t>New congestion control algorithms are needed for multipath transport protocols such as Multipath TCP, as single path algorithms have a series of issues in the multipath context. One of the prominent problems is that running existing algorithms such as standard TCP independently on each path would give the multipath flow more than its fair share at a bottleneck link traversed by more than one of its subflows. Further, it is desirable that a source with multiple paths available will transfer more traffic using the least congested of the paths, achieving a property called "resource pooling" where a bundle of links effectively behaves like one shared link with bigger capacity. This would increase the overall efficiency of the network and also its robustness to failure.</t>
              <t>This document presents a congestion control algorithm that couples the congestion control algorithms running on different subflows by linking their increase functions, and dynamically controls the overall aggressiveness of the multipath flow. The result is a practical algorithm that is fair to TCP at bottlenecks while moving traffic away from congested links. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6356"/>
          <seriesInfo name="DOI" value="10.17487/RFC6356"/>
        </reference>
        <reference anchor="OLIA">
          <front>
            <title>MPTCP is not pareto-optimal: performance issues and a possible solution</title>
            <author initials="R." surname="Khalili">
              <organization/>
            </author>
            <author initials="N." surname="Gast">
              <organization/>
            </author>
            <author initials="M." surname="Popovic">
              <organization/>
            </author>
            <author initials="U." surname="Upadhyay">
              <organization/>
            </author>
            <author initials="J." surname="Le Boudec">
              <organization/>
            </author>
            <date year="2012"/>
          </front>
          <seriesInfo name="Proceedings of the 8th international conference on Emerging networking experiments and technologies, ACM" value=""/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+29XW8k2ZUg9n5/RQwL2CZHmTkkq7u6uzRaiM1iS2VVkRyS
1Zq2rClFZgbJmMqMSEVEFouqrsG+LOBXv9kvfvACCxjwLzDgP2N4Dey/8Pm8
99wbkUmWNLsQFi4B6mRmxP0499zz/TEej11XdoviefZ6vejKVd7dZicfuqJq
y7rKrusm+4c3L49dPp02xXv7EH09r2dVvoSX501+3Y3Lorse/3FdzsZLfW68
/7Wb5x088vHF0dXJJzeDP27q5v551nZz58pV8zzrmnXbHe7vf7t/6PKmyJ9n
V01etau66dxd3by7aer16jlNmf0W/i6rm+xX+J17V9zDA/Pn2cuqK5qq6MYv
cCXOtV1ezd/mi7qCqe+L1q3K59nvuno2yloYtimuW/h0v8QPv3cuX3e3dfPc
jV2WXa8XC9oVfMZ/z59nO//pf/yf/9P/9R//3//t3+/Il3k7K2HEnR/zalmU
2atyjb80NUKymJdd3cCfdXPzPDtalNN8msMKZxP4rljm5eJ5tizz+p/LyeJ+
+cucHxiX8MCsXtIa0kXgGv7z//5//D//5//0n//D/ypr8EtYV9ewhNc5fU9z
vpkWTXZVzG6relHflEWrs+v09/TOZJn/cg2PhmnLqgU4T7IXRXZcV7Cid/gt
n/E/rIuqK6vkt2TLMn9Vvi+atuzus/o6e11Xbbb75vXZ6eWeWcMfebzJvJjx
cL9cL+HJST6bTAuznLNJ9l1d5e/h6XVThPWcLcr3Jewz+ZEXcPyqXr/PYbWA
BgCJtgW8as3kNb88mYaXf7meLfileP7jSfbrddnBi2Hu49umbLsyr+xPNPN5
U74HFM/OZl29WvcAf8uP/1L+OwGUNVO9nmS/WRe3i+KurOZhttdl88958ssg
3E+acta2dWUmXOK7k3f+3V8W8gwdunNV3SzzDo4LMQ1v2Pjq4uj08vzs4up5
1lzPvt3f3/e/vLrU7w70u4uT47MfTi5+1B8O4U5X13bQi++Pnz396hl+PHv1
8ogxWojOzuvzq+PzrGyzqu6yFRxSV4/rVVcuc1j7qmhopGpWwCPtGvAYjtPl
2apu23K6KOAuL9YdUCq+Ekxodg73Dw75ixY2W7S4Hvj6vKlnBQCsumkRK7vb
IvsGCFlJlCPHUfJFBqh4XTQFzghgPFkWzQ1SGzimOyE8xQdYVrkEnKHVZJ25
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
FwEA

-->

</rfc>
