<?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.11 (Ruby 3.2.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-08" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-08"/>
    <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.</t>
      <t>This proposal is based on several basic design points:</t>
      <ul spacing="normal">
        <li>
          <t>Re-use as much as possible mechanisms of QUIC version 1. In
particular, this proposal uses path validation as specified for QUIC
version 1 and aims to re-use as much as possible of QUIC's connection
migration.</t>
        </li>
        <li>
          <t>Use the same packet header formats as QUIC version 1 to minimize
the difference between multipath and non-multipath traffic being
exposed on wire.</t>
        </li>
        <li>
          <t>Congestion Control must be per-path (following <xref target="QUIC-TRANSPORT"/>)
which usually also requires per-path RTT measurements</t>
        </li>
        <li>
          <t>PMTU discovery should be performed per-path</t>
        </li>
        <li>
          <t>The use of this multipath extension requires the use of non-zero
length connection IDs in both directions.</t>
        </li>
        <li>
          <t>A path is determined by the 4-tuple of source and destination IP
address as well as source and destination port. Therefore, there can be
at most one active paths/connection ID per 4-tuple.</t>
        </li>
        <li>
          <t>If the 4-tuple changes without the use of a new connection ID (e.g.
due to a NAT rebinding), this is considered as a migration event.</t>
        </li>
      </ul>
      <t>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>Allow simultaneous transmission of non-probing packets on multiple
paths.</t>
        </li>
        <li>
          <t>Continue using an existing path even if non-probing packets have
been received on another path.</t>
        </li>
        <li>
          <t>Manage the removal of paths that have been abandoned.</t>
        </li>
      </ul>
      <t>As such, this extension specifies a departure from the specification of
path management in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/> and therefore
requires negotiation between the two endpoints using a new transport
parameter, as specified in <xref target="nego"/>.</t>
      <t>This extension 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.</t>
      <t>The same Path ID is used in both directions to
address a path in the new multipath control frames,
such as PATH_ABANDON <xref target="path-abandon-frame"/>, PATH_STANDBY <xref target="path-standby-frame"/>},
PATH_AVAILABLE <xref target="path-available-frame"/> as well as ACK_MP <xref target="ack-mp-frame"/>.
Further, connection IDs are issued per Path ID.
That means each connection ID is associated with exactly one path identifier
but multiple connection IDs are usually issued for each path identifier.</t>
      <t>The Path ID of the initial path is 0. Connection IDs
which are issued by a NEW_CONNECTION_ID frame <xref section="19.15." sectionFormat="of" target="QUIC-TRANSPORT"/>
respectively are asociated with Path ID 0. Also, the Path ID for
the connection ID specified in the "preferred address" transport parameter is 0.
Use of the "preferred address" is considered as a migration event
that does not change the Path ID.</t>
      <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>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.
The Path ID is limited to 32 bits to ensure a unique nonce.
Further, additional consideration on key updates are explained in <xref target="multipath-key-update"/>.</t>
      <t>This specification
requires the sender to use a non-zero connection ID when opening an
additional path.
Some deployments of QUIC use zero-length connection IDs.
However, when a node selects to use zero-length connection IDs, it is not
possible to use different connection IDs for distinguishing packets
sent to that node over different paths.</t>
      <t>Each 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>This proposal does not cover address discovery and management. Addresses
and the actual decision process to setup or tear down paths are assumed
to be handled by the application that is using the QUIC multipath
extension. This is sufficient to address the first aforementioned
scenario. However, this document does not prevent future extensions from
defining mechanisms to address the remaining scenarios.
Further, this proposal only specifies a simple basic packet
scheduling algorithm, in order to provide some basic implementation
guidance. However, more advanced algorithms as well as potential
extensions to enhance signaling of the current path state are expected
as future work.</t>
      <section anchor="definition">
        <name>Conventions and Definitions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
        <t>We assume that the reader is familiar with the terminology used in
<xref target="QUIC-TRANSPORT"/>. When this document uses the term "path", it refers
to the notion of "network path" used in <xref target="QUIC-TRANSPORT"/>.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>High-level overview</name>
      <t>The multipath extension to QUIC proposed in this document enables the simultaneous utilization of
different paths to exchange non-probing QUIC packets 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>A multipath QUIC connection starts with a QUIC handshake as a regular QUIC connection.
The peers use the initial_max_paths transport parameter during the handshake to
indicate the support of the multipath extension (see <xref target="nego"/>).
The multipath QUIC extension is thus successfully negotiated when QUIC
connection is established where the initial_max_paths transport parameter
was provided by both endpoints.</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"/>.
In this version of the document, a QUIC server does not initiate the creation
of a path, but it can validate a new path created by a client.
A new path can only be used once the associated 4-tuple has been validated
by ensuring that the peer is able to receive packets at that address
(see <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/>).
The connection ID of a packet binds the packet to a path identifier, and therefore
to a packet number space.
Further, the path identifier is used as a numerical identifier
in control frames. E.g. an endpoint sends a PATH_ABANDON frame to request its peer to
abandon a certain path.</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, their
specification is out of scope of this document.</t>
    </section>
    <section anchor="nego">
      <name>Handshake Negotiation and Transport Parameter</name>
      <t>This extension defines a new transport parameter, used to negotiate
the use of the multipath extension during the connection handshake,
as specified in <xref target="QUIC-TRANSPORT"/>. The new transport parameter is
defined as follows:</t>
      <ul spacing="normal">
        <li>
          <t>initial_max_paths (current version uses 0x0f739bbc1b666d07): the
initial_max_paths transport parameter is included if the endpoint supports
the multipath extension as defined in this document. This is
a variable-length integer value specifying the maximum number of
active concurrent paths an endpoint is willing to maintain.
The value of the initial_max_paths parameter MUST be at least 2.
An endpoint that receives a value less than 2 MUST close
the connection with an error of type TRANSPORT_PARAMETER_ERROR.</t>
        </li>
      </ul>
      <t>Setting initial_max_paths parameter is equivalent to sending a
MAX_PATHS frame (<xref target="max-paths-frame"/>) with the same value.</t>
      <t>If either of the endpoints does not advertise the initial_max_paths transport
parameter, then the endpoints MUST NOT use any frame or
mechanism defined in this document.</t>
      <t>When advertising the initial_max_paths transport parameter, the endpoint
MUST use non-zero length Source and Destination Connection IDs.
If an initial_max_paths transport
parameter is received and the carrying packet contains a zero-length
connection ID, the receiver MUST treat this as a connection error of type
MP_PROTOCOL_VIOLATION and close the connection.</t>
      <t>The initial_max_paths parameter MUST NOT be remembered
(<xref section="7.4.1" sectionFormat="of" target="QUIC-TRANSPORT"/>).
New paths can only be used after handshake completion.</t>
      <t>This extension does not change the definition of any transport parameter
