<?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.17 (Ruby 3.3.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-09" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-09"/>
    <author fullname="刘彦梅" asciiFullname="Yanmei Liu" role="editor">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="马云飞" asciiFullname="Yunfei Ma">
      <organization>Uber Technologies Inc.</organization>
      <address>
        <email>yunfei.ma@uber.com</email>
      </address>
    </author>
    <author initials="Q." surname="De Coninck" fullname="Quentin De Coninck" role="editor">
      <organization>University of Mons (UMONS)</organization>
      <address>
        <email>quentin.deconinck@umons.ac.be</email>
      </address>
    </author>
    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain and Tessares</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <author initials="C." surname="Huitema" fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <email>huitema@huitema.net</email>
      </address>
    </author>
    <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind" role="editor">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <date/>
    <area>Transport</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 80?>

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

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies an extension to QUIC version 1 <xref target="QUIC-TRANSPORT"/>
to enable the simultaneous usage of multiple paths for a single
connection. This contrasts with
the base QUIC protocol <xref target="QUIC-TRANSPORT"/> that includes a connection migration mechanism that
selects only one path at a time to exchange such packets.</t>
      <t>The path management specified in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>
fulfills multiple goals: it directs a peer to switch sending through
a new preferred path, and it allows the peer to release resources
associated with the old path. The multipath extension specified in this document requires
several changes to that mechanism:</t>
      <ul spacing="normal">
        <li>
          <t>Simultaneous transmission of non-probing packets on multiple
paths.</t>
        </li>
        <li>
          <t>Continuous use of an existing path even if non-probing packets have
been received on another path.</t>
        </li>
        <li>
          <t>Introduction of an path idendifier to manage connection IDs and
packet number spaces per path.</t>
        </li>
        <li>
          <t>Removal of paths that have been abandoned.</t>
        </li>
      </ul>
      <t>As such, this extension specifies a departure from the specification of
path management in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/> and therefore
requires negotiation between the two endpoints using a new transport
parameter, as specified in <xref target="nego"/>. Further, as different packet number
spaces are used for each path, this specification requires the use of
non-zero connection IDs in order to identify the path and respective
packet number space.</t>
      <t>To add a new path to an existing QUIC connection with multipath support,
a client starts a path validation on
the chosen path, as further described in <xref target="path-initiation"/>.
A new path can only be used once the associated 4-tuple has been validated
by ensuring that the peer is able to receive packets at that address
(see <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/>).
In this version of the document, a QUIC server does not initiate the creation
of a path, but it can validate a new path created by a client.</t>
      <t>Each endpoint may use several IP addresses for the connection. In
particular, the multipath extension supports the following scenarios.</t>
      <ul spacing="normal">
        <li>
          <t>The client uses multiple IP addresses and the server listens on only
one.</t>
        </li>
        <li>
          <t>The client uses only one IP address and the server listens on
several ones.</t>
        </li>
        <li>
          <t>The client uses multiple IP addresses and the server listens on
several ones.</t>
        </li>
        <li>
          <t>The client uses only one IP address and the server
listens on only one.</t>
        </li>
      </ul>
      <t>Note that in the last scenario, it still remains possible to have
multiple paths over the connection, given that a path is not only
defined by the IP addresses being used, but also the port numbers.
In particular, the client can use one or several ports per IP
address and the server can listen on one or several ports per IP
address.</t>
      <t>In addition to these core features, an application using the multipath extension will typically
need additional algorithms to handle the number of active paths and how they are used to
send packets. As these differ depending on the application's requirements,
this proposal only specifies a simple basic packet
scheduling algorithm (see Section <xref target="packet-scheduling"/>),
in order to provide some basic implementation
guidance. However, more advanced algorithms as well as potential
extensions to enhance signaling of the current path status are expected
as future work.</t>
      <t>Further, this proposal does also not cover address discovery and management. Addresses
and the actual decision process to setup or tear down paths are assumed
to be handled by the application that is using the QUIC multipath
extension. This is sufficient to address the first aforementioned
scenario. However, this document does not prevent future extensions from
defining mechanisms to address the remaining scenarios.</t>
      <section anchor="basic-design-points">
        <name>Basic Design Points</name>
        <t>This proposal is based on several basic design points:</t>
        <ul spacing="normal">
          <li>
            <t>Re-use as much as possible mechanisms of QUIC version 1. In
particular, this proposal uses path validation as specified for QUIC
version 1 and aims to re-use as much as possible of QUIC's connection
migration.</t>
          </li>
          <li>
            <t>Use the same packet header formats as QUIC version 1 to minimize
the difference between multipath and non-multipath traffic being
exposed on wire.</t>
          </li>
          <li>
            <t>Congestion Control must be per-path (following <xref target="QUIC-TRANSPORT"/>)
which usually also requires per-path RTT measurements</t>
          </li>
          <li>
            <t>PMTU discovery should be performed per-path</t>
          </li>
          <li>
            <t>The use of this multipath extension requires the use of non-zero
length connection IDs in both directions.</t>
          </li>
          <li>
            <t>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>Further the design of this extension introduces an explicit path identifier
and use of multiple packet number spaces as further explained in the next sections.</t>
      </section>
      <section anchor="introduction-of-an-explicit-path-identifier">
        <name>Introduction of an Explicit Path Identifier</name>
        <t>This extension specifies a new path identifier (Path ID), which is an
integer between 0 and 2^32 - 1 (inclusive). Path identifies are generated
monotonically increasing and cannot be reused.
The connection ID of a packet binds the packet to a path identifier, and therefore
to a packet number space.</t>
        <t>The same Path ID is used in both directions to
address a path in the new multipath control frames,
such as PATH_ABANDON <xref target="path-abandon-frame"/>, PATH_STANDBY <xref target="path-standby-frame"/>},
PATH_AVAILABLE <xref target="path-available-frame"/> as well as ACK_MP <xref target="ack-mp-frame"/>.
Further, connection IDs are issued per Path ID.
That means each connection ID is associated with exactly one path identifier
but multiple connection IDs are usually issued for each path identifier.</t>
        <t>The Path ID of the initial path is 0. Connection IDs
