<?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.2 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gage-quicmp-pathmodel-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="MPQUIC Alternate Path Model">An Alternate Path Model for Multipath QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-gage-quicmp-pathmodel-00"/>
    <author initials="W." surname="Gage" fullname="Bill Gage">
      <organization>Unaffiliated</organization>
      <address>
        <postal>
          <city>Ottawa</city>
          <country>Canada</country>
        </postal>
        <email>billgage.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2023" month="November" day="11"/>
    <area>Internet</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 55?>

<t>The path model used in the current MPQUIC draft binds a connection identifier to a path. In fact, the sequence number of a connection identifier is used as an implicit path identifier. This has a number of consequences that may cause MPQUIC to diverge from the principles of RFC9000. One of these consequences, for example, is to associate each connection with a different application data packet number space rather than maintaining a single application data packet number space across all connections as defined in RFC9000.</t>
      <t>This document proposes a different path model for Multipath QUIC using explicit path identifiers, enabling a multipath management framework that retains the principles and operations of RFC9000.</t>
    </abstract>
  </front>
  <middle>
    <?line 62?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Architecturally, one may consider two models for multi-path operations: model (A) is a collection of uni-path QUIC constructs while model (B) is a uni-path QUIC construct operating over a collection of paths.</t>
      <t>Model (A) is like multipath TCP <xref target="MPTCP"/> and appears to be the model of the current MPQUIC design <xref target="MPQUIC-DRAFT"/>. Model (B) is like a TCP connection operating over a layer 2 link aggregation group <xref target="LAG"/>. In (B), a TCP segment can be transmitted in an IP datagram over any of the links in the LAG.</t>
      <t>If we apply the principles of (B) to Multipath QUIC, then path management is distinct from connection management. Conceptually the Multipath QUIC stack is an <xref target="RFC9000"/> entity sitting on top of a path management entity with a shim entity between them to direct a QUIC packet over one of the available paths.</t>
      <t>This document proposes a QUIC multipath model similar to (B).</t>
      <t>In the proposed model, a QUIC packet can be sent over any of the available (and unrestricted) paths. Since connection identifiers are independent of path, a QUIC packet received over any path is processed in the same way as a packet received over the single path construct of <xref target="RFC9000"/> - i.e. there is a single application data packet number space and an ACK received over any path contains unambiguous packet numbers. While congestion control must clearly be path-specific, connection management, key management and packet loss recovery are not path-specific.</t>
      <section anchor="conventions">
        <name>Conventions</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.