defined in <xref section="18.2." sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>The initial_max_paths transport parameter limits the initial maximum number of active paths
that can be used during a connection.
The active_connection_id_limit transport parameter
<xref target="QUIC-TRANSPORT"/> limits the maximum number of active connection IDs per path when the
initial_max_paths parameter is negotiated successfully.
Endpoints might prefer to retain spare connection IDs so that they can
respond to unintentional migration events (<xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>).</t>
      <t>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>
    </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_PATHS 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>If validation succeeds, the client can continue to use the path.
If validation fails, the client MUST NOT use the path and can
remove any status associated to the path initation attempt.
However, as the used Path ID is anyway consumed,
and the endpoint MUST abandon the path by sending a PATH_ABANDON frame
and retire all corresponding connection IDs by sending MP_RETIRE_CONNECTION_ID frames
on another path to inform the peer that the Path ID cannot be used anymore.</t>
        <t><xref section="9.1" sectionFormat="of" target="QUIC-TRANSPORT"/> introduces the concept of
"probing" and "non-probing" frames. A packet that contains at least
one "non-probing" frame is a "non-probing" packet. When the multipath extension
is negotiated, the reception of a "non-probing"
packet on a new path needs to be considered as a path initiation
attempt that does not impact the path status of any existing
path. Therefore, any frame can be sent on a new path at any time
as long as the anti-amplification limits
(<xref section="21.1.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>) and the congestion control
limits for this path are respected.</t>
        <t>Further, in contrast with the specification in
<xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>, the server MUST NOT assume that
receiving non-probing packets on a new path with a new connection ID
indicates an attempt
to migrate to that path.  Instead, servers SHOULD consider new paths
over which non-probing packets have been received as available
for transmission. Reception of QUIC packets containing a connection ID that is already in use
but has a different 4-tuple than previously observed with this connection ID
should be considered as a path migration as further discussed in <xref target="migration"/>.</t>
        <t>As specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, the server is expected to send a new
address validation token to a client following the successful validation of a
new client address. In situations where multiple paths are established, the
client may have received several tokens, each tied to a different address.
When considering using a token for subsequent connections, the client ought to
carefully select the token to use, due to the inherent ambiguity associated
with determining the exact address to which a token is bound. To alleviate such a
token ambiguity issue, a server may issue a token that is capable of validating
any of the previously validated addresses. Further guidance on token usage can be
found in <xref section="8.1.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      </section>
      <section anchor="path-state-management">
        <name>Path State Management</name>
        <t>An endpoint uses the PATH_STANDBY and PATH_AVAILABLE frames to inform the peer that it should
send packets with the preference expressed by these frames.
Note that an endpoint might not follow the peer’s advertisements,
but these frames are still a clear signal of the peer's preference of path usage.
Each peer indicates its preference of path usage independently of the other peer.
It means that peers may have different usage preferences for the same path.
Depending on the sender's decisions, this may lead to usage of paths that have been
indicated as "standby" by the peer or non-usage of some locally available paths.</t>
        <t>PATH_AVAILABLE indicates that a path is "available", i.e., it suggests to
the peer to use its own logic to split traffic among available paths.
PATH_STANDBY marks a path as "standby", i.e., it suggests that no traffic
should be sent on that path if another path is available.
If no frame indicating a path usage preference was received for a certain path,
the preference of the peer is unknown and the sender needs to decide based on it
own local logic if the path should be used.</t>
        <t>Endpoints use the Path ID
in these frames to identify which path state is going to be
changed. Note that both frames can be sent via a different path
and therefore might arrive in different orders.
The PATH_AVAILABLE and PATH_STANDBY frames share a common sequence number space
to detect and ignore outdated information.</t>
        <t>If all active paths are marked as "standby", no guidance is provided about
which path should be used.</t>
      </section>
      <section anchor="path-close">
        <name>Path Close</name>
        <t>Each endpoint manages the set of paths that are available for
transmission. At any time in the connection, each endpoint can decide to
abandon one of these paths, for example following changes in local
connectivity or local preferences. After an endpoint abandons
a path, the peer can expect to not receive any more non-probing packets on
that path.</t>
        <t>An endpoint that wants to close a path SHOULD explicitly
terminate the path by sending a PATH_ABANDON frame (see
<xref target="path-abandon-close"/>). 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 <xref target="retire-cid-close"/>).
Implicit signals such as idle time or packet losses might be
the only way for an endpoint to detect path closure (see {(idle-time-close}})
if connectivity is broken 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>
        <section anchor="path-abandon-close">
          <name>Use PATH_ABANDON Frame to Close a Path</name>
          <t>Either endpoint can initiate path closure
by sending a PATH_ABANDON frame (see <xref target="path-abandon-frame"/>) which
requests the peer to stop sending packets on the the path with
the corresponding Path ID.</t>
          <t>When a path is abandoned, all connection IDs allocated by both
of the endpoints for the specified Path ID need to be retired.
When sending or receiving a PATH_ABANDON frame, endpoints SHOULD wait for at
least three times the current Probe Timeout (PTO) interval after the last
packet was sent on the path, as defined in <xref section="6.2" sectionFormat="of" target="QUIC-RECOVERY"/>,
before sending MP_RETIRE_CONNECTION_ID frames.
This is inline with the requirement of <xref section="10.2" sectionFormat="of" target="QUIC-TRANSPORT"/>.
Both endpoints SHOULD send MP_RETIRE_CONNECTION_ID frames
for all connection IDs associated to the Path ID of the abandoned path
to ensure that paths close cleanly and that delayed or reordered packets
are properly discarded.
The effect of receiving a MP_RETIRE_CONNECTION_ID frame is specified in
Section <xref target="retire-cid-close"/>.</t>
          <t>Usually, it is expected that the PATH_ABANDON frame is used by the client
to indicate to the server that path conditions have changed such that
the path is or will be not usable anymore, e.g. in case of a mobility
event. The PATH_ABANDON frame therefore recommends to the receiver
that no packets should be sent on that path anymore.
In addition, the MP_RETIRE_CONNECTION_ID frame is used indicate to the receiving peer
that the sender will not send any packets associated to the
connection ID used on that path anymore.
The receiver of a PATH_ABANDON frame MAY also send
a PATH_ABANDON frame to indicate its own unwillingness to receive
any packet on this path anymore.</t>
          <t>Reception or sending of the PATH_ABANDON frame is
the first step to release all resources related to a
Path ID. However, the Path ID can only be released after all active
connection IDs for the Path ID have been retired or timed-out after
the PATH_ABANDON frame was sent.
Still, when an endpoint receives an PATH_ABANDON frame,
it SHOULD NOT use the associated Path ID in future frames, except
in ACK_MP frames for acknowledging inflight packets and
in MP_RETIRE_CONNECTION_ID frames for connection ID retirement.</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 a PATH_ABANDON frame and retire all corresponding connection IDs
by sending MP_RETIRE_CONNECTION_ID frames on another path after an idle time.</t>
          <t>If a PATH_ABANDON frame is received for the only active path of a QUIC
