<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-11" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-11"/>
    <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 on multiple paths.</t>
        </li>
        <li>
          <t>Introduction of a 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 sends a packet with a connection ID belonging to a so-far unused Path ID 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 multiple, simultaneously open 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 <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 currently used for that path.</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="explicit-path-id">
        <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-backup-available-frame"/>},
PATH_AVAILABLE <xref target="path-backup-available-frame"/> as well as PATH_ACK <xref target="mp-ack-frame"/>.
Further, connection IDs are issued per Path ID using the
PATH_NEW_CONNECTION_ID frame (see <xref target="mp-new-conn-id-frame"/>).
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 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-specific 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 0x0f739bbc1b666d11): 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>If an initial_max_path_id transport parameter value that is higher than 2^32-1
is received, the receiver MUST close the connection with an error of type
TRANSPORT_PARAMETER_ERROR.</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
PROTOCOL_VIOLATION and close the connection.</t>
      <t>The initial_max_path_id parameter MUST NOT be remembered
for use in a subsequent connection (<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 open 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.
As defined in <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/> connection IDs that are issued and not retired are considered active.
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
an error of type TRANSPORT_PARAMETER_ERROR.</t>
      <t>The PATH_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 PATH_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, acknowledgments 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 PATH_ACK frames instead of ACK frames,
including for acknowledging so far unacknowledged 0-RTT packets using Path ID 0.
Endpoints MUST process ACK frames that acknowledge 0-RTT packets or 1-RTT packets
for Path ID 0, even after successful negotiation of this extension. For example,
ACK frames might be preferred by the sender as long as only the initial path
with Path ID 0 is in use.
Similarly after a successful handshake, endpoints SHOULD also use
the PATH_NEW_CONNECTION_ID frame to provide new connection IDs for Path ID 0 and,
respectively, the PATH_RETIRE_CONNECTION_ID frame to retire connection IDs for
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 when both endpoints
have issued available connection IDs for at least one unused Path ID.
If an endpoint receives a disable_active_migration transport parameter
provided by the peer, it is forbidden to use a new local address
to establish new paths to the peer's handshake address. However,
establishment of additional paths from any local address to other peer addresses
(e.g carried by peer’s preferred_address) is valid immediately.</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 open a new path, an endpoint MUST use a connection ID associated with
a new, unused Path ID. 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.
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 five 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_BACKUP and PATH_AVAILABLE frames to express a preference
in path usage (see <xref target="path-backup-available-frame"/>), and</t>
        </li>
        <li>
          <t>MAX_PATH_ID frame (see <xref target="max-paths-frame"/>) for increasing the limit of
path identifiers, and PATHS_BLOCKED frame (see <xref target="paths-blocked-frame"/>)
to notify the peer of being blocked to open new paths as
the limit of active paths set by the peer has been reached.</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"/>)
mapped to an unused Path ID (see <xref target="explicit-path-id"/>).
Instead of NEW_CONNECTION_ID frame as specified in <xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>,
each endpoint uses the PATH_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 validate the peer's address before sending any data packets
as described in (<xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>),
unless it has previously validated the four-tuple used for that path.</t>
        <t>After receiving packets from the
client on a new path, if the server decides to use the new path,
the server MUST validate the peer's address before sending any data packets
as described in (<xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>),
unless it has previously validated the four-tuple used for that path.
Until the client's address is
validated, the anti-amplification limit from <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/>
applies.</t>
        <t>The server may receive packets for a yet unused Path ID that do not
contain a path challenge. Such packets are valid if they can be properly decrypted
and if they contain a valid connection ID.</t>
        <t>Each endpoint MUST also validate that a minimum MTU of 1200 bytes is supported
on the path. This can be done during initial path validation or separately later if
the amplification limit prevents it initially, as specified in Section 8.2.1 of RFC9000.</t>
        <t>An endpoint that receives packets on a new path and does not want to establish
this path is expected to close the path by sending a PATH_ABANDON
on another path, as specified in section <xref target="path-close"/>.</t>
        <t>An endpoint that has no active connection ID for this path or
lacks other resource to immediately configure a new path could
delay sending the PATH_RESPONSE until sufficient resource are available.
Long delays may cause the peer to repeat the PATH_CHALLENGE and eventually
send a PATH_ABANDON, in which case the procedures specified in
Section <xref target="path-close"/> apply.</t>
        <t>PATH_ACK frames (defined in <xref target="mp-ack-frame"/>) can be returned on any path.
If the PATH_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 a PATH_ACK frame with the PATH_RESPONSE frame during
path validation.</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 with a new so far unused Path ID
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>Connection ID changes as specified in <xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> and
in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/> for connection migration apply for
connection IDs associated to the same Path ID.
With the successful negotiation of the extension specified
in this draft, endpoints have to consider the reception of
a packet with a connection ID associated to an
so far unused Path ID as an attempt to establish a new path.</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. The client will receive several tokens. When considering using a token
for subsequent connections, it might be difficult for the client
to pick the "right" token among multiple tokens obtained in a previous connection.
The client is likely to fall back to the strategy specified in <xref section="8.1.3" sectionFormat="of" target="QUIC-TRANSPORT"/>,
i.e., pick the last received token. To avoid issues when clients make the "wrong" choice,
a server should 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_BACKUP 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_BACKUP 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 established paths are marked as "standby", no guidance is provided about
which path should be used.</t>
        <t>If an endpoint 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 endpoint that detects a path breakage can also explicitly close the path
by sending a PATH_ABANDON frame (see <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_BACKUP 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 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 <xref target="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 PATH_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,
even if connectivity on that path is already broken
but there is still another usable 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 open 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 PATH_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 PATH_ACK frames promptly, to avoid unnecessary data
retransmission after the peer deletes path resources.</t>
          <t>These PATH_ACK frames MUST be sent on a different path than the
path being abandoned.</t>
          <t>PATH_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>This document does not specify any specific per-path timeouts. An endpoint
can decide to close a path at any time, whether the path is in active
use or not, by sending a PATH_ABANDON frame. It is not required
to send a PATH_ABANDON frame at any specific point in time.
For example, an endpoint may wait until it will anyway send another frame.</t>
          <t>If a path is not actively used for a while, it might not be usable anymore,
e.g. due to middlebox timeouts. To avoid such path breakage, 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.
As discussed in
<xref section="10.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/>, the keep-alive interval depends
on the timeout in the middlebox.</t>
          <t>If a path was not actively used for a while, an endpoint can
probe it before switching to active use if there are still other paths
that are currently usable.</t>
        </section>
        <section anchor="abandon-early">
          <name>Early Abandon</name>
          <t>There 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. An endpoint that
receives such a PATH_ABANDON frame must treat it as specified in <xref target="path-close"/>.</t>
        </section>
      </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 PATH_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 PATH_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>When issuing path-specific connection IDs, an endpoint associates a sequence number
as specified in <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>. Each Path ID has its own
connection ID sequence number space whose initial value is 0. On non-initial paths
(i.e., Path ID different from 0), the initial path connection ID is provided by a
PATH_NEW_CONNECTION_ID frame with a sequence number value of 0.</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><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. For the extension specified in
this draft, endpoints MUST only rotate to another connection IDs associated
to the same Path ID. Use of a connection ID associated with
another Path ID will be considered as an attempt to open a new path instead.</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 PATH_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 PATH_NEW_CONNECTION_ID and
PATH_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 <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 <xref target="frames"/>.
When an endpoint finds it has not enough available unused path identifiers,
it SHOULD either send a MAX_PATH_ID frame to increase the active path limit
(when limited by the sender) or a PATHS_BLOCKED frame
(see Section <xref target="paths-blocked-frame"/>) to inform the peer that a new path
identifier was needed but the current limit set by the peer prevented the
creation of the new path.</t>
        <t>If the client has consumed 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 PATH_RETIRE_CONNECTION_ID frame indicates that the connection ID
will not be used anymore. In response, if the path is still open, the peer
SHOULD provide new connection IDs using PATH_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 resources
as the packet number space is associated with a path.</t>
        <t>The peer that sends the PATH_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 acknowledgment 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 sole single path.</t>
        <t>The choice of three times the largest PTO is a trade-off:
Packets that arrive after their decryption key has been discarded will be dropped.
Longer delays reduce the probability of losing packets but keeping old keys
longer can negatively impact the security of the protocol.
The use of three times the largest PTO aims to minimize packet lost for all paths
and therefore limits the impact on performance.</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 endpoints 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[]: PATH_NEW_CONNECTION_ID[C1, Seq=0, PathID=1] -->
             <-- 1-RTT[]: PATH_NEW_CONNECTION_ID[S1, Seq=0, PathID=1]
             <-- 1-RTT[]: PATH_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],
                                             PATH_ACK[PathID=1, PN=0]
   Checks AEAD using nonce(Path ID 1, PN 0)
   1-RTT[1]: DCID=S1, PATH_RESPONSE[Y],
            PATH_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],
                                           PATH_ACK[PATH ID=1, PN=X]
