<?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.21 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gage-quic-pathmgmt-02" category="exp" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="QUIC Path Management">QUIC Path Management for Multi-Path Configurations</title>
    <seriesInfo name="Internet-Draft" value="draft-gage-quic-pathmgmt-02"/>
    <author initials="W." surname="Gage" fullname="Bill Gage">
      <organization>Unaffiliated</organization>
      <address>
        <postal>
          <city>Ottawa</city>
          <country>Canada</country>
        </postal>
        <email>billgage.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="January" day="25"/>
    <area>Internet</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 58?>

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

<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>
        <artwork align="center"><![CDATA[
    +--------------+  +--------------+
    | connection X |  | connection Y |
    +--------------+  +--------------+
           |                 |
    +--------------------------------+
    |        path management         |
    +--------------------------------+
        |          |              |
   +--------+ +--------+     +--------+
   | path 1 | | path 2 | ... | path n |
   +--------+ +--------+     +--------+
]]></artwork>
      </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 target="RFC9000"/> Section 16</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 Section 9 of <xref target="RFC9000"/>:</t>
      <ul spacing="normal">
        <li>
          <t>allow simultaneous transmission of non-probing frames on multiple paths;</t>
        </li>
        <li>
          <t>continue using an existing path even if non-probing frames have been received on another path;</t>
        </li>
        <li>
          <t>manage the removal of paths that have been abandoned or lost.</t>
        </li>
      </ul>
      <t>In addition, 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 Section 8 of <xref target="RFC9000"/>. New PM_CHALLENGE and PM_CHALLENGE_RESPONSE frames are used to validate the path and to assign an identifier to the path. A new PM_STATUS frame may be used to control use of a path and a new PM_ABANDON frame may be used to abandon a path between endpoints, preventing further use of that path to exchange QUIC packets. In addition, a new PM_ADDRESS frame can be used by an endpoint to advertise an IP address that may be used by the peer endpoint to establish a new path.</t>
      <t>PM_STATUS and PM_ABANDON frames include a path identifier that is assigned to the affected path, allowing the frame to be forwarded over any of the (allowable) paths active at the time of transmission.</t>
      <t>PMQUIC operations do not change the basic operations described in <xref target="RFC9000"/>. In particular, <em>none</em> of the following procedures described in <xref target="RFC9000"/> are affected by the use of multiple paths:</t>
      <ul spacing="normal">
        <li>
          <t>connection management (e.g. the use of NEW_CONNECTION_ID frames and subsequent rotation of connection identifiers);</t>
        </li>
        <li>
          <t>key management (e.g. use of key phase bit) and derivation of AEAD parameters;</t>
        </li>
        <li>
          <t>packet loss detection and loss recovery (e.g. using type 0x02 ACK frames).</t>
        </li>
      </ul>
      <t>However, changes to <xref target="RFC9002"/> procedures are required to deal with path-dependent characteristics such as path MTU size, RTT and congestion.</t>
    </section>
    <section anchor="pathid">
      <name>Path Identification</name>
      <t>A path is associated with the 4-tuple of an IP/UDP datagram (source IP address, destination IP address, source UDP port, and destination UDP port). However, PMQUIC explicitly assigns an identifier to each path to decouple path management from the 4-tuple of the IP/UDP datagram used to transport a QUIC packet.</t>
      <t>A path identifier is an integer assigned to a path by an endpoint that unambiguously identifies the path within the session from the perspective of that endpoint. The initial (default) path (i.e. the path used for the exchange of QUIC initial and handshake packets) is implicitly assigned path identifier (PathID) 0 (zero) for the client and PathID 1 (one) for the server. Other than PathID 0 and PathID 1, each endpoint independently selects the path identifier that it wants to assign to a new path and communicates the chosen PathID to its peer in a PM_CHALLENGE/PM_CHALLENGE_RESPONSE transaction.</t>
      <t>An endpoint MUST choose a different PathID for each path in the session -- i.e. a path identifier assigned to one path MUST NOT be reused by the endpoint as the identifier for a different path within the session. For example, a PathID may be a monotonically increasing value, or a randomly generated value, or a sequence of bytes with some internal structure. Since each endpoint independently selects its path identifier, the two endpoints may choose different PathIDs to refer to the same path. A server MAY choose to use the PathID provided by the client in the PM_CHALLENGE frame or the server may choose a different PathID.</t>
      <t>A received path identifier that is invalid MUST be treated as a connection error using transport error code <tt>Error_pmInvalidPathID</tt> (<xref target="connectionerrors"/>).</t>
      <t>QUIC connections exist and are managed independently of paths. An outgoing QUIC packet may be transmitted over any of the available and active paths, subject to any constraints that may have been placed on path usage by either of the QUIC endpoints (<xref target="packetsched"/>). Similarly, an incoming QUIC packet received over any path will be processed according to <xref target="RFC9000"/>, as though it had been received over a uni-path transport between the QUIC endpoints.</t>
    </section>
    <section anchor="path-activation-and-removal">
      <name>Path Activation and Removal</name>
      <t>PMQUIC provides mechanisms for adding new paths to a session and for removing unused or unusable paths from a session.</t>
      <section anchor="pathactivation">
        <name>Path Activation</name>
        <t>To initiate communications over a new path, an endpoint MUST send a PM_CHALLENGE frame in the first QUIC packet conveyed over the new path. The PM_CHALLENGE frame contains a new path identifier (PathID) and an unpredictable nonce (<xref target="frame_challenge"/>).</t>
        <t>The PM_CHALLENGE frame is encapsulated (in a QUIC packet) in an IP/UDP datagram where the 4-tuple of the datagram corresponds to the new path. The destination IP address and UDP port may be provided by the peer endpoint (<xref target="pathadvertisement"/>) or may be discovered by a mechanism that is outside the scope of this document.</t>
        <t>To protect against correlation of communications across different IP addresses, it is RECOMMENDED that an endpoint use a new destination connection identifier in the QUIC packet containing the PM_CHALLENGE frame. The new destination connection identifier would have been previously provided by the peer endpoint in a NEW_CONNECTION_ID frame (<xref target="RFC9000"/> Section 19.15).</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 target="RFC9000"/> Section 9.3, the endpoint detecting the new path MUST initiate path validation (<xref target="pathactivation"/>) by sending a PM_CHALLENGE frame to the peer endpoint.</t>
        <t>The endpoint detecting the new path SHOULD send non-probing frames over a different path, if available (<xref target="packetsched"/>), until a subsequent PM_CHALLENGE_RESPONSE frame is received. The endpoint MAY send non-probing frames over the new path if no other path is available.</t>
      </section>
      <section anchor="pathremoval">
        <name>Path Removal</name>
        <t>To terminate communications over an established path, an endpoint sends a PM_ABANDON frame (<xref target="frame_abandon"/>) containing the PathID of the path to be abandoned. A PM_ABANDON frame may be transmitted over any path that is active (and allowable) at the time of transmission. Abandoning a path has no effect on a QUIC connection.</t>
        <t>If the endpoint does not receive an ACK to the QUIC packet containing the PM_ABANDON frame, the PM_ABANDON frame may be retransmitted over the same or a different path.</t>
        <t>The reason for abandoning a path may be one of the following (<xref target="iana_abandon_reason"/>):</t>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Reason_Failing</tt></dt>
              <dd>
                <t>indicating that the path is failing (e.g. the path is experiencing excessive transmission errors);</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_Lost</tt></dt>
              <dd>
                <t>indicating that the path is no longer available to the endpoint;</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_NoAck</tt></dt>
              <dd>
                <t>indicating that the endpoint failed to received ACKs for QUIC packets transmitted over the path;</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_Timeout</tt></dt>
              <dd>
                <t>indicating that a idle timer expired with no QUIC packets transmitted or received over the path;</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_MaxData</tt></dt>
              <dd>
                <t>indicating that the maximum amount of data allowed to be sent on the path has been reached.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_Unspecified</tt></dt>
              <dd>
                <t>indicating that the reason is unknown or is otherwise unspecified.</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="pathmaintain">
      <name>Path Maintenance</name>
      <t>Once a path between endpoints has been validated, PMQUIC provides mechanisms for defining and updating operational parameters related to the path.</t>
      <section anchor="pathstatus">
        <name>Path Transmission Status</name>
        <t>An endpoint may indicate its initial path transmission status in a PM_CHALLENGE frame (<xref target="frame_challenge"/>) or in the corresponding PM_CHALLENGE_RESPONSE frame (<xref target="frame_response"/>). By default, the initial path transmission status is <tt>Status_Available</tt> (<xref target="pathstatusvalue"/>).</t>
        <t>Subsequently, an initiating endpoint may send a PM_STATUS frame (<xref target="frame_status"/>) to inform its peer endpoint of the desired status of a path (<xref target="pathstatusvalue"/>) and, optionally, to indicate the precedence assigned to the path by the initiating endpoint (<xref target="pathprecedence"/>).</t>
        <t>Each PM_STATUS frame includes a status sequence number that is generated by the initiating endpoint; each endpoint maintains it own status sequence number. The status sequence number MUST be a monotonically increasing value and MUST NOT be used more than once within a session.</t>
        <t>If the initiating endpoint does not receive an ACK to the QUIC packet containing the PM_STATUS frame, the PM_STATUS frame may be retransmitted over the same or a different path but MUST include a new status sequence number.</t>
        <t>The receiving endpoint MUST ignore an incoming PM_STATUS frame if it previously received another PM_STATUS frame with a status sequence number equal to or higher than the status sequence number of the incoming frame.</t>
        <t>If the receiving endpoint does not agree with the status change, the receiving endpoint may send a PM_STATUS frame to inform the initiator of its desired status of the path.</t>
        <t>A PM_STATUS frame may be transmitted over any path that is active (and allowable) at the time of transmission.</t>
      </section>
      <section anchor="pathstatusvalue">
        <name>Path Status</name>
        <t>The status of a path may be set to one of the following:</t>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Status_Available</tt></dt>
              <dd>
                <t>indicates that the path may used for transmission of a QUIC packet.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Status_Backup</tt></dt>
              <dd>
                <t>indicates that the path should not be used for transmission of a QUIC packet if another path exists in a <tt>Status_Available</tt> state. This path should only be used if no other path exists in a <tt>Status_Available state</tt>.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Status_Blocked</tt></dt>
              <dd>
                <t>indicates that the initiating endpoint has reached the maximum transmitted data limit imposed by a previously received <tt>Parameter_pathMaxData</tt> path parameter (<xref target="parameter_pathMaxData"/>). The receiving endpoint may increase the maximum data limit (and change the status of the path) using a subsequent PATH_STATUS frame (<xref target="frame_status"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Status_NotAvailable</tt></dt>
              <dd>
                <t>indicates that the path should not be used for transmission of a QUIC packet. Unlike an abandoned path (<xref target="pathremoval"/>), a path with <tt>Status_NotAvailable</tt> may be moved to <tt>Status_Available</tt> or <tt>Status_Backup</tt> when and if allowed by operational considerations.</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
      <section anchor="pathprecedence">
        <name>Path Precedence</name>
        <t>A path precedence is a variable-length integer value that may be used to distinguish between paths when scheduling the transmission of a QUIC packet:</t>
        <ul spacing="normal">
          <li>
            <t>in general, a path with a higher precedence value is preferred over a path with a lower precedence value;</t>
          </li>
          <li>
            <t>multiple paths may be assigned the same precedence value;</t>
          </li>
          <li>
            <t>congestion control may override precedence to allow transmission over a less congested path;</t>
          </li>
        </ul>
        <t>Each endpoint independently determines the precedence of a path and communicates that precedence to its peer (<xref target="parameter_pathPrecedence"/>). The use of the local and peer path precedence values by an endpoint is beyond the scope of this document.</t>
      </section>
      <section anchor="pathcc">
        <name>Path Congestion Control</name>
        <t>Congestion control is applied per path, as described in <xref target="RFC9002"/> Section 7. QUIC packets sent on one path do not affect the congestion state of another path.</t>
      </section>
      <section anchor="pathrtt">
        <name>Path RTT Measurements</name>
        <t>Round-Trip Time measurements are performed per path, as described in <xref target="RFC9002"/> Section 5. In general, different paths may exhibit different RTTs.</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 target="RFC9000"/> Section 18.2.</t>
        <t>The maximum UDP payload size for a path can be adjusted by including a <tt>Parameter_pathPayloadSize</tt> (<xref target="parameter_pathPayloadSize"/>) in the list of path parameters in a PM_CHALLENGE frame (<xref target="frame_challenge"/>) or in a PM_CHALLENGE_RESPONSE frame (<xref target="frame_response"/>).</t>
        <t>If a <tt>Parameter_pathPayloadSize</tt> is included in a PM_CHALLENGE frame, this value takes precedence over the <tt>max_udp_payload_size</tt> transport parameter.</t>
        <t>If a <tt>Parameter_pathPayloadSize</tt> is included in a PM_CHALLENGE_RESPONSE frame, this value must be less than the value included in (or defaulted by) the PM_CHALLENGE frame and takes precedence over the value included in (or defaulted by) the PM_CHALLENGE frame.</t>
        <t>The mechanism used by an endpoint to determine maximum UDP payload size for a path is beyond the scope of this document. For example, the value may be determined by pre-configuration, by using a Path MTU Discovery (PMTUD) mechanism, or as a property of the endpoint.</t>
      </section>
    </section>
    <section anchor="pathadvertisement">
      <name>Address Advertisement</name>
      <t>In <xref target="RFC9000"/>, discovery of the IP address used by a peer endpoint is deemed to be beyond the scope of QUIC. PMQUIC, however, provides a mechanism whereby an endpoint can advertise available IP addresses to its peer.</t>
      <t>An IP address advertisement can be sent by either a client or a server, allowing establishment of a new path to be initiated by the receiving server or client. For example:</t>
      <ul spacing="normal">
        <li>
          <t>an IP address advertisement may be used by a multi-homed server to direct client traffic through an alternate IP subnet for load balancing;</t>
        </li>
        <li>
          <t>an IP address advertisement may be used by a multi-homed client for improved resiliency;</t>
        </li>
        <li>
          <t>an IP address advertisement may be used by a dual-stack endpoint to enable a new path using a different IP address family;</t>
        </li>
        <li>
          <t>an IP address advertisement may be used by a receiving endpoint in its route selection process.</t>
        </li>
      </ul>
      <t>An IP address advertisement is conveyed in a PM_ADDRESS frame (<xref target="frame_address"/>). Each PM_ADDRESS frame includes a status sequence number that is generated by the initiating endpoint; the same status sequence number space is used by both PM_ADDRESS and PM_STATUS frames (<xref target="pathstatus"/>).</t>
      <t>A PM_ADDRESS frame also includes a path status (<xref target="pathstatusvalue"/>) indicating the intended status of a path using the advertised address. This MUST be one of the following:</t>
      <ul spacing="normal">
        <li>
          <dl>
            <dt><tt>Status_Available</tt></dt>
            <dd>
              <t>indicating that the resulting path may used for transmission of a QUIC packet;</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Status_Backup</tt></dt>
            <dd>
              <t>indicating that the resulting path should be used as a backup path (<xref target="packetsched"/>);</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Status_NotAvailable</tt></dt>
            <dd>
              <t>indicating a previously advertised address is no longer available. 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>
            </dd>
          </dl>
        </li>
      </ul>
      <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 use the advertised information.</t>
    </section>
    <section anchor="packetsched">
      <name>Packet Scheduling</name>
      <t>A QUIC packet may be scheduled for transmission over a given path only if:</t>
      <ul spacing="normal">
        <li>
          <t>the path status is either <tt>Status_Available</tt> or <tt>Status_Backup</tt> (<xref target="pathstatusvalue"/>);</t>
        </li>
        <li>
          <t>there is no outstanding PM_ABANDON frame that is pending acknowledgement;</t>
        </li>
        <li>
          <t>transmission of the packet does not increase the number of bytes-in-flight beyond the congestion window of the path (<xref target="pathcc"/>);</t>
        </li>
        <li>
          <t>transmission of the packet does not cause the path maximum data limit to be exceeded (<xref target="parameter_pathMaxData"/>).</t>
        </li>
      </ul>
      <t>An endpoint SHOULD schedule a transmission over a path with <tt>Status_Available</tt>. If this is not possible, the endpoint MAY attempt a transmission over a path with <tt>Status_Backup</tt>.</t>
      <t>If more than one path is eligible for transmission of a packet, the algorithm used to select the path is beyond the scope of this document. An implementation may, for example, use the precedence value provided in a PM_CHALLENGE, PM_CHALLENGE_RESPONSE or PM_STATUS frame (<xref target="pathprecedence"/>).</t>
      <t>Precedence should only used to distinguish between paths with the same status -- i.e. between paths with <tt>Status_Available</tt> or between paths with <tt>Status_Backup</tt>.</t>
    </section>
    <section anchor="packetloss">
      <name>Packet Loss Detection and Recovery</name>
      <t>QUIC senders use acknowledgements to detect lost packets and a probe timeout (PTO) to ensure acknowledgements are received. Loss detection through acknowledgements is performed as described in <xref target="RFC9002"/> Section 6.1.</t>
      <t>Timer-based loss detection (<xref target="RFC9002"/> Section 6.1.2) 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 target="RFC9002"/> Section 6.2) 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 target="RFC9000"/> Section 22.5 with the following values (<xref target="iana_error_codes"/>):</t>
      <ul spacing="normal">
        <li>
          <dl>
            <dt><tt>Error_pmExceededMaxData</tt></dt>
            <dd>
              <t>indicates that the endpoint received more data than allowed over a path (<xref target="parameter_pathMaxData"/>).</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Error_pmInvalidPathID</tt></dt>
            <dd>
              <t>indicates the endpoint received an invalid path identifier (<xref target="pathid"/>) -- e.g. a duplicated path identifier, an unknown path identifier, or the identifier of an abandoned path.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Error_pmPathParameter</tt></dt>
            <dd>
              <t>indicates that a received path parameter (<xref target="path_parameters"/>) was invalid -- e.g.
