<?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.6.13 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.0 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-02"/>
    <author initials="Y." surname="Liu" fullname="Yanmei Liu" role="editor">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="Y." surname="Ma" fullname="Yunfei Ma">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>yunfei.ma@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="Q." surname="De Coninck" fullname="Quentin De Coninck" role="editor">
      <organization>UCLouvain</organization>
      <address>
        <email>quentin.deconinck@uclouvain.be</email>
      </address>
    </author>
    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <author initials="C." surname="Huitema" fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <email>huitema@huitema.net</email>
      </address>
    </author>
    <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind" role="editor">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <date/>
    <area>Transport</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies a multipath extension for the QUIC protocol to
enable the simultaneous usage of multiple paths for a single connection.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    QUIC Working Group mailing list (quic@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/mirjak/draft-lmbdhk-quic-multipath"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies an extension to QUIC version 1 <xref target="QUIC-TRANSPORT"/>
to enable the simultaneous usage of multiple paths for a single
connection.</t>
      <t>This proposal is based on several basic design points:</t>
      <ul spacing="normal">
        <li>Re-use as much as possible mechanisms of QUIC version 1. In
particular, this proposal uses path validation as specified for QUIC
version 1 and aims to re-use as much as possible of QUIC's connection
migration.</li>
        <li>Use the same packet header formats as QUIC version 1 to avoid the
risk of packets being dropped by middleboxes (which may only support
QUIC version 1)</li>
        <li>Congestion Control must be per-path (following <xref target="QUIC-TRANSPORT"/>)
which usually also requires per-path RTT measurements</li>
        <li>PMTU discovery should be performed per-path</li>
        <li>A path is determined by the 4-tuple of source and destination IP
address as well as source and destination port. Therefore, there can be
at most one active paths/connection ID per 4-tuple.</li>
      </ul>
      <t>The path management specified in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>
fulfills multiple goals: it directs a peer to switch sending through
a new preferred path, and it allows the peer to release resources
associated with the old path. Multipath requires several changes to
that mechanism:</t>
      <ul spacing="normal">
        <li>Allow simultaneous transmission of non-probing frames on multiple
paths.</li>
        <li>Continue using an existing path even if non-probing frames have
been received on another path.</li>
        <li>Manage the removal of paths that have been abandoned.</li>
      </ul>
      <t>As such, this extension specifies a departure from the specification of
path management in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/> and therefore
requires negotiation between the two endpoints using a new transport
parameter, as specified in <xref target="nego"/>.</t>
      <t>This extension uses multiple packet number spaces.
When multipath is negotiated,
each destination connection ID is linked to a separate packet number space.
Using multiple packet number spaces enables direct use of the
loss recovery and congestion control mechanisms defined in
<xref target="QUIC-RECOVERY"/>.</t>
      <t>Some deployments of QUIC use zero-length connection IDs.
When a node selects to use zero-length connection IDs, it is not
possible to use different connection IDs for distinguishing packets
sent to that node over different paths. This extension also specifies a way to use
zero-length CID by using the same packet number space on all paths.
However, when using the same packet number space
on multiple paths, out of order delivery is likely. This causes inflation of the number of
acknowledgement ranges and therefore of the
the size of ACK frames. Senders that accept to use a single number
space on multiple paths when sending to a node using zero-length CID need
to take special care to minimize the impact of multipath
delivery on loss detection, congestion control, and ECN handling.
This proposal specifies algorithms for
controlling the size of acknowledgement packets and ECN handling in
Section <xref target="using-zero-length"/> and <xref target="ecn-handling"/>.</t>
      <t>This proposal does not cover address discovery and management. Addresses
and the actual decision process to setup or tear down paths are assumed
to be handled by the application that is using the QUIC multipath
extension. Further, this proposal only specifies a simple basic packet
scheduling algorithm, in order to provide some basic implementation
guidance. However, more advanced algorithms as well as potential
extensions to enhance signaling of the current path state are expected
as future work.</t>
      <section anchor="definition">
        <name>Conventions and Definitions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
        <t>We assume that the reader is familiar with the terminology used in
<xref target="QUIC-TRANSPORT"/>. In addition, we define the following terms:</t>
        <ul spacing="normal">
          <li>Path: refers to the 4-tuple {source IP address, source port number,
destination IP address, destination port number}. A path refers to
"network path" used in <xref target="QUIC-TRANSPORT"/>.</li>
          <li>Path Identifier (Path ID): An identifier that is used to identify
a path in a QUIC connection at an endpoint. Path Identifier is used
in multipath control frames (etc. PATH_ABANDON frame) to identify
a path. By default, it is defined as the sequence number of
the destination Connection ID used for sending packets on that
particular path, but alternative definitions can be used if the length
of that connection ID is zero.</li>
          <li>Packet Number Space Identifier (PN Space ID): An identifier that is
used to distinguish packet number spaces for different paths. It is
used in 1-RTT packets and ACK_MP frames. Each node maintains a list of
"Received Packets" for each of the CID that it provided to the peer,
which is used for acknowledging packets received with that CID.</li>
        </ul>
        <t>The difference between Path Identifier and Packet Number Space
Identifier, is that the Path Identifier is used in multipath control
frames to identify a path, and the Packet Number Space Identifier is
used in 1-RTT packets and ACK_MP frames to distinguish packet number
spaces for different paths. Both identifiers have the same value, which
is the sequence number of the connection ID, if a non-zero connection ID
is used. If the connection ID is zero length, the Packet Number Space
Identifier is 0, while the Path Identifier is selected on path
establishment.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>High-level overview</name>
      <t>The multipath extensions to QUIC proposed in this document enable the simultaneous utilization of
different paths to exchange non-probing QUIC frames for a single connection. This contrasts with
the base QUIC protocol <xref target="QUIC-TRANSPORT"/> that includes a connection migration mechanism that
selects only one path to exchange such frames.</t>
      <t>A multipath QUIC connection starts with a QUIC handshake as a regular QUIC connection.
See further <xref target="nego"/>.
The peers use the enable_multipath transport parameter during the handshake to
negotiate the utilization of the multipath capabilities.
The active_connection_id_limit transport parameter limits the maximum number of active paths
that can be used during a connection. A multipath QUIC connection is thus an established QUIC
connection where the enable_multipath transport parameter
has been successfully negotiated.</t>
      <t>To add a new path to an existing multipath QUIC connection, a client starts a path validation on
the chosen path, as further described in <xref target="setup"/>.
In this version of the document, a QUIC server does not initiate the creation
of a path, but it can validate a new path created by a client.
A new path can only be used once it has been validated. Each endpoint associates a
Path identifier to each path. This identifier is notably used when a peer sends a PATH_ABANDON frame
to indicate that it has closed the path whose identifier is contained in the PATH_ABANDON frame.</t>
      <t>In addition to these core features, an application using Multipath QUIC will typically
need additional algorithms to handle the number of active paths and how they are used to
send packets. As these differ depending on the application's requirements, their
specification is out of scope of this document.</t>
    </section>
    <section anchor="nego">
      <name>Handshake Negotiation and Transport Parameter</name>
      <t>This extension defines a new transport parameter, used to negotiate
the use of the multipath extension during the connection handshake,
as specified in <xref target="QUIC-TRANSPORT"/>. The new transport parameter is
defined as follows:</t>
      <ul spacing="normal">
        <li>name: enable_multipath (TBD - experiments use 0xbabf)</li>
        <li>value: 0 (default) for disabled.</li>
      </ul>
      <t>Endpoints use 2-bits in the value field for negotiating one or more
PN spaces, available option values are listed in
<xref target="param_value_definition"/> :</t>
      <table anchor="param_value_definition">
        <name>Available value for enable_multipath</name>
        <thead>
          <tr>
            <th align="left">Option</th>
            <th align="left">Definition</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x0</td>
            <td align="left">don't support multipath</td>
          </tr>
          <tr>
            <td align="left">0x1</td>
            <td align="left">supports multipath as defined in this document</td>
          </tr>
        </tbody>
      </table>
      <t>If for any one of the endpoints, the parameter is absent or set to 0,
the endpoints MUST fallback to
<xref target="QUIC-TRANSPORT"/> with single active path and MUST NOT use any frame or
mechanism defined in this document.</t>
      <t>If endpoint receives an unexpected value for the transport parameter
"enable_multipath", it MUST treat this as a connection error of type
MP_CONNECTION_ERROR and close the connection.</t>
      <t>This extension does not change the definition of any transport parameter
defined in <xref section="18.2." sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>Inline with the definition in <xref target="QUIC-TRANSPORT"/> disable_active_migration
also disables multipath support, except "after a client has acted on a
preferred_address transport parameter" (<xref section="18.2." sectionFormat="of" target="QUIC-TRANSPORT"/>).</t>
      <t>The transport parameter "active_connection_id_limit"
<xref target="QUIC-TRANSPORT"/> limits the number of usable Connection IDs, and also
limits the number of concurrent paths. For the QUIC multipath extension
this limit even applies when no connection ID is exposed in the QUIC
header.</t>
    </section>
    <section anchor="setup">
      <name>Path Setup and Removal</name>
      <t>After completing the handshake, endpoints have agreed to enable
multipath feature and can start using multiple paths. This document
does not specify how an endpoint that is reachable via several addresses
announces these addresses to the other endpoint. In particular, if the
server uses the preferred_address transport parameter, clients
SHOULD NOT assume that the initial server address and the addresses
contained in this parameter can be simultaneously used for multipath.
Furthermore, this document
does not discuss when a client decides to initiate a new path. We
delegate such discussion in separate documents.</t>
      <t>This proposal adds one multipath control frame for path management:</t>
      <ul spacing="normal">
        <li>PATH_ABANDON frame for the receiver side to abandon the path
(see <xref target="path-abandon-frame"/>)</li>
      </ul>
      <t>All the new frames are sent in 1-RTT packets <xref target="QUIC-TRANSPORT"/>.</t>
      <section anchor="path-initiation">
        <name>Path Initiation</name>
        <t>When the multipath option is negotiated, clients that want to use an
additional path MUST first initiate the Address Validation procedure
with PATH_CHALLENGE and PATH_RESPONSE frames described in
<xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>. After receiving packets from the
client on a new path, if the server decides to use the new path,
the server MUST perform path validation (<xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>)
unless it has previously validated that address.</t>
        <t>If validation succeed, the client can send non-probing, 1-RTT packets
on the new paths.  In contrast with the specification in
<xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>, the server MUST NOT assume that
receiving non-probing packets on a new path indicates an attempt
to migrate to that path.  Instead, servers SHOULD consider new paths
over which non-probing packets have been received as available
for transmission.</t>
      </section>
      <section anchor="path-state-management">
        <name>Path State Management</name>
        <t>An endpoint uses PATH_STATUS frames to inform that the peer should
send packets in the preference expressed by these frames.
Notice that the endpoint might not follow the peer's advertisements,
but the PATH_STATUS frame is still a clear signal of suggestion
for the preference of path usage by the peer.</t>
        <t>PATH_STATUS frame describes 2 kinds of path states:</t>
        <ul spacing="normal">
          <li>Mark a path as "available", i.e., allow the peer to use its own logic
to split traffic among available paths.</li>
          <li>Mark a path as "standby", i.e., suggest that no traffic should be sent
on that path if another path is available.</li>
        </ul>
        <t>Endpoints use Path Identifier field in PATH_STATUS frame to identify
which path's state is going to be changed. Notice that PATH_STATUS frame
can be sent via a different path. An Endpoint MAY ignore the PATH_STATUS frame
if it would make all the paths unavailable in a single connection.</t>
      </section>
      <section anchor="path-close">
        <name>Path Close</name>
        <t>Each endpoint manages the set of paths that are available for
transmission. At any time in the connection, each endpoint can decide to
abandon one of these paths, following for example changes in local
connectivity or changes in local preferences. After an endpoint abandons
a path, the peer will not receive any more non-probing packets on
that path.</t>
        <t>An endpoint that wants to close a path SHOULD use explicit request to
terminate the path by sending the PATH_ABANDON frame (see
<xref target="path-abandon-close"/>). Note that while abandoning a path will cause
Connection ID retirement, only retiring the associated Connection ID
does not necessarily advertise path abandon (see <xref target="retire-cid-close"/>).
However, implicit signals such as idle time or packet losses might be
the only way for an endhost to detect path closure (see
<xref target="idle-time-close"/>).</t>
        <t>Note that other explicit closing mechanisms of <xref target="QUIC-TRANSPORT"/> still
apply on the whole connection. In particular, the reception of either a
CONNECTION_CLOSE (<xref section="10.2" sectionFormat="of" target="QUIC-TRANSPORT"/>) or a Stateless
Reset (<xref section="10.3" sectionFormat="of" target="QUIC-TRANSPORT"/>) closes the connection.</t>
        <section anchor="path-abandon-close">
          <name>Use PATH_ABANDON Frame to Close a Path</name>
          <t>Both endpoints, namely the client and the server, can close a path,
by sending PATH_ABANDON frame (see <xref target="path-abandon-frame"/>) which
abandons the path with a corresponding Path Identifier. Once a path is
marked as "abandoned", it means that the resources related to the path,
such as the used connection IDs, can be released.
However, information related to data delivered over that path SHOULD
not be released immediately as acknowledgments can still be received
or other frames that also may trigger retransmission of data on another
path.</t>
          <t>The endpoint sending the PATH_ABANDON frame SHOULD consider a path as
abandoned when the packet that contained the PATH_ABANDON frame is
acknowledged. When releasing resources of a path, the endpoint SHOULD
send a RETIRE_CONNECTION_ID frame for the connection IDs used on the path,
if any.</t>
          <t>The receiver of a PATH_ABANDON frame SHOULD NOT release its resources
immediately, but SHOULD wait for the reception of the RETIRE_CONNECTION_ID
frame for the used connection IDs or 3 RTOs.</t>
          <t>Usually, it is expected that the PATH_ABANDON frame is used by the client
to indicate to the server that path conditions have changed such that
the path is or will be not usable anymore, e.g. in case of a mobility
event. The PATH_ABANDON frame therefore indicates to the receiving peer
that the sender does not intend to send any packets on that path anymore
but also recommends to the receiver that no packets should be sent in
either direction. The receiver of an PATH_ABANDON frame MAY also send
an PATH_ABANDON frame to signal its own willingness to not send
any packet on this path anymore.</t>
          <t>If connection IDs are used, PATH_ABANDON frames can be sent on any path,
not only the path that is intended to be closed. Thus, a path can
be abandoned even if connectivity on that path is already broken.
If no connection IDs are used and the PATH_ABANDON frame has to send
on the path that is intended to be closed, it is possible that the packet
containing the PATH_ABANDON frame or the packet containing the ACK
for the PATH_ABANDON frame cannot be received anymore and the endpoint
might need to rely on an idle time out to close the path, as described
in <xref target="idle-time-close"/>.</t>
          <t>Retransmittable frames, that have previously been sent on the abandoned
path and are considered lost, SHOULD be retransmitted on a different
path.</t>
          <t>If a PATH_ABANDON frame is received for the only active path of a QUIC
connection, the receiving peer SHOULD send a CONNECTION_CLOSE frame
and enters the closing state. If the client received a PATH_ABANDON
frame for the last open path, it MAY instead try to open a new path, if
available, and only initiate connection closure if path validation fails
or a CONNECTION_CLOSE frame is received from the server. Similarly
the server MAY wait for a short, limited time such as one RTO if a path
probing packet is received on a new path before sending the
CONNECTION_CLOSE frame.</t>
        </section>
        <section anchor="refusing-a-new-path">
          <name>Refusing a New Path</name>
          <t>An endpoint may deny the establishment of a new path initiated by its
peer during the address validation procedure. According to
<xref target="QUIC-TRANSPORT"/>, the standard way to deny the establishment of a path
is to not send a PATH_RESPONSE in response to the peer's PATH_CHALLENGE.
An endpoint that has negotiated the usage of the multipath extension MAY
use an explicit method by sending on another active path a PATH_ABANDON
frame containing the Path Identifier of the refused path, but only if the
PATH_CHALLENGE arrives in a packet using a non-zero length Connection ID.</t>
        </section>
        <section anchor="retire-cid-close">
          <name>Effect of RETIRE_CONNECTION_ID Frame</name>
          <t>Receiving a RETIRE_CONNECTION_ID frame causes the endpoint to discard
the resources associated with that connection ID. If the connection ID
was used by the peer to identify a path from the peer to this endpoint,
the resources include the list of received packets used to send
acknowledgements. The peer MAY decide to keep sending data using
the same IP addresses and UDP ports previously associated with
the connection ID, but MUST use a different connection ID when doing so.</t>
          <t>Note that if the sender retires a Connection ID that is still used by
in-flight packets, it may receive ACK_MP frames referencing the retired
Connection ID. If the sender stops tracking sent packets with retired
Connection ID, these would be spuriously marked as lost. To avoid such
performance issue without keeping retired Connection ID state, an
endpoint should first stop sending packets with the to-be-retired
Connection ID, then wait for all in-flight packets to be either
acknowledged or marked as lost, and finally retire the Connection ID.</t>
        </section>
        <section anchor="idle-time-close">
          <name>Idle Timeout</name>
          <t><xref target="QUIC-TRANSPORT"/> allows for closing of connections if they stay idle
for too long. The connection idle timeout in multipath QUIC is defined
as "no packet received on any path for the duration of the idle timeout".
When only one path is available, servers MUST follow the specifications
in <xref target="QUIC-TRANSPORT"/>.</t>
          <t>When more than one path is available, hosts shall monitor the arrival of
non-probing packets and the acknowledgements for the packets sent over each
path. Hosts SHOULD stop sending traffic on a path if for at least the period of the
idle timeout as specified in <xref section="10.1." sectionFormat="of" target="QUIC-TRANSPORT"/>
(a) no non-probing packet was received or (b) no
non-probing packet sent over this path was acknowledged, but MAY ignore that
rule if it would disqualify all available paths. To avoid idle timeout of a path, endpoints
can send ack-eliciting packets such as packets containing PING frames
(<xref section="19.2" sectionFormat="of" target="QUIC-TRANSPORT"/>) on that path to keep it alive.  Sending
periodic PING frames also helps prevent middlebox timeout, as discussed in
<xref section="10.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
          <t>Server MAY release the resource associated with paths for
which no non-probing packet was received for a sufficiently long
path-idle delay, but SHOULD only release resource for the last
available path if no traffic is received for the duration of the idle
timeout, as specified in <xref section="10.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.
This means if all paths remain idle for the idle timeout, the connection
is implicitly closed.</t>
          <t>Server implementations need to select the sub-path idle timeout as a trade-
off between keeping resources, such as connection IDs, in use
for an excessive time or having to promptly reestablish a path
after a spurious estimate of path abandonment by the client.</t>
        </section>
      </section>
      <section anchor="path-states">
        <name>Path States</name>
        <t><xref target="fig-path-states"/> shows the states that an endpoint's path can have.</t>
        <figure anchor="fig-path-states">
          <name>States of a path</name>
          <artwork><![CDATA[
       o
       | PATH_CHALLENGE sent/received on new path
       v
 +------------+    Path validation abandoned
 | Validating |----------------------------------+
 +------------+                                  |
       |                                         |
       | PATH_RESPONSE received                  |
       |                                         |
       v                                         |
 +------------+     Path blackhole detected      |
 |   Active   |----------------------------------+
 +------------+                                  |
       |                                         |
       | PATH_ABANDONED sent/received            |
       v                                         |
 +------------+                                  |
 |   Closing  |                                  |
 +------------+                                  |
       |                                         |
       | Path's draining timeout                 |
       | (at least 3 PTO)                        |
       v                                         |
 +------------+                                  |
 |   Closed   |<---------------------------------+
 +------------+
]]></artwork>
        </figure>
        <t>In non-final states, hosts have to track the following information.</t>
        <ul spacing="normal">
          <li>Associated 4-tuple: The tuple (source IP, source port, destination IP,
destination port) used by the endhost to send packets over the path.</li>
          <li>Associated Destination Connection ID: The Connection ID used to send
packets over the path.</li>
        </ul>
        <t>If multiple packet number spaces are used over the connection, hosts
MUST also track the following information.</t>
        <ul spacing="normal">
          <li>Path Packet Number Space: The endpoint maintains a separate packet
number for sending and receiving packets over this path. Packet number
considerations described in <xref target="QUIC-TRANSPORT"/> apply within the given path.</li>
        </ul>
        <t>In the "Active" state, hosts MUST also track the following information.</t>
        <ul spacing="normal">
          <li>Associated Source Connection ID: The Connection ID used to receive
packets over the path.</li>
        </ul>
        <t>A path in the "Validating" state performs path validation as described
in <xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>. An endhost should not send
non-probing frames on a path in "Validating" state, as it has no
guarantee that packets will actually reach the peer.</t>
        <t>The endhost can use all the paths in the "Active" state, provided
that the congestion control and flow control currently allow sending
of new data on a path. Note that if a path became idle due to a timeout,
endpoints SHOULD send PATH_ABANDONED frame before closing the path.</t>
        <t>In the "Closing" state, the endhost SHOULD NOT send packets on this
path anymore, as there is no guarantee that the peer can still map
the packets to the connection. The endhost SHOULD wait for
the acknowledgment of the PATH_ABANDONED frame before moving the path
to the "Closed" state to ensure a graceful termination of the path.</t>
        <t>When a path reaches the "Closed" state, the endhost releases all the
path's associated resources, including the associated Connection IDs.
Endpoints SHOULD send RETIRE_CONNECTION_ID frames for releasing the
associated Connection IDs following <xref target="QUIC-TRANSPORT"/>. Considering
endpoints are not expected to send packets on the current path in the "Closed"
state, endpoints can send RETIRE_CONNECTION_ID frames on other
available paths. Consequently, the endhost is not able to send nor
receive packets on this path anymore.</t>
      </section>
    </section>
    <section anchor="congestion-control">
      <name>Congestion Control</name>
      <t>Senders MUST manage per-path congestion status, and MUST NOT send more
data on a given path than congestion control on that path allows.
This is already a requirement of <xref target="QUIC-TRANSPORT"/>.</t>
      <t>When a Multipath QUIC connection uses two or more paths, there is no
guarantee that these paths are fully disjoint. When two (or more paths)
share the same bottleneck, using a standard congestion control scheme
could result in an unfair distribution of the bandwidth with
the multipath connection getting more bandwidth than competing single
paths connections. Multipath TCP uses the LIA congestion control scheme
specified in <xref target="RFC6356"/> to solve this problem.  This scheme can
immediately be adapted to Multipath QUIC. Other coupled congestion
control schemes have been proposed for Multipath TCP such as <xref target="OLIA"/>.</t>
    </section>
    <section anchor="compute-rtt">
      <name>Computing Path RTT</name>
      <t>Acknowledgement delays are the sum of two one-way delays, the delay
on the packet sending path and the delay on the return path chosen
for the acknowledgements.  When different paths have different
characteristics, this can cause acknowledgement delays to vary
widely.  Consider for example a multipath transmission using both a
terrestrial path, with a latency of 50ms in each direction, and a
geostationary satellite path, with a latency of 300ms in both
directions.  The acknowledgement delay will depend on the combination
of paths used for the packet transmission and the ACK transmission,
as shown in <xref target="fig-example-ack-delay"/>.</t>
      <table anchor="fig-example-ack-delay">
        <name>Example of ACK delays using multiple paths</name>
        <thead>
          <tr>
            <th align="left">ACK Path \ Data path</th>
            <th align="left">Terrestrial</th>
            <th align="left">Satellite</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Terrestrial</td>
            <td align="left">100ms</td>
            <td align="left">350ms</td>
          </tr>
          <tr>
            <td align="left">Satellite</td>
            <td align="left">350ms</td>
            <td align="left">600ms</td>
          </tr>
        </tbody>
      </table>
      <t>Using the default algorithm specified in <xref target="QUIC-RECOVERY"/> would result
in suboptimal performance, computing average RTT and standard
deviation from series of different delay measurements of different
combined paths.  At the same time, early tests showed that it is
desirable to send ACKs through the shortest path because a shorter
ACK delay results in a tighter control loop and better performances.
The tests also showed that it is desirable to send copies of the ACKs
on multiple paths, for robustness if a path experiences sudden losses.</t>
      <t>An early implementation mitigated the delay variation issue by using
time stamps, as specified in <xref target="QUIC-Timestamp"/>.  When the timestamps
are present, the implementation can estimate the transmission delay
on each one-way path, and can then use these one way delays for more
efficient implementations of recovery and congestion control
algorithms.</t>
      <t>If timestamps are not available, implementations could estimate one
way delays using statistical techniques.  For example, in the example
shown in Table 1, implementations can use "same path"
measurements to estimate the one way delay of the terrestrial path to
about 50ms in each direction, and that of the satellite path to about
300ms.  Further measurements can then be used to maintain estimates
of one way delay variations, using logical similar to Kalman filters.
But statistical processing is error-prone, and using time stamps
provides more robust measurements.</t>
    </section>
    <section anchor="packet-scheduling">
      <name>Packet Scheduling</name>
      <t>The transmission of QUIC packets on a regular QUIC connection is regulated
by the arrival of data from the application and the congestion control
scheme. QUIC packets can only be sent when the congestion window of
at least one path is open.</t>
      <t>Multipath QUIC implementations also need to include a packet scheduler
that decides, among the paths whose congestion window is open, the path
over which the next QUIC packet will be sent. Many factors can influence
the definition of these algorithms and their precise definition is
outside the scope of this document. Various packet schedulers have been
proposed and implemented, notably for Multipath TCP. A companion draft
<xref target="I-D.bonaventure-iccrg-schedulers"/> provides several general-purpose
packet schedulers depending on the application goals.</t>
      <t>Note that the receiver could use a different scheduling strategy to send
ACK(_MP) frames. The recommended default behaviour consists in sending
ACK(_MP) frames on the path they acknowledge packets. Other scheduling
strategies, such as sending ACK(_MP) frames on the lowest latency
path, might be considered, but they could impact the sender with side
effects on, e.g., the RTT estimation or the congestion control scheme.
When adopting such asymetrical acknowledgment scheduling, the receiver
should at least ensure that the sender negotiated one-way delay
calculation mechanism (e.g., <xref target="QUIC-Timestamp"/>).</t>
    </section>
    <section anchor="recovery">
      <name>Recovery</name>
      <t>Simultaneous use of multiple paths enables different
retransmission strategies to cope with losses such as:
a) retransmitting lost frames over the
same path, b) retransmitting lost frames on a different or
dedicated path, and c) duplicate lost frames on several paths (not
recommended for general purpose use due to the network
overhead). While this document does not preclude a specific
strategy, more detailed specification is out of scope.</t>
    </section>
    <section anchor="packet-number-space-and-use-of-connection-id">
      <name>Packet Number Space and Use of Connection ID</name>
      <t>If the connection ID is present (non-zero length) in the packet header,
