<?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-rfc2629 version 1.6.2 (Ruby 3.0.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-01"/>
    <author initials="Y." surname="Liu" fullname="Yanmei Liu" role="editor">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="Y." surname="Ma" fullname="Yunfei Ma">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>yunfei.ma@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="Q." surname="De Coninck" fullname="Quentin De Coninck" role="editor">
      <organization>UCLouvain</organization>
      <address>
        <email>quentin.deconinck@uclouvain.be</email>
      </address>
    </author>
    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <author initials="C." surname="Huitema" fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <email>huitema@huitema.net</email>
      </address>
    </author>
    <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind" role="editor">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <date/>
    <area>Transport</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies a multipath extension for the QUIC protocol to
enable the simultaneous usage of multiple paths for a single connection.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    QUIC Working Group mailing list (quic@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/mirjak/draft-lmbdhk-quic-multipath"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies an extension to QUIC version 1 <xref target="QUIC-TRANSPORT"/>
to enable the simultaneous usage of multiple paths for a single
connection.</t>
      <t>This proposal is based on several basic design points:</t>
      <ul spacing="normal">
        <li>Re-use as much as possible mechanisms of QUIC version 1. In
particular this proposal uses path validation as specified for QUIC
version 1 and aims to re-use as much as possible of QUIC's connection
migration.</li>
        <li>Use the same packet header formats as QUIC version 1 to avoid the
risk of packets being dropped by middleboxes (which may only support
QUIC version 1)</li>
        <li>Congestion Control must be per-path (following <xref target="QUIC-TRANSPORT"/>)
which usually also requires per-path RTT measurements</li>
        <li>PMTU discovery should be performed per-path</li>
        <li>A path is determined by the 4-tuple of source and destination IP
address as well as source and destination port. Therefore there can be
at most one active paths/connection ID per 4-tuple.</li>
      </ul>
      <t>The path management specified in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>
fulfills multiple goals: it directs a peer to switch sending through
a new preferred path, and it allows the peer to release resources
associated with the old path. Multipath requires several changes to
that mechanism:</t>
      <ul spacing="normal">
        <li>Allow simultaneous transmission of non probing frames on multiple
paths.</li>
        <li>Continue using an existing path even if non-probing frames have
been received on another path.</li>
        <li>Manage the removal of paths that have been abandoned.</li>
      </ul>
      <t>As such this extension specifies a departure from the specification of
path management in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/> and therefore
requires negotiation between the two endpoints using a new transport
parameter, as specified in <xref target="nego"/>.</t>
      <t>This proposal supports the negotiation of either the use of one packet
number space for all paths or the use of separate packet number spaces
per path. While both approaches are supported by the specification in
this version of the document, the intention for the final publication
of a multipath extension for QUIC is to choose one option in order to avoid
incompatibility. More evaluation and implementation experience is needed
to select one approach before final publication. Some discussion about
pros and cons can be found here:
https://github.com/mirjak/draft-lmbdhk-quic-multipath/blob/master/presentations/PacketNumberSpace_s.pdf</t>
      <t>As currently defined in this version of the draft the use of multiple
packet number spaces requires the use of connection IDs is both
directions. Today's deployments often only use destination connection ID
when sending packets from the client to the server as this addresses the
most important use cases for migration, like NAT rebinding or mobility
events. Further discussion and work is required to evaluate if the use
of multiple packet number spaces could be supported as well when
the connection ID is only present in one direction.</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. 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"/>. In addition, we define the following terms:</t>
        <ul spacing="normal">
          <li>Path: refers to the 4-tuple {source IP address, source port number,
destination IP address, destination port number}. A path refers to
"network path" used in <xref target="QUIC-TRANSPORT"/>.</li>
          <li>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. By default, it is defined as the sequence number of
the destination Connection ID used for sending packets on that
particular path, but alternative definitions can be used if the length
of that connection ID is zero.</li>
          <li>Packet Number Space Identifier (PN Space ID): An identifier that is
used to distinguish packet number spaces for different paths. It is
used in 1-RTT packets and ACK_MP frames. Each node maintains a list of
"Received Packets" for each of the CID that it provided to the peer,
which is used for acknowledging packets received with that CID.</li>
        </ul>
        <t>The difference between Path Identifier and Packet Number Space
Identifier, is that the Path Identifier is used in multipath control
frames to identify a path, and the Packet Number Space Identifier is
used in 1-RTT packets and ACK_MP frames to distinguish packet number
spaces for different paths. Both identifiers have the same value, which
is the sequence number of the connection ID, if a non-zero connection ID
is used. If the connection ID is zero length, the Packet Number Space
Identifier is 0, while the Path Identifier is selected on path
establishment.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>High-level overview</name>
      <t>The multipath extensions to QUIC proposed in this document enable the simultaneous utilization of 
different paths to exchange non-probing QUIC frames for a single connection. This contrasts with
the base QUIC protocol <xref target="QUIC-TRANSPORT"/> that includes a connection migration mechanism that
selects only one path to exchange such frames.</t>
      <t>A multipath QUIC connection starts with a QUIC handshake as a regular QUIC connection.
See further Section <xref target="nego"/>.
The peers use the enable_multipath transport parameter during the handshake to
negotiate the utilization of the multipath capabilities.
The active_connection_id_limit transport parameter limits the maximum number of active paths
that can be used during a connection. A multipath QUIC connection is thus an established QUIC
connection where the enable_multipath transport parameter
has been successfully negotiated.</t>
      <t>To add a new path to an existing multipath QUIC connection, a client starts a path validation on
the chosen path, as further described in Section <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 it has been validated. Each endpoint associates a
Path identifier to each path. This identifier is notably used when a peer sends a PATH_ABANDON frame
to indicate that it has closed the path whose identifier is 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>
    </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 follow:</t>
      <ul spacing="normal">
        <li>name: enable_multipath (TBD - experiments use 0xbabf)</li>
        <li>value: 0 (default) for disabled.</li>
      </ul>
      <t>Endpoints use 2-bits in the value field for negotiating one or more
PN spaces, available option values are listed in
<xref target="param_value_definition"/> :</t>
      <table anchor="param_value_definition">
        <name>Available value for enable_multipath</name>
        <thead>
          <tr>
            <th align="left">Option</th>
            <th align="left">Definition</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x0</td>
            <td align="left">don't support multipath</td>
          </tr>
          <tr>
            <td align="left">0x1</td>
            <td align="left">only support one PN space for multipath</td>
          </tr>
          <tr>
            <td align="left">0x2</td>
            <td align="left">only support multiple PN spaces for multipath</td>
          </tr>
          <tr>
            <td align="left">0x3</td>
            <td align="left">support both one PN space and multiple PN space</td>
          </tr>
        </tbody>
      </table>
      <t>If for any one of the endpoints the parameter is absent or set to 0,
or if the two endpoints select incompatible values,
one proposing 0x1 and the other proposing 0x2,
the endpoints MUST fallback to
<xref target="QUIC-TRANSPORT"/> with single path and MUST NOT use any frame or
mechanism defined in this document.</t>
      <t>If an endpoint proposes the value 0x3, the value proposed by the
other is accepted. If both endpoints propose the value 0x3, the
value 0x2 is negotiated.</t>
      <t>If endpoint receives unexpected value for the transport parameter
"enable_multipath", it MUST treat this as a connection error of type
MP_CONNECTION_ERROR and close the connection.</t>
      <t>This extension does not change the definition of any transport parameter
defined in <xref section="18.2." sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>Inline with the definition in <xref target="QUIC-TRANSPORT"/> disable_active_migration
also disables multipath support, except "after a client has acted on a
preferred_address transport parameter" <xref section="18.2." sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>The transport parameter "active_connection_id_limit"
<xref target="QUIC-TRANSPORT"/> limits the number of usable Connection IDs, and also
limits the number of concurrent paths. For the QUIC multipath extension
this limit even applies when no connection ID is exposed in the QUIC
header.</t>
    </section>
    <section anchor="setup">
      <name>Path Setup and Removal</name>
      <t>After completing the handshake, endpoints have agreed to enable
multipath feature and can start using multiple paths. This document 
does not specify how an endpoint that is reachable via several addresses
announces these addresses to the other endpoint. In particular, if the
server uses the preferred_address transport parameter, clients 
SHOULD NOT assume that the initial server address and the addresses 
contained in this parameter can be simultaneously used for multipath. 
Furthermore, this document
does not discuss when a client decides to initiate a new path. We
delegate such discussion in separate documents.</t>
      <t>This proposal adds one multipath control frame for path management:</t>
      <ul spacing="normal">
        <li>PATH_ABANDON frame for the receiver side to abandon the path
<xref target="path-abandon-frame"/></li>
      </ul>
      <t>All the new frames are sent in 1-RTT packets <xref target="QUIC-TRANSPORT"/>.</t>
      <section anchor="path-initiation">
        <name>Path Initiation</name>
        <t>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" sectionFormat="of" target="QUIC-TRANSPORT"/>. After receiving packets from the
client on the new paths, the servers MAY in turn attempt to validate
these paths using the same mechanisms.</t>
        <t>If validation succeed, the client can send non-probing, 1-RTT packets
on the new paths.  In contrast with the specification in
<xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>, the server MUST NOT assume that
receiving non-probing packets on a new path indicates an attempt
to migrate to that path.  Instead, servers SHOULD consider new paths
over which non-probing packets have been received as available
for transmission.</t>
      </section>
      <section anchor="path-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.</t>
        <t>An endpoint that wants to close a path SHOULD NOT rely on implicit
signals like idle time or packet losses, but instead SHOULD use explicit
request to terminate path by sending the PATH_ABANDON frame
(see <xref target="path-abandon-frame"/>).</t>
        <section anchor="use-pathabandon-frame-to-close-a-path">
          <name>Use PATH_ABANDON Frame to Close a Path</name>
          <t>Both endpoints, namely the client and the server, can close a path,
by sending PATH_ABANDON frame (see <xref target="path-abandon-frame"/>) which
abandons the path with a corresponding Path Identifier. Once a path is
marked as "abandoned", it means that the resources related to the path,
such as the used connection IDs, can be released.
However, information related to data delivered over that path SHOULD
not be released immediately as acknowledgments can still be received
or other frames that also may trigger retransmission of data on another
path.</t>
          <t>The endpoint sending the PATH_ABANDON frame SHOULD consider a path as
abandoned when the packet that contained the PATH_ABANDON frame is
acknowledged. When releasing resources of a path, the endpoint SHOULD
send a RETIRE_CONNECTION_ID frame for the connection IDs used on the path,
if any.</t>
          <t>The receiver of a PATH_ABANDON frame SHOULD NOT release its resources
immediately but SHOULD wait for the receive of the RETIRE_CONNECTION_ID
frame for the used connection IDs or 3 RTOs.</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 an mobility
event. The PATH_ABANDON frame therefore indicates to the receiving peer
that the sender does not intend to send any packets on that path anymore
but also recommends to the receiver that no packets should be sent in
either direction. The receiver of an PATH_ABANDON frame MAY also send
an PATH_ABANDON frame to signal its own willingness to not send
any packet on this path anymore.</t>
          <t>If connection IDs are used, 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.
If no connection IDs are used and the PATH_ABANDON frame has to sent
on the path that is intended to be closed, it is possible that the packet
containing the PATH_ABANDON frame or the packet containing the ACK
for the PATH_ABANDON frame cannot be received anymore and the endpoint
might need to rely on an idle time out to close the path, as described
in Section <xref target="idle-time-close"/>.</t>
          <t>Retransmittable frames, that have previously been send on the abandoned
path and are considered lost, SHOULD be retransmitted on a different
path.</t>
          <t>If a PATH_ABANDON frame is received for the only active path of a QUIC
connection, the receiving peer SHOULD send a CONNECTION_CLOSE frame
and enters 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 RTO if a path
probing packet is received on a new path before sending the
CONNECTION_CLOSE frame.</t>
        </section>
        <section anchor="effect-of-retireconnectionid-frame">
          <name>Effect of RETIRE_CONNECTION_ID Frame</name>
          <t>Receiving a RETIRE_CONNECTION_ID frame causes the endpoint to discard
the resources associated with that connection ID. If the connection ID
was used by the peer to identify a path from the peer to this endpoint,
the resources include the list of received packets used to send
acknowledgements. The peer MAY decide to keep sending data using
the same IP addresses and UDP ports previously associated with
the connection ID, but MUST use a different connection ID when doing so.</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 max_idle_timeout milliseconds 
(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        Associated CID have been retired |
 +------------+        Path's idle timeout       |
 |   Active   |----------------------------------+
 +------------+                                  |
       |                                         |
       | PATH_ABANDONED sent/received            |
       v                                         |
 +------------+                                  |
 |   Closing  |                                  |
 +------------+                                  |
       |                                         |
       | Associated CID have been retired        |
       | Path's idle timeout                     |
       v                                         |
 +------------+                                  |
 |   Closed   |<---------------------------------+
 +------------+
]]></artwork>
        </figure>
        <t>In non-final states, hosts have to track the following information.</t>
        <ul spacing="normal">
          <li>Associated 4-tuple: The tuple (source IP, source port, destination IP,
destination port) used by the endhost to send packets over the path.</li>
          <li>Associated Destination Connection ID: The Connection ID used to send
packets over the path.</li>
        </ul>
        <t>If multiple packet number spaces are used over the connection, hosts
MUST also track the following information.</t>
        <ul spacing="normal">
          <li>Path Packet Number Space: The endpoint maintains a separate packet
number for sending and receiving packets over this path. Packet number
considerations described in <xref target="QUIC-TRANSPORT"/> apply within the given path.</li>
        </ul>
        <t>In the "Active" state, hosts MUST also track the following information.</t>
        <ul spacing="normal">
          <li>Associated Source Connection ID: The Connection ID used to receive
packets over the path.</li>
        </ul>
        <t>A path in the "Validating" state performs path validation as described
in <xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>. An endhost should not send
non-probing frames on a path in "Validating" state, as it has no
guarantee that packets will actually reach the peer.</t>
        <t>The endhost can use all the paths in the "Active" state, provided
that the congestion control and flow control currently allow sending
of new data on a path.</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_ABANDONED 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. Consequently, the endhost is not able to
send nor receive packets on this path anymore.</t>
      </section>
    </section>
    <section anchor="congestion-control">
      <name>Congestion Control</name>
      <t>Senders MUST manage per-path congestion status, and MUST NOT send more
data on a given path than congestion control on that path allows.
This is already a requirement of <xref target="QUIC-TRANSPORT"/>.</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 multipath transmission using both a
terrestrial path, with a latency of 50ms in each direction, and a
geostationary satellite path, with a latency of 300ms in both
directions.  The acknowledgement delay will depend on the combination
of paths used for the packet transmission and the ACK transmission,
as shown in <xref target="fig-example-ack-delay"/>.</t>
      <table anchor="fig-example-ack-delay">
        <name>Example of ACK delays using multiple paths</name>
        <thead>
          <tr>
            <th align="left">ACK Path \ Data path</th>
            <th align="left">Terrestrial</th>
            <th align="left">Satellite</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Terrestrial</td>
            <td align="left">100ms</td>
            <td align="left">350ms</td>
          </tr>
          <tr>
            <td align="left">Satellite</td>
            <td align="left">350ms</td>
            <td align="left">600ms</td>
          </tr>
        </tbody>
      </table>
      <t>Using the default algorithm specified in <xref target="QUIC-RECOVERY"/> would result
in suboptimal performance, computing average RTT and standard
deviation from series of different delay measurements of different
combined paths.  At the same time, early tests showed that it is
desirable to send ACKs through the shortest path, because a shorter
ACK delay results in a tighter control loop and better performances.
The tests also showed that it is desirable to send copies of the ACKs
on multiple paths, for robustness if a path experiences sudden losses.</t>
      <t>An early implementation mitigated the delay variation issue by using
time stamps, as specified in <xref target="QUIC-Timestamp"/>.  When the timestamps
are present, the implementation can estimate the transmission delay
on each one-way path, and can then use these one way delays for more
efficient implementations of recovery and congestion control
algorithms.</t>
      <t>If timestamps are not available, implementations could estimate one
way delays using statistical techniques.  For example, in the example
shown in Table 1, implementations can use use "same path"
measurements to estimate the one way delay of the terrestrial path to
about 50ms in each direction, and that of the satellite path to about
300ms.  Further measurements can then be used to maintain estimates
of one way delay variations, using logical similar to Kalman filters.
But statistical processing is error-prone, and using time stamps
provides more robust measurements.</t>
    </section>
    <section anchor="packet-scheduling">
      <name>Packet Scheduling</name>
      <t>The transmission of QUIC packets on a regular QUIC connection is regulated
by the arrival of data from the application and the congestion control
scheme. QUIC packets can only be sent when the congestion window of
at least one path is open.</t>
      <t>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. Many factors can influence
the definition of these algorithms and their precise definition is
outside the scope of this document. Various packet schedulers have been
proposed and implemented, notably for Multipath TCP. A companion draft
<xref target="I-D.bonaventure-iccrg-schedulers"/> provides several general-purpose
packet schedulers depending on the application goals.</t>
    </section>
    <section anchor="recovery">
      <name>Recovery</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="packet-number-space-and-use-of-connection-id">
      <name>Packet Number Space and Use of Connection ID</name>
      <t>If the connection ID is present (non-zero length) in the packet header,
the connection ID is used to identify the path.
If no connection ID is present, the 4 tuple identifies the path.
The initial path that is used during the handshake (and multipath negotiation)
has the path ID 0 and therefore all 0-RTT packets are also tracked and
processed with the path ID 0.
For 1-RTT packets the path ID is the sequence number of
the Destination Connection ID present in the packet header, as defined
in <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>, or also 0 if the Connection ID
is zero-length.</t>
      <t>If non-zero-length Connection IDs are used, an endpoint MUST use
different Connection IDs on different paths.
Still, the receiver may observe the same Connection ID used on different
4-tuples due to, e.g., NAT rebinding. In such case, the receiver reacts
as specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>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 path identifiers. If for any reason
ACK frames are received in 1-RTT packets while the state of multipath
negotiation is ambiguous, they MUST be interpreted as acknowledging
packets sent on path 0.</t>
      <t>Endpoints negotiate the use of one packet number space for all paths or
separate packet number spaces per path during the connection handshake
<xref target="nego"/>. While separate packet number spaces allow for more efficient
ACK encoding, especially when paths have highly different latencies,
this approach requires the use of a connection ID. Therefore use of
a single number space can be beneficial when endpoints use zero-length
connection ID for less overhead.</t>
      <section anchor="using-one-packet-number-space">
        <name>Using One Packet Number Space</name>
        <t>If the multipath option is negotiated to use one packet number space
for all paths, the packet sequence numbers are allocated from the common
number space, so that, for example, packet number N could be sent
on one path and packet number N+1 on another.</t>
        <t>ACK frames report the numbers of packets that have been received so far,
regardless of the path on which they have been received. That means
the senders needs to maintain an association between sent packet numbers
and the path over which these packets were sent. This is necessary
to implement per path congestion control.</t>
        <t>When a packet is acknowledged, the state of the congestion control
MUST be updated for the path where the acknowledged packet
was originally sent. The RTT is calculated based on the delay
between the transmission of that packet and its first acknowledgement
(see <xref target="compute-rtt"/>) and is used to update the RTT statistics
for the sending path.</t>
        <t>Also loss detection MUST be adapted to allow for different RTTs on
different paths.  For example, timer computations should take into
account the RTT of the path on which a packet was sent.  Detections
based on packet numbers shall compare a given packet number to the
highest packet number received for that path.</t>
        <section anchor="sending-acknowledgements-and-handling-ranges">
          <name>Sending Acknowledgements and Handling Ranges</name>
          <t>If senders decide to send packets on paths with different
transmission delays, some packets will very likely be received out
of order.  This will cause the ACK frames to carry multiple ranges of
received packets.  The large number of range increases the size of
ACK frames, causing transmission and processing overhead.</t>
          <t>The size and overhead of the ACK frames can
be controlled by the combination of one or several of the following:</t>
          <ul spacing="normal">
            <li>Not transmitting again ACK ranges that were present in an ACK
frame acknowledged by the peer.</li>
            <li>Delay acknowledgements to allow for arrival of "hole filling"
packets.</li>
            <li>Limit the total number of ranges sent in an ACK frame.</li>
            <li>Limiting the number of transmissions of a specific ACK range, on
the assumption that a sufficient number of transmissions almost
certainly ensures reception by the peer.</li>
            <li>Send multiple messages for a given path in a single socket
operation, so that a series of packets sent from a single path
uses a series of consecutive sequence numbers without creating
holes.</li>
          </ul>
        </section>
        <section anchor="ack-delay-considerations">
          <name>ACK Delay Considerations</name>
          <t>The ACK Delay field of the ACK frame is relative to the largest
acknowledged packet number (see <xref section="13.2.5" sectionFormat="of" target="QUIC-TRANSPORT"/>).
When using paths with different transmission delays, the reported host
delay will most of the time relate to the path with the shortest latency.
To collect ACK delays on all the paths, hosts should rely on time stamps
as described in <xref target="QUIC-Timestamp"/>.</t>
        </section>
      </section>
      <section anchor="using-multiple-packet-number-spaces">
        <name>Using Multiple Packet Number Spaces</name>
        <t>If the multipath option is enabled with a value of 2, each path has
its own packet number space for transmitting 1-RTT packets and a new
ACK frame format is used as specified in <xref target="ack-mp-frame"/>.
Compared to the QUIC version 1 ACK frame, the ACK_MP frames additionally
contains a Packet Number Space Identifier (PN Space ID).
The PN Space ID used to distinguish packet number spaces for different
paths and is simply derived from the sequence number of
Destination Connection ID.
Therefore, the packet number space for 1-RTT packets can be identified
based on the Destination Connection ID in each packets.</t>
        <t>As soon as the negotiation of multipath support with value 2 is completed,
endpoints SHOULD use ACK_MP frames instead of ACK frames for
acknowledgements of 1-RTT packets on path 0, as well as for 0-RTT packets
that are acknowledged after the handshake concluded.</t>
        <t>Following <xref target="QUIC-TRANSPORT"/>, each endpoint uses NEW_CONNECTION_ID frames
to issue usable connections IDs to reach it. Before an endpoint adds
a new path by initiating path validation, it MUST check whether at least
one unused Connection ID is available for each side.</t>
        <t>If the transport parameter "active_connection_id_limit" is negotiated as N,
the server provided N Connection IDs, and the client is already actively
using N paths, the limit is reached. If the client wants to start
a new path, it has to retire one of the established paths.</t>
        <t>ACK_MP frame <xref target="ack-mp-frame"/> can be returned via either a different path,
or the same path identified by the Path Identifier, based on different
strategies of sending ACK_MP frames.</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 anchor="multipath-aead">
          <name>Packet Protection for QUIC Multipath</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. If 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 path identifier.</t>
          <t>The path ID for 1-RTT packets is the sequence number of
of <xref target="QUIC-TRANSPORT"/>, or zero if the Connection ID is zero-length.
<xref section="19" sectionFormat="of" target="QUIC-TRANSPORT"/> encodes the Connection ID Sequence Number
as a variable-length integer, allowing values up to 2^62-1;
in this specification a range of less than 2^32-1 values MUST be used
before updating the packet protection key.</t>
          <t>To calculate the nonce, a 96 bit path-and-packet-number is composed of
the 32 bit Connection ID Sequence Number in byte order, two zero bits,
and the 62 bits of the reconstructed QUIC packet number in network byte order.
If the IV is larger than 96 bits, the path-and-packet-number is
left-padded with zeros to the size of the IV. The exclusive OR
of the padded packet number and the IV forms the AEAD nonce.</t>
          <t>For example, assuming the IV value is <tt>6b26114b9cba2b63a9e8dd4f</tt>,
the connection ID sequence number is <tt>3</tt>, and the packet number is <tt>aead</tt>,
the nonce will be set to <tt>6b2611489cba2b63a9e873e2</tt>.</t>
        </section>
        <section anchor="multipath-key-update">
          <name>Key Update for QUIC Multipath</name>
          <t>The Key Phase bit update process for QUIC version 1 is specified in
<xref section="6" sectionFormat="of" target="QUIC-TLS"/>.
The general principles of key update are not changed in this
specification. Following QUIC version 1, the Key Phase bit is used to
indicate which packet protection keys are used to protect the packet.
The Key Phase bit is toggled to signal each subsequent key update.
Because of network delays, packets protected with the older key might
arrive later than the packets protected with the new key. Therefore,
the endpoint needs to retain old packet keys to allow these delayed
packets to be processed and it must distinguish between the new key
and the old key. In QUIC version 1, this is done using packet numbers
so that the rule is made simple: Use the older key if packet number is
lower than any packet number frame the current key phase.</t>
          <t>When using multiple packet number spaces on different paths,
some care is needed when initiating the Key Update process,
as different paths use different packet number spaces but share
a single key. When a key update is initiated on one path, packets sent to
another path needs to know when the transition is complete. Otherwise,
it is possible that the other paths send packets with the old keys,
but skip sending any packets in the current key phase and directly
jump to sending packet in the next key phase. When that happens,
as the endpoint can only retain two sets of packet protection keys
with the 1-bit Key Phase bit, the other paths cannot distinguish
which key should be used to decode received packets, which results in
a key rotation synchronization problem.</t>
          <t>To address such a synchronization issue, if key update is
initialized on one path, the sender SHOULD send at least one packet
with the new key on all active paths. Further, an endpoint MUST NOT
initiate a subsequent key update until a packet with the current key
has been acknowledged on each path.</t>
          <t>Following <xref section="5.4" sectionFormat="of" target="QUIC-TLS"/>, the Key Phase bit is protected,
so sending multiple packets with Key Phase bit flipping at the same time
should not cause linkability issue.</t>
        </section>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="path-establishment">
        <name>Path Establishment</name>
        <t><xref target="fig-example-new-path"/> illustrates an example of new path establishment
using multiple packet number spaces.</t>
        <figure anchor="fig-example-new-path">
          <name>Example of new path establishment</name>
          <artwork><![CDATA[
   Client                                                  Server

   (Exchanges start on default path)
   1-RTT[]: NEW_CONNECTION_ID[C1, Seq=1] -->
                       <-- 1-RTT[]: NEW_CONNECTION_ID[S1, Seq=1]
                       <-- 1-RTT[]: NEW_CONNECTION_ID[S2, Seq=2]
   ...
   (starts new path)
   1-RTT[0]: DCID=S2, PATH_CHALLENGE[X] -->
                   Checks AEAD using nonce(CID sequence 2, PN 0)
     <-- 1-RTT[0]: DCID=C1, PATH_RESPONSE[X], PATH_CHALLENGE[Y],
                                              ACK_MP[Seq=2,PN=0]
   Checks AEAD using nonce(CID sequence 1, PN 0)
   1-RTT[1]: DCID=S2, PATH_RESPONSE[Y],
             ACK_MP[Seq=1, PN=0], ... -->

]]></artwork>
        </figure>
        <t>In Figure <xref target="fig-example-new-path"/>, the endpoints first exchange
new available Connection IDs with the NEW_CONNECTION_ID frame.
In this example the client provides one Connection ID (C1 with
sequence number 1), and server provides two Connection IDs
(S1 with sequence number 1, and S2 with sequence number 2).</t>
        <t>Before the client opens a new path by sending an 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 used, 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 when both
the client and the server use non-zero-length CIDs. For the first path, the
server's 1-RTT packets use DCID C1, which has a sequence number of 1; the
client's 1-RTT packets use DCID S2, which has a sequence number of 2. For the
second path, the server's 1-RTT packets use DCID C2, which has a sequence
number of 2; the client's 1-RTT packets use DCID S3, which has a sequence number
of 3. Note that the paths use different packet number spaces. In this case, the
client is going to close the first path. It identifies the path by the sequence
number of the received packet's DCID over that path (path identifier type
0x00), hence using the path_id 1. Optionally, the server confirms the path closure 
by sending an PATH_ABANDON frame using
the sequence number of the received packet's DCID over that path (path
identifier type 0x00) as path identifier, which corresponds to the path_id 2. 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 when both the client and the server choose to receive non-zero-length CIDs.</name>
          <artwork><![CDATA[
Client                                                      Server

(client tells server to abandon a path)
1-RTT[X]: DCID=S2 PATH_ABANDON[path_id_type=0, path_id=1]->
                           (server tells client to abandon a path)
      <-1-RTT[Y]: DCID=C1 PATH_ABANDON[path_id_type=0, path_id=2],
                                               ACK_MP[Seq=2, PN=X]
(client retires the corresponding CID)
1-RTT[U]: DCID=S3 RETIRE_CONNECTION_ID[2], ACK_MP[Seq=1, PN=Y] ->
                            (server retires the corresponding CID)
 <- 1-RTT[V]: DCID=C2 RETIRE_CONNECTION_ID[1], ACK_MP[Seq=3, PN=U]
]]></artwork>
        </figure>
        <t><xref target="fig-example-path-close2"/> illustrates an example of path closing when the