connection, the receiving peer SHOULD send a CONNECTION_CLOSE frame
and enter the closing state. If the client received a PATH_ABANDON
frame for the last open path, it MAY instead try to open a new path, if
available, and only initiate connection closure if path validation fails
or a CONNECTION_CLOSE frame is received from the server. Similarly
the server MAY wait for a short, limited time such as one PTO if a path
probing packet is received on a new path before sending the
CONNECTION_CLOSE frame.</t>
        </section>
        <section anchor="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 MAY release the resources associated with a path for
which no non-probing packet was received for a sufficiently long
path-idle delay, but SHOULD only release resources for the last
available path if no traffic is received for the duration of the idle
timeout, as specified in <xref section="10.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.
This means if all paths remain idle for the idle timeout, the connection
is implicitly closed.</t>
          <t>Server implementations need to select the sub-path idle timeout as a trade-
off between keeping resources, such as connection IDs, in use
for an excessive time or having to promptly re-establish a path
after a spurious estimate of path abandonment by the client.</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.</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>If the client has used all the allocated connection IDs for a path, it is supposed to retire
those that are not 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. If the path is still active, the peer SHOULD replace
it with a new connection ID using a MP_NEW_CONNECTION_ID frame.</t>
        <t>Endpoints MUST NOT issue new connection IDs with Path IDs greater than
the Maximum Path Identifier field in MAX_PATHS frames (see Section <xref target="max-paths-frame"/>).
When an endpoint finds it has not enough available unused path identifiers,
it SHOULD send a MAX_PATHS frame to inform the peer that it could use new active
path identifiers.</t>
        <section anchor="retire-cid-close">
          <name>Effect of MP_RETIRE_CONNECTION_ID Frame</name>
          <t>Receiving a MP_RETIRE_CONNECTION_ID frame causes an endpoint to discard
the resources associated with that connection ID. Note that retirement of
connection IDs will not retire the Path ID for the specific path.
The list of received packets used to send acknowledgements also remains
unaffected as the packet number space is associated with a path.</t>
          <t>The peer that sends the MP_RETIRE_CONNECTION_ID frame can keep sending data
on the path that the retired connection ID was used on but has
to use a different connection ID for the same Path ID when doing so.
If no other connection ID for the same Path ID is available, the endpoint cannot send on
this path. This can happen if, e.g., the connection ID issuer requests retirement of a
connection ID using the Retire Prior To field in the MP_NEW_CONNECTION_ID frame but does
provide sufficient new connection IDs.</t>
          <t>Note that even if a peer cannot send on a path anymore because it does not have
a valid connection ID to use, it can still acknowledge packets received on the path
by sending ACK_MP frames on another path, if available.
Similarly it can still send multipath control frames for that Path ID
(such as PATH_ABANDON, PATH_STANDBY or PATH_AVAILABLE) on other available paths.</t>
          <t>If the peer cannot send on a path and no data is received on the path, the idle time-out will close
the path. If, before the idle timer expires, a new connection ID gets issued
by its peer, the endpoint can re-activate the path by
sending a packet with a new connection ID on that path.</t>
        </section>
      </section>
      <section anchor="path-states">
        <name>Path States</name>
        <t><xref target="fig-path-states"/> shows the states that an endpoint's path can have.</t>
        <figure anchor="fig-path-states">
          <name>States of a path</name>
          <artwork><![CDATA[
       o
       | PATH_CHALLENGE sent/received on new path
       v
 +------------+    Path validation failed
 | Validating |----------------------------------+
 +------------+                                  |
       |                                         |
       | PATH_RESPONSE received                  |
       |                                         |
       v                                         |
 +------------+        Idle timeout              |
 |   Active   |----------------------------------+
 +------------+                                  |
       |                                         |
       | PATH_ABANDON sent/received              |
       v                                         |
 +------------+                                  |
 |   Closing  |                                  |
 +------------+                                  |
       |                                         |
       | MP_RETIRE_CONNECTION_ID sent && received|
       | or                                      |
       | Path's draining timeout                 |
       | (at least 3 PTO)                        |
       v                                         |
 +------------+                                  |
 |   Closed   |<---------------------------------+
 +------------+
]]></artwork>
        </figure>
        <t>In all but the "Closed" states, hosts have to track the following information.</t>
        <ul spacing="normal">
          <li>
            <t>Associated 4-tuple: The tuple (source IP, source port, destination IP,
destination port) used by the endpoint to send packets over the path.</t>
          </li>
          <li>
            <t>Associated Path Identifier: The Path ID used to address the path.
The endpoint relies on the path identifier to send path control information
and specifically acknowledge packets belonging to that path-specific
packet number space.</t>
          </li>
          <li>
            <t>Associated Destination Connection IDs: The connection IDs used to send
packets over the path.</t>
          </li>
        </ul>
        <t>In Active state, hosts also tracks the following information:</t>
        <ul spacing="normal">
          <li>
            <t>Associated Source Connection IDs: The connection IDs used to receive
packets over the path.</t>
          </li>
        </ul>
        <t>A path in the "Validating" state performs path validation as described
in Section <xref target="path-initiation"/>.</t>
        <t>The endpoint can use all paths in the "Active" state, provided
that the congestion control and flow control currently allow sending
of new data on a path.</t>
        <t>"Closing" state is entered after an PATH_ABANDON frame was sent or received.
In this state, the endpoint waits for three PTOs before sending MP_RETIRE_CONNECTION_ID frames.
This allows for graceful tear down and processing of in-flight packets.</t>
        <t>When a path reaches the "Closed" state, the endpoint releases all the
path's associated resources, including the associated connection IDs and the path identifier.</t>
      </section>
    </section>
    <section anchor="multipath-operation-with-multiple-packet-number-spaces">
      <name>Multipath Operation with Multiple Packet Number Spaces</name>
      <t>The QUIC multipath extension uses different packet number spaces for each path.
This also means that the same packet number can occur on each path and the
packet number is not a unique identifier anymore. This requires changes to
the ACK frame as well as packet protection as described in the following subsections.</t>
      <t>When multipath is negotiated, separate packet number space is linked to a Path ID.
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>
      <section anchor="sending-acknowledgements">
        <name>Sending Acknowledgements</name>
        <t>The ACK_MP frame, as specified in <xref target="ack-mp-frame"/>, is used to
acknowledge 1-RTT packets.
Compared to the ACK frame as specified in <xref section="19.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, the ACK_MP frame additionally
contains the receiver's Path ID to identify the path-specific packet number space.</t>
        <t>As multipath support is unknown during the handshake, acknowledgements of