the connection ID is used to identify the path.
If no connection ID is present, the 4 tuple identifies the path.
The initial path that is used during the handshake (and multipath negotiation)
has the path ID 0 and therefore all 0-RTT packets are also tracked and
processed with the path ID 0.
For 1-RTT packets, the path ID is the sequence number of
the Destination Connection ID present in the packet header, as defined
in <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>, or also 0 if the Connection ID
is zero-length.</t>
      <t>If non-zero-length Connection IDs are used, an endpoint MUST use
different Connection IDs on different paths.
Still, the receiver may observe the same Connection ID used on different
4-tuples due to, e.g., NAT rebinding. In such case, the receiver reacts
as specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>Acknowledgements of Initial and Handshake packets MUST be carried using
ACK frames, as specified in <xref target="QUIC-TRANSPORT"/>. The ACK frames, as defined
in <xref target="QUIC-TRANSPORT"/>, do not carry path identifiers. If for any reason
ACK frames are received in 1-RTT packets while the state of multipath
negotiation is ambiguous, they MUST be interpreted as acknowledging
packets sent on path 0.</t>
      <section anchor="using-zero-length">
        <name>Using Zero-Length connection ID</name>
        <t>If a zero-length connection ID is used, one packet number space
for all paths. That means the packet sequence numbers are allocated
from the common
number space, so that, for example, packet number N could be sent
on one path and packet number N+1 on another.</t>
        <t>In this case, ACK frames report the numbers of packets that have been
