<?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.24 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gage-quic-pathmgmt-03" category="exp" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="QUIC Path Management">QUIC Path Management for Multi-Path Configurations</title>
    <seriesInfo name="Internet-Draft" value="draft-gage-quic-pathmgmt-03"/>
    <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="2025" month="March" day="03"/>
    <area>Internet</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 64?>

<t>This document defines path management procedures for QUIC that operate independently of the connection management procedures defined in RFC9000. The path management procedures enable a multipath configuration between endpoints by allowing QUIC packets associated with any connection identifier to be transported over any of the paths established between the endpoints. As a consequence, the principles and operations of RFC9000 are retained regardless of the path used to a convey QUIC packet.</t>
    </abstract>
  </front>
  <middle>
    <?line 69?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Architecturally, one may consider two models for data transport over multiple paths: model (A) is a collection of uni-path connection constructs while model (B) is a uni-path connection construct operating over a collection of paths.</t>
      <t>Model (A) is like multipath TCP <xref target="MPTCP"/> that uses multiple TCP connections, one for each of the paths. Model (B) is like a single TCP connection operating over a layer 2 link aggregation group <xref target="LAG"/>. In model (B), a TCP segment can be transmitted in an IP datagram over any of the links in the LAG.</t>
      <t>In model (B), path management is distinct from connection management. Conceptually, a connection entity sits on top of a path management entity. A packet transmitted by a connection entity is redirected over one of the available paths by the path management entity. A packet received over any of the available paths is redirected by the path management entity to the connection associated with the packet. The addition, removal and maintenance of paths is handled by the path management entity in a way that is transparent to the connection entities.</t>
      <figure anchor="fig-path-model">
        <name>Model (B)</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="296" viewBox="0 0 296 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
              <path d="M 16,32 L 16,64" fill="none" stroke="black"/>
              <path d="M 16,96 L 16,128" fill="none" stroke="black"/>
              <path d="M 48,128 L 48,160" fill="none" stroke="black"/>
              <path d="M 72,64 L 72,96" fill="none" stroke="black"/>
              <path d="M 80,160 L 80,192" fill="none" stroke="black"/>
              <path d="M 96,160 L 96,192" fill="none" stroke="black"/>
              <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
              <path d="M 136,128 L 136,160" fill="none" stroke="black"/>
              <path d="M 160,32 L 160,64" fill="none" stroke="black"/>
              <path d="M 168,160 L 168,192" fill="none" stroke="black"/>
              <path d="M 216,64 L 216,96" fill="none" stroke="black"/>
              <path d="M 216,160 L 216,192" fill="none" stroke="black"/>
              <path d="M 256,128 L 256,160" fill="none" stroke="black"/>
              <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
              <path d="M 280,96 L 280,128" fill="none" stroke="black"/>
              <path d="M 288,160 L 288,192" fill="none" stroke="black"/>
              <path d="M 16,32 L 136,32" fill="none" stroke="black"/>
              <path d="M 160,32 L 280,32" fill="none" stroke="black"/>
              <path d="M 16,64 L 136,64" fill="none" stroke="black"/>
              <path d="M 160,64 L 280,64" fill="none" stroke="black"/>
              <path d="M 16,96 L 280,96" fill="none" stroke="black"/>
              <path d="M 16,128 L 280,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 80,160" fill="none" stroke="black"/>
              <path d="M 96,160 L 168,160" fill="none" stroke="black"/>
              <path d="M 216,160 L 288,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 80,192" fill="none" stroke="black"/>
              <path d="M 96,192 L 168,192" fill="none" stroke="black"/>
              <path d="M 216,192 L 288,192" fill="none" stroke="black"/>
              <g class="text">
                <text x="68" y="52">Connection</text>
                <text x="120" y="52">X</text>
                <text x="212" y="52">Connection</text>
                <text x="264" y="52">Y</text>
                <text x="100" y="116">PATH</text>
                <text x="164" y="116">MANAGEMENT</text>
                <text x="36" y="180">Path</text>
                <text x="64" y="180">1</text>
                <text x="124" y="180">Path</text>
                <text x="152" y="180">2</text>
                <text x="192" y="180">...</text>
                <text x="244" y="180">Path</text>
                <text x="272" y="180">n</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
 +--------------+  +--------------+
 | Connection X |  | Connection Y |
 +------+-------+  +------+-------+
        |                 |
 +------+-----------------+-------+
 |        PATH MANAGEMENT         |
 +---+----------+--------------+--+
     |          |              |