<?line -6?>
        </t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <dl>
          <dt>This document uses the following terminology:</dt>
          <dd>
            <t/>
          </dd>
          <dt>session:</dt>
          <dd>
            <t>a collection of QUIC connections and paths used to exchange QUIC packets between two endpoints.</t>
          </dd>
          <dt>TBC:</dt>
          <dd>
            <t>to be completed</t>
          </dd>
          <dt>TBD:</dt>
          <dd>
            <t>to be determined</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="multipathmgmt">
      <name>Multipath Management</name>
      <t>Connection migration to a new path is already supported in <xref target="RFC9000"/>. A goal of multipath QUIC is to provide multiple paths that can be simultaneously active and to explicitly manage the use of paths.</t>
      <t>Similar to <xref target="MPQUIC-DRAFT"/>, this proposal is based on several basic design points:</t>
      <ul spacing="normal">
        <li>
          <t>Re-use the mechanisms of <xref target="RFC9000"/> as much as possible. In particular, this proposal uses path validation based on <xref target="RFC9000"/> and re-uses all of the connection management, key management and loss recovery procedures of <xref target="RFC9000"/>.</t>
        </li>
        <li>
          <t>Use the same packet header formats as <xref target="RFC9000"/> to avoid differences between multipath and non-multipath traffic over a particular path.</t>
        </li>
        <li>
          <t>Do not modify frame formats defined in <xref target="RFC9000"/>; if necessary, define new frame types for multipath-specific operations.</t>
        </li>
      </ul>
      <t>Multipath QUIC requires changes to the path management mechanisms specified in Section 9 of <xref target="RFC9000"/>:</t>
      <ul spacing="normal">
        <li>
          <t>allow simultaneous transmission of non-probing frames on multiple paths;</t>
        </li>
        <li>
          <t>continue using an existing path even if non-probing frames have been received on another path;</t>
        </li>
        <li>
          <t>manage the removal of paths that have been abandoned or lost.</t>
        </li>
      </ul>
      <t>In addition, multipath QUIC may require changes to several QUIC path-specific procedures described in <xref target="RFC9002"/>:</t>
      <ul spacing="normal">
        <li>
          <t>congestion control;</t>
        </li>
        <li>
          <t>RTT measurements;</t>
        </li>
        <li>
          <t>PMTU discovery.</t>
        </li>
      </ul>
    </section>
    <section anchor="pathid">
      <name>Path Identification</name>
      <t>A path may be associated with the 4-tuple of an IP/UDP datagram (source IP address, destination IP address, source UDP port, and destination UDP port). However, this document explicitly assigns an identifier to each path to decouple path management from the 4-tuple of the IP/UDP datagram used to transport a QUIC packet.</t>
      <t>A path identifier is an integer that is unique across all paths associated with a session. The initial (default) path (i.e. the path used for the exchange of QUIC initial and handshake packets) is implicitly assigned the path identifier (PathID) zero (0). New path identifiers MUST increase monotonically. A path identifier assigned to one path MUST NOT be reused as the identifier for a different path within the session.</t>
      <t>If the 4-tuple associated with a QUIC connection changes without the use of multipath validation (<xref target="pathactivation"/>), this is considered a passive migration event (e.g. due to a NAT rebinding) and is outside the scope of this document - i.e. it is already covered by <xref target="RFC9000"/>.</t>
      <t>QUIC connections exist and are managed independently of paths. An outgoing QUIC packet may be transmitted over any of the available and active paths, subject to any constraints that may have been placed on path usage by either of the QUIC endpoints (<xref target="pathstatus"/>). Similarly, an incoming QUIC packet received over any path will be processed according to <xref target="RFC9000"/>, as though it had been received over a uni-path transport between the QUIC endpoints.</t>
      <section anchor="sidebar-comparison-to-mpquic-draft">
        <name>(Sidebar) Comparison to <xref target="MPQUIC-DRAFT"/></name>
        <t><xref target="MPQUIC-DRAFT"/> does not use explicit path identifiers; instead, a connection identifier is used as an implicit path identifier with several consequences:</t>
        <ul spacing="normal">
          <li>
            <t>a connection is bound to a specific path;</t>
          </li>
          <li>
            <t>there can be be only one connection per path.</t>
          </li>
        </ul>
        <t>In addition, QUIC packet loss and recovery in <xref target="MPQUIC-DRAFT"/> is performed separately for each path. To simplify implementation, <xref target="MPQUIC-DRAFT"/> introduces the concept of multiple application data packet number spaces with a different number space for each connection (path). This is in contrast to <xref target="RFC9000"/> where there is a single application data packet number space.</t>
      </section>
      <section anchor="sidebar-use-of-multiple-application-data-packet-number-spaces">
        <name>(Sidebar) Use of multiple application data packet number spaces</name>
        <t>One consequence of the use of multiple packet number spaces is that it may be  difficult to use <xref target="MPQUIC-DRAFT"/> in combination with a QUIC-aware UDP proxy <xref target="QUIC-PROXY"/>.</t>
        <t>If the proxy is operating in forwarding mode, an uplink QUIC short header packet received over a (virtual) CID on the network segment between the proxy and a client is mapped to a destination CID on the network segment between the proxy and a server. Nothing else in the QUIC packet is changed and parts of the QUIC packet header - including the packet number - are protected by a header protection key known only to the client and server.</t>
        <t>If multipath QUIC is used between the proxy and client, and uni-path QUIC <xref target="RFC9000"/> is used between the proxy and server, then a change in the path between proxy and client cannot affect the packet numbering. In other words, multipath QUIC would need to preserve the packet numbering spaces defined by <xref target="RFC9000"/> and not introduce a new set of packet number spaces that would prevent interop with <xref target="RFC9000"/> compliant servers.</t>
      </section>
    </section>
    <section anchor="highlevel">
      <name>High-level Overview</name>
      <t>The multipath extensions to QUIC proposed in this document enable the simultaneous use of different paths to exchange non-probing QUIC frames. This differs from <xref target="RFC9000"/> where the connection migration procedure selects only one path to exchange non-probing frames.</t>
      <t>A multipath QUIC session between peers starts with a standard QUIC handshake over an initial (default) path. As indicated by <xref target="RFC9000"/>, an endpoint MUST NOT attempt to activate a new path before the handshake is confirmed. The peers use a new <tt>enable_multipath</tt> transport parameter during the handshake to negotiate the use of multipath capabilities. A new <tt>max_active_paths</tt> transport parameter limits the maximum number of active paths that can be used between the peers.</t>
      <t>To add a new path to an existing multipath QUIC session, a client starts a path validation on the chosen path. A new path can only be used to transport non-probing frames once the path has been validated using mechanisms similar to those described in Section 8 of <xref target="RFC9000"/>. New MULTIPATH_CHALLENGE and MULTIPATH_RESPONSE frames are used to validate the path and to assign an identifier to the path. A new MULTIPATH_STATUS frame may be used to control use of a path and a new MULTIPATH_BINDING frame may be used to bind a QUIC connection identifier to a specific set of paths.</t>
      <t>A new MULTIPATH_ABANDON frame may be used to abandon a path between peers, preventing further use of that path to exchange QUIC packets. A MULTIPATH_ABANDON frame includes the identifier assigned to the path to be abandoned, allowing the frame to be forwarded over any of the (allowable) paths active at the time of transmission.</t>
      <t>The multipath operations described in this document do not change the basic operations described in <xref target="RFC9000"/>. In particular, none of the following procedures described in <xref target="RFC9000"/> are affected by the use of multiple paths:</t>
      <ul spacing="normal">
        <li>
          <t>connection management (e.g. the use of NEW_CONNECTION_ID frames and subsequent rotation of connection identifiers);</t>
        </li>
        <li>
          <t>key management (e.g. use of key phase bit) and derivation of AEAD parameters;</t>
        </li>
        <li>
          <t>packet loss detection and loss recovery (e.g. using type 0x02 ACK frames without ECN counts).</t>
        </li>
      </ul>
      <t>However, changes to <xref target="RFC9002"/> procedures are required to deal with path-dependent characteristics such as path MTU size, RTT and congestion. For example, a new MULTIPATH_ECN frame may be used to provide path-specific ECN information.</t>
    </section>
    <section anchor="path-activation-and-removal">
      <name>Path Activation and Removal</name>
      <t>TBC.</t>
      <section anchor="pathactivation">
        <name>Path Activation</name>
        <t>operation overview:</t>
        <ul spacing="normal">
          <li>
            <t>to initiate communications over a new path, an endpoint sends a MULTIPATH_CHALLENGE frame (<xref target="frame_challenge"/>) containing a new path identifier (PathID) and an unpredictable payload.</t>
          </li>
          <li>
            <t>the frame is encapsulated (in a QUIC packet) in an IP/UDP datagram where the 4-tuple of the datagram corresponds to the new path.</t>
          </li>
          <li>
            <t>discovery of the peer endpoint IP address and UDP port is outside the scope of this document.</t>
          </li>
          <li>
            <t>the peer confirms used of the new path by responding with a MULTIPATH_RESPONSE frame (<xref target="frame_response"/>) that echoes the received PathID and payload.</t>
          </li>
          <li>
            <t>if the initiating endpoint does not receive a confirming MULTIPATH_RESPONSE frame, it may transmit a new MULTIPATH_CHALLENGE frame using the same (or a different) IP/UDP 4-tuple but with a new PathID and a different payload.</t>
          </li>
        </ul>
        <t>TBC.</t>
      </section>
      <section anchor="pathremoval">
        <name>Path Removal</name>
        <t>operation overview:</t>
        <ul spacing="normal">
          <li>
            <t>to terminate communications over an established path, an endpoint sends a MULTIPATH_ABANDON frame (<xref target="frame_abandon"/>) containing the PathID of the path to be abandoned.</t>
          </li>
          <li>
            <t>if the endpoint does not receive a MULTIPATH_ABANDON_ACK frame (<xref target="frame_abandonack"/>) in response, the MULTIPATH_ABANDON frame may be retransmitted over the same or a different path.</t>
          </li>
          <li>
            <t>the MULTIPATH_ABANDON and MULTIPATH_ABANDON_ACK frames may be transmitted over any path that is active (and allowable) at the time of transmission.</t>
          </li>
        </ul>
        <t>TBC.</t>
      </section>
    </section>
    <section anchor="pathmaintain">
      <name>Path Maintenance</name>
      <t>TBC.</t>
      <section anchor="pathstatus">
        <name>Path Transmission Status</name>
        <t>operation overview:</t>
        <ul spacing="normal">
          <li>
            <t>an initiating endpoint may send an initiator MULTIPATH_STATUS frame (<xref target="frame_status"/>) to inform its peer of the desired status of a path.</t>
          </li>
          <li>
            <t>if the peer agrees with the status change, the peer should respond with a MULTIPATH_STATUS_ACK frame (<xref target="frame_statusack"/>) that echoes the sequence number and status of the corresponding MULTIPATH_STATUS frame.</t>
          </li>
          <li>
            <t>if the peer does not agree with the status change, the peer should respond with a new responder MULTIPATH_STATUS frame (<xref target="frame_status"/>) to inform the initiator of its desired status of the path. The path status sequence number in the new MULTIPATH_STATUS frame MUST be greater than the path status sequence number in the initiator MULTIPATH_STATUS frame.</t>
          </li>
          <li>
            <t>an endpoint may also send a MULTIPATH_BINDING frame (<xref target="frame_binding"/>) to bind a QUIC connection identifier to a specific path or set of paths.</t>
          </li>
          <li>
            <t>the MULTIPATH_STATUS, MULTIPATH_STATUS_ACK and MULTIPATH_BINDING frames may be transmitted over any path that is active (and allowable) at the time of transmission.</t>
          </li>
        </ul>
        <t>TBC.</t>
      </section>
      <section anchor="pathcc">
        <name>Path Congestion Control</name>
        <t>operation overview:</t>
        <ul spacing="normal">
          <li>
            <t>congestion control is applied per path, as described in Section 7 of <xref target="RFC9002"/>.</t>
          </li>
          <li>
            <t>QUIC packets sent on one path do not affect the congestion state of another path.</t>
          </li>
          <li>
            <t>an endpoint may send a MULTIPATH_ECN frame (<xref target="frame_ecn"/>) to its peer to report ECN information received over a path.</t>
          </li>
          <li>
            <t>an endpoint may send a MULTIPATH_MAX_DATA frame (<xref target="frame_maxdata"/>) to limit the number of bytes-in-flight allowed on a path.</t>
          </li>
          <li>
            <t>the MULTIPATH_ECN and MULTIPATH_MAX_DATA frames may be transmitted over any path that is active (and allowable) at the time of transmission.</t>
          </li>
        </ul>
        <t>TBC.</t>
      </section>
      <section anchor="pathrtt">
        <name>Path RTT Measurements</name>
        <t>TBC.</t>
      </section>
    </section>
    <section anchor="packetsched">
      <name>Packet Scheduling</name>
      <t>operation overview:</t>
      <ul spacing="normal">
        <li>
          <t>a QUIC packet may be scheduled for transmission over a given path only if:  </t>
          <ul spacing="normal">
            <li>
              <t>the path state is not "paused" or "closed";</t>
            </li>
            <li>
              <t>the destination connection identifier has not been bound to another path (<xref target="frame_binding"/>);</t>
            </li>
            <li>
              <t>transmission of the packet does not increase the number of bytes-in-flight beyond the congestion window of the path (<xref target="pathcc"/>)</t>
            </li>
          </ul>
        </li>
        <li>
          <t>if more than one path is eligible for transmission of a packet, the algorithm used to select the path is beyond the scope of this document. An implementation may, for example, use the precedence value provided in a MULTIPATH_CHALLENGE, MULTIPATH_RESPONSE or MULTIPATH_STATUS frame.</t>
        </li>
        <li>
          <t>a precedence value is an integer that may be used to differentiate between paths when scheduling the transmission of a QUIC packet:  </t>
          <ul spacing="normal">
            <li>
              <t>in general, a path with a higher precedence value is preferred over a path with a lower precedence value;</t>
            </li>
            <li>
              <t>multiple paths may be assigned the same precedence value;</t>
            </li>
            <li>
              <t>congestion control may override precedence to allow transmission over a less congested path;</t>
            </li>
            <li>
              <t>a precedence value of zero (0) may be used to indicate that the path is in a "standby" mode and should not be selected unless no other path is available.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>TBC.</t>
    </section>
    <section anchor="packetloss">
      <name>Packet Loss Detection and Recovery</name>
      <t>operation overview:</t>
      <ul spacing="normal">
        <li>
          <t>QUIC senders use acknowledgements to detect lost packets and a PTO to ensure acknowledgements are received.</t>
        </li>
        <li>
          <t>loss detection through acknowledgements is the same as described in Section 6.1 of <xref target="RFC9002"/>.</t>
        </li>
        <li>
          <t>loss detection through PTO requires derivation of a PTO period that accommodates the different RTT that may be experienced over different paths (<xref target="pathrtt"/>).</t>
        </li>
      </ul>
      <t>TBC.</t>
    </section>
    <section anchor="frametypes">
      <name>Multipath Frame Types</name>
      <t>TBC.</t>
      <section anchor="frame_challenge">
        <name>MULTIPATH_CHALLENGE</name>
        <artwork><![CDATA[
   MULTIPATH_CHALLENGE Frame {
     Type (i) = Type_mpChallenge,
     PathID (i),
     Initiator precedence (i),
     Data (64),
   }
]]></artwork>
        <t>TBC.</t>
      </section>
      <section anchor="frame_response">
        <name>MULTIPATH_RESPONSE</name>
        <artwork><![CDATA[
   MULTIPATH_RESPONSE Frame {
     Type (i) = Type_mpResponse,
     PathID (i),
     Responder precedence (i),
     Data (64),
   }
]]></artwork>
        <t>TBC.</t>
      </section>
      <section anchor="frame_status">
        <name>MULTIPATH_STATUS</name>
        <artwork><![CDATA[
   MULTIPATH_STATUS Frame {
     Type (i) = Type_mpStatus,
     PathID (i),
     Path Status sequence number (i),
     Path Status (i),
     [Initiator precedence (i)]
    }
]]></artwork>
        <t>TBC.</t>
      </section>
      <section anchor="frame_statusack">
        <name>MULTIPATH_STATUS_ACK</name>
        <artwork><![CDATA[
   MULTIPATH_STATUS_ACK Frame {
     Type (i) = Type_mpStatusAck,
     PathID (i),
     Path Status sequence number (i),
     Path Status (i),
     [Responder precedence (i)]
    }
]]></artwork>
        <t>TBC.</t>
      </section>
      <section anchor="frame_abandon">
        <name>MULTIPATH_ABANDON</name>
        <artwork><![CDATA[
   MULTIPATH_ABANDON Frame {
     Type (i) = Type_mpAbandon,
     PathID (i),
     Reason Code (i)
   }
]]></artwork>
        <t>TBC.</t>
      </section>
      <section anchor="frame_abandonack">
        <name>MULTIPATH_ABANDON_ACK</name>
        <artwork><![CDATA[
   MULTIPATH_ABANDON_ACK Frame {
     Type (i) = Type_mpAbandonAck,
     PathID (i)
   }
]]></artwork>
        <t>TBC.</t>
      </section>
      <section anchor="frame_binding">
        <name>MULTIPATH_BINDING</name>
        <artwork><![CDATA[
   MULTIPATH_BINDING Frame {
     Type (i) = Type_mpBinding,
     PathID (i),
     CID sequence number (i)
    }
]]></artwork>
        <t>TBC.</t>
      </section>
      <section anchor="frame_ecn">
        <name>MULTIPATH_ECN</name>
        <artwork><![CDATA[
   MULTIPATH_ECN Frame {
     Type (i) = Type_mpECN,
     PathID (i),
     ECN counts (..)
   }
]]></artwork>
        <t>TBC.</t>
      </section>
      <section anchor="frame_maxdata">
        <name>MULTIPATH_MAX_DATA</name>
        <artwork><![CDATA[
   MULTIPATH_MAX_DATA Frame {
     Type (i) = Type_mpMaxData,
     PathID (i),
     Maximum data (i)
   }
]]></artwork>
        <t>TBC.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>TBD.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="new-quic-transport-parameters">
        <name>New QUIC transport parameters</name>
        <ul spacing="normal">
          <li>
            <t><tt>enable_multipath</tt></t>
          </li>
          <li>
            <t><tt>max_active_paths</tt></t>
          </li>
        </ul>
        <t>TBC.</t>
      </section>
      <section anchor="new-quic-frame-types">
        <name>New QUIC frame types</name>
        <ul spacing="normal">
          <li>
            <t>Type_mpChallenge</t>
          </li>
          <li>
            <t>Type_mpResponse</t>
          </li>
          <li>
            <t>Type_mpStatus</t>
          </li>
          <li>
            <t>Type_mpStatusAck</t>
          </li>
          <li>
            <t>Type_mpBinding</t>
          </li>
          <li>
            <t>Type_mpAbandon</t>
          </li>
          <li>
            <t>Type_mpAbandonAck</t>
          </li>
          <li>
            <t>Type_mpECN</t>
          </li>
          <li>
            <t>Type_mpMaxData</t>
          </li>
        </ul>
        <t>TBC.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9000">
          <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="RFC9002">
          <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="MPTCP">
          <front>
            <title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author fullname="A. Ford" initials="A." surname="Ford"/>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="O. Bonaventure" initials="O." surname="Bonaventure"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>TCP/IP communication is currently restricted to a single path per connection, yet multiple paths often exist between peers. The simultaneous use of these multiple paths for a TCP/IP session would improve resource usage within the network and, thus, improve user experience through higher throughput and improved resilience to network failure.</t>
              <t>Multipath TCP provides the ability to simultaneously use multiple paths between peers. This document presents a set of extensions to traditional TCP to support multipath operation. The protocol offers the same type of service to applications as TCP (i.e., reliable bytestream), and it provides the components necessary to establish and use multiple TCP flows across potentially disjoint paths. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6824"/>
          <seriesInfo name="DOI" value="10.17487/RFC6824"/>
        </reference>
        <reference anchor="MPQUIC-DRAFT">
          <front>
            <title>Multipath Extension for QUIC</title>
            <author fullname="Yanmei Liu" initials="Y." surname="Liu">
              <organization>Alibaba Inc.</organization>
            </author>
            <author fullname="Yunfei Ma" initials="Y." surname="Ma">
              <organization>Uber Technologies Inc.</organization>
            </author>
            <author fullname="Quentin De Coninck" initials="Q." surname="De Coninck">
              <organization>University of Mons (UMONS)</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>UCLouvain and Tessares</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   This document specifies a multipath extension for the QUIC protocol
   to enable the simultaneous usage of multiple paths for a single
   connection.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the QUIC Working Group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/quic/.

   Source for this draft and an issue tracker can be found at
   https://github.com/mirjak/draft-lmbdhk-quic-multipath.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-06"/>
        </reference>
        <reference anchor="QUIC-PROXY">
          <front>
            <title>QUIC-Aware Proxying Using HTTP</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Eric Rosenberg" initials="E." surname="Rosenberg">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="17" month="August" year="2023"/>
            <abstract>
              <t>   This document defines an extension to UDP Proxying over HTTP that
   adds specific optimizations for proxied QUIC connections.  This
   extension allows a proxy to reuse UDP 4-tuples for multiple
   connections.  It also defines a mode of proxying in which QUIC short
   header packets can be forwarded using an HTTP/3 proxy rather than
   being re-encapsulated and re-encrypted.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-quic-proxy-00"/>
        </reference>
        <reference anchor="LAG" target="https://en.wikipedia.org/wiki/Link_aggregation">
          <front>
            <title>Link aggregation</title>
            <author>
              <organization>Wikipedia</organization>
            </author>
            <date year="2023" month="October" day="18"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 424?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank (manyfolks) for their input and contributions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
9weaGmbrqnQnjSWSp8r+QOn/AE/qFdq9RgAA

-->

</rfc>