Initial and Handshake packets are sent using ACK frames.
If the multipath extension has been successfully
negotiated, ACK frames in 1-RTT packets acknowledge packets for the path with
Path ID 0.</t>
        <t>After the handshake concluded if negotiation of multipath support succeeded,
endpoints SHOULD use ACK_MP frames instead of ACK frames,
also for acknowledging so far unacknowledged 0-RTT packets, using
Path ID 0.</t>
        <t>ACK_MP frames (defined in <xref target="ack-mp-frame"/>) can be returned on any path.
If the ACK_MP is preferred to be sent on the same path as the acknowledged
packet (see <xref target="compute-rtt"/> for further guidance), it can be beneficial
to bundle an ACK_MP frame with the PATH_RESPONSE frame during
path validation.</t>
      </section>
      <section anchor="multipath-aead">
        <name>Packet Protection</name>
        <t>Packet protection for QUIC version 1 is specified in <xref section="5" sectionFormat="of" target="QUIC-TLS"/>.
The general principles of packet protection are not changed for
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>
        <t><xref section="5.3" sectionFormat="of" target="QUIC-TLS"/> specifies AEAD usage, and in particular
the use of a nonce, N, formed by combining the packet protection IV
with the packet number. When multiple packet number spaces are used,
the packet number alone would not guarantee the uniqueness of the nonce.</t>
        <t>In order to guarantee the uniqueness of the nonce, the nonce N is
calculated by combining the packet protection IV with the packet number
and with the least significant 32 bits of the Path ID.</t>
        <t>To calculate the nonce, a 96-bit path-and-packet-number is composed of the least
significant 32 bits of the Path ID in network byte order,
two zero bits, and the 62 bits of the reconstructed QUIC packet number in
network byte order. If the IV is larger than 96 bits, the path-and-packet-number
is left-padded with zeros to the size of the IV. The exclusive OR of the padded
packet number and the IV forms the AEAD nonce.</t>
        <t>For example, assuming the IV value is <tt>6b26114b9cba2b63a9e8dd4f</tt>,
the Path ID is <tt>3</tt>, and the packet number is <tt>aead</tt>,
the nonce will be set to <tt>6b2611489cba2b63a9e873e2</tt>.</t>
      </section>
      <section anchor="multipath-key-update">
        <name>Key Update</name>
        <t>The Key Phase bit update process is specified in
<xref section="6" sectionFormat="of" target="QUIC-TLS"/>. The general principles of key update
are not changed in this specification. Following <xref target="QUIC-TLS"/>, the Key Phase bit is used to
indicate which packet protection keys are used to protect the packet.
The Key Phase bit is toggled to signal each subsequent key update.</t>
        <t>Because of network delays, packets protected with the older key might
arrive later than the packets protected with the new key, however receivers
can solely rely on the Key Phase bit to determine the corresponding packet
protection key, assuming that there is sufficient interval between two
consecutive key updates (<xref section="6.5" sectionFormat="of" target="QUIC-TLS"/>).</t>
        <t>When this specification is used, endpoints SHOULD wait for at least three times
the largest PTO among all the paths before initiating a new key update
after receiving an acknowledgement that confirms the receipt of the previous key
update. This interval is different from that in <xref target="QUIC-TLS"/>
which used three times the PTO of the only one active path.</t>
        <t>Following <xref section="5.4" sectionFormat="of" target="QUIC-TLS"/>, the Key Phase bit is protected,
so sending multiple packets with Key Phase bit flipping at the same time
should not cause linkability issue.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="path-establishment">
        <name>Path Establishment</name>
        <t><xref target="fig-example-new-path"/> illustrates an example of new path establishment
using multiple packet number spaces.</t>
        <figure anchor="fig-example-new-path">
          <name>Example of new path establishment</name>
          <artwork><![CDATA[
   Client                                                  Server

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

]]></artwork>
        </figure>
        <t>In <xref target="fig-example-new-path"/>, the endpoints first exchange
