<?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.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-10" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-10"/>
    <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 identifier 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>Connection IDs are associated with a path ID. The path initiation
associates that path ID with a 4-tuple of source and destination IP
address as well as source and destination port.</t>
          </li>
          <li>
            <t>Migration is detected without ambiguity
when a packet arrives with a connection ID
pointing to an existing path ID, but the connection ID and/or the
4-tuple are different from the value associated with that path
(see <xref target="migration"/>).</t>
          </li>
          <li>
            <t>Paths can be closed at any time, as specified in <xref target="path-close"/>.</t>
          </li>
          <li>
            <t>It is possible to create multiple paths sharing the same 4-tuple.
Each of these paths can be closed at any time, like any other path.</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 MP_ACK <xref target="mp-ack-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 associated 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): a
variable-length integer specifying the maximum path identifier
an endpoint is willing to maintain at connection initiation.
This value MUST NOT exceed 2^32-1, the maximum allowed value for the Path ID due to
restrictions on the nonce calculation (see <xref target="multipath-aead"/>).</t>
        </li>
      </ul>
      <t>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.</t>
      <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.
As such 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>
      <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 MP_ACK frame, as specified in <xref target="mp-ack-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 MP_ACK 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 MP_ACK 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>MP_ACK frames (defined in <xref target="mp-ack-frame"/>) can be returned on any path.
If the MP_ACK 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 MP_ACK 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 with a path ID pointing to
an existing path but with a different connection ID or from a different 4-tuple
than the one previously associated with that path 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.
That means that peers may have different usage preferences for the same path.
Depending on the data 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.</t>
        <t>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 all active paths are marked as "standby", no guidance is provided about
which path should be used.</t>
        <t>If an endpoints starts using a path that was marked as "standby" by its peer
because it has detected issues on the paths marked as "available", it is RECOMMENDED
to update its own path state signaling such that the peer avoids using the broken path.
An enpoints that detects a path breakage can also explicitly close the path
by sending a PATH_ABANDON frame (see section <xref target="path-close"/>) in order to avoid
that its peer keeps using it and enable faster switch over to a standby path.
If the endpoints do not want to close the path immediately, as connectivity
could be re-established, PING frames can potentially be used to quickly detect
connectivity changes and switch back in a timely way.</t>
        <t>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>
      </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 MP_ACK 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 MP_ACK 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 MP_ACK frames promptly, to avoid unnecessary data
retransmission after the peer deletes path resources.</t>
          <t>These MP_ACK frames MUST be sent on a different path than the
path being abandoned.</t>
          <t>MP_ACK 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"/>)
or the value of initial_max_path_id transport parameter if no MAX_PATH_ID frame was received yet.
Receipt of a frame with a greater Path ID is a connection error as specified
in Section <xref target="frames"/>.
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 corresponds to the connection ID or any other path ressources
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.
Therefore, 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. In order to guarantee the uniqueness of the nonce, the Path ID
is limited to a max value of 2^32-1.</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],
                                             MP_ACK[PathID=1, PN=0]
   Checks AEAD using nonce(Path ID 1, PN 0)
   1-RTT[1]: DCID=S1, PATH_RESPONSE[Y],
            MP_ACK[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],
                                           MP_ACK[PATH ID=1, PN=X]