+----+---+ +----+---+     +----+---+
| Path 1 | | Path 2 | ... | Path n |
+--------+ +--------+     +--------+
]]></artwork>
        </artset>
      </figure>
      <t>This document describes multi-path QUIC procedures using model (B). In particular, 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>
        <t>This document uses the following terminology:</t>
        <dl>
          <dt>path:</dt>
          <dd>
            <t>an association with the 4-tuple of an IP/UDP datagram (source IP address, destination IP address, source UDP port, and destination UDP port). The term "path" is used for consistency with other multipath protocols such as <xref target="MPTCP"/> since, in fact, an endpoint has no knowledge of the path a datagram follows through the network beyond the first hop to a network access point.</t>
          </dd>
          <dt>PathID:</dt>
          <dd>
            <t>path identifier.</t>
          </dd>
          <dt>PMQUIC:</dt>
          <dd>
            <t>path-managed QUIC (as defined in this document).</t>
          </dd>
          <dt>session:</dt>
          <dd>
            <t>a collection of QUIC connections and paths used to exchange QUIC packets between two endpoints.</t>
          </dd>
        </dl>
      </section>
      <section anchor="notation">
        <name>Notation</name>
        <t>This document uses the field notation defined in <xref target="RFC9000"/> and quoted below:</t>
        <blockquote>
          <t>Individual fields use the following notational conventions, with all lengths in bits:</t>
          <t>x (A): Indicates that x is A bits long</t>
          <t>x (i): Indicates that x holds an integer value using the variable length encoding described in <xref section="16" sectionFormat="comma" target="RFC9000"/></t>
          <t>x (A..B): Indicates that x can be any length from A to B; A can be omitted to indicate a minimum of zero bits, and B can be omitted to indicate no set upper limit; values in this format always end on a byte boundary</t>
          <t>x (L) = C: Indicates that x has a fixed value of C; the length of x is described by L, which can use any of the length forms above</t>
          <t>x (L) = C..D: Indicates that x has a value in the range from C to D, inclusive, with the length described by L, as above</t>
          <t>x (L)...: Indicates that x is repeated zero or more times and that each instance has a length of L</t>
        </blockquote>
      </section>
    </section>
    <section anchor="multipathmgmt">
      <name>Multipath Management</name>
      <t>Connection migration to a new path is already supported in <xref target="RFC9000"/>. While <xref target="RFC9000"/> only defines communication over one path at any given time, path-managed QUIC (PMQUIC) provides multiple paths between session endpoints where the paths can be simultaneously active and used to exchange QUIC packets. PMQUIC also provides facilities to explicitly manage the use of paths.</t>
      <t>PMQUIC 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, PMQUIC 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 path management operations.</t>
        </li>
      </ul>
      <t>PMQUIC changes the path management mechanisms specified in <xref section="9" sectionFormat="of" 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, PMQUIC changes 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>path maximum payload size discovery.</t>
        </li>
      </ul>
    </section>
    <section anchor="highlevel">
      <name>High-level Overview</name>
      <t>PMQUIC enables 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 PMQUIC session between endpoints 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 endpoints use a new <tt>max_active_paths</tt> transport parameter during the initial cryptographic handshake to negotiate the use of path management capabilities (<xref target="transport_max_active_paths"/>). The <tt>max_active_paths</tt> transport parameter indicates support for path management operations and limits the maximum number of active paths that can be used between the endpoints.</t>
      <t>To add a new path to an existing PMQUIC session, an endpoint 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 <xref section="8.2" sectionFormat="of" target="RFC9000"/>. New PM_CHALLENGE and PM_CHALLENGE_RESPONSE frames are used to validate the path and to assign an identifier to the path. A new PM_STATUS frame may be used to control use of a path and a new PM_ABANDON frame may be used to abandon a path between endpoints, preventing further use of that path to exchange QUIC packets. In addition, a new PM_ADDRESS frame can be used by an endpoint to advertise an IP address that may be used by the peer endpoint to establish a new path.</t>
      <t>PM_STATUS and PM_ABANDON frames include a path identifier that is assigned to the affected path, allowing the frame to be forwarded over any of the (allowable) paths active at the time of transmission.</t>
      <t>PMQUIC operations do not change the basic operations described in <xref target="RFC9000"/>. In particular, <em>none</em> 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).</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.</t>
    </section>
    <section anchor="pathid">
      <name>Path Identification</name>
      <t>A path is associated with the 4-tuple of an IP/UDP datagram (source IP address, destination IP address, source UDP port, and destination UDP port). However, PMQUIC 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 assigned to a path by an endpoint that unambiguously identifies the path within the session from the perspective of that endpoint. The initial (default) path (i.e. the path used for the exchange of QUIC initial and handshake packets) is implicitly assigned path identifier (PathID) 0 (zero) for the client and PathID 1 (one) for the server. Other than PathID 0 and PathID 1, each endpoint independently selects the path identifier that it wants to assign to a new path and communicates the chosen PathID to its peer in a PM_CHALLENGE/PM_CHALLENGE_RESPONSE transaction.</t>
      <t>An endpoint MUST choose a different PathID for each path in the session -- i.e. a path identifier assigned to one path MUST NOT be reused by the endpoint as the identifier for a different path within the session. For example, a PathID may be a monotonically increasing value, or a randomly generated value, or a sequence of bytes with some internal structure. Since each endpoint independently selects its path identifier, the two endpoints may choose different PathIDs to refer to the same path. A server MAY choose to use the PathID provided by the client in the PM_CHALLENGE frame or the server may choose a different PathID.</t>
      <t>A received path identifier that is invalid MUST be treated as a connection error using transport error code <tt>Error_pmInvalidPathID</tt> (<xref target="connectionerrors"/>).</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="packetsched"/>). 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>
    <section anchor="path-activation-and-removal">
      <name>Path Activation and Removal</name>
      <t>PMQUIC provides mechanisms for adding new paths to a session and for removing unused or unusable paths from a session.</t>
      <section anchor="pathactivation">
        <name>Path Activation</name>
        <t>To initiate communications over a new path, an endpoint MUST send a PM_CHALLENGE frame in the first QUIC packet conveyed over the new path. The PM_CHALLENGE frame contains a new path identifier (PathID) and an unpredictable nonce (<xref target="frame_challenge"/>).</t>
        <t>The PM_CHALLENGE frame is encapsulated (in a QUIC packet) in an IP/UDP datagram where the 4-tuple of the datagram corresponds to the new path. The destination IP address and UDP port may be provided by the peer endpoint (<xref target="pathadvertisement"/>) or may be discovered by a mechanism that is outside the scope of this document.</t>
        <t>To protect against correlation of communications across different IP addresses, it is RECOMMENDED that an endpoint use a new destination connection identifier in the QUIC packet containing the PM_CHALLENGE frame. The new destination connection identifier would have been previously provided by the peer endpoint in a NEW_CONNECTION_ID frame (<xref section="19.15" sectionFormat="comma" target="RFC9000"/>).</t>
        <t>The peer endpoint confirms use of the new path by sending a PM_CHALLENGE_RESPONSE frame (<xref target="frame_response"/>) that echoes the received nonce and provides a local PathID as a reference for the path (<xref target="pathid"/>). Again, it is RECOMMENDED that the peer endpoint use a new destination connection identifier in the QUIC packet containing the PM_CHALLENGE_RESPONSE frame.</t>
        <t>In implementations with decoupling between the path management and connection management entities, the PM_CHALLENGE and PM_CHALLENGE_RESPONSE frames MAY be sent in a QUIC packet using a current connection identifier. An endpoint can disable this behaviour by including a <tt>disable_path_migration</tt> transport parameter in the initial cryptographic handshake (<xref target="transport_disable_path_migration"/>). An endpoint using a zero-length connection identifier MUST NOT include a <tt>disable_path_migration</tt> transport parameter in the initial handshake.</t>
        <t>The peer endpoint may refuse use of the new path by not sending a PM_CHALLENGE_RESPONSE in response to the PM_CHALLENGE or by sending a PM_CHALLENGE_RESPONSE with a path status parameter (<xref target="parameter_pathStatus"/>) set to <tt>Status_NotAvailable</tt>.</t>
        <t>If the initiating endpoint does not receive a confirming PM_CHALLENGE_RESPONSE frame, it may transmit a new PM_CHALLENGE frame using the same (or a different) IP/UDP 4-tuple but MUST use a new PathID and a different nonce.</t>
        <t>To guard against reception of a PM_CHALLENGE frame in an IP/UDP datagram with a spoofed source address, an endpoint receiving a PM_CHALLENGE frame on a new path SHOULD send its own PM_CHALLENGE frame in an IP/UDP datagram that is separate from the IP/UDP datagram used to convey its PM_CHALLENGE_RESPONSE frame.</t>
      </section>
      <section anchor="pathmigration">
        <name>Path Migration</name>
        <t>If an endpoint determines that a non-probing frame is received (in a QUIC packet) in an IP/UDP datagram where the 4-tuple of the datagram corresponds to a new path, this is considered a passive migration event (e.g. due to a NAT rebinding). Similar to <xref section="9.3" sectionFormat="comma" target="RFC9000"/>, the endpoint detecting the new path MUST initiate path validation (<xref target="pathactivation"/>) by sending a PM_CHALLENGE frame to the peer endpoint.</t>
        <t>The endpoint detecting the new path SHOULD send non-probing frames over a different path, if available (<xref target="packetsched"/>), until a subsequent PM_CHALLENGE_RESPONSE frame is received. The endpoint MAY send non-probing frames over the new path if no other path is available.</t>
      </section>
      <section anchor="pathremoval">
        <name>Path Removal</name>
        <t>To terminate communications over an established path, an endpoint sends a PM_ABANDON frame (<xref target="frame_abandon"/>) containing the PathID of the path to be abandoned. A PM_ABANDON frame may be transmitted over any path that is active (and allowable) at the time of transmission. Abandoning a path has no effect on a QUIC connection.</t>
        <t>If the endpoint does not receive an ACK to the QUIC packet containing the PM_ABANDON frame, the PM_ABANDON frame may be retransmitted over the same or a different path.</t>
        <t>The reason for abandoning a path may be one of the following (<xref target="iana_abandon_reason"/>):</t>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Reason_Failing</tt></dt>
              <dd>
                <t>indicating that the path is failing (e.g. the path is experiencing excessive transmission errors);</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_Lost</tt></dt>
              <dd>
                <t>indicating that the path is no longer available to the endpoint;</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_NoAck</tt></dt>
              <dd>
                <t>indicating that the endpoint failed to received ACKs for QUIC packets transmitted over the path;</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_Timeout</tt></dt>
              <dd>
                <t>indicating that a idle timer expired with no QUIC packets transmitted or received over the path;</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_MaxData</tt></dt>
              <dd>
                <t>indicating that the maximum amount of data allowed to be sent on the path has been reached.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_Unspecified</tt></dt>
              <dd>
                <t>indicating that the reason is unknown or is otherwise unspecified.</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="pathmaintain">
      <name>Path Maintenance</name>
      <t>Once a path between endpoints has been validated, PMQUIC provides mechanisms for defining and updating operational parameters related to the path.</t>
      <section anchor="pathstatus">
        <name>Path Transmission Status</name>
        <t>An endpoint may indicate its initial path transmission status in a PM_CHALLENGE frame (<xref target="frame_challenge"/>) or in the corresponding PM_CHALLENGE_RESPONSE frame (<xref target="frame_response"/>). By default, the initial path transmission status is <tt>Status_Available</tt> (<xref target="pathstatusvalue"/>).</t>
        <t>Subsequently, an initiating endpoint may send a PM_STATUS frame (<xref target="frame_status"/>) to inform its peer endpoint of the desired status of a path (<xref target="pathstatusvalue"/>) and, optionally, to indicate the precedence assigned to the path by the initiating endpoint (<xref target="pathprecedence"/>).</t>
        <t>Each PM_STATUS frame includes a status sequence number that is generated by the initiating endpoint; each endpoint maintains it own status sequence number. The status sequence number MUST be a monotonically increasing value and MUST NOT be used more than once within a session.</t>
        <t>If the initiating endpoint does not receive an ACK to the QUIC packet containing the PM_STATUS frame, the PM_STATUS frame may be retransmitted over the same or a different path but MUST include a new status sequence number.</t>
        <t>The receiving endpoint MUST ignore an incoming PM_STATUS frame if it previously received another PM_STATUS frame with a status sequence number equal to or higher than the status sequence number of the incoming frame.</t>
        <t>If the receiving endpoint does not agree with the status change, the receiving endpoint may send a PM_STATUS frame to inform the initiator of its desired status of the path.</t>
        <t>A PM_STATUS frame may be transmitted over any path that is active (and allowable) at the time of transmission.</t>
      </section>
      <section anchor="pathstatusvalue">
        <name>Path Status</name>
        <t>The status of a path may be set to one of the following:</t>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Status_Available</tt></dt>
              <dd>
                <t>indicates that the path may used for transmission of a QUIC packet.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Status_Backup</tt></dt>
              <dd>
                <t>indicates that the path should not be used for transmission of a QUIC packet if another path exists in a <tt>Status_Available</tt> state. This path should only be used if no other path exists in a <tt>Status_Available state</tt>.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Status_Blocked</tt></dt>
              <dd>
                <t>indicates that the initiating endpoint has reached the maximum transmitted data limit imposed by a previously received <tt>Parameter_pathMaxData</tt> path parameter (<xref target="parameter_pathMaxData"/>). The receiving endpoint may increase the maximum data limit (and change the status of the path) using a subsequent PATH_STATUS frame (<xref target="frame_status"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Status_NotAvailable</tt></dt>
              <dd>
                <t>indicates that the path should not be used for transmission of a QUIC packet. Unlike an abandoned path (<xref target="pathremoval"/>), a path with <tt>Status_NotAvailable</tt> may be moved to <tt>Status_Available</tt> or <tt>Status_Backup</tt> when and if allowed by operational considerations.</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
      <section anchor="pathprecedence">
        <name>Path Precedence</name>
        <t>A path precedence is a variable-length integer value that may be used to distinguish 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>
        </ul>
        <t>Each endpoint independently determines the precedence of a path and communicates that precedence to its peer (<xref target="parameter_pathPrecedence"/>). The use of the local and peer path precedence values by an endpoint is beyond the scope of this document.</t>
      </section>
      <section anchor="pathcc">
        <name>Path Congestion Control</name>
        <t>Congestion control is applied per path, as described in <xref section="7" sectionFormat="comma" target="RFC9002"/>. QUIC packets sent on one path do not affect the congestion state of another path.</t>
        <t>An endpoint may include a <tt>Parameter_pathInitialCWND</tt> (<xref target="parameter_pathInitialCWND"/>) in the list of path parameters in a PM_CHALLENGE or PM_CHALLENGE_RESPONSE frame to provide an initial estimate of the congestion window for the path.</t>
        <t>If a <tt>Parameter_pathInitialCWND</tt> is included in a PM_CHALLENGE_RESPONSE frame, this value must be less than the value (if any) included in the corresponding PM_CHALLENGE frame and takes precedence over the value (if any) included in the PM_CHALLENGE frame.</t>
        <t>The mechanism used by an endpoint to determine the congestion window for a path is beyond the scope of this document.</t>
      </section>
      <section anchor="pathrtt">
        <name>Path RTT Measurements</name>
        <t>Round-Trip Time measurements are performed per path, as described in <xref section="5" sectionFormat="comma" target="RFC9002"/>. In general, different paths may exhibit different RTTs.</t>
        <t>An endpoint may include a <tt>Parameter_pathInitialRTT</tt> (<xref target="parameter_pathInitialRTT"/>) in the list of path parameters in a PM_CHALLENGE or PM_CHALLENGE_RESPONSE frame to provide an initial estimate of the path RTT.</t>
        <t>If a <tt>Parameter_pathInitialRTT</tt> is included in a PM_CHALLENGE_RESPONSE frame, this value must be greater than the value (if any) included in the corresponding PM_CHALLENGE frame and takes precedence over the value (if any) included in the PM_CHALLENGE frame.</t>
        <t>The mechanism used by an endpoint to determine an initial estimate of the path RTT is beyond the scope of this document.</t>
      </section>
      <section anchor="pathmptu">
        <name>Path Maximum UDP Payload Size</name>
        <t>By default, the maximum UDP payload size for a path is the <tt>max_udp_payload_size</tt> transport parameter defined in <xref section="18.2" sectionFormat="comma" target="RFC9000"/>.</t>
        <t>The maximum UDP payload size for a path can be adjusted by including a <tt>Parameter_pathPayloadSize</tt> (<xref target="parameter_pathPayloadSize"/>) in the list of path parameters in a PM_CHALLENGE frame (<xref target="frame_challenge"/>) or in a PM_CHALLENGE_RESPONSE frame (<xref target="frame_response"/>).</t>
        <t>If a <tt>Parameter_pathPayloadSize</tt> is included in a PM_CHALLENGE frame, this value takes precedence over the <tt>max_udp_payload_size</tt> transport parameter.</t>
        <t>If a <tt>Parameter_pathPayloadSize</tt> is included in a PM_CHALLENGE_RESPONSE frame, this value must be less than the value included in (or defaulted by) the PM_CHALLENGE frame and takes precedence over the value included in (or defaulted by) the PM_CHALLENGE frame.</t>
        <t>The mechanism used by an endpoint to determine maximum UDP payload size for a path is beyond the scope of this document. For example, the value may be determined by pre-configuration, by using a Path MTU Discovery (PMTUD) mechanism, or as a property of the endpoint.</t>
      </section>
    </section>
    <section anchor="pathadvertisement">
      <name>Address Advertisement</name>
      <t>In <xref target="RFC9000"/>, discovery of the IP address used by a peer endpoint is deemed to be beyond the scope of QUIC. PMQUIC, however, provides a mechanism whereby an endpoint can advertise available IP addresses to its peer.</t>
      <t>An IP address advertisement can be sent by either a client or a server, allowing establishment of a new path to be initiated by the receiving server or client. For example:</t>
      <ul spacing="normal">
        <li>
          <t>an IP address advertisement may be used by a multi-homed server to direct client traffic through an alternate IP subnet for load balancing;</t>
        </li>
        <li>
          <t>an IP address advertisement may be used by a multi-homed client for improved resiliency;</t>
        </li>
        <li>
          <t>an IP address advertisement may be used by a dual-stack endpoint to enable a new path using a different IP address family;</t>
        </li>
        <li>
          <t>an IP address advertisement may be used by a receiving endpoint in its route selection process.</t>
        </li>
      </ul>
      <t>An IP address advertisement is conveyed in a PM_ADDRESS frame (<xref target="frame_address"/>). Each PM_ADDRESS frame includes a status sequence number that is generated by the initiating endpoint; the same status sequence number space is used by both PM_ADDRESS and PM_STATUS frames (<xref target="pathstatus"/>).</t>
      <t>A PM_ADDRESS frame also includes a path status (<xref target="pathstatusvalue"/>) indicating the <em>intended</em> status of a path using the advertised address; the intended path status may be superseded by the path status in a subsequent PM_CHALLENGE or PM_CHALLENGE_RESPONSE frame during activation of the resulting path. The intended path status MUST be one of the following:</t>
      <ul spacing="normal">
        <li>
          <dl>
            <dt><tt>Status_Available</tt></dt>
            <dd>
              <t>indicating that the resulting path may be used for transmission of a QUIC packet;</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Status_Backup</tt></dt>
            <dd>
              <t>indicating that the resulting path should be used as a backup path (<xref target="packetsched"/>);</t>
            </dd>
          </dl>
        </li>
      </ul>
      <t>If a previously advertised address is no longer available, the initiating endpoint may revoke the advertised address by sending a PM_ADDRESS frame with the path status set to <tt>Status_NotAvailable</tt>. If a path has been established using the advertised address, the path MUST be abandoned (<xref target="pathremoval"/>) before sending an address advertisement with this status.</t>
      <t>A PM_ADDRESS frame may be transmitted over any path that is active (and allowable) at the time of transmission. If the initiating endpoint does not receive an ACK to the QUIC packet containing the PM_ADDRESS frame, the PM_ADDRESS frame may be retransmitted over the same or a different path but MUST include a new status sequence number.</t>
      <t>An endpoint receiving a PM_ADDRESS frame MAY use the advertised IP address and UDP port to initiate communications over a new path by following the path activation procedures described in <xref target="pathactivation"/>. However an endpoint receiving a PM_ADDRESS frame is not required to make use of the advertised information.</t>
    </section>
    <section anchor="packetsched">
      <name>Packet Scheduling</name>
      <t>A QUIC packet may be scheduled for transmission over a given path only if:</t>
      <ul spacing="normal">
        <li>
          <t>the path status is either <tt>Status_Available</tt> or <tt>Status_Backup</tt> (<xref target="pathstatusvalue"/>);</t>
        </li>
        <li>
          <t>there is no outstanding PM_ABANDON frame that is pending acknowledgement;</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>
        <li>
          <t>transmission of the packet does not cause the path maximum data limit to be exceeded (<xref target="parameter_pathMaxData"/>).</t>
        </li>
      </ul>
      <t>An endpoint SHOULD schedule a transmission over a path with <tt>Status_Available</tt>. If this is not possible, the endpoint MAY attempt a transmission over a path with <tt>Status_Backup</tt>.</t>
      <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 PM_CHALLENGE, PM_CHALLENGE_RESPONSE or PM_STATUS frame (<xref target="pathprecedence"/>).</t>
      <t>Precedence should only used to distinguish between paths with the same status -- i.e. between paths with <tt>Status_Available</tt> or between paths with <tt>Status_Backup</tt>.</t>
    </section>
    <section anchor="packetloss">
      <name>Packet Loss Detection and Recovery</name>
      <t>QUIC senders use acknowledgements to detect lost packets and a probe timeout (PTO) to ensure acknowledgements are received. Loss detection through acknowledgements is performed as described in <xref section="6.1" sectionFormat="comma" target="RFC9002"/>.</t>
      <t>Timer-based loss detection (<xref section="6.1.2" sectionFormat="comma" target="RFC9002"/>) must recognise that different paths may exhibit different RTTs (<xref target="pathrtt"/>) and SHOULD adjust the packet loss time threshold to accommodate those differences. Probe timeout (<xref section="6.2" sectionFormat="comma" target="RFC9002"/>) requires derivation of a PTO period that should also accommodate the different RTT that may be experienced over different paths.</t>
      <t>The mechanism used to accommodate those differences in path RTT is beyond the scope of this document.</t>
    </section>
    <section anchor="connectionerrors">
      <name>Path Management Connection Errors</name>
      <t>This document extends the QUIC Transport Error Codes of <xref section="22.5" sectionFormat="comma" target="RFC9000"/> with the following values (<xref target="iana_error_codes"/>):</t>
      <ul spacing="normal">
        <li>
          <dl>
            <dt><tt>Error_pmExceededMaxData</tt></dt>
            <dd>
              <t>indicates that the endpoint received more data than allowed over a path (<xref target="parameter_pathMaxData"/>).</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Error_pmInvalidPathID</tt></dt>
            <dd>
              <t>indicates the endpoint received an invalid path identifier (<xref target="pathid"/>) -- e.g. a duplicated path identifier, an unknown path identifier, or the identifier of an abandoned path.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Error_pmPathParameter</tt></dt>
            <dd>
              <t>indicates that a received path parameter (<xref target="path_parameters"/>) was invalid -- e.g.
was badly formatted, included an invalid type, included an invalid value, omitted a mandatory path parameter, included a forbidden path parameter, included a duplicated path parameter, or was otherwise in error.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Error_pmProtocolViolation</tt></dt>
            <dd>
              <t>indicates an error with protocol compliance that is not covered by a more specific error code -- e.g. an endpoint received a path management frame when path management is not enabled.</t>
            </dd>
          </dl>
        </li>
      </ul>
      <t>Path management connection errors MUST be processed according to <xref section="11.1" sectionFormat="comma" target="RFC9000"/>.</t>
    </section>
    <section anchor="frametypes">
      <name>Path Management Frame Types</name>
      <t>PMQUIC procedures utilise five new QUIC frame types -- PM_CHALLENGE, PM_CHALLENGE_RESPONSE, PM_STATUS, PM_ABANDON and PM_ADDRESS:</t>
      <ul spacing="normal">
        <li>
          <t>all five path management frame types are ack-eliciting;</t>
        </li>
        <li>
          <t>PM_CHALLENGE and PM_CHALLENGE_RESPONSE frames are "probing frames";</t>
        </li>
        <li>
          <t>PM_STATUS, PM_ABANDON and PM_ADDRESS are "non-probing frames";</t>
        </li>
        <li>
          <t>path management frame types MUST be conveyed in 1-RTT packets and MUST NOT be conveyed in 0-RTT packets.</t>
        </li>
      </ul>
      <section anchor="frame_challenge">
        <name>PM_CHALLENGE frame</name>
        <t>When an endpoint wants to enable use of a new path, it initiates path validation by sending a PM_CHALLENGE frame over the new path. This is analogous to the use of a PATH_CHALLENGE frame in <xref target="RFC9000"/>.</t>
        <t>A PM_CHALLENGE frame (<xref target="fig-pm_challenge_frame"/>) includes the following fields:</t>
        <figure anchor="fig-pm_challenge_frame">
          <name>PM_CHALLENGE Frame Fields</name>
          <artwork><![CDATA[
   PM_CHALLENGE Frame {
     Type (i) = Type_pmChallenge,
     Initiator_PathID (i),
     Nonce (64),
     Path_Parameter (8..) ...,
   }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_pmChallenge</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Initiator_PathID</tt></dt>
              <dd>
                <t>is the PathID assigned to the path by the endpoint sending the PM_CHALLENGE frame (<xref target="pathid"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Nonce</tt></dt>
              <dd>
                <t>is an unpredictable nonce generated by the endpoint for use in this instance of a PM_CHALLENGE frame (<xref target="pathactivation"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Parameter</tt></dt>
              <dd>
                <t>is a list of path parameters (<xref target="path_parameters"/>). A path parameter may be a path configuration group parameter (<xref target="parameter_group_config"/>) or a path operations group parameter (<xref target="parameter_group_ops"/>), or the list may be an empty list (<xref target="parameter_empty"/>). Path parameters not included in the PM_CHALLENGE frame assume their default values.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>The QUIC packet containing the PM_CHALLENGE frame MUST include PADDING frames to the maximum UDP payload size as defined by <tt>Parameter_pathPayloadSize</tt> (<xref target="parameter_pathPayloadSize"/>), if included in the path parameters, or by the default value if not included in the path parameters.</t>
      </section>
      <section anchor="frame_response">
        <name>PM_CHALLENGE_RESPONSE frame</name>
        <t>When an endpoint wants to acknowledge use of a new path, it confirms path validation by sending a PM_CHALLENGE_RESPONSE frame over the new path. This is analogous to the use of a PATH_RESPONSE frame in <xref target="RFC9000"/>.</t>
        <t>A PM_CHALLENGE_RESPONSE frame (<xref target="fig-pm_challenge_response_frame"/>) includes the following fields:</t>
        <figure anchor="fig-pm_challenge_response_frame">
          <name>PM_CHALLENGE_RESPONSE Frame Fields</name>
          <artwork><![CDATA[
   PM_CHALLENGE_RESPONSE Frame {
     Type (i) = Type_pmChallengeResponse,
     Initiator_PathID (i),
     Responder_PathID (i),
     Nonce (64),
     Path_Parameter (8..) ...,
   }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_pmChallengeResponse</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Initiator_PathID</tt></dt>
              <dd>
                <t>is the PathID included in the corresponding PM_CHALLENGE frame (<xref target="frame_challenge"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Responder_PathID</tt></dt>
              <dd>
                <t>is the PathID assigned to the path by the endpoint sending the PM_CHALLENGE_RESPONSE frame (<xref target="pathid"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Nonce</tt></dt>
              <dd>
                <t>is the nonce included in the corresponding PM_CHALLENGE frame (<xref target="frame_challenge"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Parameter</tt></dt>
              <dd>
                <t>is a list of path parameters (<xref target="path_parameters"/>). A path parameter may be a path configuration group parameter (<xref target="parameter_group_config"/>) or a path operations group parameter (<xref target="parameter_group_ops"/>), or the list may be an empty list (<xref target="parameter_empty"/>). Path parameters not included in the PM_CHALLENGE_RESPONSE frame assume the (default) values indicated by the corresponding PM_CHALLENGE frame.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>The QUIC packet containing the PM_CHALLENGE_RESPONSE frame MUST include PADDING frames to the maximum UDP payload size as defined by <tt>Parameter_pathPayloadSize</tt> (<xref target="parameter_pathPayloadSize"/>), if specified, or by the default value, if not specified.</t>
      </section>
      <section anchor="frame_status">
        <name>PM_STATUS frame</name>
        <t>An endpoint uses a PM_STATUS frame to signal a change in a path parameter.</t>
        <t>A PM_STATUS frame (<xref target="fig-pm_status_frame"/>) includes the following fields:</t>
        <figure anchor="fig-pm_status_frame">
          <name>PM_STATUS Frame Fields</name>
          <artwork><![CDATA[
   PM_STATUS Frame {
     Type (i) = Type_pmStatus,
     Receiver_PathID (i),
     Path_Status_Sequence_Number (i),
     Path_Parameter (8..) ...,
    }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_pmStatus</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Receiver_PathID</tt></dt>
              <dd>
                <t>is the PathID assigned to the path by the peer endpoint receiving the PM_STATUS frame.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Status_Sequence_Number</tt></dt>
              <dd>
                <t>is the sending endpoint's sequence number for this PM_STATUS frame (<xref target="pathstatus"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Parameter</tt></dt>
              <dd>
                <t>is a list of path parameters (<xref target="path_parameters"/>). A path parameter MUST be a path operations group parameter (<xref target="parameter_group_ops"/>) (i.e. a path parameter MUST NOT be a path configuration group parameter or an empty list parameter).</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>Note that the status of the path defaults to <tt>Status_Available</tt> unless explicitly defined by including a <tt>Parameter_pathStatus</tt> (<xref target="parameter_pathStatus"/>) in the list of path parameters.</t>
      </section>
      <section anchor="frame_abandon">
        <name>PM_ABANDON frame</name>
        <t>An endpoint uses a PM_ABANDON frame to to indicate that it will no longer use the indicated path.</t>
        <t>A PM_ABANDON frame (<xref target="fig-pm_abandon_frame"/>) includes the following fields:</t>
        <figure anchor="fig-pm_abandon_frame">
          <name>PM_ABANDON Frame Fields</name>
          <artwork><![CDATA[
   PM_ABANDON Frame {
     Type (i) = Type_pmAbandon,
     Receiver_PathID (i),
     Reason_Code (i)
   }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_pmAbandon</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Receiver_PathID</tt></dt>
              <dd>
                <t>is the PathID assigned to the path by the peer endpoint receiving the PM_ABANDON frame.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_Code</tt></dt>
              <dd>
                <t>is the reason that the path is being abandoned (<xref target="pathremoval"/>).</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
      <section anchor="frame_address">
        <name>PM_ADDRESS frame</name>
        <t>An endpoint uses a PM_ADDRESS frame to advertise an IP address and UDP port that may be used to establish a new path to the initiating endpoint.</t>
        <t>A PM_ADDRESS frame (<xref target="fig-pm_address_frame"/>) includes the following fields:</t>
        <figure anchor="fig-pm_address_frame">
          <name>PM_ADDRESS Frame Fields</name>
          <artwork><![CDATA[
   PM_ADDRESS Frame {
     Type (i) = Type_pmAddress,
     Path_Status_Sequence_Number (i),
     Path_Status (i),
     Port_Number (i)
     Path_Address_Family (i),
     Path_Address (32,128),
    }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_pmAddress</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Status_Sequence_Number</tt></dt>
              <dd>
                <t>is the sending endpoint's path status sequence number for this PM_ADDRESS frame (<xref target="pathstatus"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Status</tt></dt>
              <dd>
                <t>is the intended status of a path associated with the IP address (<xref target="pathadvertisement"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Port_Number</tt></dt>
              <dd>
                <t>is a non-zero UDP port number.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Address_Family</tt></dt>
              <dd>
                <t>indicates the type of IP address, identified by a socket address family value -- i.e. AF_INET (2) for IPv4 or AF_INET6 (10) for IPv6.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Address</tt></dt>
              <dd>
                <t>is the binary 4- or 16-byte value of the advertised IP address, in network (big-endian) byte-order.</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="path_parameters">
      <name>Path Parameters</name>
      <t>Each path parameter in a list of path parameters includes the following fields (<xref target="fig-path-parameter"/>):</t>
      <figure anchor="fig-path-parameter">
        <name>Path Parameter Encoding</name>
        <artwork><![CDATA[
Path_Parameter {
  End_of_List (1),
  Path_Parameter_ID (7),
  Path_Parameter_Value (i),
}
]]></artwork>
      </figure>
      <ul spacing="normal">
        <li>
          <dl>
            <dt><tt>End_of_List</tt></dt>
            <dd>
              <t>is a boolean value identifying the last parameter in a list of path parameters. A value of 0 (zero) indicates this is the last parameter; a value of 1 (one) indicates that there is at least one more parameter in the list of path parameters.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Path_Parameter_ID</tt></dt>
            <dd>
              <t>uniquely identifies the path parameter (<xref target="iana_path_parameters"/>).</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Path_Parameter_Value</tt></dt>
            <dd>
              <t>is a variable-length integer value assigned to the path parameter.</t>
            </dd>
          </dl>
        </li>
      </ul>
      <t>A path parameter, or a list of path parameters, that is malformed or invalid MUST be treated as a connection error using transport error code <tt>Error_pmPathParameter</tt> (<xref target="connectionerrors"/>).</t>
      <section anchor="parameter_groups">
        <name>Path Parameter Groups</name>
        <t>Path parameters are organised into three groups -- a path configuration group, a path operations group, and an empty list group:</t>
        <ul spacing="normal">
          <li>
            <t>the path configuration group (<xref target="parameter_group_config"/>) consists of parameters used to configure a new path;</t>
          </li>
          <li>
            <t>the path operations group (<xref target="parameter_group_ops"/>) consists of parameters used to modify the operational state of a path;</t>
          </li>
          <li>
            <t>the empty list group (<xref target="parameter_empty"/>) consists of a special parameter used to indicate that there are no path parameters in a parameter list.</t>
          </li>
        </ul>
        <t>The group associated with a path parameter is determined by by the value of the <tt>Path_Parameter_ID</tt> (<xref target="iana_path_parameters"/>).</t>
      </section>
      <section anchor="parameter_group_config">
        <name>Path Configuration Group Parameters</name>
        <t>A path configuration group parameter MAY be included in the path parameter list of a PM_CHALLENGE or PM_CHALLENGE_RESPONSE frame but MUST NOT be included in the path parameter list of a PM_STATUS frame.</t>
        <section anchor="parameter_pathPayloadSize">
          <name>Parameter_pathPayloadSize</name>
          <t>The path payload size parameter is a variable-length integer value that limits the size of UDP payloads that an endpoint believes can be transmitted over the path and/or the endpoint is willing to receive over the path (<xref target="pathmptu"/>), expressed as a number of octets. UDP datagrams with payloads larger than this limit are not likely to be received and/or processed by the endpoint.</t>
          <t>The default value for this parameter is the <tt>max_udp_payload_size</tt> transport parameter defined in <xref section="18.2" sectionFormat="comma" target="RFC9000"/>.</t>
        </section>
        <section anchor="parameter_pathInitialRTT">
          <name>Parameter_pathInitialRTT</name>
          <t>The path initial RTT parameter is a variable-length integer value that is an estimate of the initial RTT for the path, expressed as a number of milliseconds. This value MAY be used as the initial RTT estimate for path congestion control (<xref section="5" sectionFormat="comma" target="RFC9002"/>).</t>
          <t>The default value for this parameter is the <tt>kInitialRtt</tt> value defined in <xref section="A.2" sectionFormat="comma" target="RFC9002"/>.</t>
        </section>
        <section anchor="parameter_pathInitialCWND">
          <name>Parameter_pathInitialCWND</name>
          <t>The path initial congestion window parameter is a variable-length integer value that is an estimate of the initial congestion window for the path. This value MAY be used by congestion control as the basis for fast start however, as noted in <xref section="9.4" sectionFormat="comma" target="RFC9000"/>, "implementations are advised to be cautious when using saved CC parameters on a new path". Further guidance is provided in <xref target="RESUME"/>.</t>
          <t>There is no default value for this parameter.</t>
        </section>
      </section>
      <section anchor="parameter_group_ops">
        <name>Path Operations Group Parameters</name>
        <t>A path operations group parameter MAY be included in the path parameter list of a PM_CHALLENGE, PM_CHALLENGE_RESPONSE or PM_STATUS frame.</t>
        <section anchor="parameter_pathMaxData">
          <name>Parameter_pathMaxData</name>
          <t>The path maximum data parameter is a variable-length integer value that indicates the maximum amount of data that can be sent on the path by the peer endpoint, expressed as a number of octets. The mechanism used by an endpoint to determine this value is beyond the scope of this document.</t>
          <t>The maximum data limit applies only in a single direction -- i.e. from the peer endpoint towards the endpoint defining the path maximum data value. Each endpoint may specify a limit, corresponding to a different direction; the specified limits do not need to be the same.</t>
          <t>The maximum data limit applies only to the indicated path. A session that migrates to a different path cannot assume that the maximum data limit from an existing path applies to the new path.</t>
          <t>By default, the maximum amount of data that can be sent on the path is not limited.</t>
          <t>If included in a PM_STATUS frame (<xref target="frame_status"/>), a maximum data value that is less the previous maximum data value associated with the path MUST be treated as as an invalid path parameter.</t>
          <t>Receiving an ack-eliciting packet that exceeds the maximum data value previously authorised for a path MUST be treated as a connection error using transport error code <tt>Error_pmExceededMaxData</tt> (<xref target="connectionerrors"/>).</t>
        </section>
        <section anchor="parameter_pathPrecedence">
          <name>Parameter_pathPrecedence</name>
          <t>The path precedence parameter is a variable-length integer value that indicates the precedence of the path to be used in path selection algorithms (<xref target="pathprecedence"/>).</t>
          <t>There is no default value for this parameter. It is RECOMMENDED that precedence values be limited to the range 0..100.</t>
        </section>
        <section anchor="parameter_pathStatus">
          <name>Parameter_pathStatus</name>
          <t>The path status parameter is a variable-length integer value that indicates the current status of the path (<xref target="pathstatus"/>).</t>
          <t>The default value for this parameter is <tt>Status_Available</tt>.</t>
        </section>
      </section>
      <section anchor="parameter_empty">
        <name>Parameter_empty</name>
        <t>The empty list parameter indicates that there are no entries in the list of path parameters. If specified, the empty list parameter MUST be the only entry in the list of path parameters. The empty list parameter MUST NOT be included if there are other path parameters in a list of path parameters.</t>
        <t>The empty list parameter MUST include a <tt>Path_Parameter_ID</tt> field but MUST NOT include a <tt>Path_Parameter_Value</tt> field. The <tt>End_of_List</tt> field MUST be set to 0 (zero).</t>
        <t>An empty list parameter MAY be used in the path parameter list of a PM_CHALLENGE or PM_CHALLENGE_RESPONSE frame but MUST NOT be used in the path parameter list of a PM_STATUS frame.</t>
      </section>
      <section anchor="parameter_examples">
        <name>Path Parameter List Examples</name>
        <t>Empty list:</t>
        <artwork><![CDATA[
    0x0
]]></artwork>
        <t>Single-entry list:</t>
        <artwork><![CDATA[
    0x03
    0x04
]]></artwork>
        <t>Multiple-entry list:</t>
        <artwork><![CDATA[
    0x83
    0x04
    0x02
    0x10
]]></artwork>
      </section>
    </section>
    <section anchor="transport_parameters">
      <name>Transport Parameters</name>
      <t>PMQUIC defines two new transport parameters that may be encoded in the initial cryptographic handshake (<xref section="7.4" sectionFormat="comma" target="RFC9000"/>) -- <tt>max_active_paths</tt> and <tt>disable_path_migration</tt>. Endpoints MUST NOT remember the value of the PMQUIC transport parameters they received for use in a subsequent connection (<xref section="7.4.1" sectionFormat="comma" target="RFC9000"/>).</t>
      <section anchor="transport_max_active_paths">
        <name>max_active_paths</name>
        <t>An endpoint signals support for PMQUIC procedures by including a <tt>max_active_paths</tt> transport parameter in the initial handshake.</t>
        <t><tt>max_active_paths</tt> (<xref target="iana_transport_parameters"/>) is an integer value indicating the maximum number of active paths supported by the initiating endpoint. To enable PMQUIC, an endpoint MUST set the maximum number of active paths to a value greater that 1 (one). The maximum number of active paths allowed in the session is the minimum of the exchanged <tt>max_active_paths</tt> values.</t>
        <t>If a <tt>max_active_paths</tt> transport parameter value is received that is higher than 255 or less than 2, the receiving endpoint MUST close the connection with an error of type TRANSPORT_PARAMETER_ERROR.</t>
        <t>To enable use of PMQUIC procedures, both endpoints in a session MUST include a valid <tt>max_active_paths</tt> transport parameter in the initial handshake. If either of the endpoints does not include the <tt>max_active_paths</tt> transport parameter, then the endpoints MUST NOT use any of the PMQUIC procedures or frames defined in this document.</t>
      </section>
      <section anchor="transport_disable_path_migration">
        <name>disable_path_migration</name>
        <t>An endpoint can prevent use of a connection identifier on more than one path by including a <tt>disable_path_migration</tt> transport parameter in the initial handshake.</t>
        <t><tt>disable_path_migration</tt> (<xref target="iana_transport_parameters"/>) is a zero-length value where presence of the transport parameter indicates migration is disabled.</t>
        <t>If migration is disabled, a peer connection identifier is bound to a single path -- i.e. the peer connection identifier may be used as the destination connection identifier in a QUIC packet for transmission over only one path. The bound path is determined by the the first appearance of the peer connection identifier as the destination connection identifier in a QUIC packet.</t>
        <t>If migration is not disabled (i.e. the <tt>disable_path_migration</tt> transport parameter is not included in the initial handshake), a peer connection identifier may be used as the destination connection identifier in a QUIC packet used for transmission over any available path -- i.e. the connection identifier may appear as the destination connection identifier in different QUIC packets on different paths.</t>
        <t>Migration is disabled if at least one of the endpoints includes a <tt>disable_path_migration</tt> transport parameter in the initial cryptographic handshake.</t>
        <t>Receiving a <tt>disable_path_migration</tt> transport parameter without also receiving a <tt>max_active_paths</tt> transport parameter MUST be treated as a connection error using transport error code <tt>Error_pmProtocolViolation</tt> (<xref target="connectionerrors"/>).</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>PMQUIC does not change the operating principles of <xref target="RFC9000"/> and, as such,
is subject to the same security considerations as <xref section="21" sectionFormat="comma" target="RFC9000"/>.</t>
      <t>Specific security considerations, associated with the use of path management procedures, include:</t>
      <ul spacing="normal">
        <li>
          <dl>
            <dt>resource usage:</dt>
            <dd>
              <t>Due to the simultaneous use of multiple paths between session endpoints, PMQUIC may require additional resources in a client and/or in a server. Resource usage associated with paths can be limited by each endpoint through the <tt>max_active_paths</tt> transport parameter (<xref target="transport_parameters"/>).</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt>data amplification:</dt>
            <dd>
              <t>The simultaneous use of multiple paths between session endpoints potentially allows for a higher rate of data exchange than might be possible with only a single path between session endpoints. Since PMQUIC uses a path validation mechanism similar to <xref target="RFC9000"/>, the anti-amplification limits of <xref section="8.2" sectionFormat="comma" target="RFC9000"/> are also applicable to PMQUIC.
</t>
              <t>Further, an endpoint can limit the maximum amount of data that can be sent on a particular path through the PMQUIC <tt>Parameter_pathMaxData</tt> path parameter (<xref target="parameter_pathMaxData"/>). This value may be initially set in a PM_CHALLENGE or PM_CHALLENGE_RESPONSE frame and may be subsequently adjusted in a PM_STATUS frame.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt>address spoofing:</dt>
            <dd>
              <t>PMQUIC uses a path validation mechanism (<xref target="pathactivation"/>) similar to <xref target="RFC9000"/> to prevent address spoofing over a new path by a malicious intermediate node.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt>correlation of activity across multiple paths:</dt>
            <dd>
              <t>Due to the possible decoupling of connection management and path management, PMQUIC recommends but does not mandate that different connection identifiers be used on different paths (<xref target="pathactivation"/>). As discussed in <xref section="9.5" sectionFormat="comma" target="RFC9000"/>, using the same connection identifier on multiple paths would allow a passive observer to correlate activity between those paths. An endpoint can prevent use of a connection identifier on more than one path by including a <tt>disable_path_migration</tt> transport parameter in the initial cryptographic handshake (<xref target="transport_disable_path_migration"/>).</t>
            </dd>
          </dl>
        </li>
      </ul>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>If approved, the following <em>provisional</em> entries will be added to the IANA QUIC Protocol Registry <xref target="IANA"/>.</t>
      <aside>
        <t>The values in this section of the Internet Draft are preliminary, for testing purposes only.</t>
      </aside>
      <section anchor="iana_transport_parameters">
        <name>New QUIC transport parameters</name>
        <t>This document defines two new (preliminary) QUIC transport parameters (<xref target="transport_parameters"/>):</t>
        <ul spacing="normal">
          <li>
            <t><tt>max_active_paths</tt> (0x21c7948988209ada)</t>
          </li>
          <li>
            <t><tt>disable_path_migration</tt> (0x33186fc5d0c7cac3)</t>
          </li>
        </ul>
      </section>
      <section anchor="iana_frame_types">
        <name>New QUIC frame types</name>
        <t>This document defines five new (preliminary) QUIC frame types:</t>
        <ul spacing="normal">
          <li>
            <t>Type_pmChallenge (0x1ae4ea418795ad60) -- <xref target="frame_challenge"/></t>
          </li>
          <li>
            <t>Type_pmChallengeResponse (0x12c5938576430d3f) -- <xref target="frame_response"/></t>
          </li>
          <li>
            <t>Type_pmStatus (0x06614d6b80a40a24) -- <xref target="frame_status"/></t>
          </li>
          <li>
            <t>Type_pmAbandon (0x2dde9db26610d041) -- <xref target="frame_abandon"/></t>
          </li>
          <li>
            <t>Type_pmAddress (0x198a357e6fe41403) -- <xref target="frame_address"/></t>
          </li>
        </ul>
      </section>
      <section anchor="iana_path_parameters">
        <name>PMQUIC path parameters</name>
        <t>This document defines seven PMQUIC path parameters:</t>
        <ul spacing="normal">
          <li>
            <t>Parameter_empty (0x00) -- <xref target="parameter_empty"/></t>
          </li>
          <li>
            <t>Parameter_pathMaxData (0x01) -- <xref target="parameter_pathMaxData"/></t>
          </li>
          <li>
            <t>Parameter_pathPrecedence (0x02) -- <xref target="parameter_pathPrecedence"/></t>
          </li>
          <li>
            <t>Parameter_pathStatus (0x03) -- <xref target="parameter_pathStatus"/></t>
          </li>
          <li>
            <t>Parameter_pathPayloadSize (0x40) -- <xref target="parameter_pathPayloadSize"/></t>
          </li>
          <li>
            <t>Parameter_pathInitialRTT (0x41) -- <xref target="parameter_pathInitialRTT"/></t>
          </li>
          <li>
            <t>Parameter_pathInitialCWND (0x42) -- <xref target="parameter_pathInitialCWND"/></t>
          </li>
        </ul>
        <t>By convention, the identifier for a path operations group parameter is in the range 0x01..0x3f and the identifier for a path configuration group parameter is in the range 0x40..0x7e. The identifier value 0x7f is reserved.</t>
      </section>
      <section anchor="iana_path_status">
        <name>PMQUIC path status</name>
        <t>This document defines four PMQUIC path status values:</t>
        <ul spacing="normal">
          <li>
            <t>Status_NotAvailable (0x01)</t>
          </li>
          <li>
            <t>Status_Blocked (0x02)</t>
          </li>
          <li>
            <t>Status_Backup (0x03)</t>
          </li>
          <li>
            <t>Status_Available (0x04)</t>
          </li>
        </ul>
      </section>
      <section anchor="iana_abandon_reason">
        <name>PMQUIC path abandon reasons</name>
        <t>This document defines five PMQUIC path abandon reason codes:</t>
        <ul spacing="normal">
          <li>
            <t>Reason_Unspecified (0x00)</t>
          </li>
          <li>
            <t>Reason_Failing (0x01)</t>
          </li>
          <li>
            <t>Reason_Lost (0x02)</t>
          </li>
          <li>
            <t>Reason_NoAck (0x03)</t>
          </li>
          <li>
            <t>Reason_Timeout (0x04)</t>
          </li>
          <li>
            <t>Reason_MaxData (0x05)</t>
          </li>
        </ul>
      </section>
      <section anchor="iana_error_codes">
        <name>PMQUIC transport error codes</name>
        <t>This document extends the QUIC Transport Error Codes of <xref section="22.5" sectionFormat="comma" target="RFC9000"/> with the following (preliminary) values:</t>
        <ul spacing="normal">
          <li>
            <t>Error_pmExceededMaxData (0x165ee2f99e0d09fa)</t>
          </li>
          <li>
            <t>Error_pmInvalidPathID (0x07c0907b4c18170f)</t>
          </li>
          <li>
            <t>Error_pmPathParameter (0x0170789441bc48aa)</t>
          </li>
          <li>
            <t>Error_pmProtocolViolation (0x297abbb8bb0b3afa)</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-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="IANA" target="https://www.iana.org/assignments/quic/">
          <front>
            <title>QUIC Protocol Registry</title>
            <author>
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <date/>
          </front>
        </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"/>
            <author fullname="C. Paasch" initials="C." surname="Paasch"/>
            <date month="March" year="2020"/>
            <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., a reliable bytestream), and it provides the components necessary to establish and use multiple TCP flows across potentially disjoint paths.</t>
              <t>This document specifies v1 of Multipath TCP, obsoleting v0 as specified in RFC 6824, through clarifications and modifications primarily driven by deployment experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8684"/>
          <seriesInfo name="DOI" value="10.17487/RFC8684"/>
        </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="22" month="January" year="2025"/>
            <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/quicwg/multipath.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-12"/>
        </reference>
        <reference anchor="RESUME">
          <front>
            <title>Convergence of Congestion Control from Retained State</title>
            <author fullname="Nicolas Kuhn" initials="N." surname="Kuhn">
              <organization>Thales Alenia Space</organization>
            </author>
            <author fullname="Emile Stephan" initials="E." surname="Stephan">
              <organization>Orange</organization>
            </author>
            <author fullname="Gorry Fairhurst" initials="G." surname="Fairhurst">
              <organization>University of Aberdeen</organization>
            </author>
            <author fullname="Raffaello Secchi" initials="R." surname="Secchi">
              <organization>University of Aberdeen</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date day="28" month="February" year="2025"/>
            <abstract>
              <t>   This document specifies a cautious method for IETF transports that
   enables fast startup of CC for a wide range of connections.  It
   reuses a set of computed CC parameters that are based on previously
   observed path characteristics between the same pair of transport
   endpoints.  These parameters are saved, allowing them to be later
   used to modify the CC behaviour of a subsequent connection.

   It describes assumptions and defines requirements for how a sender
   utilises these parameters to provide opportunities for a connection
   to more rapidly get up to speed and rapidly utilise available
   capacity.  It discusses how use of Careful Resume impacts the
   capacity at a shared network bottleneck and the safe response that is
   needed after any indication that the new rate is inappropriate.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-careful-resume-15"/>
        </reference>
        <reference anchor="LAG" target="https://en.wikipedia.org/wiki/Link_aggregation">
          <front>
            <title>Link aggregation</title>
            <author>
              <organization>Wikipedia</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 867?>

<section anchor="appendix_mpquic">
      <name>Comparison to <xref target="MPQUIC-DRAFT"/></name>
      <aside>
        <t>This section is provided for information only.</t>
      </aside>
      <t><xref target="MPQUIC-DRAFT"/> diverges from the principles of <xref target="RFC9000"/> in a number of areas, as described below.</t>
      <section anchor="connection-identifiers">
        <name>Connection identifiers</name>
        <t><xref target="MPQUIC-DRAFT"/> binds every connection identifier to a specific path. A path may be associated with multiple connection identifiers but a connection identifier can only be used on a pre-defined path. A change in in the connection identifier used in a QUIC packet header is used to signal an explicit change in the path.</t>
        <t>By contrast, <xref target="RFC9000"/> (and PMQUIC) does not associate a connection identifier with a path -- i.e. connection identifiers are independent of paths.</t>
      </section>
      <section anchor="connection-identifier-sequence-numbers">
        <name>Connection identifier sequence numbers</name>
        <t><xref target="MPQUIC-DRAFT"/> introduces the concept of multiple connection identifier sequence number spaces with a different connection identifier sequence number space for each path. As a consequence, it is possible for different connection identifiers associated with different paths to be assigned the same connection identifier sequence number.</t>
        <t>By contrast <xref target="RFC9000"/> (and PMQUIC) define a single connection identifier sequence number space.</t>
      </section>
      <section anchor="application-data-packet-number-spaces">
        <name>Application data packet number spaces</name>
        <t><xref target="MPQUIC-DRAFT"/> introduces the concept of multiple application data (1RTT) packet number spaces with a different application data number space for each path. As a consequence, it is possible for different QUIC packets transmitted over different paths to be assigned the same packet number.</t>
        <t>By contrast <xref target="RFC9000"/> (and PMQUIC) define a single application data packet number space.</t>
      </section>
      <section anchor="aead-encryption-nonce">
        <name>AEAD encryption nonce</name>
        <t>Due to the use of a different application data number space for each path, it is possible for different QUIC packets transmitted over different paths to be assigned the same packet number. As a consequence, <xref target="MPQUIC-DRAFT"/> changes the AEAD calculation by using the path identifier as part of AEAD encryption nonce.</t>
        <t>By contrast <xref target="RFC9000"/> (and PMQUIC) use a single application data packet number space which ensures that different QUIC packets are assigned different packet numbers regardless of the path used to convey a packet.</t>
      </section>
      <section anchor="multipath-specific-connection-management-frames-and-procedures">
        <name>Multipath-specific connection management frames and procedures</name>
        <t>Due to the use of a different application data number space for each path and the use of a different connection identifier sequence number space for each path, endpoints must use multipath-specific frames for packet acknowledgement (PATH_ACK), assignment of new connection identifiers (PATH_NEW_CONNECTION_ID), and retirement of connection identifier (PATH_RETIRE_CONNECTION_ID).</t>
        <t>By contrast, <xref target="RFC9000"/> operations are not affected by the use of PMQUIC procedures which obviates the need for multipath-specific connection management procedures and frames.</t>
      </section>
      <section anchor="zero-length-connection-identifiers">
        <name>Zero-length connection identifiers</name>
        <t>Because <xref target="MPQUIC-DRAFT"/> uses connection identifiers to identify paths, a zero-length connection identifier cannot be used with multipath operations.</t>
        <t>By contrast, PMQUIC does not associate a connection identifier with a path and allows a QUIC packet to be transmitted over any path, including a QUIC packet with a zero-length connection identifier.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
P88AAA==

-->

</rfc>