which are issued by a NEW_CONNECTION_ID frame <xref section="19.15." sectionFormat="of" target="QUIC-TRANSPORT"/>
respectively are asociated with Path ID 0. Also, the Path ID for
the connection ID specified in the "preferred address" transport parameter is 0.
Use of the "preferred address" is considered as a migration event
that does not change the Path ID.</t>
      </section>
      <section anchor="use-of-multiple-packet-number-spaces">
        <name>Use of Multiple Packet Number Spaces</name>
        <t>This extension uses multiple packet number spaces, one for each active path.
As such, each path maintains distinct packet number states for sending and receiving packets, as in <xref target="QUIC-TRANSPORT"/>.
Using multiple packet number spaces enables direct use of the
loss recovery and congestion control mechanisms defined in
<xref target="QUIC-RECOVERY"/> on a per-path basis.</t>
        <t>Each Path ID-specific packet number space starts at packet number 0. When following
the packet number encoding algorithm described in <xref section="A.2" sectionFormat="of" target="QUIC-TRANSPORT"/>,
the largest packet number (largest_acked) that has been acknowledged by the
peer in the Path ID-specfic packet number space is initially set to "None".</t>
        <t>Using multiple packet number spaces requires changes in the way AEAD is
applied for packet protection, as explained in <xref target="multipath-aead"/>.
More concretely, the Path ID is used to construct the
packet protection nonce in addition to the packet number
in order to enable use of the same packet number on different paths.
Respectively, the Path ID is limited to 32 bits to ensure a unique nonce.
Additional consideration on key updates are explained in <xref target="multipath-key-update"/>.</t>
      </section>
      <section anchor="definition">
        <name>Conventions and Definitions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
        <t>We assume that the reader is familiar with the terminology used in
<xref target="QUIC-TRANSPORT"/>. When this document uses the term "path", it refers
to the notion of "network path" used in <xref target="QUIC-TRANSPORT"/>.</t>
      </section>
    </section>
    <section anchor="nego">
      <name>Handshake Negotiation and Transport Parameter</name>
      <t>This extension defines a new transport parameter, used to negotiate
the use of the multipath extension during the connection handshake,
as specified in <xref target="QUIC-TRANSPORT"/>. The new transport parameter is
defined as follows:</t>
      <ul spacing="normal">
        <li>
          <t>initial_max_path_id (current version uses 0x0f739bbc1b666d09): the
initial_max_path_id transport parameter is included if the endpoint supports
the multipath extension as defined in this document. This is
a variable-length integer specifying the maximum path identifier
an endpoint is willing to maintain at connection initiation.
For example, if initial_max_path_id is set to 1, only connection IDs
associated with Path IDs 0 and 1 should be issued by the peer.
If an endpoint receives an initial_max_path_id transport parameter with value 0,
the peer aims to  enable the multipath extension without allowing extra paths immediately.
To allow for the use of more paths later,
endpoints can send the MAX_PATH_ID frame to increase the maximum allowed path identifier.</t>
        </li>
      </ul>
      <t>Setting initial_max_path_id parameter is equivalent to sending a
MAX_PATH_ID frame (<xref target="max-paths-frame"/>) with the same value.</t>
      <t>If either of the endpoints does not advertise the initial_max_path_id transport
parameter, then the endpoints MUST NOT use any frame or
mechanism defined in this document.</t>
      <t>When advertising the initial_max_path_id transport parameter, the endpoint
MUST use non-zero length Source and Destination Connection IDs.
If an initial_max_path_id transport
parameter is received and the carrying packet contains a zero-length
connection ID, the receiver MUST treat this as a connection error of type
MP_PROTOCOL_VIOLATION and close the connection.</t>
      <t>The initial_max_path_id 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 initial_max_path_id transport parameter limits the initial maximum number of active paths
that can be used during a connection.</t>
      <t>The active_connection_id_limit transport parameter
<xref target="QUIC-TRANSPORT"/> limits the maximum number of active connection IDs per path when the
initial_max_path_id parameter is negotiated successfully.
Endpoints might prefer to retain spare connection IDs so that they can
respond to unintentional migration events (<xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>).</t>
      <t>Cipher suites with a nonce shorter than 12 bytes cannot be used together with
the multipath extension. If such a cipher suite is selected and the use of the
multipath extension is negotiated, endpoints MUST abort the handshake with a
TRANSPORT_PARAMETER error.</t>
      <t>The ACK_MP frame, as specified in <xref target="ack-mp-frame"/>, is used to
acknowledge 1-RTT packets.
Compared to the ACK frame as specified in <xref section="19.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, the ACK_MP frame additionally
contains the receiver's Path ID to identify the path-specific packet number space.</t>
      <t>As multipath support is unknown during the handshake, acknowledgements of
Initial and Handshake packets are sent using ACK frames.
If the multipath extension has been successfully
negotiated, ACK frames in 1-RTT packets acknowledge packets for the path with
Path ID 0.</t>
      <t>After the handshake concluded if negotiation of multipath support succeeded,
endpoints SHOULD use ACK_MP frames instead of ACK frames,
also for acknowledging so far unacknowledged 0-RTT packets, using
Path ID 0.</t>
    </section>
    <section anchor="path-management">
      <name>Path Management</name>
      <t>After completing the handshake, endpoints have agreed to enable