client chooses to receive zero-length CIDs while the server chooses to receive
non-zero-length CIDs.  Because there is a zero-length CID in one direction,
single packet number spaces are used. For the first path, the client's 1-RTT
packets use DCID S2, which has a sequence number of 2. For the second path, the
client's 1-RTT packets use DCID S3, which has a sequence number of 3. Again, in
this case, the client is going to close the first path. Because the client now
receives zero-length CID packets, it needs to use path identifier type 0x01,
which identifies a path by the DCID sequence number of the packets it sends
over that path, and hence, it uses a path_id 2 in its PATH_ABANDON frame. The
server SHOULD stop sending new data on the path indicated by the PATH_ABANDON
frame after receiving it. However, The client may want to repeat the
PATH_ABANDON frame if it sees the server continuing to send data. When the
client's PATH_ABANDON frame is acknowledged, it sends out a
RETIRE_CONNECTION_ID frame for the CID used on the first path. The server can
readily close the first path when it receives the RETIRE_CONNECTION_ID frame
from the client.  However, since the client will not receive a
RETIRE_CONNECTION_ID frame, after sending out the RETIRE_CONNECTION_ID frame, the
client waits for 3 RTO before closing the path.</t>
        <figure anchor="fig-example-path-close2">
          <name>Example of closing a path when the client chooses to receive zero-length CIDs while the server chooses to receive non-zero-length CIDs</name>
          <artwork><![CDATA[
  Client                                                      Server

  (client tells server to abandon a path)
  1-RTT[X]: DCID=S2 PATH_ABANDON[path_id_type=1, path_id=2]->
                             (server stops sending on that path after
                                              receiving PATH_ABANDON)
  (client retires the corresponding CID
      after PATH_ABANDON is acknowledged)
  1-RTT[X+1]: DCID=S3 RETIRE_CONNECTION_ID[2]->
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <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>
    <section anchor="frames">
      <name>New Frames</name>
      <t>All the new frames MUST only be sent in 1-RTT packet, and MUST NOT
use other encryption levels.</t>
      <t>If an endpoint receives multipath-specific frames from packets of
other encryption levels, it MUST return MP_PROTOCOL_VIOLATION
as a connection error and close the connection.</t>
      <section anchor="path-abandon-frame">
        <name>PATH_ABANDON Frame</name>
        <t>The PATH_ABANDON frame informs the peer to abandon a
path. More complex path management can
be made possible with additional extensions (e.g., PATH_STATUS frame in
<xref target="I-D.liu-multipath-quic"/> ).</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-03 (experiments use 0xbaba05),
    Path Identifier (..),
    Error Code (i),
    Reason Phrase Length (i),
    Reason Phrase (..),
  }
]]></artwork>
        </figure>
        <t>PATH_ABANDON frames contain the following fields:</t>
        <t>Path Identifier: An identifier of the path, which is formatted as shown