received so far,
regardless of the path on which they have been received. That means
the sender needs to maintain an association between sent packet numbers
and the path over which these packets were sent. This is necessary
to implement per path congestion control, as explained
in <xref target="zero-length-cid-loss-and-congestion"/>.</t>
        <t>Further, the receiver of packets with zero-length connection IDs should
implement handling of acknowledgements as defined in
<xref target="sending-acknowledgements-and-handling-ranges"/>.</t>
        <t>ECN handing is specified in <xref target="ecn-handling"/>, and
mitigation of the RTT measurement is further explained
in <xref target="ack-delay-and-zero-length-cid-considerations"/>.</t>
        <t>If a node
does not want to implement this logic, it MAY instead limit its use of multiple paths
as explained in <xref target="restricted-sending-to-zero-length-cid-peer"/>.</t>
        <section anchor="sending-acknowledgements-and-handling-ranges">
          <name>Sending Acknowledgements and Handling Ranges</name>
          <t>If zero-length CID and therefore also a single packet number space
is used by the sender, the receiver MAY send ACK frames instead
of ACK_MP frames to reduce overhead as the additional path ID field
will anyway always carry the same value.</t>
          <t>If senders decide to send packets on paths with different
transmission delays, some packets will very likely be received out
of order. This will cause the ACK frames to carry multiple ranges of
received packets. The large number of range increases the size of
ACK frames, causing transmission and processing overhead.</t>
          <t>The size and overhead of the ACK frames can
