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

<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 70?>

<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>
    </section>
    <section anchor="path-activation-and-removal">
      <name>Path Activation and Removal</name>
      <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>
      <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>
        <dl newline="true">
          <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>
          <dt><tt>Reason_Lost</tt></dt>
          <dd>
            <t>indicating that the path is no longer available to the endpoint;</t>
          </dd>
          <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>
          <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>
          <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>
          <dt><tt>Reason_Unspecified</tt></dt>
          <dd>
            <t>indicating that the reason is unknown or is otherwise unspecified.</t>
          </dd>
        </dl>
      </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 update operational parameters associated with the path (<xref target="parameter_group_ops"/>).</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>
        <dl newline="true">
          <dt><tt>Status_Available</tt></dt>
          <dd>
            <t>indicates that the path may used for transmission of a QUIC packet.</t>
          </dd>
          <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>
          <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>
          <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>
      </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 anchor="pathtmo">
        <name>Path Idle Timeout</name>
        <t>The path idle time is a time interval during which no packets have been received over the path by an endpoint. The lack of received packets may be due to no transmissions over the path by the peer endpoint or due to packet loss on the path to the receiving endpoint.</t>
        <t>An endpoint may assign a maximum path idle time to each path -- i.e. different paths may have the same or different idle timeout values. An endpoint may include a <tt>Parameter_pathIdleTimeout</tt> (<xref target="parameter_pathIdleTimeout"/>) in the list of path parameters in a PM_CHALLENGE, PM_CHALLENGE_RESPONSE or PM_STATUS frame. The mechanism used by an endpoint to determine an idle timeout value for a path is beyond the scope of this document.</t>
        <t>The effective idle timeout value used by a receiving endpoint on a path is the minimum of the latest values advertised by each endpoint (or the sole latest advertised value if only one endpoint advertises a value). By default, path idle time monitoring is disabled.</t>
        <t>The idle timeout value applies only to the indicated path. A session that migrates to a different path cannot assume that the idle timeout value from an existing path applies to the new path.</t>
        <t>Path idle time is monitored independently on each path by each receiving endpoint. If an endpoint determines that the idle time on a path exceeds the idle timeout value for the path, the endpoint SHOULD test the liveness of the path by sending one or more PING or another ack-eliciting frames over the path.</t>
        <t>If the ack-eliciting frames are not acknowledged, the endpoint MUST abandon the path (<xref target="pathremoval"/>). An idle timeout detected on one path does not affect the state of another path and does not affect the state of the QUIC connection between endpoints.</t>
        <t>If the ack-eliciting frame is a non-probing frame, the acknowledgement for the ack-eliciting frame may be received on a path that is different from the path where the liveness test was conducted, depending on how the transmission path for the acknowledgement is selected by the peer endpoint (<xref target="packetsched"/>). This is illustrated in the example of <xref target="fig-idle-timeout"/>:</t>
        <figure anchor="fig-idle-timeout">
          <name>Exemplary Liveness Test</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="552" viewBox="0 0 552 400" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
                <path d="M 48,80 L 48,96" fill="none" stroke="black"/>
                <path d="M 48,128 L 48,320" fill="none" stroke="black"/>
                <path d="M 48,352 L 48,384" fill="none" stroke="black"/>
                <path d="M 96,32 L 96,80" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,80" fill="none" stroke="black"/>
                <path d="M 208,80 L 208,96" fill="none" stroke="black"/>
                <path d="M 208,272 L 208,320" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,80" fill="none" stroke="black"/>
                <path d="M 304,32 L 304,80" fill="none" stroke="black"/>
                <path d="M 328,80 L 328,256" fill="none" stroke="black"/>
                <path d="M 328,336 L 328,384" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,80" fill="none" stroke="black"/>
                <path d="M 456,32 L 456,80" fill="none" stroke="black"/>
                <path d="M 496,80 L 496,256" fill="none" stroke="black"/>
                <path d="M 496,288 L 496,384" fill="none" stroke="black"/>
                <path d="M 544,32 L 544,80" fill="none" stroke="black"/>
                <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
                <path d="M 184,32 L 240,32" fill="none" stroke="black"/>
                <path d="M 304,32 L 360,32" fill="none" stroke="black"/>
                <path d="M 456,32 L 544,32" fill="none" stroke="black"/>
                <path d="M 8,80 L 96,80" fill="none" stroke="black"/>
                <path d="M 184,80 L 240,80" fill="none" stroke="black"/>
                <path d="M 304,80 L 360,80" fill="none" stroke="black"/>
                <path d="M 456,80 L 544,80" fill="none" stroke="black"/>
                <path d="M 48,144 L 320,144" fill="none" stroke="black"/>
                <path d="M 336,144 L 488,144" fill="none" stroke="black"/>
                <path d="M 48,192 L 320,192" fill="none" stroke="black"/>
                <path d="M 336,192 L 488,192" fill="none" stroke="black"/>
                <path d="M 48,240 L 320,240" fill="none" stroke="black"/>
                <path d="M 336,240 L 488,240" fill="none" stroke="black"/>
                <path d="M 56,304 L 200,304" fill="none" stroke="black"/>
                <path d="M 216,304 L 496,304" fill="none" stroke="black"/>
                <path d="M 48,368 L 320,368" fill="none" stroke="black"/>
                <path d="M 336,368 L 488,368" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="496,368 484,362.4 484,373.6" fill="black" transform="rotate(0,488,368)"/>
                <polygon class="arrowhead" points="496,240 484,234.4 484,245.6" fill="black" transform="rotate(0,488,240)"/>
                <polygon class="arrowhead" points="496,192 484,186.4 484,197.6" fill="black" transform="rotate(0,488,192)"/>
                <polygon class="arrowhead" points="496,144 484,138.4 484,149.6" fill="black" transform="rotate(0,488,144)"/>
                <polygon class="arrowhead" points="64,304 52,298.4 52,309.6" fill="black" transform="rotate(180,56,304)"/>
                <circle cx="208" cy="304" r="6" class="opendot" fill="white" stroke="black"/>
                <circle cx="328" cy="144" r="6" class="opendot" fill="white" stroke="black"/>
                <circle cx="328" cy="192" r="6" class="opendot" fill="white" stroke="black"/>
                <circle cx="328" cy="240" r="6" class="opendot" fill="white" stroke="black"/>
                <circle cx="328" cy="368" r="6" class="opendot" fill="white" stroke="black"/>
                <g class="text">
                  <text x="52" y="52">Endpoint</text>
                  <text x="212" y="52">path</text>
                  <text x="332" y="52">path</text>
                  <text x="500" y="52">Endpoint</text>
                  <text x="48" y="68">A</text>
                  <text x="208" y="68">x</text>
                  <text x="328" y="68">z</text>
                  <text x="496" y="68">B</text>
                  <text x="32" y="116">[select</text>
                  <text x="84" y="116">path</text>
                  <text x="116" y="116">z]</text>
                  <text x="84" y="132">packet</text>
                  <text x="84" y="180">packet</text>
                  <text x="84" y="228">packet</text>
                  <text x="440" y="276">[path</text>
                  <text x="472" y="276">x</text>
                  <text x="516" y="276">timeout]</text>
                  <text x="468" y="292">ping</text>
                  <text x="32" y="340">[select</text>
                  <text x="84" y="340">path</text>
                  <text x="116" y="340">z]</text>
                  <text x="76" y="356">ping</text>
                  <text x="112" y="356">ack</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