multipath support. They can 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 to separate documents.</t>
      <t>To let the peer open a new path, an endpoint needs to provide its peer with connection IDs
for at least one unused path identifier. Endpoints SHOULD use the MP_NEW_CONNECTION_ID
frame to provide new connection IDs and, respectively, the MP_RETIRE_CONNECTION_ID frame to
retire connection IDs after a successful handshake indicating multipath support by both endpoints.</t>
      <t>To open a new path, an endpoint MUST use a connection ID associated with
a new, unused Path ID.
Still, the receiver may observe a connection ID associated with a used Path ID
on different 4-tuples due to, e.g., NAT rebinding. In such a case, the receiver reacts
as specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/> by initiating path validation
but MUST use a new connection ID for the same Path ID.</t>
      <t>This proposal adds four 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"/>), and</t>
        </li>
        <li>
          <t>MAX_PATH_ID frame for increasing the limit of active paths.</t>
        </li>
      </ul>
      <t>All new frames are sent in 1-RTT packets <xref target="QUIC-TRANSPORT"/>.</t>
      <section anchor="path-initiation">
        <name>Path Initiation</name>
        <t>Opening a new path requires the
use of a new connection ID (see <xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>).
Instead of NEW_CONNECTION_ID frame as specified in <xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>,
each endpoint uses the MP_NEW_CONNECTION_ID frame as specified in this extension
to issue Path ID-specific connections IDs.
The same Path ID is used in both directions. As such to open
a new path, both sides need at least
one connection ID (see <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>), which is associated
with the same, unused Path ID. When the peer receives the PATH_CHALLENGE,
it MUST pick a Connection ID with the same Path ID for sending the PATH_RESPONSE.</t>
        <t>When the multipath extension is negotiated, a client that wants to use an
additional path MUST first initiate the Address Validation procedure
with PATH_CHALLENGE and PATH_RESPONSE frames as 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>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>
        <t>If the server receives a PATH_CHALLENGE before receiving
a MP_NEW_CONNECTION_ID for the specific path, it SHOULD
ignore the PATH_CHALLENGE. Note that the
MP_NEW_CONNECTION_ID might be sent in the same
packet and in this case the PATH_CHALLENGE SHOULD
be processed.</t>
        <t>If validation succeeds, the client can continue to use the path.
If validation fails, the client MUST NOT use the path and can
remove any status associated to the path initiation attempt.
However, as the used Path ID is anyway consumed,
the endpoint MUST explicitly close the path as specified in
<xref target="path-close"/>.</t>
        <t><xref section="9.1" sectionFormat="of" target="QUIC-TRANSPORT"/> introduces the concept of
"probing" and "non-probing" frames. A packet that contains at least
one "non-probing" frame is a "non-probing" packet. When the multipath extension
is negotiated, the reception of a "non-probing"
packet on a new path 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 containing a connection ID that is already in use
but has a different 4-tuple than previously observed with this connection ID
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 established, the
client may have received 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-status-management">
        <name>Path Status Management</name>
        <t>An endpoint uses the PATH_STANDBY and PATH_AVAILABLE frames to inform the peer that it should
send packets with the preference expressed by these frames.
Note that an endpoint might not follow the peer’s advertisements,
but these frames are still a clear signal of the peer's preference of path usage.
Each peer indicates its preference of path usage independently of the other peer.
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 the Path ID
in these frames to identify which path state is going to be
changed. Note that both frames can be sent via a different path
and therefore might arrive in different orders.
The PATH_AVAILABLE and PATH_STANDBY frames share a common sequence number space
to detect and ignore outdated information.</t>
        <t>If all active paths are marked as "standby", no guidance is provided about
which path should be used.</t>
      </section>
      <section anchor="path-close">
        <name>Path Close</name>
        <t>Each endpoint manages the set of paths that are available for
transmission. At any time in the connection, each endpoint can decide to
abandon one of these paths, for example following changes in local
connectivity or local preferences. After an endpoint abandons
a path, the peer can expect to not receive any more non-probing packets on
that path.</t>
        <t>Note that other explicit closing mechanisms of <xref target="QUIC-TRANSPORT"/> still
apply on the whole connection. In particular, the reception of either a
CONNECTION_CLOSE (<xref section="10.2" sectionFormat="of" target="QUIC-TRANSPORT"/>) or a Stateless
Reset (<xref section="10.3" sectionFormat="of" target="QUIC-TRANSPORT"/>) closes the connection.</t>
        <t>An endpoint that wants to close a path MUST explicitly
terminate the path by sending a PATH_ABANDON frame.
Note that while abandoning a path will cause
connection ID retirement, the inverse is not true: retiring the associated connection IDs
does not indicate path abandonment (see further <xref target="consume-retire-cid"/>).
This is true whether the decision to close the path results
from implicit signals such as idle time or packet losses
(see {(idle-time-close}}) or for any other reason, such as management
of local resources. It is also possible to abandon a path for which no
packet has been sent (see <xref target="abandon-early"/>).</t>
        <t>When an endpoint receives a PATH_ABANDON frame, it MUST send a corresponding
PATH_ABANDON frame if it has not already done so. It MUST stop sending
any new packet on the abandoned path, and it MUST treat all
connection identifiers received from the peer for that path as immediately
retired. However, knowledge of the
connection identifiers received from the peer and of the state
of the number space associated to the path SHOULD be retained while
packets from the peer might still be in transit, i.e., for a delay of
3 PTO after the PATH_ABANDON frame has been received from the peer,
both to avoid generating spurious stateless packets as specified in
<xref target="spurious-stateless-reset"/> and to be able to acknowledge the
last packets received from the peer as specified in <xref target="ack-after-abandon"/>).</t>
        <t>After receiving or sending a PATH_ABANDON frame, the endpoints SHOULD