be controlled by the combination of one or several of the following:</t>
          <ul spacing="normal">
            <li>Not transmitting again ACK ranges that were present in an ACK
frame acknowledged by the peer.</li>
            <li>Delay acknowledgements to allow for arrival of "hole filling"
packets.</li>
            <li>Limit the total number of ranges sent in an ACK frame.</li>
            <li>Limiting the number of transmissions of a specific ACK range, on
the assumption that a sufficient number of transmissions almost
certainly ensures reception by the peer.</li>
            <li>Send multiple messages for a given path in a single socket
operation, so that a series of packets sent from a single path
uses a series of consecutive sequence numbers without creating
holes.</li>
          </ul>
        </section>
        <section anchor="zero-length-cid-loss-and-congestion">
          <name>Loss and Congestion Handling With Zero-Length CID</name>
          <t>When sending to a zero-length CID
receiver, senders may receive acknowledgements that combine packet
numbers received over multiple paths.
However, even if one packet number space is used on multiple path
the sender MUST maintain separate congestion control state for each
path. Therefore, senders MUST be able to infer the
sending path from the acknowledged packet numbers, for example by remembering
which packet was sent on what path. The senders MUST use that information to
perform congestion control on the relevant paths, and to correctly
estimate the transmission delays on each path. (See
<xref target="ack-delay-and-zero-length-cid-considerations"/> for specific considerations
about using the ACK Delay field of ACK frames, and
<xref target="ecn-handling"/> for issues on using ECN marks.)</t>
          <t>Loss detection as specified in <xref target="QUIC-RECOVERY"/> uses algorithms