was badly formatted, included an invalid type, included an invalid value, omitted a mandatory path parameter, included a forbidden path parameter, included a duplicated path parameter, or was otherwise in error.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Error_pmProtocolViolation</tt></dt>
            <dd>
              <t>indicates an error with protocol compliance that is not covered by a more specific error code -- e.g. an endpoint received a path management frame when path management is not enabled.</t>
            </dd>
          </dl>
        </li>
      </ul>
      <t>Path management connection errors MUST be processed according to <xref target="RFC9000"/> Section 11.1.</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>
      </ul>
      <section anchor="frame_challenge">
        <name>PM_CHALLENGE frame</name>
        <t>When an endpoint wants to enable use of a new path, it initiates path validation by sending a PM_CHALLENGE frame over the new path. This is analogous to the use of a PATH_CHALLENGE frame in <xref target="RFC9000"/>.</t>
        <t>A PM_CHALLENGE frame (<xref target="fig-pm_challenge_frame"/>) includes the following fields:</t>
        <figure anchor="fig-pm_challenge_frame">
          <name>PM_CHALLENGE Frame Fields</name>
          <artwork><![CDATA[
   PM_CHALLENGE Frame {
     Type (i) = Type_pmChallenge,
     Initiator_PathID (i),
     Nonce (64),
     Path_Parameter (8..) ...,
   }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_pmChallenge</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Initiator_PathID</tt></dt>
              <dd>
                <t>is the PathID assigned to the path by the endpoint sending the PM_CHALLENGE frame (<xref target="pathid"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Nonce</tt></dt>
              <dd>
                <t>is an unpredictable nonce generated by the endpoint for use in this instance of a PM_CHALLENGE frame (<xref target="pathactivation"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Parameter</tt></dt>
              <dd>
                <t>is a list of path parameters (<xref target="path_parameters"/>) although the list may be an empty list (<xref target="parameter_empty"/>). Path parameters not included in the PM_CHALLENGE frame assume their default values.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>The QUIC packet containing the PM_CHALLENGE frame MUST include PADDING frames to the maximum UDP payload size as defined by <tt>Parameter_pathPayloadSize</tt> (<xref target="parameter_pathPayloadSize"/>), if included in the path parameters, or by the default value if not included in the path parameters.</t>
      </section>
      <section anchor="frame_response">
        <name>PM_CHALLENGE_RESPONSE frame</name>
        <t>When an endpoint wants to acknowledge use of a new path, it confirms path validation by sending a PM_CHALLENGE_RESPONSE frame over the new path. This is analogous to the use of a PATH_RESPONSE frame in <xref target="RFC9000"/>.</t>
        <t>A PM_CHALLENGE_RESPONSE frame (<xref target="fig-pm_challenge_response_frame"/>) includes the following fields:</t>
        <figure anchor="fig-pm_challenge_response_frame">
          <name>PM_CHALLENGE_RESPONSE Frame Fields</name>
          <artwork><![CDATA[
   PM_CHALLENGE_RESPONSE Frame {
     Type (i) = Type_pmChallengeResponse,
     Initiator_PathID (i),
     Responder_PathID (i),
     Nonce (64),
     Path_Parameter (8..) ...,
   }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_pmChallengeResponse</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Initiator_PathID</tt></dt>
              <dd>
                <t>is the PathID included in the corresponding PM_CHALLENGE frame (<xref target="frame_challenge"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Responder_PathID</tt></dt>
              <dd>
                <t>is the PathID assigned to the path by the endpoint sending the PM_CHALLENGE_RESPONSE frame (<xref target="pathid"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Nonce</tt></dt>
              <dd>
                <t>is the nonce included in the corresponding PM_CHALLENGE frame (<xref target="frame_challenge"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Parameter</tt></dt>
              <dd>
                <t>is a list of path parameters (<xref target="path_parameters"/>) although the list may be an empty list (<xref target="parameter_empty"/>). Path parameters not included in the PM_CHALLENGE_RESPONSE frame assume the (default) values indicated by the corresponding PM_CHALLENGE frame.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>The QUIC packet containing the PM_CHALLENGE_RESPONSE frame MUST include PADDING frames to the maximum UDP payload size as defined by <tt>Parameter_pathPayloadSize</tt> (<xref target="parameter_pathPayloadSize"/>), if specified, or by the default value, if not specified.</t>
      </section>
      <section anchor="frame_status">
        <name>PM_STATUS frame</name>
        <t>An endpoint uses a PM_STATUS frame to signal a change in a path parameter.</t>
        <t>A PM_STATUS frame (<xref target="fig-pm_status_frame"/>) includes the following fields:</t>
        <figure anchor="fig-pm_status_frame">
          <name>PM_STATUS Frame Fields</name>
          <artwork><![CDATA[
   PM_STATUS Frame {
     Type (i) = Type_pmStatus,
     Receiver_PathID (i),
     Path_Status_Sequence_Number (i),
     Path_Parameter (8..) ...,
    }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_pmStatus</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Receiver_PathID</tt></dt>
              <dd>
                <t>is the PathID assigned to the path by the peer endpoint receiving the PM_STATUS frame.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Status_Sequence_Number</tt></dt>
              <dd>
                <t>is the sending endpoint's sequence number for this PM_STATUS frame (<xref target="pathstatus"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Parameter</tt></dt>
              <dd>
                <t>is a list of path parameters (<xref target="path_parameters"/>) that MUST NOT be an empty list (<xref target="parameter_empty"/>) and MUST NOT include the following path parameters:
</t>
                <ul spacing="normal">
                  <li>
                    <t><tt>Parameter_pathPayloadSize</tt> (<xref target="parameter_pathPayloadSize"/>)</t>
                  </li>
                </ul>
              </dd>
            </dl>
          </li>
        </ul>
        <t>Note that the status of the path defaults to <tt>Status_Available</tt> unless explicitly defined by including a <tt>Parameter_pathStatus</tt> (<xref target="parameter_pathStatus"/>) in the list of path parameters.</t>
      </section>
      <section anchor="frame_abandon">
        <name>PM_ABANDON frame</name>
        <t>An endpoint uses a PM_ABANDON frame to to indicate that it will no longer use the indicated path.</t>
        <t>A PM_ABANDON frame (<xref target="fig-pm_abandon_frame"/>) includes the following fields:</t>
        <figure anchor="fig-pm_abandon_frame">
          <name>PM_ABANDON Frame Fields</name>
          <artwork><![CDATA[
   PM_ABANDON Frame {
     Type (i) = Type_pmAbandon,
     Receiver_PathID (i),
     Reason_Code (i)
   }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_pmAbandon</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Receiver_PathID</tt></dt>
              <dd>
                <t>is the PathID assigned to the path by the peer endpoint receiving the PM_ABANDON frame.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Reason_Code</tt></dt>
              <dd>
                <t>is the reason that the path is being abandoned (<xref target="pathremoval"/>).</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
      <section anchor="frame_address">
        <name>PM_ADDRESS frame</name>
        <t>An endpoint uses a PM_ADDRESS frame to advertise an IP address and UDP port that may be used to establish a new path to the initiating endpoint.</t>
        <t>A PM_ADDRESS frame (<xref target="fig-pm_address_frame"/>) includes the following fields:</t>
        <figure anchor="fig-pm_address_frame">
          <name>PM_ADDRESS Frame Fields</name>
          <artwork><![CDATA[
   PM_ADDRESS Frame {
     Type (i) = Type_pmAddress,
     Path_Status_Sequence_Number (i),
     Path_Status (i),
     Port_Number (i)
     Path_Address_Family (i),
     Path_Address (32,128),
    }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_pmAddress</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Status_Sequence_Number</tt></dt>
              <dd>
                <t>is the sending endpoint's path status sequence number for this PM_ADDRESS frame (<xref target="pathstatus"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Status</tt></dt>
              <dd>
                <t>is the intended status of a path associated with the IP address (<xref target="pathadvertisement"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Port_Number</tt></dt>
              <dd>
                <t>is a non-zero UDP port number.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Address_Family</tt></dt>
              <dd>
                <t>indicates the type of IP address, identified by a socket address family value -- i.e. AF_INET (2) for IPv4 or AF_INET6 (10) for IPv6.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Path_Address</tt></dt>
              <dd>
                <t>is the binary 4- or 16-byte value of the advertised IP address, in network (big-endian) byte-order.</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="path_parameters">
      <name>Path Parameters</name>
      <t>Each path parameter in a list of path parameters includes the following fields (<xref target="fig-path-parameter"/>):</t>
      <figure anchor="fig-path-parameter">
        <name>Path Parameter Encoding</name>
        <artwork><![CDATA[
Path_Parameter {
  End_of_List (1),
  Path_Parameter_ID (7),
  Path_Parameter_Value (i),
}
]]></artwork>
      </figure>
      <ul spacing="normal">
        <li>
          <dl>
            <dt><tt>End_of_List</tt></dt>
            <dd>
              <t>is a boolean value identifying the last parameter in a list of path parameters. A value of 0 (zero) indicates this is the last parameter; a value of 1 (one) indicates that there is at least one more parameter in the list of path parameters.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Path_Parameter_ID</tt></dt>
            <dd>
              <t>uniquely identifies the path parameter (<xref target="iana_path_parameters"/>).</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Path_Parameter_Value</tt></dt>
            <dd>
              <t>is a variable-length integer value assigned to the path parameter.</t>
            </dd>
          </dl>
        </li>
      </ul>
      <t>A path parameter, or a list of path parameters, that is malformed or invalid MUST be treated as a connection error using transport error code <tt>Error_pmPathParameter</tt> (<xref target="connectionerrors"/>).</t>
      <section anchor="parameter_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_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 target="RFC9000"/> Section 18.2.</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_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>
      </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 target="RFC9000"/> Section 7.4) -- <tt>max_active_paths</tt> and <tt>disable_path_migration</tt>.</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 target="RFC9000"/> Section 21.</t>
      <t>Specific security considerations, associated with the use of path management procedures, include:</t>
      <ul spacing="normal">
        <li>
          <dl>
            <dt>resource usage:</dt>
            <dd>
              <t>Due to the simultaneous use of multiple paths between session endpoints, PMQUIC may require additional resources in a client and/or in a server. Resource usage associated with paths can be limited by each endpoint through the <tt>max_active_paths</tt> transport parameter (<xref target="transport_parameters"/>).</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt>data amplification:</dt>
            <dd>
              <t>The simultaneous use of multiple paths between session endpoints potentially allows for a higher rate of data exchange than might be possible with only a single path between session endpoints. Since PMQUIC uses a path validation mechanism similar to <xref target="RFC9000"/>, the anti-amplification limits of <xref target="RFC9000"/> Section 8.2 are also valid for PMQUIC.
</t>
              <t>Further, an endpoint can limit the maximum amount of data that can be sent on a particular path through the PMQUIC <tt>Parameter_pathMaxData</tt> path parameter (<xref target="parameter_pathMaxData"/>). This value may be initially set in a PM_CHALLENGE or PM_CHALLENGE_RESPONSE frame and may be subsequently adjusted in a PM_STATUS frame.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt>address spoofing:</dt>
            <dd>
              <t>PMQUIC uses a path validation mechanism (<xref target="pathactivation"/>) similar to <xref target="RFC9000"/> to prevent address spoofing over a new path by a malicious intermediate node.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt>correlation of activity across multiple paths:</dt>
            <dd>
              <t>Due to the possible decoupling of connection management and path management, PMQUIC recommends but does not mandate that different connection identifiers be used on different paths (<xref target="pathactivation"/>). As discussed in <xref target="RFC9000"/> Section 9.5, using the same connection identifier on multiple paths would allow a passive observer to correlate activity between those paths. An endpoint can prevent use of a connection identifier on more than one path by including a <tt>disable_path_migration</tt> transport parameter in the initial cryptographic handshake (<xref target="transport_disable_path_migration"/>).</t>
            </dd>
          </dl>
        </li>
      </ul>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <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 five 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_pathPayloadSize (0x02) -- <xref target="parameter_pathPayloadSize"/></t>
          </li>
          <li>
            <t>Parameter_pathPrecedence (0x03) -- <xref target="parameter_pathPrecedence"/></t>
          </li>
          <li>
            <t>Parameter_pathStatus (0x04) -- <xref target="parameter_pathStatus"/></t>
          </li>
        </ul>
      </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 target="RFC9000"/> Section 22.5 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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="MPTCP">
          <front>
            <title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author fullname="A. Ford" initials="A." surname="Ford"/>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="O. Bonaventure" initials="O." surname="Bonaventure"/>
            <author fullname="C. Paasch" initials="C." surname="Paasch"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>TCP/IP communication is currently restricted to a single path per connection, yet multiple paths often exist between peers. The simultaneous use of these multiple paths for a TCP/IP session would improve resource usage within the network and thus improve user experience through higher throughput and improved resilience to network failure.</t>
              <t>Multipath TCP provides the ability to simultaneously use multiple paths between peers. This document presents a set of extensions to traditional TCP to support multipath operation. The protocol offers the same type of service to applications as TCP (i.e., a reliable bytestream), and it provides the components necessary to establish and use multiple TCP flows across potentially disjoint paths.</t>
              <t>This document specifies v1 of Multipath TCP, obsoleting v0 as specified in RFC 6824, through clarifications and modifications primarily driven by deployment experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8684"/>
          <seriesInfo name="DOI" value="10.17487/RFC8684"/>
        </reference>
        <reference anchor="MPQUIC-DRAFT">
          <front>
            <title>Multipath Extension for QUIC</title>
            <author fullname="Yanmei Liu" initials="Y." surname="Liu">
              <organization>Alibaba Inc.</organization>
            </author>
            <author fullname="Yunfei Ma" initials="Y." surname="Ma">
              <organization>Uber Technologies Inc.</organization>
            </author>
            <author fullname="Quentin De Coninck" initials="Q." surname="De Coninck">
              <organization>University of Mons (UMONS)</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>UCLouvain and Tessares</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <date day="22" month="January" year="2025"/>
            <abstract>
              <t>   This document specifies a multipath extension for the QUIC protocol
   to enable the simultaneous usage of multiple paths for a single
   connection.

Discussion Venues

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

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

   Source for this draft and an issue tracker can be found at
   https://github.com/quicwg/multipath.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-12"/>
        </reference>
        <reference anchor="LAG" target="https://en.wikipedia.org/wiki/Link_aggregation">
          <front>
            <title>Link aggregation</title>
            <author>
              <organization>Wikipedia</organization>
            </author>
            <date year="2025" month="January" day="09"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 779?>

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

-->

</rfc>