in <xref target="fig-path-identifier-format"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Identifier Type: Identifier Type field is set to indicate the type of
path identifier.
            </t>
            <ul spacing="normal">
              <li>Type 0: Refer to the connection identifier issued by the sender of
the control frame. 
Note that this is the connection identifier used by the peer 
when sending packets on the to-be-closed path.
This method SHOULD be used if this connection identifier is non-zero
length. This method MUST NOT be used if this connection identifier
is zero-length.</li>
              <li>Type 1: Refer to the connection identifier issued by the receiver of
the control frame.
Note that this is the connection identifier used by the sender 
when sending packets on the to-be-closed path.
This method MUST NOT be used if this connection identifier is zero-length.</li>
              <li>Type 2: Refer to the path over which the control frame is sent or
received.</li>
            </ul>
          </li>
          <li>Path Identifier Content: A variable-length integer specifying the path
identifier. If Identifier Type is 2, the Path Identifier Content MUST
be empty.</li>
        </ul>
        <figure anchor="fig-path-identifier-format">
          <name>Path Identifier Format</name>
          <artwork><![CDATA[
  Path Identifier {
    Identifier Type (i) = 0x00..0x02,
    [Path Identifier Content (i)],
  }
]]></artwork>
        </figure>
        <t>Note: If the receiver of the PATH_ABANDON frame is using non-zero