based on timers and on sequence numbers. When packets are sent over
multiple paths, loss detection must be adapted to allow for different RTTs
on different paths. When sending to zero-length CID receivers, packets sent
on different paths may be received out of order. Therefore, senders cannot
directly use the packet sequence numbers to
compute the Packet Thresholds defined in <xref section="6.1.1" sectionFormat="of" target="QUIC-RECOVERY"/>.
Relying only on Time Thresholds produces correct results, but is somewhat
suboptimal. Some implementations have been getting good results by
not just remembering the path over which a packet was sent, but also
maintaining an order list of packets sent on each path. That ordered
list can then be used to compute acknowledgement gaps per path in
Packet Threshold tests.</t>
        </section>
        <section anchor="ack-delay-and-zero-length-cid-considerations">
          <name>ACK Delay and Zero-Length CID Considerations</name>
          <t>The ACK Delay field of the ACK frame is relative to the largest
acknowledged packet number (see <xref section="13.2.5" sectionFormat="of" target="QUIC-TRANSPORT"/>).
When using paths with different transmission delays, the reported host
delay will most of the time relate to the path with the shortest latency.
To collect ACK delays on all the paths, hosts should rely on time stamps
as described in <xref target="QUIC-Timestamp"/>.</t>
        </section>
        <section anchor="ecn-handling">
          <name>ECN and Zero-Length CID Considerations</name>
          <t>ECN feedback in QUIC is provided based on counters in the ACK frame