new available connection IDs with the NEW_CONNECTION_ID frame.
In this example, the client provides one connection ID (C1 with
Path 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.
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>In this example, the client detects a network environment change
(client's 4G/Wi-Fi is turned off, Wi-Fi signal is fading below a threshold,
or the quality of RTT or loss rate is becoming worse) and wants to close
an existing path.</t>
        <t><xref target="fig-example-path-close1"/> illustrates an example of path closing. For the first path, the
server's 1-RTT packets use DCID C1 and the
client's 1-RTT packets use DCID S1 for the path with Path ID 1. For the
second path, the server's 1-RTT packets use DCID C2 and
the client's 1-RTT packets use DCID S2 for the path with Path ID
2.</t>
        <t>Note that the paths use different packet number spaces. In this case, the
client is going to close the first path with Path ID 1 but it sends the
ABANBON frame over the second path using the DCID S2. In this example, the
server confirms the path closure by sending an PATH_ABANDON frame
by for the same Path ID to the client also using the other path with DCID C2.
Both the client and the server can close the path after receiving
the MP_RETIRE_CONNECTION_ID frame for that path.</t>
        <figure anchor="fig-example-path-close1">
          <name>Example of closing a path.</name>
          <artwork><![CDATA[
Client                                                      Server

(client tells server to abandon a path)
1-RTT[X]: DCID=S2 PATH_ABANDON[Path ID=1]->
                           (server tells client to abandon a path)
               <-1-RTT[Y]: DCID=C2 PATH_ABANDON[Path ID=1],
                                               ACK_MP[PATH ID=1, PN=X]
(client retires the corresponding CID)
1-RTT[U]: DCID=S2 MP_RETIRE_CONNECTION_ID[Path ID=1, Seq=0],
ACK_MP[Path ID=1, PN=Y] ->
                            (server retires the corresponding CID)
           <- 1-RTT[V]: DCID=C2 RETIRE_CONNECTION_ID[Path ID1, Seq=0],
                                                ACK_MP[Path ID=1, PN=U]
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="number-spaces">
        <name>Number Spaces</name>
        <t>As stated in <xref target="introduction"/>, when the multipath extension is negotiated, each
path uses a separate packet number space.
This is a major difference from
<xref target="QUIC-TRANSPORT"/>, which only defines three number spaces (Initial,
Handshake and Application packets).</t>
        <t>The relation between packet number spaces and paths is fixed.
Connection IDs are separately allocated for each Path ID.
Rotating the connection ID on a path does not change the Path ID.
NAT rebinding, though it changes the 4-tuple of the path,
also does not change the path identifier.
The packet number space does not change when connection ID
rotation happens within a given Path ID.</t>
        <t>Data associated with the transmission and reception such RTT measurements,
congestion control state, or loss recovery are maintained per packet number
space and as such per Path ID.</t>
      </section>
      <section anchor="congestion-control">
        <name>Congestion Control</name>
        <t>When the QUIC multipath extension is used, senders manage per-path
congestion status as required in <xref section="9.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.
However, in <xref target="QUIC-TRANSPORT"/> only one active path is assumed and as such
the requirement is to reset the congestion control status on path migration.
With the multipath extension, multiple paths can be used simultaneously,
therefore separate congestion control state is maintained for each path.
This means a sender is not allowed to send more data on a given path
than congestion control for that path indicates.</t>
        <t>When a Multipath QUIC connection uses two or more paths, there is no
guarantee that these paths are fully disjoint. When two (or more paths)
share the same bottleneck, using a standard congestion control scheme
could result in an unfair distribution of the bandwidth with
the multipath connection getting more bandwidth than competing single
paths connections. Multipath TCP uses the LIA congestion control scheme
specified in <xref target="RFC6356"/> to solve this problem.  This scheme can
immediately be adapted to Multipath QUIC. Other coupled congestion
control schemes have been proposed for Multipath TCP such as <xref target="OLIA"/>.</t>
      </section>
      <section anchor="compute-rtt">
        <name>Computing Path RTT</name>
        <t>Acknowledgement delays are the sum of two one-way delays, the delay
on the packet sending path and the delay on the return path chosen
for the acknowledgements.  When different paths have different
characteristics, this can cause acknowledgement delays to vary
widely.  Consider for example a multipath transmission using both a
terrestrial path, with a latency of 50ms in each direction, and a
geostationary satellite path, with a latency of 300ms in both
directions.  The acknowledgement delay will depend on the combination
of paths used for the packet transmission and the ACK transmission,
as shown in <xref target="fig-example-ack-delay"/>.</t>
        <table anchor="fig-example-ack-delay">
          <name>Example of ACK delays using multiple paths</name>
          <thead>
            <tr>
              <th align="left">ACK Path \ Data path</th>
              <th align="left">Terrestrial</th>
              <th align="left">Satellite</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Terrestrial</td>
              <td align="left">100ms</td>
              <td align="left">350ms</td>
            </tr>
            <tr>
              <td align="left">Satellite</td>
              <td align="left">350ms</td>
              <td align="left">600ms</td>
            </tr>
          </tbody>
        </table>
        <t>The ACK_MP frames describe packets that were sent on the specified path,
but they may be received through any available path. There is an
understandable concern that if successive acknowledgements are received
on different paths, the measured RTT samples will fluctuate widely,
and that might result in poor performance. While this may be a concern,
the actual behavior is complex.</t>
        <t>The computed values reflect both the state of the network path and the
scheduling decisions by the sender of the ACK_MP frames. In the example
above, we may assume that the ACK_MP will be sent over the terrestrial
link, because that provides the best response time. In that case, the
computed RTT value for the satellite path will be about 350ms. This
lower than the 600ms that would be measured if the ACK_MP came over
the satellite channel, but it is still the right value for computing
for example the PTO timeout: if an ACK_MP is not received after more
than 350ms, either the data packet or its ACK_MP were probably lost.</t>
        <t>The simplest implementation is to compute smoothedRTT and RTTvar per
<xref section="5.3" sectionFormat="of" target="QUIC-RECOVERY"/> regardless of the path through which MP_ACKs are
received. This algorithm will provide good results,
except if the set of paths changes and the ACK_MP sender
revisits its sending preferences. This is not very
different from what happens on a single path if the routing changes.
The RTT, RTT variance and PTO estimates will rapidly converge to
reflect the new conditions.
There is however an exception: some congestion
control functions rely on estimates of the minimum RTT. It might be prudent
for nodes to remember the path over which the ACK_MP that produced
the minimum RTT was received, and to restart the minimum RTT computation
if that path is abandoned.</t>
      </section>
      <section anchor="packet-scheduling">
        <name>Packet Scheduling</name>
        <t>The transmission of QUIC packets on a regular QUIC connection is regulated
by the arrival of data from the application and the congestion control
scheme. QUIC packets that increase the number of bytes in flight can only be sent
when the congestion window allows it.
Multipath QUIC implementations also need to include a packet scheduler
that decides, among the paths whose congestion window is open, the path
over which the next QUIC packet will be sent. Most frames, including
control frames (PATH_CHALLENGE and PATH_RESPONSE being the notable
exceptions), can be sent and received on any active path. The scheduling
is a local decision, based on the preferences of the application and the
implementation.</t>
        <t>Note that this implies that an endpoint may send and receive ACK_MP
frames on a path different from the one that carried the acknowledged
packets. As noted in <xref target="compute-rtt"/> the values computed using
the standard algorithm reflect both the characteristics of the
path and the scheduling algorithm of ACK_MP frames. The estimates will converge
faster if the scheduling strategy is stable, but besides that
implementations can choose between multiple strategies such as sending
ACK_MP frames on the path they acknowledge packets, or sending
ACK_MP frames on the shortest path, which results in shorter control loops
and thus better performance.</t>
      </section>
      <section anchor="retransmissions">
        <name>Retransmissions</name>
        <t>Simultaneous use of multiple paths enables different
retransmission strategies to cope with losses such as:
a) retransmitting lost frames over the
same path, b) retransmitting lost frames on a different or
dedicated path, and c) duplicate lost frames on several paths (not
recommended for general purpose use due to the network
overhead). While this document does not preclude a specific
strategy, more detailed specification is out of scope.</t>
      </section>
      <section anchor="handling-different-pmtu-sizes">
        <name>Handling different PMTU sizes</name>
        <t>An implementation should take care to handle different PMTU sizes across
multiple paths. One simple option if the PMTUs are relatively similar is to apply the minimum PMTU of all paths to
each path. The benefit of such an approach is to simplify retransmission
processing as the content of lost packets initially sent on one path can be sent
on another path without further frame scheduling adaptations.</t>
      </section>
      <section anchor="keep-alive">
        <name>Keep Alive</name>
        <t>The QUIC specification defines an optional keep alive process, see <xref section="5.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.
Implementations of the multipath extension should map this keep alive process to a number of paths.
Some applications may wish to ensure that one path remains active, while others could prefer to have
two or more active paths during the connection lifetime. Different applications will likely require different strategies.
Once the implementation has decided which paths to keep alive, it can do so by sending Ping frames
on each of these paths before the idle timeout expires.</t>
      </section>
      <section anchor="migration">
        <name>Connection ID Changes and NAT Rebindings</name>
        <t><xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> indicates that an endpoint
can change the connection ID it uses 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_PATHS frame or in the initial_max_paths transport parameter,
if no MAX_PATHS frame was received yet,
MUST be treated as a connection error of type MP_PROTOCOL_VIOLATION.</t>
      <t>If an endpoint receives a multipath-specific frame