promptly send ACK_MP frames to acknowledge all packets received on
the path and not yet acknowledged, as specified in <xref target="ack-after-abandon"/>).
When an endpoint finally deletes all resource associated with the path,
the packets sent over the path and not yet acknowledged MUST be considered lost.</t>
        <t>After a path is abandoned, the Path ID MUST NOT be reused
for new paths, as the Path ID is part of the nonce calculation <xref target="multipath-aead"/>.</t>
        <t>PATH_ABANDON frames can be sent on any path,
not only the path that is intended to be closed. 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 the PATH_ABANDON frames 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>
        <section anchor="spurious-stateless-reset">
          <name>Avoiding Spurious Stateless Resets</name>
          <t>The peers that send a PATH_ABANDON frame MUST treat all connection
identifiers received from the peer for the path ID as immediately
retired. The Stateless Reset Tokens associated with these connection
identifiers MUST NOT be used to identify Stateless Reset packets
per <xref section="10.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
          <t>Due to packet losses and network delays, packets sent on the path may
well arrive after the PATH_ABANDON frames have been sent or received.
If these packets arrive after the connection identifiers sent to the peer
have been retired, they will not be recognized as bound for the local
connection and could trigger the peer to send a Stateless Reset
packet. The rule to "retain knowledge of connection ID for 3 PTO
after receiving a PATH_ABANDON"
is intended to reduce the risk of sending such spurious stateless
packets, but it cannot completely avoid that risk.</t>
          <t>The immediate retirement of connection identifiers received for the
path guarantees that spurious stateless reset packets
sent by the peer will not cause the closure of the QUIC connection.</t>
        </section>
        <section anchor="ack-after-abandon">
          <name>Handling ACK_MP for abandoned paths</name>
          <t>When an endpoint decides to send a PATH_ABANDON frame, there may
still be some unacknowledged packets. Some other packets may well
be in transit, and could be received shortly after sending the
PATH_ABANDON frame. As specified above, the endpoints SHOULD
send ACK_MP frames promptly, to avoid unnecessary data
retransmission after the peer deletes path resources.</t>
          <t>These ACK_MP frames MUST be sent on a different path than the
path being abandoned.</t>
          <t>ACK_MP frames received after the endpoint has entirely deleted
a path MUST be silently discarded.</t>
        </section>
        <section anchor="idle-time-close">
          <name>Idle Timeout</name>
          <t><xref target="QUIC-TRANSPORT"/> allows for closing of connections if they stay idle
for too long. The connection idle timeout when using the multipath extension is defined
as "no packet received on any path for the duration of the idle timeout".
When only one path is available, servers MUST follow the specifications
in <xref target="QUIC-TRANSPORT"/>.</t>
          <t>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.</t>
          <t>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 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 re-establish a path
after a spurious estimate of path abandonment by the client.</t>
          <t>Endpoints that desire to close a path because of the idle timer rule
MUST do so explicitly by sending a PATH_ABANDON frame on another active path, as defined in
<xref target="path-close"/>.</t>
        </section>
        <section anchor="abandon-early">
          <name>Early Abandon</name>
          <t>The are scenarios in which an endpoint will receive a PATH_ABANDON frame
before receiving or sending any traffic on a path. For example, if the client
tries to initiate a path and the path cannot be established, it will send a
PATH_ABANDON frame (see <xref target="path-initiation"/>). An endpoint may also decide
to abandon a path for any reason, for example, removing a hole from
the sequence of path IDs in use. This is not an error. The endpoint that
receive such a PATH_ABANDON frame must treat it as specified in <xref target="path-close"/>.</t>
        </section>
      </section>
      <section anchor="refusing-a-new-path">
        <name>Refusing a New Path</name>
        <t>An endpoint may deny the establishment of a new path initiated by its
peer during the address validation procedure. According to <xref target="QUIC-TRANSPORT"/>,
the standard way to deny the establishment of a path is to not send a
PATH_RESPONSE in response to the peer's PATH_CHALLENGE.</t>
      </section>
      <section anchor="consume-retire-cid">
        <name>Allocating, Consuming, and Retiring Connection IDs</name>
        <t>With the multipath extension, each connection ID is associated with one path
that is identified by the Path ID that is specified in the Path Identifier field of
the MP_NEW_CONNECTION_ID frame <xref target="mp-new-conn-id-frame"/>.
The Path ID 0 indicates the initial path of the connection.
Respectively, the connection IDs used during the handshake belong to the initial path
with Path ID 0.
The MP_NEW_CONNECTION_ID frame is used to issue new connection IDs for all paths.
In order to let the peer open new paths, it is RECOMMENDED to proactively
issue a Connection ID for at least one unused path ID, as long as it remains
compatible with the peer's Maximum Path ID limit.</t>
        <t>Each endpoint maintains the set of connection IDs received from its peer for each path,
any of which it can use when sending packets on that path; see also <xref section="5.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.
Usually, it is desired to provide at least one additional connection ID for
all used paths, to allow for migration.
As further specified in <xref section="5.1" sectionFormat="of" target="QUIC-TRANSPORT"/> connection IDs
cannot be issued more than once on the same connection
and therefore are unique for the scope of the connection,
regardless of the associated Path ID.</t>
        <t>Over a given path, both endpoints use connection IDs associated to a given Path