(see <xref section="19.3.2." sectionFormat="of" target="QUIC-TRANSPORT"/>). That means if an ACK
frame acknowledges multiple packets, the ECN feedback cannot be accounted
to a specific packet.</t>
          <t>There are separate counters for each packet number space. However, sending
to zero-length CID receivers, the same number space is used for multiple paths.
Respectively, if an ACK frames acknowledges multiple packets from different paths,
the ECN feedback cannot unambiguously be assigned to a path.</t>
          <t>If the sender marks its packets with the ECN capable flags, the network
will expect standard reactions to ECN marks, such as slowing down
transmission on the sending path. If zero-length CID is used,
the sending path is however ambiguous. Therefore, the sender MUST
treat a CE marking as a congestion signal on all sending paths that
have been by a packet that was acknowledged in the ACK frame signaling
the CE counter increase.</t>
          <t>A host that is sending over multiple paths to a zero-length CID receiver
MAY disable ECN marking and
send all subsequent packets as Not-ECN capable.</t>
        </section>
        <section anchor="restricted-sending-to-zero-length-cid-peer">
          <name>Restricted Sending to Zero-Length CID Peer</name>
          <t>Hosts that are designed to support multipath using multiple number spaces
MAY adopt a conservative posture after negotiating multipath support with
a peer using zero-length CID. The simplest posture is to only send
data on one path at a time, while accepting packets on all acceptable
paths. In that case:</t>
          <ul spacing="normal">
            <li>the attribution of packets to path discussed in <xref target="zero-length-cid-loss-and-congestion"/>
are easy to solve because packets are sent on a single path,</li>
            <li>the ACK Delays are correct,</li>
            <li>the vast majority of ECN marks relate to the current sending path.</li>
          </ul>
          <t>Of course, the hosts will only take limited advantage from the multipath