length Connection ID on that path, endpoint SHOULD use type 0x00
for path identifier in the control frame. If the receiver of
the PATH_ABANDON frame is using zero-length Connection ID, but the peer
is using non-zero length Connection ID on that path, endpoints SHOULD
use type 0x01 for path identifier. If both endpoints are using 0-length
Connection IDs on that path, endpoints SHOULD only use type 0x02
for path identifier.</t>
        <dl>
          <dt>Error Code:</dt>
          <dd>
            <t>A variable-length integer that indicates the reason for abandoning
this path.</t>
          </dd>
          <dt>Reason Phrase Length:</dt>
          <dd>
            <t>A variable-length integer specifying the length of the reason phrase
in bytes. Because an PATH_ABANDON frame cannot be split between packets,
any limits on packet size will also limit the space available for
a reason phrase.</t>
          </dd>
          <dt>Reason Phrase:</dt>
          <dd>
            <t>Additional diagnostic information for the closure. This can be
zero length if the sender chooses not to give details beyond
the Error Code value. This SHOULD be a UTF-8 encoded string <xref target="RFC3629"/>,
though the frame does not carry information, such as language tags,
that would aid comprehension by any entity other than the one
that created the text.</t>
          </dd>
        </dl>
        <t>PATH_ABANDON frames SHOULD be acknowledged. If a packet containing