ID. To initiate a path, each endpoint needs to advertise at least one connection ID
for a given Path ID to its peer. Endpoints SHOULD NOT introduce discontinuity
in the issuing of Path IDs through their connection ID advertisements as path initiation
requires available connection IDs for the same Path ID on both sides. For instance,
if the maximum Path ID limit is 2 and the endpoint wants to provide connection IDs
for only one Path ID inside range [1, 2], it should select Path ID 1 (and not Path
ID 2). Similarly, endpoints SHOULD consume Path IDs in a continuous way, i.e., when
creating paths. However, endpoints cannot expect to receive new connection IDs
or path initiation attempts with in order use of Path IDs
due to out-of-order delivery or path validation failure.</t>
        <t><xref section="5.1.2." sectionFormat="of" target="QUIC-TRANSPORT"/> specifies the retirement of connection IDs.
In order to identify a connection ID correctly when the multipath extension is used,
endpoints have to use the MP_RETIRE_CONNECTION_ID frame instead
of the RETIRE_CONNECTION_ID frame to indicate the respective Path ID together with the
connection ID sequence number, at least for all paths with a Path ID other than 0.
Endpoints can also use MP_NEW_CONNECTION_ID and
MP_RETIRE_CONNECTION_ID for the initial path with Path ID 0,
however, the use of NEW_CONNECTION_ID and RETIRE_CONNECTION_ID
is still valid as well and endpoints need to process these frames accordingly
as corresponding to Path ID 0.</t>
        <t>Endpoints MUST NOT issue new connection IDs with Path IDs greater than
the Maximum Path Identifier field in MAX_PATH_ID frames (see Section <xref target="max-paths-frame"/>).
When an endpoint finds it has not enough available unused path identifiers,
it SHOULD send a MAX_PATH_ID frame to inform the peer that it could use new active
path identifiers.</t>
        <t>If the client has consumed all the allocated connection IDs for a path, it is supposed to retire
those that are not actively used anymore, and the server is supposed to provide
replacements for that path, see <xref section="5.1.2." sectionFormat="of" target="QUIC-TRANSPORT"/>.
Sending a MP_RETIRE_CONNECTION_ID frame indicates that the connection ID
will not be used anymore. In response, if the path is still active, the peer
SHOULD provide new connection IDs using MP_NEW_CONNECTION_ID frames.</t>
        <t>Retirement of connection IDs will not retire the Path ID
that correspones to the connection ID.
The list of received packets used to send acknowledgements also remains
unaffected as the packet number space is associated with a path.</t>
        <t>The peer that sends the MP_RETIRE_CONNECTION_ID frame can keep sending data
on the path that the retired connection ID was used on but has
to use a different connection ID for the same Path ID when doing so.</t>
      </section>
    </section>
    <section anchor="multipath-aead">
      <name>Packet Protection</name>
      <t>Packet protection for QUIC version 1 is specified in <xref section="5" sectionFormat="of" target="QUIC-TLS"/>.
The general principles of packet protection are not changed for
the multipath extension specified in this document.
No changes are needed for setting packet protection keys,
initial secrets, header protection, use of 0-RTT keys, receiving
out-of-order protected packets, receiving protected packets,
or retry packet integrity. However, the use of multiple number spaces
for 1-RTT packets requires changes in AEAD usage.</t>
      <section anchor="nonce-calculation">
        <name>Nonce Calculation</name>
        <t><xref section="5.3" sectionFormat="of" target="QUIC-TLS"/> specifies AEAD usage, and in particular
the use of a nonce, N, formed by combining the packet protection IV
with the packet number. When multiple packet number spaces are used,
the packet number alone would not guarantee the uniqueness of the nonce.</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 ID.</t>
        <t>To calculate the nonce, a 96-bit path-and-packet-number is composed of the least
significant 32 bits of the Path ID in network byte order,
two zero bits, and the 62 bits of the reconstructed QUIC packet number in
network byte order. 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 ID is <tt>3</tt>, and the packet number is <tt>aead</tt>,
the nonce will be set to <tt>6b2611489cba2b63a9e873e2</tt>.</t>
      </section>
      <section anchor="multipath-key-update">
        <name>Key Update</name>
        <t>The Key Phase bit update process is specified in
<xref section="6" sectionFormat="of" target="QUIC-TLS"/>. The general principles of key update
are not changed in this specification. Following <xref target="QUIC-TLS"/>, the Key Phase bit is used to
indicate which packet protection keys are used to protect the packet.
The Key Phase bit is toggled to signal each subsequent key update.</t>
        <t>Because of network delays, packets protected with the older key might
arrive later than the packets protected with the new key, however receivers
can solely rely on the Key Phase bit to determine the corresponding packet
protection key, assuming that there is sufficient interval between two
consecutive key updates (<xref section="6.5" sectionFormat="of" target="QUIC-TLS"/>).</t>
        <t>When this specification is used, endpoints SHOULD wait for at least three times
the largest PTO among all the paths before initiating a new key update
after receiving an acknowledgement that confirms the receipt of the previous key
update. This interval is different from that in <xref target="QUIC-TLS"/>
which used three times the PTO of the 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>
        <t>In this example it is assumed that both endpoint have
indicated an initial_max_path_id value of at least 2, which means
both endpoints can use Path IDs 0, 1, and 2. Note that
Path ID 0 is already used for the initial path.</t>
        <figure anchor="fig-example-new-path">
          <name>Example of new path establishment</name>
          <artwork><![CDATA[
   Client                                                  Server

   (Exchanges start on default path)
   1-RTT[]: 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=S1, PATH_CHALLENGE[X] -->
                           Checks AEAD using nonce(Path ID 1, PN 0)
        <-- 1-RTT[0]: DCID=C1, PATH_RESPONSE[X], PATH_CHALLENGE[Y],
                                             ACK_MP[PathID=1, PN=0]
   Checks AEAD using nonce(Path ID 1, PN 0)
   1-RTT[1]: DCID=S1, PATH_RESPONSE[Y],
            ACK_MP[PathID=1, PN=0], ... -->

]]></artwork>
        </figure>
        <t>In <xref target="fig-example-new-path"/>, the endpoints first exchange