capability in these scenarios. Support for "make before break" migrations
will improve, but load sharing between multiple paths will not work.</t>
        </section>
      </section>
      <section anchor="using-non-zero-length-cid-and-multiple-packet-number-spaces">
        <name>Using non-zero length CID and Multiple Packet Number Spaces</name>
        <t>If packets contain a non-zero CID, each path has
its own packet number space for transmitting 1-RTT packets and a new
ACK frame format is used as specified in <xref target="ack-mp-frame"/>.
Compared to the QUIC version 1 ACK frame, the ACK_MP frames additionally
contains a Packet Number Space Identifier (PN Space ID).
The PN Space ID used to distinguish packet number spaces for different
paths and is simply derived from the sequence number of
Destination Connection ID.
Therefore, the packet number space for 1-RTT packets can be identified
based on the Destination Connection ID in each packet.</t>
        <t>As soon as the negotiation of multipath support with value 2 is completed,
endpoints SHOULD use ACK_MP frames instead of ACK frames for
acknowledgements of 1-RTT packets on path 0, as well as for 0-RTT packets
that are acknowledged after the handshake concluded.</t>
        <t>Following <xref target="QUIC-TRANSPORT"/>, each endpoint uses NEW_CONNECTION_ID frames
to issue usable connections IDs to reach it. Before an endpoint adds
a new path by initiating path validation, it MUST check whether at least
one unused Connection ID is available for each side.</t>
        <t>If the transport parameter "active_connection_id_limit" is negotiated as N,
the server provided N Connection IDs, and the client is already actively
using N paths, the limit is reached. If the client wants to start
a new path, it has to retire one of the established paths.</t>
        <t>ACK_MP frame (defined in <xref target="ack-mp-frame"/>) can be returned via either a
different path, or the same path identified by the Path Identifier, based on
different strategies of sending ACK_MP frames.</t>
        <t>Using multiple packet number spaces requires changes in the way AEAD is
applied for packet protection, as explained in <xref target="multipath-aead"/>,
and tighter constraints for key updates, as explained in <xref target="multipath-key-update"/>.</t>
        <section anchor="multipath-aead">
          <name>Packet Protection for QUIC Multipath</name>
          <t>Packet protection for QUIC version 1 is specified in <xref section="5" sectionFormat="of" target="QUIC-TLS"/>.
The general principles of packet protection are not changed for
QUIC Multipath. No changes are needed for setting packet protection keys,
initial secrets, header protection, use of 0-RTT keys, receiving
out-of-order protected packets, receiving protected packets,
or retry packet integrity. However, the use of multiple number spaces
for 1-RTT packets requires changes in AEAD usage.</t>
          <t><xref section="5.3" sectionFormat="of" target="QUIC-TLS"/> specifies AEAD usage, and in particular
the use of a nonce, N, formed by combining the packet protection IV
with the packet number. If multiple packet number spaces are used,
the packet number alone would not guarantee the uniqueness of the nonce.</t>
          <t>In order to guarantee the uniqueness of the nonce, the nonce N is
calculated by combining the packet protection IV with the packet number
and with the path identifier.</t>
          <t>The path ID for 1-RTT packets is the sequence number of <xref target="QUIC-TRANSPORT"/>, or
zero if the Connection ID is zero-length.  <xref section="19" sectionFormat="of" target="QUIC-TRANSPORT"/>
encodes the Connection ID Sequence Number as a variable-length integer,
allowing values up to 2^62-1; in this specification, a range of less than 2^32-1
values MUST be used before updating the packet protection key.</t>
          <t>To calculate the nonce, a 96 bit path-and-packet-number is composed of
the 32 bit Connection ID Sequence Number in byte order, two zero bits,
and the 62 bits of the reconstructed QUIC packet number in network byte order.
If the IV is larger than 96 bits, the path-and-packet-number is
left-padded with zeros to the size of the IV. The exclusive OR
of the padded packet number and the IV forms the AEAD nonce.</t>
          <t>For example, assuming the IV value is <tt>6b26114b9cba2b63a9e8dd4f</tt>,
the connection ID sequence number is <tt>3</tt>, and the packet number is <tt>aead</tt>,
the nonce will be set to <tt>6b2611489cba2b63a9e873e2</tt>.</t>
        </section>
        <section anchor="multipath-key-update">
          <name>Key Update for QUIC Multipath</name>
          <t>The Key Phase bit update process for QUIC version 1 is specified in
<xref section="6" sectionFormat="of" target="QUIC-TLS"/>.
The general principles of key update are not changed in this
specification. Following QUIC version 1, the Key Phase bit is used to
indicate which packet protection keys are used to protect the packet.
The Key Phase bit is toggled to signal each subsequent key update.
Because of network delays, packets protected with the older key might
arrive later than the packets protected with the new key. Therefore,
the endpoint needs to retain old packet keys to allow these delayed
packets to be processed and it must distinguish between the new key
and the old key. In QUIC version 1, this is done using packet numbers
so that the rule is made simple: Use the older key if packet number is
lower than any packet number frame the current key phase.</t>
          <t>When using multiple packet number spaces on different paths,
some care is needed when initiating the Key Update process,
as different paths use different packet number spaces but share
a single key. When a key update is initiated on one path, packets sent to
another path needs to know when the transition is complete. Otherwise,
it is possible that the other paths send packets with the old keys,
but skip sending any packets in the current key phase and directly
jump to sending packet in the next key phase. When that happens,
as the endpoint can only retain two sets of packet protection keys
with the 1-bit Key Phase bit, the other paths cannot distinguish
which key should be used to decode received packets, which results in
a key rotation synchronization problem.</t>
          <t>To address such a synchronization issue, if key update is
initialized on one path, the sender SHOULD send at least one packet
with the new key on all active paths. Further, an endpoint MUST NOT
initiate a subsequent key update until a packet with the current key
has been acknowledged on each path.</t>
          <t>Following <xref section="5.4" sectionFormat="of" target="QUIC-TLS"/>, the Key Phase bit is protected,