with a path identifier that it cannot process
anymore (e.g., because the path might have been abandoned), it
MUST silently ignore the frame.</t>
      <section anchor="ack-mp-frame">
        <name>ACK_MP Frame</name>
        <t>The ACK_MP frame (types TBD-00 and TBD-01)
is an extension of the ACK frame specified in <xref section="19.3" sectionFormat="of" target="QUIC-TRANSPORT"/>. It is
used to acknowledge packets that were sent on different paths, as
each path as its own packet number space. If the frame type is TBD-01, ACK_MP frames
also contain the sum of QUIC packets with associated ECN marks received
on the acknowledged packet number space up to this point.</t>
        <t>ACK_MP frame is formatted as shown in <xref target="fig-ack-mp-format"/>.</t>
        <figure anchor="fig-ack-mp-format">
          <name>ACK_MP Frame Format</name>
          <artwork><![CDATA[
  ACK_MP Frame {
    Type (i) = TBD-00..TBD-01
         (experiments use  0x15228c00-0x15228c01),
    Path Identifier (i),
    Largest Acknowledged (i),
    ACK Delay (i),
    ACK Range Count (i),
    First ACK Range (i),
    ACK Range (..) ...,
    [ECN Counts (..)],
  }
]]></artwork>
        </figure>
        <t>Compared to the ACK frame specified in <xref target="QUIC-TRANSPORT"/>, the following
field is added.</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID associated with the packet number space of the 0-RTT and 1-RTT packets
which are acknowledged by the ACK_MP frame.</t>
          </dd>
        </dl>
      </section>
      <section anchor="path-abandon-frame">
        <name>PATH_ABANDON Frame</name>
        <t>The PATH_ABANDON frame informs the peer to abandon a path.</t>
        <t>PATH_ABANDON frames are formatted as shown in <xref target="fig-path-abandon-format"/>.</t>
        <figure anchor="fig-path-abandon-format">
          <name>PATH_ABANDON Frame Format</name>
          <artwork><![CDATA[
  PATH_ABANDON Frame {
    Type (i) = TBD-02 (experiments use 0x15228c05),
    Path Identifier (i),
    Error Code (i),
    Reason Phrase Length (i),
    Reason Phrase (..),
  }
]]></artwork>
        </figure>
        <t>PATH_ABANDON frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID to abandon.</t>
          </dd>
          <dt>Error Code:</dt>
          <dd>
            <t>A variable-length integer that indicates the reason for abandoning
this path.</t>
          </dd>
          <dt>Reason Phrase Length:</dt>
          <dd>
            <t>A variable-length integer specifying the length of the reason phrase
in bytes. Because an PATH_ABANDON frame cannot be split between packets,
any limits on packet size will also limit the space available for
a reason phrase.</t>
          </dd>
          <dt>Reason Phrase:</dt>
          <dd>
            <t>Additional diagnostic information for the closure. This can be
zero length if the sender chooses not to give details beyond
the Error Code value. This SHOULD be a UTF-8 encoded string <xref target="RFC3629"/>,
though the frame does not carry information, such as language tags,
that would aid comprehension by any entity other than the one
that created the text.</t>
          </dd>
        </dl>
        <t>PATH_ABANDON frames are ack-eliciting. If a packet containing
a PATH_ABANDON frame is considered lost, the peer SHOULD repeat it.</t>
        <t>After sending the PATH_ABANDON frame,
the endpoint MUST NOT send frames that use the Path ID anymore,
even on other network paths.</t>
      </section>
      <section anchor="path-standby-frame">
        <name>PATH_STANDBY frame</name>
        <t>PATH_STANDBY Frames are used by endpoints to inform the peer
about its preference to not use the indicated path for sending.
PATH_STANDBY frames are formatted as shown in <xref target="fig-path-standby-format"/>.</t>
        <figure anchor="fig-path-standby-format">
          <name>PATH_STANDBY Frame Format</name>
          <artwork><![CDATA[
  PATH_STANDBY Frame {
    Type (i) = TBD-03 (experiments use 0x15228c07)
    Path Identifier (i),
    Path Status Sequence Number (i),
  }
]]></artwork>
        </figure>
        <t>PATH_STANDBY Frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID the status update corresponds to.
All Path IDs that have been issued
MAY be specified, even if they are not yet in use over a path.</t>
          </dd>
          <dt>Path Status Sequence Number:</dt>
          <dd>
            <t>A variable-length integer specifying the sequence number assigned for
this PATH_STANDBY frame. The sequence number space is shared with the
PATH_AVAILABLE frame and the sequence
number MUST be monotonically increasing generated by the sender of
the PATH_STANDBY frame in the same connection. The receiver of
the PATH_STANDBY frame needs to use and compare the sequence numbers
separately for each Path ID.</t>
          </dd>
        </dl>
        <t>Frames may be received out of order. A peer MUST ignore an incoming
PATH_STANDBY frame if it previously received another PATH_STANDBY frame
or PATH_AVAILABLE
for the same Path ID with a
Path Status sequence number equal to or higher than the Path Status
sequence number of the incoming frame.</t>
        <t>PATH_STANDBY frames are ack-eliciting. If a packet containing a
PATH_STANDBY frame is considered lost, the peer SHOULD resend the frame
only if it contains the last status sent for that path -- as indicated
by the sequence number.</t>
        <t>A PATH_STANDBY frame MAY be bundled with a MP_NEW_CONNECTION_ID frame or
a PATH_RESPONSE frame in order to indicate the preferred path usage
before or during path initiation.</t>
      </section>
      <section anchor="path-available-frame">
        <name>PATH_AVAILABLE frame</name>
        <t>PATH_AVAILABLE frames are used by endpoints to inform the peer
that the indicated path is available for sending.
PATH_AVAILABLE frames are formatted as shown in <xref target="fig-path-available-format"/>.</t>
        <figure anchor="fig-path-available-format">
          <name>PATH_AVAILABLE Frame Format</name>
          <artwork><![CDATA[
  PATH_AVAILABLE Frame {
    Type (i) = TBD-03 (experiments use 0x15228c08),
    Path Identifier (i),
    Path Status Sequence Number (i),
  }
]]></artwork>
        </figure>
        <t>PATH_AVAILABLE frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID the status update corresponds to.</t>
          </dd>
          <dt>Path Status Sequence Number:</dt>
          <dd>
            <t>A variable-length integer specifying
the sequence number assigned for this PATH_AVAILABLE frame.
The sequence number space is shared with the PATH_STANDBY frame and the sequence
number MUST be monotonically increasing generated by the sender of
the PATH_AVAILABLE frame in the same connection. The receiver of
the PATH_AVAILABLE frame needs to use and compare the sequence numbers
separately for each Path ID.</t>
          </dd>
        </dl>
        <t>Frames may be received out of order. A peer MUST ignore an incoming