1-RTT[U]: DCID=S2 MP_ACK[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 linked increased algorithm (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 MP_ACK 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 MP_ACK frames. In the example
above, we may assume that the MP_ACK 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 MP_ACK came over
the satellite channel, but it is still the right value for computing
for example the PTO timeout: if an MP_ACK is not received after more
than 350ms, either the data packet or its MP_ACK were probably lost.</t>
        <t>The simplest implementation is to compute smoothedRTT and RTTvar per
<xref section="5.3" sectionFormat="of" target="QUIC-RECOVERY"/> regardless of the path through which MP_ACK frames are
received. This algorithm will provide good results,
except if the set of paths changes and the MP_ACK 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 MP_ACK 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 MP_ACK
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 MP_ACK frames. The estimates will converge
faster if the scheduling strategy is stable, but besides that
implementations can choose between multiple strategies such as sending
MP_ACK frames on the path they acknowledge packets, or sending
MP_ACK 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>
        <t>As noted in <xref section="2.2" sectionFormat="of" target="QUIC-TRANSPORT"/>, STREAM frame boundaries are not
expected to be preserved when data is retransmitted. Especially when STREAM
frames have to be retransmitted over a different path with a smaller MTU limit,
new smaller STREAM frames might need to be sent instead.</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="mp-ack-frame">
        <name>MP_ACK Frame</name>
        <t>The MP_ACK 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, MP_ACK 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>MP_ACK frame is formatted as shown in <xref target="fig-mp-ack-format"/>.</t>
        <figure anchor="fig-mp-ack-format">
          <name>MP_ACK Frame Format</name>
          <artwork><![CDATA[
  MP_ACK 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 MP_ACK 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.</t>
        <t>The Retire Prior To field indicates which connection IDs
should be retired among those that share the Path ID in the Path Identifier field.
Connection IDs associated with different path IDs are not affected.</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>
        <t>The last paragraph of <xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> specifies how to
verify the Retire Prior To field of an incoming NEW_CONNECTION_ID frame.
The same rule
applies for MP_RETIRE_CONNECTION_ID frames, but it applies per path. After the
multipath extension is negotiated successfully, the rule
for RETIRE_CONNECTION_ID frame is only applied for 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 is also per
path. The MP_RETIRE_CONNECTION_ID frame retires the Connection ID with
the specified Path ID and sequence number.</t>
        <t>The processing of an incoming RETIRE_CONNECTION_ID frame
is described in <xref section="19.17" sectionFormat="of" target="QUIC-TRANSPORT"/>. The same processing
applies for MP_RETIRE_CONNECTION_ID frames per path, while the
processing of an RETIRE_CONNECTION_ID frame is only applied for Path ID 0.</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>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, the maximum allowed value for the Path ID due to
restrictions on the nonce calculation (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.</t>
          </dd>
        </dl>
        <t>Receipt of an invalid Maximum Path Identifier value MUST be treated as a
connection error of type MP_PROTOCOL_VIOLATION.</t>
        <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">MP_ACK</td>
            <td align="left">
              <xref target="mp-ack-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="use-of-transport-layer-security-and-the-aead-encryption-nonce">
        <name>Use of Transport Layer Security and the AEAD Encryption Nonce</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.
Note that with the use of this extension, multiple nonces can be in use simultaneously
for the same AEAD key.</t>
        <t>Further note, that the limits as discussed on Appendix B of <xref target="QUIC-TLS"/>
apply to the total number of packets sent on all paths.</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:
H4sIAAAAAAAAA819X28c2ZXf+/0UtdSDyUV3h5RmNCPtemEOxbEZSyKXpMY7
mXXk6u4iWVZ3VbuqWlR7rEVeAuQ1b8lLHhIgQIB8ggD5MkE2wH6LnL/3nnur
uinZu4Dnwaa6q2/dP+ee/+d3xuOx68puUTzPXq0XXbnKu7vs9ENXVG1ZV9lN
3WR/++bsxOXTaVO8tw/Rx/N6VuVL+PG8yW+6cVl0N+PfrcvZeKnPjY8O3Tzv
4JEfXxxfn350M/jHbd1snmdtN3euXDXPs65Zt93jw8Nnh49d3hT58+y6yat2
VTedu6+bd7dNvV49p1dmv4J/l9Vt9nP8zL0rNvDA/Hl2VnVFUxXd+AXOxLm2
y6v523xRV/DqTdG6Vfk8+6GrZ6OshWGb4qaFvzZL/OPXzuXr7q5unruxy7Kb
9WJBq4K/8b/nz7O9f/wP/+kf//d//3//9d/vyYd5OythxL3v82pZlNnLco3f
NDXuZDEvu7qBf9bN7fPseFFO82kOM5xN4LNimZeL59myzOvflpPFZvmznB8Y
l/DArF7SHNJJ4Bz+6X/8z//7v/7jP/23/yJz8FNYVzcwhVc5fU7vfDMtmuy6
mN1V9aK+LYtW366v39BvJsv8Z2t4NLy2rFrY50n2oshO6gpm9A4/5TP+23VR
dWWVfJcsWd5fle+Lpi27TVbfZK/qqs3237w6f311YObwOx5vMi9mPNzP1kt4
cpLPJtPCTOd8kn1TV/l7eHrdFGE+54vyfQnrTL7kCZy8rNfvc5gtkAHsRNsC
XbXm5TX/eDINP/7ZerbgH8XvP5lkv1iXHfwwvPvkrinbrswr+xW9+aIp3wOJ
Z+ezrl6text/x4//TP5/AiRrXvVqkv1yXdwtivuymoe3vSqb3+bJN4P7ftqU
s7atK/PCJf528s7/9meFPEOH7lxVN8u8g+NCSsMbNr6+PH59dXF+ef08a25m
zw4PD/03L6/0syP97PL05Py708vv9YvHcKerGzvo5bcnT598+RT/PH95dswU
LUxn79XF9clFVrZZVXfZCg6pq8f1qiuXOcx9VTQ0UjUr4JF2DXQMx+nybFW3
bTldFHCXF+sOOBVfCWY0e48Pjx7zBy0stmhxPvDxRVPPCtiw6rZFquzuiuxr
YGQlcY4cR8kXGZDiTdEU+EbYxtNl0dwit4FjuhfGU3yAaZVLoBmaTdaZazbK
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
g61jNKy45z1HZ782WPC9c9q/cP8fgY3XnHcIAQA=

-->

</rfc>