a PATH_ABANDON frame is considered lost, the peer SHOULD repeat it.</t>
        <t>If the Identifier Type is 0x00 or 0x01, PATH_ABANDON frames MAY be sent
on any path, not only the path identified by the Path Identifier Content
field. If the Identifier Type if 0x02, the PATH_ABANDON frame MUST only
be sent on the path that is intended to be abandoned.</t>
      </section>
      <section anchor="ack-mp-frame">
        <name>ACK_MP Frame</name>
        <t>The ACK_MP frame (types TBD-00 and TBD-01; experiments use 0xbaba00..0xbaba01)
is an extension of the ACK frame defined by <xref target="QUIC-TRANSPORT"/>. It is
used to acknowledge packets that were sent on different paths when using
multiple packet number spaces. If the frame type is TBD-01, ACK_MP frames
also contain the sum of QUIC packets with associated ECN marks received
on the connection up to this point.</t>
        <t>ACK_MP frame is formatted as shown in <xref target="fig-ack-mp-format"/>.</t>
        <figure anchor="fig-ack-mp-format">
          <name>ACK_MP Frame Format</name>
          <artwork><![CDATA[
  ACK_MP Frame {
    Type (i) = TBD-00..TBD-01 (experiments use 0xbaba00..0xbaba01),
    Packet Number Space 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>
        <t>Packet Number Space Identifier: An identifier of the path packet number
space, which is the sequence number of Destination Connection ID of
the 1-RTT packets which are acknowledged by the ACK_MP frame.
If the endpoint receives 1-RTT packets with zero-length Connection ID,
it SHOULD use Packet Number Space Identifier 0 in ACK_MP frames.
If an endpoint receives a ACK_MP frame with a non-existing packet number
space ID, it MUST treat this as a connection error of type
MP_PROTOCOL_VIOLATION and close the connection.</t>
        <t>When using a single packet number space, endhosts MUST NOT send ACK_MP frames.
If an endhost receives an ACK_MP frame while a single packet number space
was negotiated, it MUST treat this as a connection error of type
MP_PROTOCOL_VIOLATION and close the connection.</t>
      </section>
    </section>
    <section anchor="error-codes">
      <name>Error Codes</name>
      <t>Multipath QUIC transport error codes are 62-bit unsigned integers
following <xref target="QUIC-TRANSPORT"/>.</t>
      <t>This section lists the defined multipath QUIC transport error codes
that can be used in a CONNECTION_CLOSE frame with a type of 0x1c.
These errors apply to the entire connection.</t>
      <t>MP_PROTOCOL_VIOLATION (experiments use 0xba01): An endpoint detected
an error with protocol compliance that was not covered by
more specific error codes.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document defines a new transport parameter for the negotiation of
enable multiple paths for QUIC, and two 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 (experiments use 0xbabf)</td>
            <td align="left">enable_multipath</td>
            <td align="left">
              <xref target="nego"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following frame types defined in <xref target="frame-types"/> should be added to
the "QUIC Frame Types" registry under the "QUIC Protocol" heading.</t>
      <table anchor="frame-types">
        <name>Addition to QUIC Frame Types Entries</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Frame Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD-00 - TBD-01 (experiments use 0xbaba00-0xbaba01)</td>
            <td align="left">ACK_MP</td>
            <td align="left">
              <xref target="ack-mp-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-02 (experiments use 0xbaba05)</td>
            <td align="left">PATH_ABANDON</td>
            <td align="left">
              <xref target="path-abandon-frame"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following transport error code defined in <xref target="tab-error-code"/> should
be added to the "QUIC Transport Error Codes" registry under
the "QUIC Protocol" heading.</t>
      <table anchor="tab-error-code">
        <name>Error Code for Multipath QUIC</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Code</th>
            <th align="left">Description</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD (experiments use 0xba01)</td>
            <td align="left">MP_PROTOCOL_VIOLATION</td>
            <td align="left">Multipath protocol violation</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>This document is a collaboration of authors that combines work from
three proposals. Further contributors that were also involved
one of the original proposals are:</t>
      <ul spacing="normal">
        <li>Qing An</li>
        <li>Zhenyu Li</li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TBD</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau">
              <organization/>
            </author>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC6356">
          <front>
            <title>Coupled Congestion Control for Multipath Transport Protocols</title>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu">
              <organization/>
            </author>
            <author fullname="M. Handley" initials="M." surname="Handley">
              <organization/>
            </author>
            <author fullname="D. Wischik" initials="D." surname="Wischik">
              <organization/>
            </author>
            <date month="October" year="2011"/>
            <abstract>
              <t>Often endpoints are connected by multiple paths, but communications are usually restricted to a single path per connection.  Resource usage within the network would be more efficient were it possible for these multiple paths to be used concurrently.  Multipath TCP is a proposal to achieve multipath transport in TCP.</t>
              <t>New congestion control algorithms are needed for multipath transport protocols such as Multipath TCP, as single path algorithms have a series of issues in the multipath context.  One of the prominent problems is that running existing algorithms such as standard TCP independently on each path would give the multipath flow more than its fair share at a bottleneck link traversed by more than one of its subflows.  Further, it is desirable that a source with multiple paths available will transfer more traffic using the least congested of the paths, achieving a property called "resource pooling" where a bundle of links effectively behaves like one shared link with bigger capacity.  This would increase the overall efficiency of the network and also its robustness to failure.</t>
              <t>This document presents a congestion control algorithm that couples the congestion control algorithms running on different subflows by linking their increase functions, and dynamically controls the overall aggressiveness of the multipath flow.  The result is a practical algorithm that is fair to TCP at bottlenecks while moving traffic away from congested links.  This document defines an Experimental  Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6356"/>
          <seriesInfo name="DOI" value="10.17487/RFC6356"/>
        </reference>
        <reference anchor="I-D.bonaventure-iccrg-schedulers">
          <front>
            <title>Multipath schedulers</title>
            <author fullname="Olivier Bonaventure">
              <organization>UCLouvain</organization>
            </author>
            <author fullname="Maxime Piraux">
              <organization>UCLouvain</organization>
            </author>
            <author fullname="Quentin De Coninck">
              <organization>UCLouvain</organization>
            </author>
            <author fullname="Matthieu Baerts">
              <organization>Tessares</organization>
            </author>
            <author fullname="Christoph Paasch">
              <organization>Apple</organization>
            </author>
            <author fullname="Markus Amend">
              <organization>Deutsche Telekom</organization>
            </author>
            <date day="25" month="October" year="2021"/>
            <abstract>
              <t>   This document proposes a series of abstract packet schedulers for
   multipath transport protocols equipped with a congestion controller.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bonaventure-iccrg-schedulers-02"/>
        </reference>
        <reference anchor="QUIC-RECOVERY">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="QUIC-Invariants">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </reference>
        <reference anchor="QUIC-Timestamp">
          <front>
            <title>Quic Timestamps For Measuring One-Way Delays</title>
            <author fullname="Christian Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date day="6" month="March" year="2022"/>
            <abstract>
              <t>   The TIMESTAMP frame can be added to Quic packets when one way delay
   measurements are useful.  The timestamp is set to the number of
   microseconds from the beginning of the node's epoch to the time at
   which the packet is sent.  The draft defines the "enable_timestamp"
   transport parameter for negotiating the use of this extension frame,
   and the TIMESTAMP frame.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-huitema-quic-ts-07"/>
        </reference>
        <reference anchor="OLIA">
          <front>
            <title>MPTCP is not pareto-optimal: performance issues and a possible solution</title>
            <author initials="R." surname="Khalili">
              <organization/>
            </author>
            <author initials="N." surname="Gast">
              <organization/>
            </author>
            <author initials="M." surname="Popovic">
              <organization/>
            </author>
            <author initials="U." surname="Upadhyay">
              <organization/>
            </author>
            <author initials="J." surname="Le Boudec">
              <organization/>
            </author>
            <date year="2012"/>
          </front>
          <seriesInfo name="Proceedings of the 8th international conference on Emerging networking experiments and technologies, ACM" value=""/>
        </reference>
        <reference anchor="I-D.liu-multipath-quic">
          <front>
            <title>Multipath Extension for QUIC</title>
            <author fullname="Yanmei Liu">
              <organization>Alibaba Inc.</organization>
            </author>
            <author fullname="Yunfei Ma">
              <organization>Alibaba Inc.</organization>
            </author>
            <author fullname="Christian Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <author fullname="Qing An">
              <organization>Alibaba Inc.</organization>
            </author>
            <author fullname="Zhenyu Li">
              <organization>ICT-CAS</organization>
            </author>
            <date day="5" month="September" year="2021"/>
            <abstract>
              <t>   This document specifies multipath extension for the QUIC protocol to
   enable the simultaneous usage of multiple paths for a single
   connection.  The extension is compliant with the single-path QUIC
   design.  The design principle is to support multipath by adding
   limited extension to [QUIC-TRANSPORT].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-liu-multipath-quic-04"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIABfcJWIAA819bXvb1rHg9/MrcOUPkW5JRpLT3ERtdyvLSqONLamSnDSb
zXVBEiRRkwALgJJVO/3tO6/nzAFASc7t3mf9PG0oEjgvM3PmfeYMh0PX5M0y
O0peb5ZNvk6bRXL6vsmKOi+LZFZWyZ/fnJ24dDyuslv7EH09LSdFuoKXp1U6
a4Z51syGf9/kk+FKnxvuH7hp2sAjH14e35z+4ibwx7ys7o+Supk6l6+ro6Sp
NnVzuL//9f6hS6ssPUpuqrSo12XVuLuyejevys36iKZMfoC/82Ke/Am/c++y
e3hgepScFU1WFVkzfIkrca5u0mL6Nl2WBUx9n9VunR8lPzXlZJDUMGyVzWr4
dL/CDz87l26aRVkduaFLkryoj5IfR8mrfAN/8f5+TItVlstXVYnwyqZ5U1bw
Z1nNj5LjZT5OxymsYzKC77JVmi+PklWeln/LR8v71R9TfmCYwwOTckUz+ale
p/iXTLUpZjAVf9U3tg5+Tw+OVukDY/95lLzMkpOygJ/ehTn+vMmKJi9av7X2
xZO/OXlVbm7TvDAz/51fH02zCb/9x81kyU+NxpmZ/mKUvCiL9BYe31RZmP9i
md/mWdX+ceuEJT8/Gofnt015Mkq+3eQNvBimO1lUed3kaWF/oskuq/wWCDK5
mDTlelO3Qbzgx/8o/x0BgZmpXo+S7zbZYpnd5cU0zPY6r/6Wtn7pBe1plU/q
urQbXeG7o3f+3T9m8gzh1bmirFZpk99mR/DS1TcnhwcHX+NHPBrDm6vj8+vL
i6ubo6SaTb7e39/3v7y61u8O4MwVs9YwXz7/7Zf48Wz40sJ4mE8m1XxYTxbZ
dLPMqtpPdXV6cvH96dWPOuqh/nBW3KYVQLqp6aevvv76a7+IfJXBsVzBScZ5
BKbML5oanrp4dXaMMySJsKSd15c3J5dJXidF2SRrYA1NOSzXTb5KAVbrrKJ9
FJMMHqk3WZ3AmXdpsi7rOh8vMzjpy00DfGyHBmU2tHO4f3DIX9QA3KxGaMDX
l1U5yQBBxbxOylnSLLLkK2BzOfGVFEdJlwmQ+yyrMpwR0Ha6yqo58iIgizth
S9l7WBZsFACAq0mabLIoymU5h5kGyfHJa55a+Q1+JoJSmroCmlrAeV7m3d/O
R8mf0rrp/gCEeFmuy9t80v3tzSh5s06ni/v0vvvj/xoNkdFlcBA3cJiBwIbD
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
xkOsNbXy38R3bYgkJ0tUQOR1LJp/O2yEpVBCck6xYk1KtshG1iEv3KVAvS1N
Tl00fbtw8S56qBdZ1fPk6uYCFYM3kvPO2QzeUxBiy3244FHHlknErvMoay+Q
+QSPMWcpkKxkoTDVTGKQ8/7457TMOyFuPBhicALIWXHPRvMRihPM9WOvQCuX
j52qPRtofEp8UBVkyUZfA1njPBiQbOKwSYOERNlwSFAgglppG+pvotU6Ttig
sgIwLFcUgYimVDiBRasDhVoC0bed5BWHxL+kQ3pF34ZRi6TZcbGu/xncCkk2
IktMhELgAyQKSfsjY5Tf183yXvM62itrmy2S04jCoGdqn7JSiz7ME+ARwznJ
oerpQs1eRgDz1nEmARqEx8YH12BUBz8F1qPp8rFuYtGFrq0lpnnBEazKdxmo
aGezjpchbCekTHQBip4dpo/GGb7x8A40rcjX5ngKlHRG4ZQPMGE5+IKh1vPH
J985ZQ09707QW9BYcaJY9TtVhooFQouGkq2lyOKecWd1ok0TVCvPOKNsPheF
M/HVIb46pHfIgrxSSdU0rOkSzQySUJwAquRtzvY+h3CzwrNqj33n/b+IPBVR
sHiYqBkot6Wd+/nEKxfSU1Qonm1h8rlJ/lEwE/2aWBtLiFa4etDDfXRNIrIM
lz95daFmKSXsZpgqWQs3Zoc5pY+GTBZW5AJSo8W3RMYSbbly7aPQ6P8lM5RV
2aa6R6TSA8HqQkeR8+aISb30xrg5QrhI9Ivls04YfAYj1I4yR/o3HMPYF5aQ
qBkl1/kKVlAt7521KGH1XoymyFfRIUs+RSRepFRV+NDiAcnIaULkGokNimj2
2OyUwgKjIrn+HYh+fgo0NSGjrlcZIW0dqV9J4kGlZZJ6z1ywb8ghPUmrqYtV
3m75UzslsD8Fyt2lsejXCqtWJllAiz7AVUKysEFrOZLLw7THOXsBxioMNTLL
EiioguxFIzlIkyGuvSGbvMuytccIKbjkJHHeSRKyYbkQOXnz8jLhuh7DVVoA
66bos7FHngtyT5mEttg/TdrvtKQTWgohnCG/xDprZJcfnrV5oOtzyUuZGxK0
nvioZKMWv+09MoJ7YsnM98sSGF4xZ4jZrBpl2iVZre1clpDpitHsHa+ltKrL
7gX/wkmmmyrKOLKT7IzYDxinZOXGXxI8MuzbI8dD179Uu21ZyDT+iksf02Lb
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
cTPH0R2jssn/C7ecZPXgxwAA

-->

</rfc>