new available connection IDs with the NEW_CONNECTION_ID frame.
In this example, the client provides one connection ID (C1 with
Path ID 1), and server provides two connection IDs
(S1 with Path ID 1, and S2 with Path ID 2).</t>
        <t>Before the client opens a new path by sending a packet on that path
with a PATH_CHALLENGE frame, it has to check whether there is
an unused connection IDs for the same unused Path ID available for each side.
In this example the Path ID 1 is used which is the smallest unused Path ID available
as recommended in <xref target="consume-retire-cid"/>.
Respectively, the client chooses the connection ID S1
as the Destination Connection ID of the new path.</t>
      </section>
      <section anchor="path-closure">
        <name>Path Closure</name>
        <t><xref target="fig-example-path-close1"/> illustrates an example of path closure.</t>
        <t>In this example, the client wants to close the path with Path ID 1.
It sends the PATH_ABANDON frame to terminate the path. After receiving
the PATH_ABANDON frame with Path ID 1, the server also send a
PATH_ABANDON frame with Path ID 1.</t>
        <figure anchor="fig-example-path-close1">
          <name>Example of closing a path.</name>
          <artwork><![CDATA[
Client                                                      Server

(client tells server to abandon a path with Path ID 1)
1-RTT[X]: DCID=S1 PATH_ABANDON[Path ID=1]->
                           (server tells client to abandon a path)
                    <-1-RTT[Y]: DCID=C1 PATH_ABANDON[Path ID=1],
                                           ACK_MP[PATH ID=1, PN=X]
1-RTT[U]: DCID=S2 ACK_MP[Path ID=1, PN=Y] ->
]]></artwork>
        </figure>
        <t>Note that the last acknowledgement needs to be send on a different path. This examples assumes another path which uses connection ID S2 exists.</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="number-spaces">
        <name>Number Spaces</name>
        <t>As stated in <xref target="introduction"/>, when the multipath extension is negotiated, each
path uses a separate packet number space.
This is a major difference from
<xref target="QUIC-TRANSPORT"/>, which only defines three number spaces (Initial,
Handshake and Application packets).</t>
        <t>The relation between packet number spaces and paths is fixed.
Connection IDs are separately allocated for each Path ID.
Rotating the connection ID on a path does not change the Path ID.
NAT rebinding, though it changes the 4-tuple of the path,
also does not change the path identifier.
The packet number space does not change when connection ID
rotation happens within a given Path ID.</t>
        <t>Data associated with the transmission and reception such RTT measurements,
congestion control state, or loss recovery are maintained per packet number
space and as such per Path ID.</t>
      </section>
      <section anchor="congestion-control">
        <name>Congestion Control</name>
        <t>When the QUIC multipath extension is used, senders manage per-path
congestion status as required in <xref section="9.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.
However, in <xref target="QUIC-TRANSPORT"/> only one 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 ACK_MP frames 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 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>
      </section>
    </section>
    <section anchor="frames">
      <name>New Frames</name>
      <t>All frames defined in this document MUST only be sent in 1-RTT packets.</t>
      <t>If an endpoint receives a multipath-specific frame in a different packet type,
it MUST close the connection with an error of type FRAME_ENCODING_ERROR.</t>
      <t>Receipt of multipath-specific frames
that use a Path ID that is greater than the announced Maximum Paths value
in the MAX_PATH_ID frame or in the initial_max_path_id transport parameter,
if no MAX_PATH_ID frame was received yet,
MUST be treated as a connection error of type MP_PROTOCOL_VIOLATION.</t>
      <t>If an endpoint receives a multipath-specific frame
with a path identifier that it cannot process
anymore (e.g., because the path might have been abandoned), it
MUST silently ignore the frame.</t>
      <section anchor="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 specified in <xref section="19.3" sectionFormat="of" target="QUIC-TRANSPORT"/>. It is