1-RTT[U]: DCID=S2 PATH_ACK[Path ID=1, PN=Y] ->
]]></artwork>
        </figure>
        <t>Note that the last acknowledgment 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 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>Acknowledgment 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 acknowledgments.  When different paths have different
characteristics, this can cause acknowledgment 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 acknowledgment 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 PATH_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 acknowledgments 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 PATH_ACK frames. In the example
above, we may assume that the PATH_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 PATH_ACK came over
the satellite channel, but it is still the right value for computing
for example the PTO timeout: if a PATH_ACK is not received after more
than 350ms, either the data packet or its PATH_ACK were probably lost.</t>
        <t>The simplest implementation is to compute smoothed_rtt and rttvar per
<xref section="5.3" sectionFormat="of" target="QUIC-RECOVERY"/> regardless of the path through which PATH_ACK frames are
received. This algorithm will provide good results,
except if the set of paths changes and the PATH_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 PATH_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 open 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 PATH_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 PATH_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
PATH_ACK frames on the path they acknowledge packets, or sending
PATH_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. As specified in <xref section="14.3" sectionFormat="of" target="QUIC-TRANSPORT"/> the
DPLPMTUD Maximum Packet Size (MPS) is maintained for each combination of local and remote IP addresses.
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 keep only one path alive, while others could prefer to maintain
liveliness on two or more 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 anchor="using-multiple-paths-on-the-same-4-tuple">
          <name>Using multiple paths on the same 4-tuple</name>
          <t>As noted in <xref target="basic-design-points"/>, it is possible to create paths that
refer to the same 4-tuple. For example, the endpoints may want
to create paths that use different Differentiated Service <xref target="RFC2475"/> markings.
This could be done in conjunction with scheduling algorithms
that match streams to paths, so that for example data frame for
low priority streams are sent over low priority paths.
Since these paths use different path IDs, they can be managed
independently to suit the needs of the application.</t>
          <t>There may be cases in which paths are created with different 4-tuples,
but end up using the same four tuples as a consequence of path
migrations. For example:</t>
          <ul spacing="normal">
            <li>
              <t>Client starts path 1 from address 192.0.2.1 to server address 198.51.100.1</t>
            </li>
            <li>
              <t>Client starts path 2 from address 192.0.2.2 to server address 198.51.100.1</t>
            </li>
            <li>
              <t>both paths are used for a while.</t>
            </li>
            <li>
              <t>Server sends packet from address 198.51.100.1 to client address 192.0.2.1, with CID indicating path=2.</t>
            </li>
            <li>
              <t>Client receives packet, recognizes a path migration, update source address of path 2 to 192.0.2.1.</t>
            </li>
          </ul>
          <t>Such unintentional use of the same 4-tuple on different paths ought to
be rare. When they happen, the two paths would be redundant, and the
endpoint will want to close one of them.
Uncoordinated Abandon from both ends of the connection may result in deleting
two paths instead of just one. To avoid this pitfall, endpoints could
adopt a simple coordination rule, such as only letting the client
initiate closure of duplicate paths, or perhaps relying on
the application protocol to decide which paths should be closed.</t>
        </section>
      </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 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>PATH_ACK Frame</name>
        <t>The PATH_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, PATH_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>PATH_ACK frame is formatted as shown in <xref target="fig-mp-ack-format"/>.</t>
        <figure anchor="fig-mp-ack-format">
          <name>PATH_ACK Frame Format</name>
          <artwork><![CDATA[
  PATH_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 PATH_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),
  }
]]></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. NO_ERROR(0x0) indicates that the path is being abandoned
without any error being encountered.</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-backup-available-frame">
        <name>PATH_BACKUP and PATH_AVAILABLE frames</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-04 (experiments use 0x15228c08),
    Path Identifier (i),
    Path Status Sequence Number (i),
  }
]]></artwork>
        </figure>
        <t>PATH_BACKUP frames are used by endpoints to inform the peer
about its preference to not use the indicated path for sending.
PATH_BACKUP frames are formatted as shown in <xref target="fig-path-backup-format"/>.</t>
        <figure anchor="fig-path-backup-format">
          <name>PATH_BACKUP Frame Format</name>
          <artwork><![CDATA[
  PATH_BACKUP Frame {
    Type (i) = TBD-03 (experiments use 0x15228c07)
    Path Identifier (i),
    Path Status Sequence Number (i),
  }
]]></artwork>
        </figure>
        <t>Both PATH_AVAILABLE and PATH_BACKUP 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 per-path sequence number assigned for