so sending multiple packets with Key Phase bit flipping at the same time
should not cause linkability issue.</t>
        </section>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="path-establishment">
        <name>Path Establishment</name>
        <t><xref target="fig-example-new-path"/> illustrates an example of new path establishment
using multiple packet number spaces.</t>
        <figure anchor="fig-example-new-path">
          <name>Example of new path establishment</name>
          <artwork><![CDATA[
   Client                                                  Server

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

]]></artwork>
        </figure>
        <t>In <xref target="fig-example-new-path"/>, the endpoints first exchange
new available Connection IDs with the NEW_CONNECTION_ID frame.
In this example, the client provides one Connection ID (C1 with
sequence number 1), and server provides two Connection IDs
(S1 with sequence number 1, and S2 with sequence number 2).</t>
        <t>Before the client opens a new path by sending a packet on that path
with a PATH_CHALLENGE frame, it has to check whether there is
an unused Connection IDs available for each side.
In this example, the client chooses the Connection ID S2
as the Destination Connection ID in the new path.</t>
        <t>If the client has used all the allocated CID, it is supposed to retire
those that are not used anymore, and the server is supposed to provide
replacements, as specified in <xref target="QUIC-TRANSPORT"/>.
Usually, it is desired to provide one more connection ID as currently
in use, to allow for new paths or migration.</t>
      </section>
      <section anchor="path-closure">
        <name>Path Closure</name>
        <t>In this example, the client detects the network environment change
(client's 4G/Wi-Fi is turned off, Wi-Fi signal is fading to a threshold,
or the quality of RTT or loss rate is becoming worse) and wants to close
the initial path.</t>
        <t><xref target="fig-example-path-close1"/> illustrates an example of path closing when both
the client and the server use non-zero-length CIDs. For the first path, the
server's 1-RTT packets use DCID C1, which has a sequence number of 1; the
client's 1-RTT packets use DCID S2, which has a sequence number of 2. For the
second path, the server's 1-RTT packets use DCID C2, which has a sequence
number of 2; the client's 1-RTT packets use DCID S3, which has a sequence number
of 3. Note that the paths use different packet number spaces. In this case, the
client is going to close the first path. It identifies the path by the sequence
number of the received packet's DCID over that path (path identifier type
0x00), hence using the path_id 1. Optionally, the server confirms the path closure
by sending an PATH_ABANDON frame using
the sequence number of the received packet's DCID over that path (path
identifier type 0x00) as path identifier, which corresponds to the path_id 2. Both the client and
the server can close the path after receiving the RETIRE_CONNECTION_ID frame
for that path.</t>
        <figure anchor="fig-example-path-close1">
          <name>Example of closing a path when both the client and the server choose to receive non-zero-length CIDs.</name>
          <artwork><![CDATA[
Client                                                      Server

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

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-liu-multipath-quic-04"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81963rbyJXg/3oKjPwj0oTkSHKnJ61MdqOW1Yk2tuxIcnp6
ensckAQlxCTAAKBkxd3z7Wvs6+2T7LlWnSqAtJzM7Lf+vqQpEqjLqVPnfhmP
x64ru2Vxkr3aLLtynXd32fmHrqjasq6yRd1kf3h7ceby6bQp7u1D9PW8nlX5
Cl6eN/miG5dFtxj/ZVPOxit9bnx47OZ5B498fHF6c/6Tm8Eft3XzeJK13dy5
ct2cZF2zabvjw8Ov4OG8KfKT7KbJq3ZdN517qJv3t029WZ/QlNm38HdZ3Wa/
xe/c++IRHpifZBdVVzRV0Y1f4Eqca7u8mr/Ll3UFUz8WrVuXJ9n3XT0bZS0M
2xSLFj49rvDDD87lm+6ubk7c2GVZWbUn2XeT7GW5gb94f9/l1aoo5aumRngV
87KrG/izbm5PstNlOc2nOaxjNoHvilVeLk+yVZnXfy4ny8fVb3J+YFzCA7N6
RTP5qV7l+JdMtakWMBV/NTS2Dv5ID05W+Y6x/zDJXhTZWV3BT+/DHH/YFFVX
Vslvyb548rdnL+vNfV5WZua/8OuTeTHjt3+zmS35qcm0MNO/nmRf11V+D49v
miLM/3pZ3pdFk/64dcKan59Mw/PbpjybZL/blB28GKY7u2vKtivzyv5Ek71p
yntAyOz1rKvXmzYF8R0//hv57wQQzEz1apL9flPcLYuHspqH2V6VzZ/z5JdB
0J435axta7vRFb47ee/f/U0hz9C5OlfVzSrvyvviBF66+ubs+OjoK/yIV2N8
c3V6ef3m9dXNSdYsZl8dHh76X15e63dHcOeqRTLMl89/8SV+vBi/sDAel7NZ
cztuZ3fFfLMsmtZPdXV+9vqP51ff6ajH+sNFdZ83AOmupZ9++dVXX/lFlKsC
ruUKbjLOIzBletG18NTrlxenOEOWCUnae/Xm5uxNVrZZVXfZGkhDV4/rdVeu
coDVumhoH9WsgEfaTdFmcOddnq3rti2nywJu+nLTAR3bo0GZDO0dHx4d8xct
ALdoERrw9ZumnhVwQNVtm9WLrLsrsl8CmSuJruQ4Sr7MAN0XRVPgjHBs56ui
uUVaBGjxIGSp+ADLgo0CAHA1WVfM7qp6Wd/CTKPs9OwVT630Bj8TQilOXQFO
3cF9Xpb93y4n2W/ztuv/AIj4pl7X9+Ws/9vbSfZ2nc/vHvPH/o//YzJGQlfA
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
m+xliZs5jTphyyb/L2G5ihnJ7AAA

-->

</rfc>