used to acknowledge packets that were sent on different paths, as
each path as its own packet number space. If the frame type is TBD-01, 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 ID associated with the packet number space of the 0-RTT and 1-RTT packets
which are acknowledged by the ACK_MP frame.</t>
          </dd>
        </dl>
      </section>
      <section anchor="path-abandon-frame">
        <name>PATH_ABANDON Frame</name>
        <t>The PATH_ABANDON frame informs the peer to abandon a path.</t>
        <t>PATH_ABANDON frames are formatted as shown in <xref target="fig-path-abandon-format"/>.</t>
        <figure anchor="fig-path-abandon-format">
          <name>PATH_ABANDON Frame Format</name>
          <artwork><![CDATA[
  PATH_ABANDON Frame {
    Type (i) = TBD-02 (experiments use 0x15228c05),
    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 ID 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>
        <t>After sending the PATH_ABANDON frame,
the endpoint MUST NOT send frames that use the Path ID anymore,
even on other network paths.</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 indicated path 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 ID the status update corresponds to.
All Path IDs that have been issued
MAY be specified, even if they are not yet in use over a path.</t>
          </dd>
          <dt>Path Status Sequence Number:</dt>
          <dd>
            <t>A variable-length integer specifying the 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 ID.</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 ID 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 indicated path is available for sending.
PATH_AVAILABLE frames are formatted as shown in <xref target="fig-path-available-format"/>.</t>
        <figure anchor="fig-path-available-format">
          <name>PATH_AVAILABLE Frame Format</name>
          <artwork><![CDATA[
  PATH_AVAILABLE Frame {
    Type (i) = TBD-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 ID 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 ID.</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 ID 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>The MP_NEW_CONNECTION_ID frame (type=0x15228c09)
is an extension of the NEW_CONNECTION_ID frame specified in
<xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>.
It is used to provide its peer with alternative connection IDs for 1-RTT packets
for a specific path. The peer can then use a different connection ID on the same path
to break linkability when migrating on that path; see also <xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t>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>Compared to the NEW_CONNECTION_ID frame specified in
<xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>, the following
field is added:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID associated with the connection ID. This
means the provided connection ID can only be used on the corresponding path.</t>
          </dd>
        </dl>
        <t>Note that, other than for the NEW_CONNECTION_ID frame of <xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>,
the sequence number applies on a per-path context.
This means different connection IDs on different paths may have the same
sequence number value. Respectively, the Retire Prior To field indicates which connection IDs
should be retired for the path with the Path ID in the Path Identifier field.</t>
        <t>Note that the NEW_CONNECTION_ID frame can only be used to issue or retire
connection IDs for the initial path with Path ID 0.</t>
      </section>
      <section anchor="mp-retire-conn-id-frame">
        <name>MP_RETIRE_CONNECTION_ID frames</name>
        <t>The MP_RETIRE_CONNECTION_ID frame (type=0x15228c0a)
is an extension of the RETIRE_CONNECTION_ID frame specified in
<xref section="19.16" sectionFormat="of" target="QUIC-TRANSPORT"/>. It is used
to indicate that it will no longer use a connection ID for a specific path
that was issued by its peer. To retire the connection ID used
during the handshake on the initial path, Path ID 0 is used.
Sending a MP_RETIRE_CONNECTION_ID frame also serves as a request to the peer
to send additional connection IDs for this path (see also <xref section="5.1" sectionFormat="of" target="QUIC-TRANSPORT"/>,
unless the path specified by the Path ID has been abandoned. New path-specific connection IDs can be
delivered to a peer using the MP_NEW_CONNECTION_ID frame (see Section <xref target="mp-new-conn-id-frame"/>).</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>
        <t>Compared to the RETIRE_CONNECTION_ID frame specified in
<xref section="19.16" sectionFormat="of" target="QUIC-TRANSPORT"/>, the following
field is added:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID associated with the connection ID to retire.</t>
          </dd>
        </dl>
        <t>Note that the RETIRE_CONNECTION_ID frame can only be used to retire
connection IDs for the initial path with Path ID 0.</t>
        <t>As the MP_NEW_CONNECTION_ID frames applies the sequence number per path,
the sequence number in the MP_RETIRE_CONNECTION_ID frame
also needs to be considered in the context of the Path Identifier field.</t>
      </section>
      <section anchor="max-paths-frame">
        <name>MAX_PATH_ID frames</name>
        <t>A MAX_PATH_ID frame (type=0x15228c0c) informs the peer of the maximum path identifier
it is permitted to use.</t>
        <t>When there are not enough unused path identifiers, endpoints SHOULD
send MAX_PATH_ID frame to inform the peer that new path identifiers are available.</t>
        <t>MAX_PATH_ID frames are formatted as shown in <xref target="fig-max-paths-frame-format"/>.</t>
        <figure anchor="fig-max-paths-frame-format">
          <name>MAX_PATH_ID Frame Format</name>
          <artwork><![CDATA[
MAX_PATH_ID Frame {
  Type (i) = 0x15228c0c,
  Maximum Path Identifier (i),
}
]]></artwork>
        </figure>
        <t>MAX_PATH_ID frames contain the following field:</t>
        <dl>
          <dt>Maximum Path Identifier:</dt>
          <dd>
            <t>The maximum path identifier that the sending endpoint is willing to accept.
This value MUST NOT exceed 2^32-1, as Path IDs are defined with a maximum value 2^32-1
as the 32 bits of the Path ID are used to calculate the nonce (see <xref target="multipath-aead"/>).
The Maximum Path Identifier value MUST NOT be lower than the value
advertised in the initial_max_path_id transport parameter. Receipt
of an invalid Maximum Path Identifier value MUST be treated as a
connection error of type MP_PROTOCOL_VIOLATION.</t>
          </dd>
        </dl>
        <t>Loss or reordering can cause an endpoint to receive a MAX_PATH_ID frame with
a smaller Maximum Path Identifier value than was previously received.
MAX_PATH_ID frames that do not increase the path limit MUST be ignored.</t>
      </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 0x0f739bbc1b666d09)</td>
            <td align="left">initial_max_path_id</td>
            <td align="left">
              <xref target="nego"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following frame types defined in <xref target="frame-types"/> should be added to
the "QUIC Frame Types" registry under the "QUIC Protocol" heading.</t>
      <table anchor="frame-types">
        <name>Addition to QUIC Frame Types Entries</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Frame Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD-00 - TBD-01 (experiments use 0x15228c00-0x15228c01)</td>
            <td align="left">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 0x15228c0c)</td>
            <td align="left">MAX_PATH_ID</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>The multipath extension retains all the security features of <xref target="QUIC-TRANSPORT"/> and <xref target="QUIC-TLS"/>
but requires some additional consideration regarding the following amendments:</t>
      <ul spacing="normal">
        <li>
          <t>the need of potential additional resources as connection IDs are now maintained per-path;</t>
        </li>
        <li>
          <t>the provisioning of multiple concurrent path contexts and the associated resources;</t>
        </li>
        <li>
          <t>the possibility to create and use multiple simultaneous paths and the corresponding increased amplification risk for request forgery attacks;</t>
        </li>
        <li>
          <t>the changes on encryption requirements due to the use of multiple packet number spaces.</t>
        </li>
      </ul>
      <section anchor="memory-allocation-for-per-path-resources">
        <name>Memory Allocation for Per-Path Resources</name>
        <t>The initial_max_path_id transport parameter and the Max Path ID field
in the MAX_PATH_ID frame limit the number of paths an endpoint is willing
to maintain and accordingly limit the associated path resources.</t>
        <t>Furthermore, as connection IDs have to be issued by both endpoint for the
same path ID before an endpoint can open a path, each endpoint can further
control the per-path resource usage (beyond the connection IDs) by limiting
the number of Path ID that it issues connection IDs for.</t>
        <t>Therefore, to avoid unnecessarily resource usage, that potentially could be exploited
in a resource exhaustion attack, endpoints should allocate those additional path resource,
such as e.g. for packet number handling, only after path validation has successfully completed.</t>
      </section>
      <section anchor="request-forgery-with-spoofed-address">
        <name>Request Forgery with Spoofed Address</name>
        <t>The path validation mechanism as specified in <xref section="8.2." sectionFormat="of" target="QUIC-TRANSPORT"/> for migration is used
unchanged for initiation of new paths in this extension. Respectively the security considerations
on source address spoofing as outlined in <xref section="21.5.4" sectionFormat="of" target="QUIC-TRANSPORT"/> equally apply.
Similarly, the anti-amplification limits as specified in <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/> need to be
followed to limit the amplification risk.</t>
        <t>However, while <xref target="QUIC-TRANSPORT"/> only allows the use of one path simultaneously
and therefore only one path migration at the time should be validated,
this extension allows for multiple open paths, that could in theory be migrated
all at the same time, and it allows for multiple active paths that could be initialised
simultaneously. Therefore, each path could be used to further amplify an attack.
Respectively endpoints needs limit the number of maximum paths and might consider
additional measures to limit the number of concurrent path validation processes
e.g. by pacing them out or limiting the number of path initiation attempts
over a certain time period.</t>
      </section>
      <section anchor="transport-layer-security">
        <name>Transport Layer Security</name>
        <t>The multipath extension as specified in this document is only enabled after a
successful handshake when both endpoints indicate support for this extension.
Respectively, all new frames defined in this extension are only used in 1-RTT packets.
As the handshake is not changed by this extension, the transport security mechanisms
as specified in <xref target="QUIC-TLS"/>, such as encryption key exchange and peer authentication,
remain unchanged as well and the respective security considerations in <xref target="QUIC-TLS"/> applied unaltered.</t>
        <t>This specification changes the AEAD calculation by using the path identifier as part of
AEAD encryption nonce (see <xref target="multipath-aead"/>). To ensure a unique nonce, path identifiers
are limited to 32 bits and cannot be reused for another path in the same connection.</t>
      </section>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>This document is a collaboration of authors that combines work from
three proposals. Further contributors that were also involved
one of the original proposals are:</t>
      <ul spacing="normal">
        <li>
          <t>Qing An</t>
        </li>
        <li>
          <t>Zhenyu Li</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Marten Seemann, Kazuho Oku, and Martin Thomson 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:
H4sIAAAAAAAAA819XW8c2Zne/fkVtdSFyUV3h6RmNCPtemEOxbEZSyKXpMae
TLxydXc1WVZ1VbuqWlRb1iI3AXKbu+QmFwkQIEB+QYD8mSAbYP9F3s/zVaeb
0tgLeC5sqrv61Pl4z/v9Pu94PDZ92VfFs+zluurLVd7fZWfv+6LuyqbOFk2b
/f3r81OTT6dt8c5/iD6eN7M6X8KP522+6Mdl0S/Gv1+Xs/FSnxsfPjXzvIdH
Pjw/uTn7aGbwj9um3TzLun5uTLlqn2V9u+7648PDp4fHJm+L/Fl20+Z1t2ra
3tw37dvbtlmvntErs1/Bv8v6Nvs5fmbeFht4YP4sO6/7oq2LfvwcZ2JM1+f1
/E1eNTW8elN0ZlU+y37om9ko62DYtlh08NdmiX/8xph83d817TMzNlm2WFcV
rQr+xv+ePcv2/uk//Kd/+t///f/913+/Jx/m3ayEEfe+z+tlUWYvyjV+0za4
k8W87JsW/tm0t8+yk6qc5tMcZjibwGfFMi+rZ9myzJvflZNqs/xZzg+MS3hg
1ixpDvEkcA7//D/+5//9X//xn//bf5E52Cms6wVM4WVOn9M7X0+LNrspZnd1
UzW3ZdHp2/X1G/rNZJn/bA2PuteWdQf7PMmeF9lpU8OM3uKnfMZ/vy7qvqyj
76Ily/vr8l3RdmW/yZpF9rKpu2z/9cuLV9cH3hx+z+NN5sWMh/vZeglPTvLZ
ZFp407mYZN80df4Onl63hZvPRVW+K2Gd0Zc8gdMXzfpdDrMFMoCd6Dqgq857
ecM/nkzdj3+2nlX8o/D9p5PsF+uyhx+6d5/etWXXl3ntf0VvvmzLd0Di2cWs
b1brwcbf8eM/k/+fAMl6r3o5yX65Lu6q4r6s5+5tL8v2d3n0TXLfz9py1nVN
7b1wib+dvLW//Vkhz9ChG1M37TLv4biQ0vCGjW+uTl5dX15c3TzL2sXs6eHh
of3mxbV+dqSfXZ2dXnx3dvW9fnEMd7pe+INefXv65PGXT/DPixfnJ0zRwnT2
Xl7enF5mZZfVTZ+t4JD6Ztys+nKZw9xXRUsj1bMCHunWQMdwnCbPVk3XldOq
gLtcrXvgVHwlmNHsHR8eHfMHHSy26HA+8PFl28wK2LD6tkOq7O+K7GtgZCVx
jhxHyasMSHFRtAW+EbbxbFm0t8ht4JjuhfEU72Fa5RJohmaT9d41G2Unpy/5
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
Fd1fmf8PXKx3nhn/AAA=

-->

</rfc>