this frame.</t>
          </dd>
        </dl>
        <t>The sequence number space is common to the two frame types,
and monotonically increasing values MUST be used when sending PATH_AVAILABLE or
PATH_BACKUP frames for a given Path ID.</t>
        <t>Frames may be received out of order. A peer MUST ignore an incoming
PATH_AVAILABLE or
PATH_BACKUP frame if it previously received another PATH_BACKUP frame
or PATH_AVAILABLE 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>The requirement of monotonically increasing sequence numbers
is per path. Receivers could very well receive the
same sequence number for PATH_AVAILABLE or PATH_STANDBY Frames
on different paths. The receiver of
the PATH_AVAILABLE or PATH_BACKUP frame needs to use and compare the sequence numbers
separately for each Path ID.</t>
        <t>PATH_BACKUP frames are ack-eliciting. If a packet containing a
PATH_BACKUP 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_BACKUP or a PATH_AVAILABLE frame MAY be bundled with a PATH_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>PATH_NEW_CONNECTION_ID frames</name>
        <t>The PATH_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>PATH_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>PATH_NEW_CONNECTION_ID Frame Format</name>
          <artwork><![CDATA[
PATH_NEW_CONNECTION_ID Frame {
  Type (i) = TBD-05 (experiments use 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 PATH_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>PATH_RETIRE_CONNECTION_ID frames</name>
        <t>The PATH_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 PATH_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 PATH_NEW_CONNECTION_ID frame (see <xref target="mp-new-conn-id-frame"/>).</t>
        <t>PATH_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>PATH_RETIRE_CONNECTION_ID Frame Format</name>
          <artwork><![CDATA[
PATH_RETIRE_CONNECTION_ID Frame {
  Type (i) = TBD-06 (experiments use 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 PATH_NEW_CONNECTION_ID frames applies the sequence number per path,
the sequence number in the PATH_RETIRE_CONNECTION_ID frame is also per
path. The PATH_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 PATH_RETIRE_CONNECTION_ID frames per path, while the
processing of a 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) = TBD-07 (experiments use 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 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 anchor="paths-blocked-frame">
        <name>PATHS_BLOCKED frames</name>
        <t>A sender SHOULD send a PATHS_BLOCKED frame (type=0x15228c0d) when
it wishes to open a path but is unable to do so due to the maximum path identifier
limit set by its peer;</t>
        <t>PATHS_BLOCKED frames are formatted as shown in <xref target="fig-paths-blocked-frame-format"/>.</t>
        <figure anchor="fig-paths-blocked-frame-format">
          <name>MAX_PATH_ID_BLOCKED Frame Format</name>
          <artwork><![CDATA[
PATHS_BLOCKED Frame {
  Type (i) = TBD-08 (experiments use 0x15228c0d),
  Maximum Path Identifier (i),
}
]]></artwork>
        </figure>
        <t>PATHS_BLOCKED frames contain the following field:</t>
        <dl>
          <dt>Maximum Path Identifier:</dt>
          <dd>
            <t>A variable-length integer indicating the maximum path identifier that was
allowed at the time the frame was sent. If the received value is lower than
the currently allowed maximum value, this frame can be ignored.
Receipt of a value that is higher than the local maximum value MUST
be treated as a connection error of type PROTOCOL_VIOLATION.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="error-codes">
      <name>Error Codes</name>
      <t>QUIC transport error codes are 62-bit unsigned integers
(see <xref section="20.1" sectionFormat="of" target="QUIC-TRANSPORT"/>. In addition to
NO_ERROR(0x0), the following QUIC error codes are defined
for use in the PATH_ABANDON frame:</t>
      <t>APPLICATION_ABANDON (TBD-09): The endpoint is abandoning the path at the
request of the application. The application has determined that it no
longer needs this path. This error is used when the application layer
decides to stop using a specific path.</t>
      <t>RESOURCE_LIMIT_REACHED (TBD-10): The endpoint is abandoning the path because
it cannot allocate sufficient resources to maintain it. This is due to
limitations in the transport layer's capacity. This error indicates that
resource constraints prevent the continuation of the path.</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 0x0f739bbc1b666d11)</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">PATH_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_BACKUP</td>
            <td align="left">
              <xref target="path-backup-available-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-backup-available-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-05 (experiments use 0x15228c09)</td>
            <td align="left">PATH_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">PATH_RETIRE_CONNECTION_ID</td>
            <td align="left">
              <xref target="mp-retire-conn-id-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-07 (experiments use 0x15228c0c)</td>
            <td align="left">MAX_PATH_ID</td>
            <td align="left">
              <xref target="max-paths-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-08 (experiments use 0x15228c0d)</td>
            <td align="left">PATHS_BLOCKED</td>
            <td align="left">
              <xref target="paths-blocked-frame"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following transport error code defined in <xref target="tab-error-code"/> are to
be added to the "QUIC Transport Error Codes" registry under
the "QUIC Protocol" heading.</t>
      <table anchor="tab-error-code">
        <name>Error Codes 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-09 (experiments use 0x4150504C4142414E)</td>
            <td align="left">APPLICATION_ABANDON</td>
            <td align="left">Path abandoned at the application's request</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
          <tr>
            <td align="left">TBD-10 (experiments use 0x5245534C494D4954)</td>
            <td align="left">RESOURCE_LIMIT_REACHED</td>
            <td align="left">Path abandoned due to resource limitations in the transport</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 endpoints 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. Therefore, 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 paths that could be initialized
simultaneously. Therefore, each path could be used to further amplify an attack.
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, Martin Thomson, Magnus Westerlund, Mike Bishop, Lucas Pardue, Michael Eriksson, and Yu Zhu for their thorough reviews and valuable contributions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-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>
      </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>
        <reference anchor="RFC2475">
          <front>
            <title>An Architecture for Differentiated Services</title>
            <author fullname="S. Blake" initials="S." surname="Blake"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <author fullname="M. Carlson" initials="M." surname="Carlson"/>
            <author fullname="E. Davies" initials="E." surname="Davies"/>
            <author fullname="Z. Wang" initials="Z." surname="Wang"/>
            <author fullname="W. Weiss" initials="W." surname="Weiss"/>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines an architecture for implementing scalable service differentiation in the Internet. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2475"/>
          <seriesInfo name="DOI" value="10.17487/RFC2475"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9W93W4cWbYmdr+fIkxdNDnITJMsSVXSmZ5pFsXq1rQk8pBU
9anp01ZHZkaS0crMyBMRKYqt1sHcGPDt3M3czIUNGDDgJzDglzE8BuYtvP73
T0QkWd0zgF3A6UNlZuzYP2uv//Wt8Xjs2rJdFi+zt9tlW27y9jY7+9wW66as
1tmiqrO/f//61OXTaV18Cn9EH8+r2TpfwcPzOl+047JoF+N/2paz8Up/Nz46
cvO8hZ98eXVyffbVzeAfN1V9/zJr2rlz5aZ+mbX1tmmPDw9fHB67vC7yl9l1
na+bTVW37q6qP97U1Xbzkl6Z/Q7+Xa5vsl/jZ+5jcQ8/mL/MXq/bol4X7fgV
zsS5ps3X8w/5slrDq++Lxm3Kl9nv22o2yhoYti4WDfx1v8I//uBcvm1vq/ql
G7ssW2yXS1oV/I3/vXyZ7f3n/+k//Of/83/9f/7n/3FPPsybWQkj7v2Ur1dF
mb0pt/hNXeFOFvOyrWr4Z1XfvMxOluU0n+Yww9kEPitWebl8ma3KvPpTOVne
r36V8w/GJfxgVq1oDukkcA7/5X/73//v/+Pf/5f/5T/JHGwK2/UCpvA2p8/p
ne+nRZ1dF7PbdbWsbsqi0bfr6+/pmckq/9UWfupfW64b2OdJ9qrITqs1zOgj
fspn/PfbYt2W6+S7ZMny/nX5qaibsr3PqkX2tlo32f77t+fvrg6COfwTjzeZ
FzMe7lfbFfxyks8m0yKYzvkk+75a55/g19u68PM5X5afSlhn8iVP4PRNtf2U
w2yBDGAnmgboqgleXvHDk6l/+Ffb2ZIfit9/Osl+sy1beNC/+/S2Lpu2zNfh
V/Tmi7r8BCSenc/aarPtbPwt//xX8v8nQLLBq95Ost9ui9tlcVeu5/5tb8v6
T3nyTe++n9XlrGmqdfDCFT47+WjP/qqQ39ChO7eu6lXewnEhpeENG19fnry7
uji/vH6Z1YvZi8PDQ/vmzZV+dqSfXZ6dnv94dvmTfnEMd3q9CAe9/OH0+TfP
nuOf529enzBFC9PZe3txfXqRlU22rtpsA4fUVuNq05arHOa+KWoaaT0r4CfN
FugYjtPl2aZqmnK6LOAuL7ctcCq+Esxo9o4Pj475gwYWWzQ4H/j4oq5mBWzY
+qZBqmxvi+w7YGQlcY4cR8mXGZDioqgLfCNs49mqqG+Q28Ax3QnjKT7DtMoV
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
a4nSQl3cKSxH49UrbtyvhWFBbZnhSHn24vl4Kp1gx7CCsTSGlzVRx8OV9Hxe
+JW54ZUFVq6lXiEIE68STvSuotYZ9IyX18/jQTCnSRq1wauJj8W7Xa5dd3RL
ioRTwo3B7nhijbx4Li9Unt5dLe1lsUBkwPlchQtO1SRYU/7ZfHKvf+TkhOKz
tI3Nzi+t8I0GcF36kLnhPWLRRNdQSDQJdTccNdJnzDH9x+fT4+dHR0+nL2bT
/Hj6/Jv8RfHdfP508Ue+LoHm/Mdv/jgKIn3R/sG3KDvkIb4P6t2Szkn6pu/C
N337TXH8R2Y+vy3us/dcURqKpKCPHMtk/N3FLWrGSGpSg6rmU9lJhFf29TwR
StmwUPI97lwqjVTORLkX6PlJ+5HjO5g84vkGrQjMqNbawT5xZNxLFE6qwfMH
MOnZEqzbqW5ulgKQwSX05MQLQCf8GmH3v5cC4WoxmN/oJZVxpWo5p3LYe05t
cJKWuDRjMphn7wCoTMLjo0wMbUN+lUSGaolhe0ovEvUpXqgUJWK5ljqWQwOZ
3+ziDY2uQh5mgXusLks70NbOsCXo0ACFYEt2WNgEMUiWeD5JNB+rDOrSjLlw
ut42n4GsTpL2ti4466GJ+ndSsQnXy4s9xG4UifoH+L+5brYRdppDuU76QGQK
jrQolb3U3s6mdymOCAzrhJYkTq4biBpZ2lg9b8POeLhNUgjPVO6XyvwflqjF
PhitR2NjWYQ6OmOA8I/iZ8NtIsu/rUGRA9Vs8VJUXCs0jRNqy1qxBYVqfNWO
5bEZe5vXFcLEMpQbuxcRzC3IOsW0knxaLqkwAcvTmjDUhSo+2gvk0QY1BG+9
W/JYeA3WiNnNGSwBshPSYi0DyjvaalYtmSFYr5bhDdHGcARziJLI5zonXrkk
vBQ2MeL5wB5tippKgFX0eHbo1cen8eUY4I7GJ0YIM6Q2VKLhiQsrfnixLDe0
i2JdkSlESFXiCPcZscty/VFPhLxk1FzhjKVl40uYz0KsflSGF+XNWIQqZSHg
BmHsawlSm4BxKHyj1cPETyVuE8H+u07zhK7eig4Qw+vl8XiHGMheko+TiA96
gUM0kP5+ZabSGYc5VgBdwjpxyagaqjWX4eEIGyFSv/ugot33qghLbgLs0tjf
Cgv853/+Z5dl2Sl7eH72f1fklnE4xP7ZZzVsuD1FRW1Ac0RPwpcd4I/IIvr9
H14OeCt+fwqLuir+6ZeHHJF//eqXR3/IxuN/5aK3/svx+MGRrnpG+itGOU5H
OaZRJpMJrVlQQZTGgjUewqCvTuEBnEgMG/n7f+hZU/zf6W2B6Jhi1SGlkka3
byEkGPNddnhgY/jF2ItP9cWKlwjv7Uzlpz+Mds2j+5/mJ/9edxVn8stD2pWf
M2ue7FFnl2yy6cyGXjzCw6D9JGL+8jJ70scjgA+1y+KXe2cPcYa9r3TthzhN
mn0OwrnBIBrTPoGWDYYwTe8acNNNUn4ToU2KB7DpBnmz/dOjuP3SEQPiq9vU
HkVrLQnt7V8dxXEX4StXx/HHxwekpy6qughnhd7KJgyPRwnFYeWzeGSdhphi
KFVflo2SHpObkZjCRGbSEp0Hgt8VH06B8UIMC9HEYT86+x0ZvEdmKhiyOY2/
QrTkpgOwbO9wHB6pVisugCFdq6/MvzfrTXBJb6seSAV8zdWRulMHO2X2OPIj
SJBtXaSS1Kc8Hu0Uppz/xGN0xWO0hATrwXyvMa3BEXRcu3G2JtrqHUAIRfbw
Lr+Bp1PKDmIJ3ElpMBc2nSdxl79WTuJ/Kiv3FUm+WCIsA0+mm0Ibv//AMcP8
B88wo+X+Xn4JUm63ZNnXF9LbdSrp2w96h/iXY57ET17EDE3iZ0kVz9rhj8x4
+z/8QRb93hZ9HIsB/9ufQKT+q14BEJB2jwzQMhYJOiDz91AirLE3bWqYWQYO
F/rM+wp9xBCTWajO2MToZmZ2NektP2aY2IZjBq9xDHy13XbKVpK6E3Ics+J6
xc5nQvhsBRkIET0knYezuUcPpjZEfSSBW3KxEs0z942Kelsgapo2ui7/BMxW
d2Umed7dChlVfCmvRhvHs+EUu5H3pSniyPmOiCipThAcX4x6sU4OxDStCymO
V0dCv396rZV12IOs/Iy2ZJLOzS1UDCjeRz1NoFiu3iXmsvV0qed0Jbndff1x
bYSoPRHyLIpvl61FDvDX0trI+ygpxZOy8nvGTmLhbKT2BeTSh+8ESTUIblKy
Hv59i+1Z1qzXUEJSlGaGRbyIrtgHvhBX3MH2eyAjytvHuAkYQihmBKuyi0jM
FD5i5KeGZS5lFTEYYKk9wzZWqahJyQJQsqaUEK7n8SkKIi1P/ftO5X2U0i8f
jmUSX4M2IuTW3pUsJOkBipZjxV7h4gwq3MqtUoTewIoPo9cWm+otQ+upbxMj
NtgGxz4meu1KgGgpVt8UFuTuO4QtpQvTwEFO7u5Sh6RtYdhjOe7lRg7tWiv2
hfUMUUNGoJ129FECtPAmxhJV0E+rKJFm7VraRmm/BA5aecKmsyK/as/7Ywge
yxAwaKLsrW1DUvsr2begmmNSszWiH5nSi3BIYSwpV9hW3jukd+rlir6xP3Ef
PyZKGHI/GvPAMdicKcrTqgWRCBP5ODJsS0JLzOt57y6DWr4qBPaQAacoFxG1
8kWObjuQWnU53YYZJaha3JVzUWqSYHKwDzcSF6b5+odkx1cbbqbJDkgndONr
TyfBDl+fXni4XvQ10TXifB7MXbmpapjJKtt/8/rkoJe38DqT+PrlD6fPv3n2
HK4T0km1xIQ/6ccGiv9qkrHQ54epoC3sZoF4P/N8I7G9mBwm2XnLac/I1MOt
d/GUQqQCbgMndB4vXgsNv3w5hyVqHdMpNWewZrbIZZGp+Y4NoDnEqo74Uo1m
tis6VKTVdTHGykyNU+DX9LfPtCCe6wsLWl+mJnhNa03C2NbCP2aYEMQA3ZRd
FHdGhg0mwo5VrSaBAkaoxzqfgX2AQPszBfOlHHhyPua9a2yxA019D/bpHHty
ZqZmRXiEeUC6kRTj20N+uxwh7OBywEUQT9tIU1swNrOekdP42eGKcgCIQVnr
Lja+c3dTVA2LWSxUb5CClmVbDI72zaEMhzNwYScwirP1LZkd6FzZqWfB8XJO
PTAsyMiBqJ0bUglO4c/T30ZfjKj+5xbRP8vUpYIFsjQNIk7qV0xE+Y/ZK+7v
BH/rf3/JroMNxX9f6Ya48a7//vKoz1w4+l+yI9pK+OMbPCJnr8rsM/zjOf6q
Y23YqnpsDVyi0Fpf6969r33d1X17K/O8M8xhUXuUAbqaxqpYFZRUwHuq1gzx
FzRRH9O1YpRnaUbB/UXclnQVkgXiy5oVtWK5LxS5n8I2Sf/yvPavi/txesGm
6t2cuFAjVhJR5GIJlsqW4rJ0FUcS/8i1hNvLnU2FKeRB6AP4Q7kUriwLz3Xq
HBrPcWyMGwHTKCvLiVgWnzWcxfxQnPSohy0ofZ9h4W4F8847WThcG7I3h6x6
viUgD4MUT3pua3ZFfNiUP0IORiYbJ4gXdwUX3SYddO1pH+kPIcwCLuRQCI4y
BaJmRcW8giijC+oFwJmJXKvPc8EYpHZFdbY3eGgcxPB+t5BF2YwIaJtvDZvE
DhWtIDxN90hoWrFCjDbKZJdmqLPg+lz8SjRW1sXS4GIsmZLkCxGNn+1MpaAL
GbvGOqW0/SUDS9mbDQMhguNATYU1QlrhSPOKScb5NnWo2GHIzp8XXjOOSmLb
MUaOu6aUFLoI1EMmNPlZE5ftz5pVhV6E+QeQ2Ww+tS3ILrwJA/liWHb649nl
T6C6dCvOJCeS2QIb4ykTgivtDBCJtRyvRdFZa4LqTVWpZojYcJ+pL5A1BwwQ
hkN46+iQ+YY4DG43ZcvVn6ZFhOi+YUk4Wn4uCXXfMUY/G6mkxwfBa50TrLoN
4IXZMgbyHgmNw+1Zi7WI5IFK2Yo8o1z7n2/KOXcqgxncELSxMgz1wc4wHYKF
sTMGqxkX5F8V2/clI+/06H6L7VoAVjQZw89DDlG75cGsCbTDmphs6i3a/Qwv
WAkgEBp4ZPXb+RPX4MOPTkNZBQbT5y55U1QLMFJgS2Q6GAFMf8zky8oF7X6I
Dxhg4DyxLNkrz0gRxpqyuzxzFYEZqSJC8GEda44kj3mQHcOLIOJuOFvQCX+m
VARueUE32EDW8sDNtKNPEqvpk3gWknQRFBSI0wWbAXNLwzWGz/HIZrmg0Qg/
d+atC952BwYm9oRnQB4s307My5h/CPau1rrATJbbeeEDNLKnxFdzQ44aSW6L
z2vh4uruPGAjg7R1NJMTclqD6R/l/YUSCyw3ynkgVjOS2SF/nsWtrPeTmJHh
qVtHOMZTohdWLQVj7HI1B6MI+VK9TiFqkEEpcnKapzRHHk2GNVaJPvII95KM
Y51HtJK3SzEuPpdJ7G5GdraiTp9Zt7WLR8GxidstdQH4pTgY06wfKuVVeQ40
ztUffa38uHswbKAPXoU9/fApUY1MHSB91olyxM4DLx46ClRin2kObWQhBiqU
HwkLC1OFCQ8qYcrKjJ30g1Dp44e0HkqkKDDKE6oOoAWJRpS3Lr1CXESNgTlz
J5sGLwOWhcf4URToVJTGhQigoIfIuZai7mFihgYgHLWi0ToXvmsieKlvJ31f
m0tjWVUbTSXaYjJV2xZ1kjcEnPcygkNrnLsK3HGdpHdmC9x+I0g1S0HVgu0h
NWYj8TXBdZQte+nyg8yeZF/Q0nMGU2yddfSBU9v9RByYqWo3LzQ1h58njLqD
bL7lq1qkj2tnMV7oPrbPDYO7KFQth3VbozuG9kjKXgMLgTgiFjIcREZKFxcM
GIlyZ01YdEqvI3FMIlYjuok6GY2obCO8Im4xd3oL7rH1ABxCf7q6vjw7eSsB
UEKezAlwSJJwXdj3jTSLgqKJc6lzQXFJItXOA5XFM5okgTPTz/glyrG0apYB
wf1zfNgd+DzFz6AgfE2tgSkdbkSZF/pxuI5Gcb8Km3fDOaZaxu9C4EX/vgsc
HFPEG+pkkCjkktHWYhBqRu6xijBplkXvEHDJa6B1F1+cBN4wbkP/tB8blS7A
q4s3OParoFKU9SXMI9x/e3F1MOQJDxw8mSH1s0hZoSR6fRH0W3PnazVJQDay
e0pNMni9WvpLTY9suIR9JOYK97MItcAL6eXsC45BX/YeemLm3BKWyXjLeFsw
EOLk3Mq4NCMs3o65jJMc9NK3xETeJxVvdK9VH7PezeZCsdBIoCOkvZGJ+vCG
KdYIX5RQVKF/Nxddn3Pqi012guXurKuSChTfWg15otq3ESQUKl9jCDZZVLeQ
cQA593UitdQ86KveYhpe5RvmRd23chGK11WZah1hgAbaDfta6PE4zkSDjaQn
B21kI4igrC5R/qtQqcPfLksukFl34yH90CNw/RcFQwu+snsXTY1UAumnKMGt
4Ip6yYTULvnCyV3nnl0zgvjxbYYaA92TVQqkzhxDA2Ea1AX+jyD7VeLvjVve
aL44vTuExASGiyVj6r0PY8mngfmMAeNLDRgj9piF4b7+fx865sSw2ii/XN4l
ZOvX7Aiuhe8fDim/E0QSbT3abcDim9zjzxGUoA0S+HyxqIXEeqJBhDAQh6QF
th2je0jbPiEwb7Dgo4MrwX3IFE9LSUOC+CMtfmoy6S+vSmSUCkC3zFpwMi/7
hdnftaumJI4jqSlvmEj6EbYixR9xpE9zCDTWj02IRCHkXQuAOfZj/tPbjveA
sLLTJ5WXxB24/Y4hJLVqxL9oevZ/KeVWNWok47YuN5xVLmo/psorTgPu8yOC
5e7BlrdqWocmGIqej/DyqFMtAu5SOw6hQHVs6L+DBjbScwTxKINaUjXv3Y7U
AQ4KrWPoX9MlTGCz3cIMVvtWeghNNVo67niPVANMA++wsWR7hVnGTaA4IZTm
+55IRoSSJTSW6qJgO5ezMYKD3azHTAiogUoJQtAjiOAJdGCBeBTJkb4jgc6M
qYzxZbl3b2dM1tltX0yScNoKXh2scPny5V9f/nB6/PTbZ0Af2KcRua2kFRjO
NbUEKol2/yReO9Za+yxagSoFIsaUVMSk5JoQOZim4tmFfmpxSkkbCPSmY/Fc
RaUoOkJeh6GA6CcqwUuRdSaC4h3YcDJMI/j0ohRx3gpCdIRdW5HItqX6OzE1
ruv/mCioqgRlMKQQYKr6RAY+GkkV6rAxaVqLbpDtJsCKbng7tkAWW0m3Yw6c
Qoo6k4xNRC0vnfsXWgUhSf20BUfsPtHLfPTieHI4OZ4ccaII55Had99Nnh1N
jg4PJ0f9gx33D3b88GDkOvGblALpTuAnV9J/mXJpxcmWvM4PyXm5YW9tvzSJ
Lp9Sza/1ksSX//J44hdmQKv8rpHvW2CdQm2vR1olqv145J2aUUw7YBMAWrlC
8bddUxMBUYmtoiq+81k3vphhHAO5NeLR13ldaDrMLdWRbcxRiSqm+DU9Sv0c
rd51a4W2hvDEimTcJNR3L1xN3Pv1rCIpRASs6MJ0BlrOY1cjUA7wRviIJsG4
kzPNJqftXODRP20Z5C3Ao+YElLLFPuERvBe1mM7nYFNQ4IOYh00QX4ytH0ZB
PxWMREkGTmt53M53hfENDLy3RBgVR2FhbzlAwQ2WXeoD1RK5oEloeP19I1Dp
L0S5r+/Arv+BDfkvTwQWCITJcunj4wttrR57VDy8oLf5Y0yGbpvfoGucr4A2
tU3RXxK/BCdE3G8KQhii1/qk9+Ck2XmhoEdICfBM9sPlyduzD2fvTs9fvX73
6w9nl5fnl4TXYrWeQzMR6cG4JJoqrpC/IagUc+P1GvSnGexUCC/VsC9Xkf26
SEgEqceWyeNwowh471HAUSOnXQpa4frKtmN4KN2pi8vz6/PT8zcffnx9/uYE
S2f+qgN0AcxMkBObaXd2AcYTtdUJdE+2jxDxYQi9MC53G7QC95GsA1RneInW
hUEat+LDvsOQd2r/wBDLT1YbyiRhQKi+tJBsH3ekya6/fzU+PCReRX8eHVCo
Yh2okMJx/KNDDqcBTVhaADitge9xV/ekpHSUzLzxjp7MY/r2ZpEr7oNUgODZ
l7JWrRPz/nBOehYkfZYPnKUWReD4zH0q8tnpO+liHmaqpBGR3hRp0DxI+SRF
FbMt064dlEZO/XiFppMUKD1d+gmZI1yGmZIB1VBc4+r3y4Psl3LYkwlvhK+w
2Ee/bF1y8g3SZnb4+ejZ8fF3s8PDsf15dMBFGcwoPNnD2PzFGylOPgk3wL7F
eb2izKboo0uyHE+Bs7T+ix+oKM5/3fPE/mRygJV7/Pnv8ThokIa+ofqRr1E9
R7Rpml2V7NgP9CUmUmGmYy6wwzupv78FgnUddgK512SEAYJHHW/fS/eSvJbK
fvtbDXaJSG4l4xfh9Y0EE6xemg3UCUEqwHtEcCEXkSIm5STE/7S/QZefxA3x
1h7JRFtIxXVBAx0FKQN5B8HHk+gn+3jevaR/3KV0o+5nD1H3GYmS02pu5BjT
V88cYyqLJugprW8/QmbkG1gTKTUvHyQhv+uIKmnTxp+dcEIKmMZjECg3lGje
FjcmvCLMfW6+EHaQQoLOhHORv/3dOesb+4efDw/6YO00PSNpVIT0GfjiWEzz
b8DawnuMWMo7qCVqj0L83nIRfE8UN9S2cRZ33QyaeAuCRw3mKQlza8gZ9Jnq
a4MVOwUNwJMC7trjVHWtNrzu1j/mEzUREgC8MCuwCW6nNH63xAXfG36hKi7R
4RS2YgsMT32pdnP7nzKbELiDtwC6KJLOztUjFFgCTlQjK9s12fHChy+8n33/
lbdRd136pzsu/XcPXXr64opLVK7UFSC1cju4QDLxmA8ks044gZzwzz0YTpMk
VG7LI9E29EpzyZl1j6n77gfPSAit/4BkvF2n882O0/n24L/F4UQzjk4mmq4/
lu/R9k6Ozi5g+MzfzLclNxjTJNjdEaNmImQE2q3ye+Eo3nDgjgPwI+yCOg00
lVGmLXY5X0Qgse4JnJAdIxwsVxE9vLG7hYi0JDO4PG1Glrar4BiHYEOKQFFF
hBKnejtzcKb1qlqrUoYuDq/iN5znDd9XLYiqGYVnJWcOZyQ5R2oySmV+0Loi
OWOYWs+t6MHDR7wcyRRIUuUlm0LA6E5YxNAExI4jeBdYlE/T2fl66SKvuE0U
kNR8Yu1MkD6DeJR9THgAcDTA7xYKSFuywD9zcsHA87dgu4Y+gh3PWfM8WW90
4GHRIDoshs4wGbNBY3Uj0fVJdqnoY+JNp2pOguzWfDdL/kknt+jukn5ydQ2C
/vuf5I731CNII1R5edQEqTtadJxWCE4uGOp2SWYHn0u61qB+uFs1PMTBH6Uo
KYJBTGuP0pOsl7YQGzWCJiqV4RW4qmmVuZGJH5c7jsdk0quAclbrEG0BKmPR
LhpMdoe4hQVOt5hRY8DA/Sg95qhyeZIOav46j/sf4uizqK1VoBJ8qjZsw9J1
jlezgmSNDwJtbghtmR043R5Z7uEGVOTW+aWJ0BeD7pyhAQbAF49eTI6eDSSM
hJiIlsZvTYR465egQ68pzacPdyW2XaV3tzWAtMweGm/GrGb9AJxyGEKkwA2m
bmHDxQg6jPi/hBnI5+xpsrdp0YvJwCbs7Nr0sC4Fx+2nbweeqlUD7/D6Vapd
PduhXb0gBWlAuRpQpxgDPLvAYCBGEOTjN6wF7LM6HaeZ7H83mRw9P+RR+7qG
Z/tHx/hgx1szvCGR1ja0H8O+nP9apL/b1fOwvtfn6omIWAqeMqk5Z5YjrcKS
riNBzv82SCpP8TRJvbOM8VHYn0PVgUH2uMgesyeuh29zEMfSy1UrpOS6z21U
Vz9wnZu+MB1qW5z+KRfd9bZFExUjpV3thaEuC/aXJeBWPqSkSO9a0WB9B3xB
vJ7rrhaJXWCQhAi6IXTT13P4BrNnJynGzNCRdajC2hIyRjl2UBhAwdrRVkX2
kyQ6KiTAPDe3MXkMJ4p5xPFbbIJcOdCYMBOzHTyhahFqycPQZ9fK7TEs6ZTi
TK8bxvv3TeL1Ia9Rniig6FByjUe60YJWQlJg1kAzwRnsagUhkVN+N0flw61W
XWHH/FldUGSwIY1hxxwSpSEfVBp2jLGDeT7fERUiunSxYsVRNGkpkQmQKkv7
bsuERFFgDxUGCqX/HmiSvlfZtTYO6UlFpIn0Ngit1p0r4Rs+Huoifk7/D4EO
qz9ppgnaPxg6EQnFvjZFFxtocKiXVZyxnGD3uCaLIG6366V0K+Kn/fklLWAt
/8xX2FFMPQ6MJjPjfB8njboUjJ70N590s1uRlXZEvb1iD1Th2nUrHqFzBXfm
MapX79uGta/nO7Sv/GdrXx396MHJR2rSjrkPa0r/Fe/7f3NlyXcF6sjHB3q9
pCLyb5GMJ82DpN2YnOlTlVT29CtSqlo81F9I6jWxntubTw89xetukrxp9Qrx
fOzUfQBj3mOmX99aCYD0eQxl+PAcXOnxKrrpBUff9ksSE/3+lT9LAfCbLpUG
KPCT6f+NMryn4RpI7aTXGro3ulkviXSeHXTjrFqjIXk5SWKKk6RYRMFspfoK
W6I71zOrB7lmPOeUT4YjDnPGb3dwxhmxwKEOdn2ssHdGyvy6E/Lsrmf5Ozz4
wKMGZqW8amD/PSNST7MFCksuL5HE83yGtcbo5ieLiBEnLJaIlchwJNzEZRQd
uKKPxYgaSoJcSwijMpiHAAGIVsOdPma+Y5BJ3rinFMpchgIaOppkulMshYyQ
OjhRLPPdXK2b/CMzw+KsNuIo3JnxEVNKksRC7v6IJLE3CBBIRhN5AgnvwcNB
xSn+6mvuawvITYR9+eHOedPGoSrb4++f9BEv195XUr8SgAUQQXIvP90MDkDM
vYWRdBrUUHLaXRB5lEDQiA9YeiD2jJGyrvkBN5cl7b655bofaY9MUyQ7DPgB
lQNTlifVQgXFsEMsLmpUqAr/37GW2FnZYyKbybr79EE/7jCn+24Hp5v/XE43
PK8ebpdMLg4zd7bkr+Z7w8HAIPl7x8llarAhYxA2JtySir58Gt8d18S3lt1n
sS/rheQZDkUVrY+lIK7i2DoNemYUhB61RsEuRpZFbUntThKJpoEvroONBqer
BqP8bempT4LEI7yT9Ago/XNKY6YURc8peTz6koj8+TF189quJdwqR9O4pBjr
+LDfTiQIJ7U/UYZE+T6JSs/5kukUJLua3CBI/aEGG6XQAJmdXFy8eX1KK7fv
9ukavThgCRsKTp+T5HkcU45Tc7qnjoSGCZPKuThTmhDNzf2wrrSFiwTpfNIT
AzPTOj3Cu0CshCMv8/sCAQNmpYDmNG2lRSdpfAMk29nV+fvL07MPb16/fX0N
6urJ6W/gftL6jw4fuX5JLnY+C1mRhsP2SNZZMyyfxWSnTBGRRGUgriplsHJw
nthoeVhvl2/yGbU3DDcmSgVz+saM27jllMYibWTVlMNW5FEjWdmYJ9nrk3cn
HdDq6xj9QIugCTGprxuxakXqsZPqO4aeSAvQtFumVnEQmDQMHGQbMCXN63xh
b3fknW/YVyPpBlx6ZRKAfY13hbZNp6Wh6ifH5Ah1Qx+WWnl+SdlwHTtJf7Kw
/NWDoet7FmC29rGtvUHHq3myuZsdnC4OvUeX9tr268Ke2UNoIwRjvc8IyS/z
P7+QOow9aqxJ+UPuR2J5j/3vL/5F2Tt03zIoY1jXvhuY8a9GavwerpR2N9ZW
qFSCDBxt8e03L6bT2dH0+fPn86OjA5hSn2b6F9hlpKKvX0ky9224yuMTzzuz
wZ3OzuD0wFZF4Zyca0BvYZ2K9Lce0xcPHS7Lf1RMfu6Z/sxDlZPl9+Gphp/+
LWc7eMBDR4wlDWPJ99+hgEXJ7UiTmhSdrIjckL6e4qt7RDZxL82HQi8YvSfH
Wt6xOz1u8B2SHpG+YiArVN61O1FyeD2WefFzXrY7Mj34sq5Lzc6nx03sHuGG
HXxVn79HXtUbapG37XZt9L0tNORSskscRPKO3UbF0Iq8zh8cU6d5PBsbnrsM
crKArYQMLOZffappzMjafDr2Oi3WzRMWjgt4WdYnqAKtOOVq7q+XVH/hBP+e
z1+RV5JbDPR9/3j+1s/Ihj/f9T3Tw4s+enh69Ozw2eHT06dHT4/h/86QwfUp
2H9hq86iO2p9BZrsLxoLUCHdhCYIU+TRYd8Mnh0/ffbsG5jBi6evnr549hRn
MKDldiYhJr/pjTs10e6kSC5HlGV4yoE1FcOeI8GQCH6SXWlvxq7S2Y+EUxec
6qZdPK254wIMv23NkH49XRVQu4waaaJ2aI2+Cc0zDv/52QgOq6r//s7lCC1G
5wAm1Vh03oIC6ZuK6qERscmP6q2BvEnjeJx6cJe0wyCe9Hcytum84ik3TRpR
k0XRCtM9PGBrENKxOdiohODASVoecAGfRNrysHkhthyr7h5aM0x9CcD7CftJ
bbS6bD4SHSiBw9831ASkbUGA2XwUbBaN9rU1Fg3SVpvQS9VFuevtDkmBgWJV
wetOWP8vpd7mAjaZbsSlbgzT3iMdpbYJb/PP5gYmZ85wnS570IhaYrimyL/p
HdYutB0JXkQxVLAO3AYLDpmowE4as6YZBosKYHqIL4B288H8pLGlWHUe0Q9X
KimY4bwpzuc9jdyWKP5aQLkMNLQNM9iNEVGSZ7Y/Le4rj+EazPoAJ0nLV0RL
v50+0T8XlOlmm7ZuoiUp2oU0qNdS/S3+rmiavC7JFRxOaSSZi3rDCVNYjAJg
zcsKe8K7ktFs5cHi822+ZaQcJvew/l9sCvMfcMpTwDeifRk5xQHAKmc6lpjo
bwUgbyShMkqsoSECNJzbvInSaARZvS0UZu9SbukPcksp/nq1qaoFIiYwKoRE
H5OhVwVe4bJZkb+3v4L5u8nxpDdrCZdjYBSWtbJda1PxBXk8Su9WsN55jcEK
mLAQlHw521BYzGJpgwhrMd5FgysVeLpq2y69GmWevKPJs37Qoozy9iVKeY8I
LoS1p7lKOVDNOOaN0id4x371vscDJToWSvzPgCV0ODCcbgBnhBHYoQ5EgqoU
MFnDiovb/iQ9j2NYOX+WoavZW9FCN9jCOD47fT8RRBfbSC4hXzzmtMjcEfmG
3ghEgxpC2t6YvUxl2zs6U1Ew7tTEQPlnGDBedkRcvl7entQcB0UgzAUJMVcW
MHFnxgLY89knGEJnPotcRjFQCnYBnxDQsyYmAj9Wqid0kb9A+hFXmSL80Ew0
nhVX19TGbHtkV3gpMdiz2rSNk1qnWVFzxAOPHlXXSpnMeyYsb2u8QU+nVwqt
Wwn2qT3z2sA7DKUO64jpPYrBRjSHgP2R2h8gd54dBhlp5G5OJKEl0DXbDc3a
ssM850kahiItmlezC4QSTF1v0FaCtgkKimS9+AmWYQ84SSkLRxwlGryxQGPT
jevynbD1uImbddTmXRvpck8+wlXbwquAuTG7GTlQ1/DYPfOGQahGSI+1tj0a
4szpbCzxY7umQgcUVz4DydKVDIEo3gm76RSKt1ZmUpmXcLWoaIsIEFbtVSlC
SBv5hAPPwrHt/baR1PATxDCal5+z70O7hAwQwVyVAruqhQsc3ikGw1CQDoNh
nYg/PkYmDdsN0lzDNIPpfZAKmAYFMehNPcAXjh4MTpkTFgaTFDDHE3YWgYZy
RIACfYEfGaUvAQqrZYeYJ35zjF3omZ1J9IQSvz1aVojlWgYFJgEcJdmP1PEP
m5hVdSdSUXIMcLnMp1Vt+gJSaVUbn0eMXcxJxxpwanvJIQhu2JUvEXtMDnwW
vCrzMCqU/lWuP2GPMUQmMcCIqi5vSlLfdCy83QRf9vd4Gidr+Ovfwo2532Zv
SlxM3NGL1pOvPxI7fwtnhIjMBdypNZDyb/M/b2+r7PzjdkTfwR5d31arBsn8
bX6zBiPtdwVCqi+36zl8VAKr+L4EubsZZW+2Mzj1CzBpMS77tgTiKZbZWV1+
bBpta/XTFqa2VaW/xP+tuOsIZkgUd3x2GDzRlkPWSw5I9P8FnrlJ6UIZAQA=

-->

</rfc>