PATH_AVAILABLE frame if it previously received another PATH_AVAILABLE frame
or PATH_STANDBY frame for the same Path ID with a
Path Status sequence number equal to or higher than the Path Status
sequence number of the incoming frame.</t>
        <t>PATH_AVAILABLE frames are ack-eliciting. If a packet containing a
PATH_AVAILABLE frame is considered lost, the peer SHOULD resend the frame
only if it contains the last status sent for that path -- as indicated
by the sequence number.</t>
        <t>A PATH_AVAILABLE frame MAY be bundled with a MP_NEW_CONNECTION_ID frame or
a PATH_RESPONSE frame in order to indicate the preferred path usage
before or during path initiation.</t>
      </section>
      <section anchor="mp-new-conn-id-frame">
        <name>MP_NEW_CONNECTION_ID frames</name>
        <t>The MP_NEW_CONNECTION_ID frame (type=0x15228c09)
is an extension of the NEW_CONNECTION_ID frame specified in
<xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>.
It is used to provide its peer with alternative connection IDs for 1-RTT packets
for a specific path. The peer can then use a different connection ID on the same path
to break linkability when migrating on that path; see also <xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t>MP_NEW_CONNECTION_ID frames are formatted as shown in <xref target="fig-mp-connection-id-frame-format"/>.</t>
        <figure anchor="fig-mp-connection-id-frame-format">
          <name>MP_NEW_CONNECTION_ID Frame Format</name>
          <artwork><![CDATA[
MP_NEW_CONNECTION_ID Frame {
  Type (i) = 0x15228c09,
  Path Identifier (i),
  Sequence Number (i),
  Retire Prior To (i),
  Length (8),
  Connection ID (8..160),
  Stateless Reset Token (128),
}
]]></artwork>
        </figure>
        <t>Compared to the NEW_CONNECTION_ID frame specified in
<xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>, the following
field is added:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID associated with the connection ID. This
means the provided connection ID can only be used on the corresponding path.</t>
          </dd>
        </dl>
        <t>Note that, other than for the NEW_CONNECTION_ID frame of <xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>,
the sequence number applies on a per-path context.
This means different connection IDs on different paths may have the same
sequence number value. Respectively, the Retire Prior To field indicates which connection IDs
should be retired for the path with the Path ID in the Path Identifier field.</t>
        <t>Note that the NEW_CONNECTION_ID frame can only be used to issue or retire
connection IDs for the initial path with Path ID 0.</t>
      </section>
      <section anchor="mp-retire-conn-id-frame">
        <name>MP_RETIRE_CONNECTION_ID frames</name>
        <t>The MP_RETIRE_CONNECTION_ID frame (type=0x15228c0a)
is an extension of the RETIRE_CONNECTION_ID frame specified in
<xref section="19.16" sectionFormat="of" target="QUIC-TRANSPORT"/>. It is used
to indicate that it will no longer use a connection ID for a specific path
that was issued by its peer. To retire the connection ID used
during the handshake on the initial path, Path ID 0 is used.
Sending a MP_RETIRE_CONNECTION_ID frame also serves as a request to the peer
to send additional connection IDs for this path (see also <xref section="5.1" sectionFormat="of" target="QUIC-TRANSPORT"/>,
unless the path specified by the Path ID has been abandoned. New path-specific connection IDs can be
delivered to a peer using the MP_NEW_CONNECTION_ID frame (see Section <xref target="mp-new-conn-id-frame"/>).</t>
        <t>MP_RETIRE_CONNECTION_ID frames are formatted as shown in <xref target="fig-mp-retire-connection-id-frame-format"/>.</t>
        <figure anchor="fig-mp-retire-connection-id-frame-format">
          <name>MP_RETIRE_CONNECTION_ID Frame Format</name>
          <artwork><![CDATA[
MP_RETIRE_CONNECTION_ID Frame {
  Type (i) = 0x15228c0a,
  Path Identifier (i),
  Sequence Number (i),
}
]]></artwork>
        </figure>
        <t>Compared to the RETIRE_CONNECTION_ID frame specified in
<xref section="19.16" sectionFormat="of" target="QUIC-TRANSPORT"/>, the following
field is added:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID associated with the connection ID to retire.</t>
          </dd>
        </dl>
        <t>Note that the RETIRE_CONNECTION_ID frame can only be used to retire
connection IDs for the initial path with Path ID 0.</t>
        <t>As the MP_NEW_CONNECTION_ID frames applies the sequence number per path,
the sequence number in the MP_RETIRE_CONNECTION_ID frame
also needs to be considered in the context of the Path Identifier field.</t>
      </section>
      <section anchor="max-paths-frame">
        <name>MAX_PATHS frames</name>
        <t>A MAX_PATHS frame (type=0x15228c0b) informs the peer of the cumulative number of paths
it is permitted to open.</t>
        <t>When there are not enough unused path identifiers, endpoints SHOULD
send MAX_PATHS frame to inform the peer that new path identifiers are available.</t>
        <t>MAX_PATHS frames are formatted as shown in <xref target="fig-max-paths-frame-format"/>.</t>
        <figure anchor="fig-max-paths-frame-format">
          <name>MAX_PATHS Frame Format</name>
          <artwork><![CDATA[
MAX_PATHS Frame {
  Type (i) = 0x15228c0b,
  Maximum Paths (i),
}
]]></artwork>
        </figure>
        <t>MAX_PATHS frames contain the following field:</t>
        <dl>
          <dt>Maximum Path Identifier:</dt>
          <dd>
            <t>A count of the cumulative number of paths that can be opened
over the lifetime of the connection. This value MUST NOT exceed 2^32-1, as
Path IDs are defined with a maximum value 2^32-1 as the 32 bits of the Path ID are used
to calculate the nonce (see Section <xref target="multipath-aead"/>).
The Maximum Paths value MUST NOT be lower than the value
advertised in the initial_max_paths transport parameter. Receipt
of an invalid Maximum Paths value MUST be treated as a
connection error of type MP_PROTOCOL_VIOLATION.</t>
          </dd>
        </dl>
        <t>Loss or reordering can cause an endpoint to receive a MAX_PATHS frame with
a smaller Maximum Paths value than was previously received. MAX_PATHS 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 0x0f739bbc1b666d07)</td>
            <td align="left">initial_max_paths</td>
            <td align="left">
              <xref target="nego"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following frame types defined in <xref target="frame-types"/> should be added to