+----------+          +------+       +------+           +----------+
| Endpoint |          | path |       | path |           | Endpoint |
|    A     |          |  x   |       |  z   |           |    B     |
+----+-----+          +--+---+       +--+---+           +----+-----+
     |                   |              |                    |
[select path z]                         |                    |
     | packet                           |                    |
     +----------------------------------o------------------->|
     |                                  |                    |
     | packet                           |                    |
     +----------------------------------o------------------->|
     |                                  |                    |
     | packet                           |                    |
     +----------------------------------o------------------->|
     |                                  |                    |
     |                   |                          [path x timeout]
     |                   |                              ping |
     |<------------------o-----------------------------------+
     |                   |                                   |
[select path z]                         |                    |
     | ping ack                         |                    |
     +----------------------------------o------------------->|
     |                                  |                    |
]]></artwork>
          </artset>
        </figure>
      </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>
      <dl newline="true">
        <dt><tt>Status_Available</tt></dt>
        <dd>
          <t>indicating that the resulting path may be used for transmission of a QUIC packet;</t>
        </dd>
        <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>
      <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 one of the path limits to be exceeded: path maximum data limit (<xref target="parameter_pathMaxData"/>), path maximum bit rate limit (<xref target="parameter_pathMaxBitRate"/>), or path maximum packet rate limit (<xref target="parameter_pathMaxPacketRate"/>).</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>
      <dl newline="true">
        <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>
        <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>
        <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>
        <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>
      <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_List (8..) ...,
   }
]]></artwork>
        </figure>
        <dl newline="true">
          <dt><tt>Type</tt></dt>
          <dd>
            <t>is set to <tt>Type_pmChallenge</tt> (<xref target="iana_frame_types"/>).</t>
          </dd>
          <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>
          <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>
          <dt><tt>Path_Parameter_List</tt></dt>
          <dd>
            <t>is a list of path parameters (<xref target="path_parameters"/>). Each path parameter in the list of path parameters 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>
        <t>The QUIC packet containing the PM_CHALLENGE frame MUST include PADDING frames up 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_List (8..) ...,
   }
]]></artwork>
        </figure>
        <dl newline="true">
          <dt><tt>Type</tt></dt>
          <dd>
            <t>is set to <tt>Type_pmChallengeResponse</tt> (<xref target="iana_frame_types"/>).</t>
          </dd>
          <dt><tt>Initiator_PathID</tt></dt>
          <dd>
            <t>is the PathID included in the corresponding PM_CHALLENGE frame (<xref target="frame_challenge"/>).</t>
          </dd>
          <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>
          <dt><tt>Nonce</tt></dt>
          <dd>
            <t>is the nonce included in the corresponding PM_CHALLENGE frame (<xref target="frame_challenge"/>).</t>
          </dd>
          <dt><tt>Path_Parameter_List</tt></dt>
          <dd>
            <t>is a list of path parameters (<xref target="path_parameters"/>). Each path parameter in the list of path parameters 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>
        <t>The QUIC packet containing the PM_CHALLENGE_RESPONSE frame MUST include PADDING frames up 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_List (8..) ...,
    }
]]></artwork>
        </figure>
        <dl newline="true">
          <dt><tt>Type</tt></dt>
          <dd>
            <t>is set to <tt>Type_pmStatus</tt> (<xref target="iana_frame_types"/>).</t>
          </dd>
          <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>
          <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>
          <dt><tt>Path_Parameter_List</tt></dt>
          <dd>
            <t>is a list of path parameters (<xref target="path_parameters"/>). Each path parameter in the list of path parameters 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>
        <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>
        <dl newline="true">
          <dt><tt>Type</tt></dt>
          <dd>
            <t>is set to <tt>Type_pmAbandon</tt> (<xref target="iana_frame_types"/>).</t>
          </dd>
          <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>
          <dt><tt>Reason_Code</tt></dt>
          <dd>
            <t>is the reason that the path is being abandoned (<xref target="pathremoval"/>).</t>
          </dd>
        </dl>
      </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>
        <dl newline="true">
          <dt><tt>Type</tt></dt>
          <dd>
            <t>is set to <tt>Type_pmAddress</tt> (<xref target="iana_frame_types"/>).</t>
          </dd>
          <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>
          <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>
          <dt><tt>Port_Number</tt></dt>
          <dd>
            <t>is a non-zero UDP port number.</t>
          </dd>
          <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>
          <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>
      </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>
      <dl newline="true">
        <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>
        <dt><tt>Path_Parameter_ID</tt></dt>
        <dd>
          <t>uniquely identifies the path parameter (<xref target="iana_path_parameters"/>).</t>
        </dd>
        <dt><tt>Path_Parameter_Value</tt></dt>
        <dd>
          <t>is a variable-length integer value assigned to the path parameter.</t>
        </dd>
      </dl>
      <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_pathMaxBitRate">
          <name>Parameter_pathMaxBitRate</name>
          <t>The path maximum bit rate parameter is a variable-length integer value that indicates the maximum bit rate that data can be sent on the path by the peer endpoint, expressed as a number of octets per second. The mechanism used by an endpoint to determine this value is beyond the scope of this document.</t>
          <t>The actual bit rate used on a path is determined by congestion control at a transmitting endpoint, however the actual bit rate (as determined by congestion control) MUST NOT exceed the value indicated by the path maximum bit rate parameter.</t>
          <t>The maximum bit rate applies only in a single direction -- i.e. from the peer endpoint towards the endpoint defining the path maximum bit rate 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 bit rate limit applies only to the indicated path. A session that migrates to a different path cannot assume that the maximum bit rate limit from an existing path applies to the new path.</t>
          <t>By default, the maximum bit rate that data can be sent on the path is not limited. The maximum bit rate may change over time due to changing network conditions and may be signalled by an endpoint in a PM_STATUS frame (<xref target="frame_status"/>).</t>
        </section>
        <section anchor="parameter_pathMaxPacketRate">
          <name>Parameter_pathMaxPacketRate</name>
          <t>The path maximum packet rate parameter is a variable-length integer value that indicates the maximum rate that packets can be sent on the path by the peer endpoint, expressed as a number of packets per second. The mechanism used by an endpoint to determine this value is beyond the scope of this document.</t>
          <t>The actual packet rate used on a path is determined by congestion control pacing at a transmitting endpoint, however the actual packet rate (as determined by congestion control) MUST NOT exceed the value indicated by the path maximum packet rate parameter.</t>
          <t>The maximum packet rate applies only in a single direction -- i.e. from the peer endpoint towards the endpoint defining the path maximum packet rate 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 packet rate limit applies only to the indicated path. A session that migrates to a different path cannot assume that the maximum packet rate limit from an existing path applies to the new path.</t>
          <t>By default, the maximum rate that packets can be sent on the path is not limited. The maximum packet rate may change over time due to changing network conditions and may be signalled by an endpoint in a PM_STATUS frame (<xref target="frame_status"/>).</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 anchor="parameter_pathIdleTimeout">
          <name>Parameter_pathIdleTimeout</name>
          <t>The path idle timeout parameter is a variable-length integer value that defines the maximum idle time allowed on the path (<xref target="pathtmo"/>), expressed as a number of milliseconds. A value of 0 (zero) indicates that path idle time monitoring is disabled for the path.</t>
          <t>The default value for this parameter is 0 (zero).</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     // End_of_List = 0 (true), Path_Parameter_ID = 0x00
]]></artwork>
        <t>Single-entry list:</t>
        <artwork><![CDATA[
    0x03    // End_of_List = 0 (true), Path_Parameter_ID = 0x03
    0x04    // Path_Parameter_Value = 0x04
]]></artwork>
        <t>Multiple-entry list:</t>
        <artwork><![CDATA[
    0x83    // End_of_List = 1 (false), Path_Parameter_ID = 0x03
    0x04    // Path_Parameter_Value = 0x04
    0x02    // End_of_List = 0 (true), Path_Parameter_ID = 0x02
    0x10    // Path_Parameter_Value = 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>
      <dl newline="true">
        <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>
        <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>
        <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>
        <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>
    </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 ten 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_pathMaxBitRate (0x04) -- <xref target="parameter_pathMaxBitRate"/></t>
          </li>
          <li>
            <t>Parameter_pathMaxPacketRate (0x05) -- <xref target="parameter_pathMaxPacketRate"/></t>
          </li>
          <li>
            <t>Parameter_pathIdleTimeout (0x06) -- <xref target="parameter_pathIdleTimeout"/></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">
          <front>
            <title>Managing multiple paths for a QUIC connection</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 WELRI</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="17" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies a multipath extension for the QUIC protocol
   to enable the simultaneous usage of multiple paths for a single
   connection.  It introduces explicit path identifiers to create,
   delete, and manage multiple paths.  This document does not specify
   address discovery or management, nor how applications using QUIC
   schedule traffic over multiple paths.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-21"/>
        </reference>
        <reference anchor="PIRAUX">
          <front>
            <title>Additional addresses for QUIC</title>
            <author fullname="Maxime Piraux" initials="M." surname="Piraux">
              <organization>UCLouvain</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>UCLouvain &amp; WELRI</organization>
            </author>
            <date day="7" month="July" year="2025"/>
            <abstract>
              <t>   This document specifies a QUIC frame enabling a QUIC server to
   advertise additional addresses that can be used for a QUIC
   connection.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-piraux-quic-additional-addresses-04"/>
        </reference>
        <reference anchor="RESUME">
          <front>
            <title>Careful Resume: Convergence of Congestion Control from Retained State</title>
            <author fullname="N. Kuhn" initials="N." surname="Kuhn"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="R. Secchi" initials="R." surname="Secchi"/>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <date month="May" year="2026"/>
            <abstract>
              <t>This document specifies a cautious method for Internet transports that enables fast startup of Congestion Control (CC) for a wide range of connections, known as "Careful Resume". 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.</t>
              <t>This document describes the assumptions and defines the requirements for how a sender utilises these parameters to provide opportunities for a connection to more rapidly get up to speed and utilise available capacity. It discusses how the use of this method 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="RFC" value="9959"/>
          <seriesInfo name="DOI" value="10.17487/RFC9959"/>
        </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 960?>

<section anchor="appendix_mpquic">
      <name>Comparison to <xref target="MPQUIC"/></name>
      <aside>
        <t>This section is provided for information only.</t>
      </aside>
      <section anchor="adherence-to-rfc9000">
        <name>Adherence to RFC9000</name>
        <t><xref target="MPQUIC"/> 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"/> 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"/> 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"/> 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, allowing a packet containing non-probing frames to be forwarded over any of the (allowable) paths active at the time of transmission.</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"/> 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="connection-management-frames-and-procedures">
          <name>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, MPQUIC 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"/> 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>
      <section anchor="additional-capabilities">
        <name>Additional capabilities</name>
        <t>PMQUIC provides a number of capabilities that are not available in <xref target="MPQUIC"/>, as described below.</t>
        <section anchor="path-configuration">
          <name>Path configuration</name>
          <t>Different paths may have different characteristics, however <xref target="MPQUIC"/> provides no mechanism for configuring a path to account for those differences. By contrast, PMQUIC provides an extensible set of path parameters (<xref target="path_parameters"/>) for configuring operations over a path.</t>
        </section>
        <section anchor="careful-session-resumption">
          <name>Careful session resumption</name>
          <t>PMQUIC includes path parameters to enable the careful resumption of a previous session <xref target="RESUME"/>.</t>
        </section>
        <section anchor="address-advertisement">
          <name>Address advertisement</name>
          <t>The determination of an endpoint IP address is deemed to be beyond the scope of <xref target="MPQUIC"/>. Independently, QUIC extensions have been proposed (e.g. <xref target="PIRAUX"/>) to allow a server to advertise an alternate IP transport address however use of this capability must be negotiated through a separate transport parameter. By contrast, PMQUIC provides the ability for either a server or a client to advertise additional IP transport addresses (<xref target="pathadvertisement"/>).</t>
        </section>
        <section anchor="path-identification">
          <name>Path identification</name>
          <t>A path identifier in <xref target="MPQUIC"/> is a monotonically increasing value and the same path identifier is used by both the client and server. By contrast in PMQUIC, the client and server independently choose the identifier to be associated with a path (<xref target="pathid"/>) thereby allowing implementation-specific semantics to be incorporated into a path identifier.</t>
        </section>
        <section anchor="path-status">
          <name>Path status</name>
          <t>The status of a path in <xref target="MPQUIC"/> is restricted to two values -- available or backup -- with different frame types used to define the different states. PMQUIC includes an extensible path status parameter (<xref target="pathstatusvalue"/>) in multiple frame types allowing more fine-grained control of the path state in various circumstances.</t>
        </section>
        <section anchor="path-precedence">
          <name>Path precedence</name>
          <t>PMQUIC allows both the client and server to assign a precedence to a path to aid in selection of a path for a packet transmission (<xref target="pathprecedence"/>). By contrast, <xref target="MPQUIC"/> provides no capability for aiding in path selection during packet scheduling.</t>
        </section>
        <section anchor="symmetric-operation">
          <name>Symmetric operation</name>
          <t><xref target="MPQUIC"/> is an asymmetric protocol where some operations (e.g. path initiation) can only be performed by the client. By contrast, PMQUIC is a symmetric protocol where either client or server can perform an operation.</t>
        </section>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
6AT+/F/T1kztWPYAAA==

-->

</rfc>