the "QUIC Frame Types" registry under the "QUIC Protocol" heading.</t>
      <table anchor="frame-types">
        <name>Addition to QUIC Frame Types Entries</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Frame Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD-00 - TBD-01 (experiments use 0x15228c00-0x15228c01)</td>
            <td align="left">ACK_MP</td>
            <td align="left">
              <xref target="ack-mp-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-02 (experiments use 0x15228c05)</td>
            <td align="left">PATH_ABANDON</td>
            <td align="left">
              <xref target="path-abandon-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-03 (experiments use 0x15228c07)</td>
            <td align="left">PATH_STANDBY</td>
            <td align="left">
              <xref target="path-standby-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-04 (experiments use 0x15228c08)</td>
            <td align="left">PATH_AVAILABLE</td>
            <td align="left">
              <xref target="path-available-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-05 (experiments use 0x15228c09)</td>
            <td align="left">MP_NEW_CONNECTION_ID</td>
            <td align="left">
              <xref target="mp-new-conn-id-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-06 (experiments use 0x15228c0a)</td>
            <td align="left">MP_RETIRE_CONNECTION_ID</td>
            <td align="left">
              <xref target="mp-retire-conn-id-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-06 (experiments use 0x15228c0b)</td>
            <td align="left">MAX_PATHS</td>
            <td align="left">
              <xref target="max-paths-frame"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following transport error code defined in <xref target="tab-error-code"/> should
be added to the "QUIC Transport Error Codes" registry under
the "QUIC Protocol" heading.</t>
      <table anchor="tab-error-code">
        <name>Error Code for Multipath QUIC</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Code</th>
            <th align="left">Description</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD (experiments use 0x1001d76d3ded42f3)</td>
            <td align="left">MP_PROTOCOL_VIOLATION</td>
            <td align="left">Multipath protocol violation</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>This document is a collaboration of authors that combines work from
three proposals. Further contributors that were also involved
one of the original proposals are:</t>
      <ul spacing="normal">
        <li>
          <t>Qing An</t>
        </li>
        <li>
          <t>Zhenyu Li</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Marten Seemann and Kazuho Oku for their thorough reviews and valuable contributions!</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="QUIC-RECOVERY">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6356">
          <front>
            <title>Coupled Congestion Control for Multipath Transport Protocols</title>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="D. Wischik" initials="D." surname="Wischik"/>
            <date month="October" year="2011"/>
            <abstract>
              <t>Often endpoints are connected by multiple paths, but communications are usually restricted to a single path per connection. Resource usage within the network would be more efficient were it possible for these multiple paths to be used concurrently. Multipath TCP is a proposal to achieve multipath transport in TCP.</t>
              <t>New congestion control algorithms are needed for multipath transport protocols such as Multipath TCP, as single path algorithms have a series of issues in the multipath context. One of the prominent problems is that running existing algorithms such as standard TCP independently on each path would give the multipath flow more than its fair share at a bottleneck link traversed by more than one of its subflows. Further, it is desirable that a source with multiple paths available will transfer more traffic using the least congested of the paths, achieving a property called "resource pooling" where a bundle of links effectively behaves like one shared link with bigger capacity. This would increase the overall efficiency of the network and also its robustness to failure.</t>
              <t>This document presents a congestion control algorithm that couples the congestion control algorithms running on different subflows by linking their increase functions, and dynamically controls the overall aggressiveness of the multipath flow. The result is a practical algorithm that is fair to TCP at bottlenecks while moving traffic away from congested links. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6356"/>
          <seriesInfo name="DOI" value="10.17487/RFC6356"/>
        </reference>
        <reference anchor="OLIA">
          <front>
            <title>MPTCP is not pareto-optimal: performance issues and a possible solution</title>
            <author initials="R." surname="Khalili">
              <organization/>
            </author>
            <author initials="N." surname="Gast">
              <organization/>
            </author>
            <author initials="M." surname="Popovic">
              <organization/>
            </author>
            <author initials="U." surname="Upadhyay">
              <organization/>
            </author>
            <author initials="J." surname="Le Boudec">
              <organization/>
            </author>
            <date year="2012"/>
          </front>
          <seriesInfo name="Proceedings of the 8th international conference on Emerging networking experiments and technologies, ACM" value=""/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA829224cSZYg+G5f4c0EJsnpiGiSylSmtF2LYlLMKm5LIpti
ZnVObY3KI8KD9FaEe5S7hyiWUo15GWBe5233ZR92gAEW2C9YYH9mMLPA/MWc
q9kxc48gVV29KAFVGYxwt8uxY+d+GY/Hriu7ZfE8e7VZduU6726zsw9dUbVl
XWWLusn+/ofzU5dPp03x3j5EX8/rWZWv4OV5ky+6cVl0i/EfNuVsvNLnxoff
unnewSMfX5xcn31yM/jjpm7un2dtN3euXDfPs67ZtN3x4eGzw2OXN0X+PLtu
8qpd103n7urm3U1Tb9bPacrsN/B3Wd1kv8Lv3LviHh6YP8/Oq65oqqIbv8CV
ONd2eTV/my/rCqa+L1q3Lp9nv+3q2ShrYdimWLTw6X6FH37nXL7pbuvmuRu7
LFtslkvaFXzGf8+fZ3v/7T/8b//t//3P/9//+e/35Mu8nZUw4t5PebUqyuxl
ucFfmhohWczLrm7gz7q5eZ6dLMtpPs1hhbMJfFes8nL5PFuVef2P5WR5v/pl
zg+MS3hgVq9oDekicA3//f/6v//r//Mf//t/+j9kDX4Jm2oBS3iV0/c05w/T
osmui9ltVS/rm7JodXad/p7emazyX27g0TBtWbUA50n2oshO6wpW9A6/5TP+
+01RdWWV/JZsWeavyvdF05bdfVYvsld11Wb7P7y6eP3mwKzhDzzeZF7MeLhf
blbw5CSfTaaFWc7FJPuurvL38PSmKcJ6Lpbl+xL2mfzICzh9WW/e57BaQAOA
RNsCXrVm8ppfnkzDy7/czJb8Ujz/6ST79abs4MUw9+ltU7ZdmVf2J5r5sinf
A4pnF7OuXm96gL/lx38p/50AypqpXk2yv9sUt8virqzmYbZXZfOPefLLINzP
mnLWtnVlJlzhu5N3/t1fFvIMHbpzVd2s8g6OCzENb9j4+urk9ZvLi6vr51mz
mD07PDz0v7x8o98d6XdXZ6cXP55d/aQ/HMOdrhZ20KvvT58++fopfrx4eX7C
GC1EZ+/V5fXpZVa2WVV32RoOqavH9borVzmsfV00NFI1K+CRdgN4DMfp8mxd
t205XRZwl5ebDigVXwkmNHvHh0fH/EULmy1aXA98fdnUswIAVt20iJXdbZF9
C4SsJMqR4yj5MgNUXBRNgTMCGM9WRXOD1AaO6U4IT/EBllWuAGdoNVlnrtko
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
nNGNQprW4fNVVNu/cv8D4noviqb9AAA=

-->

</rfc>
