QUIC Working Group W. Gage
Internet-Draft Unaffiliated
Intended status: Experimental 3 March 2025
Expires: 4 September 2025
QUIC Path Management for Multi-Path Configurations
draft-gage-quic-pathmgmt-03
Abstract
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.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 4 September 2025.
Copyright Notice
Copyright (c) 2025 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document.
Gage Expires 4 September 2025 [Page 1]
Internet-Draft QUIC Path Management March 2025
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Conventions . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Notation . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Multipath Management . . . . . . . . . . . . . . . . . . . . 5
3. High-level Overview . . . . . . . . . . . . . . . . . . . . . 6
4. Path Identification . . . . . . . . . . . . . . . . . . . . . 7
5. Path Activation and Removal . . . . . . . . . . . . . . . . . 8
5.1. Path Activation . . . . . . . . . . . . . . . . . . . . . 8
5.2. Path Migration . . . . . . . . . . . . . . . . . . . . . 9
5.3. Path Removal . . . . . . . . . . . . . . . . . . . . . . 10
6. Path Maintenance . . . . . . . . . . . . . . . . . . . . . . 10
6.1. Path Transmission Status . . . . . . . . . . . . . . . . 10
6.2. Path Status . . . . . . . . . . . . . . . . . . . . . . . 11
6.3. Path Precedence . . . . . . . . . . . . . . . . . . . . . 12
6.4. Path Congestion Control . . . . . . . . . . . . . . . . . 12
6.5. Path RTT Measurements . . . . . . . . . . . . . . . . . . 12
6.6. Path Maximum UDP Payload Size . . . . . . . . . . . . . . 13
7. Address Advertisement . . . . . . . . . . . . . . . . . . . . 13
8. Packet Scheduling . . . . . . . . . . . . . . . . . . . . . . 15
9. Packet Loss Detection and Recovery . . . . . . . . . . . . . 15
10. Path Management Connection Errors . . . . . . . . . . . . . . 16
11. Path Management Frame Types . . . . . . . . . . . . . . . . . 16
11.1. PM_CHALLENGE frame . . . . . . . . . . . . . . . . . . . 17
11.2. PM_CHALLENGE_RESPONSE frame . . . . . . . . . . . . . . 17
11.3. PM_STATUS frame . . . . . . . . . . . . . . . . . . . . 18
11.4. PM_ABANDON frame . . . . . . . . . . . . . . . . . . . . 19
11.5. PM_ADDRESS frame . . . . . . . . . . . . . . . . . . . . 20
12. Path Parameters . . . . . . . . . . . . . . . . . . . . . . . 20
12.1. Path Parameter Groups . . . . . . . . . . . . . . . . . 21
12.2. Path Configuration Group Parameters . . . . . . . . . . 21
12.2.1. Parameter_pathPayloadSize . . . . . . . . . . . . . 21
12.2.2. Parameter_pathInitialRTT . . . . . . . . . . . . . . 22
12.2.3. Parameter_pathInitialCWND . . . . . . . . . . . . . 22
12.3. Path Operations Group Parameters . . . . . . . . . . . . 22
12.3.1. Parameter_pathMaxData . . . . . . . . . . . . . . . 22
12.3.2. Parameter_pathPrecedence . . . . . . . . . . . . . . 23
12.3.3. Parameter_pathStatus . . . . . . . . . . . . . . . . 23
12.4. Parameter_empty . . . . . . . . . . . . . . . . . . . . 23
12.5. Path Parameter List Examples . . . . . . . . . . . . . . 23
13. Transport Parameters . . . . . . . . . . . . . . . . . . . . 24
13.1. max_active_paths . . . . . . . . . . . . . . . . . . . . 24
13.2. disable_path_migration . . . . . . . . . . . . . . . . . 25
14. Security Considerations . . . . . . . . . . . . . . . . . . . 25
15. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26
15.1. New QUIC transport parameters . . . . . . . . . . . . . 26
Gage Expires 4 September 2025 [Page 2]
Internet-Draft QUIC Path Management March 2025
15.2. New QUIC frame types . . . . . . . . . . . . . . . . . . 27
15.3. PMQUIC path parameters . . . . . . . . . . . . . . . . . 27
15.4. PMQUIC path status . . . . . . . . . . . . . . . . . . . 27
15.5. PMQUIC path abandon reasons . . . . . . . . . . . . . . 28
15.6. PMQUIC transport error codes . . . . . . . . . . . . . . 28
16. References . . . . . . . . . . . . . . . . . . . . . . . . . 28
16.1. Normative References . . . . . . . . . . . . . . . . . . 28
16.2. Informative References . . . . . . . . . . . . . . . . . 29
Appendix A. Comparison to MPQUIC-DRAFT . . . . . . . . . . . . . 29
A.1. Connection identifiers . . . . . . . . . . . . . . . . . 29
A.2. Connection identifier sequence numbers . . . . . . . . . 30
A.3. Application data packet number spaces . . . . . . . . . . 30
A.4. AEAD encryption nonce . . . . . . . . . . . . . . . . . . 30
A.5. Multipath-specific connection management frames and
procedures . . . . . . . . . . . . . . . . . . . . . . . 30
A.6. Zero-length connection identifiers . . . . . . . . . . . 31
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 31
1. Introduction
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.
Model (A) is like multipath TCP [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 [LAG].
In model (B), a TCP segment can be transmitted in an IP datagram over
any of the links in the LAG.
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.
Gage Expires 4 September 2025 [Page 3]
Internet-Draft QUIC Path Management March 2025
+--------------+ +--------------+
| Connection X | | Connection Y |
+------+-------+ +------+-------+
| |
+------+-----------------+-------+
| PATH MANAGEMENT |
+---+----------+--------------+--+
| | |
+----+---+ +----+---+ +----+---+
| Path 1 | | Path 2 | ... | Path n |
+--------+ +--------+ +--------+
Figure 1: Model (B)
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 [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.
1.1. Conventions
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 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
1.2. Terminology
This document uses the following terminology:
path: 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 [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.
PathID: path identifier.
PMQUIC: path-managed QUIC (as defined in this document).
Gage Expires 4 September 2025 [Page 4]
Internet-Draft QUIC Path Management March 2025
session: a collection of QUIC connections and paths used to exchange
QUIC packets between two endpoints.
1.3. Notation
This document uses the field notation defined in [RFC9000] and quoted
below:
| Individual fields use the following notational conventions, with
| all lengths in bits:
|
| x (A): Indicates that x is A bits long
|
| x (i): Indicates that x holds an integer value using the variable
| length encoding described in [RFC9000], Section 16
|
| 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
|
| 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
|
| 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
|
| x (L)...: Indicates that x is repeated zero or more times and that
| each instance has a length of L
2. Multipath Management
Connection migration to a new path is already supported in [RFC9000].
While [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.
PMQUIC is based on several basic design points:
* Re-use the mechanisms of [RFC9000] as much as possible. In
particular, PMQUIC uses path validation based on [RFC9000] and re-
uses all of the connection management, key management and loss
recovery procedures of [RFC9000].
Gage Expires 4 September 2025 [Page 5]
Internet-Draft QUIC Path Management March 2025
* Use the same packet header formats as [RFC9000] to avoid
differences between multipath and non-multipath traffic over a
particular path.
* Do not modify frame formats defined in [RFC9000]; if necessary,
define new frame types for path management operations.
PMQUIC changes the path management mechanisms specified in Section 9
of [RFC9000]:
* allow simultaneous transmission of non-probing frames on multiple
paths;
* continue using an existing path even if non-probing frames have
been received on another path;
* manage the removal of paths that have been abandoned or lost.
In addition, PMQUIC changes several QUIC path-specific procedures
described in [RFC9002]:
* congestion control;
* RTT measurements;
* path maximum payload size discovery.
3. High-level Overview
PMQUIC enables the simultaneous use of different paths to exchange
non-probing QUIC frames. This differs from [RFC9000] where the
connection migration procedure selects only one path to exchange non-
probing frames.
A PMQUIC session between endpoints starts with a standard QUIC
handshake over an initial (default) path. As indicated by [RFC9000],
an endpoint MUST NOT attempt to activate a new path before the
handshake is confirmed. The endpoints use a new max_active_paths
transport parameter during the initial cryptographic handshake to
negotiate the use of path management capabilities (Section 13.1).
The max_active_paths transport parameter indicates support for path
management operations and limits the maximum number of active paths
that can be used between the endpoints.
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.2 of [RFC9000].
Gage Expires 4 September 2025 [Page 6]
Internet-Draft QUIC Path Management March 2025
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.
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.
PMQUIC operations do not change the basic operations described in
[RFC9000]. In particular, _none_ of the following procedures
described in [RFC9000] are affected by the use of multiple paths:
* connection management (e.g. the use of NEW_CONNECTION_ID frames
and subsequent rotation of connection identifiers);
* key management (e.g. use of key phase bit) and derivation of AEAD
parameters;
* packet loss detection and loss recovery (e.g. using type 0x02 ACK
frames).
However, changes to [RFC9002] procedures are required to deal with
path-dependent characteristics such as path MTU size, RTT and
congestion.
4. Path Identification
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.
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.
Gage Expires 4 September 2025 [Page 7]
Internet-Draft QUIC Path Management March 2025
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.
A received path identifier that is invalid MUST be treated as a
connection error using transport error code Error_pmInvalidPathID
(Section 10).
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 (Section 8). Similarly,
an incoming QUIC packet received over any path will be processed
according to [RFC9000], as though it had been received over a uni-
path transport between the QUIC endpoints.
5. Path Activation and Removal
PMQUIC provides mechanisms for adding new paths to a session and for
removing unused or unusable paths from a session.
5.1. Path Activation
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 (Section 11.1).
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 (Section 7) or may be discovered by a mechanism that is
outside the scope of this document.
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
([RFC9000], Section 19.15).
Gage Expires 4 September 2025 [Page 8]
Internet-Draft QUIC Path Management March 2025
The peer endpoint confirms use of the new path by sending a
PM_CHALLENGE_RESPONSE frame (Section 11.2) that echoes the received
nonce and provides a local PathID as a reference for the path
(Section 4). Again, it is RECOMMENDED that the peer endpoint use a
new destination connection identifier in the QUIC packet containing
the PM_CHALLENGE_RESPONSE frame.
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 disable_path_migration transport parameter
in the initial cryptographic handshake (Section 13.2). An endpoint
using a zero-length connection identifier MUST NOT include a
disable_path_migration transport parameter in the initial handshake.
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 (Section 12.3.3)
set to Status_NotAvailable.
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.
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.
5.2. Path Migration
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 [RFC9000],
Section 9.3, the endpoint detecting the new path MUST initiate path
validation (Section 5.1) by sending a PM_CHALLENGE frame to the peer
endpoint.
The endpoint detecting the new path SHOULD send non-probing frames
over a different path, if available (Section 8), 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.
Gage Expires 4 September 2025 [Page 9]
Internet-Draft QUIC Path Management March 2025
5.3. Path Removal
To terminate communications over an established path, an endpoint
sends a PM_ABANDON frame (Section 11.4) 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.
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.
The reason for abandoning a path may be one of the following
(Section 15.5):
* Reason_Failing indicating that the path is failing (e.g. the path
is experiencing excessive transmission errors);
* Reason_Lost indicating that the path is no longer available to
the endpoint;
* Reason_NoAck indicating that the endpoint failed to received ACKs
for QUIC packets transmitted over the path;
* Reason_Timeout indicating that a idle timer expired with no QUIC
packets transmitted or received over the path;
* Reason_MaxData indicating that the maximum amount of data allowed
to be sent on the path has been reached.
* Reason_Unspecified indicating that the reason is unknown or is
otherwise unspecified.
6. Path Maintenance
Once a path between endpoints has been validated, PMQUIC provides
mechanisms for defining and updating operational parameters related
to the path.
6.1. Path Transmission Status
An endpoint may indicate its initial path transmission status in a
PM_CHALLENGE frame (Section 11.1) or in the corresponding
PM_CHALLENGE_RESPONSE frame (Section 11.2). By default, the initial
path transmission status is Status_Available (Section 6.2).
Gage Expires 4 September 2025 [Page 10]
Internet-Draft QUIC Path Management March 2025
Subsequently, an initiating endpoint may send a PM_STATUS frame
(Section 11.3) to inform its peer endpoint of the desired status of a
path (Section 6.2) and, optionally, to indicate the precedence
assigned to the path by the initiating endpoint (Section 6.3).
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.
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.
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.
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.
A PM_STATUS frame may be transmitted over any path that is active
(and allowable) at the time of transmission.
6.2. Path Status
The status of a path may be set to one of the following:
* Status_Available indicates that the path may used for
transmission of a QUIC packet.
* Status_Backup indicates that the path should not be used for
transmission of a QUIC packet if another path exists in a
Status_Available state. This path should only be used if no
other path exists in a Status_Available state.
* Status_Blocked indicates that the initiating endpoint has reached
the maximum transmitted data limit imposed by a previously
received Parameter_pathMaxData path parameter (Section 12.3.1).
The receiving endpoint may increase the maximum data limit (and
change the status of the path) using a subsequent PATH_STATUS
frame (Section 11.3).
* Status_NotAvailable indicates that the path should not be used
Gage Expires 4 September 2025 [Page 11]
Internet-Draft QUIC Path Management March 2025
for transmission of a QUIC packet. Unlike an abandoned path
(Section 5.3), a path with Status_NotAvailable may be moved to
Status_Available or Status_Backup when and if allowed by
operational considerations.
6.3. Path Precedence
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:
* in general, a path with a higher precedence value is preferred
over a path with a lower precedence value;
* multiple paths may be assigned the same precedence value;
* congestion control may override precedence to allow transmission
over a less congested path;
Each endpoint independently determines the precedence of a path and
communicates that precedence to its peer (Section 12.3.2). The use
of the local and peer path precedence values by an endpoint is beyond
the scope of this document.
6.4. Path Congestion Control
Congestion control is applied per path, as described in [RFC9002],
Section 7. QUIC packets sent on one path do not affect the
congestion state of another path.
An endpoint may include a Parameter_pathInitialCWND (Section 12.2.3)
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.
If a Parameter_pathInitialCWND 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.
The mechanism used by an endpoint to determine the congestion window
for a path is beyond the scope of this document.
6.5. Path RTT Measurements
Round-Trip Time measurements are performed per path, as described in
[RFC9002], Section 5. In general, different paths may exhibit
different RTTs.
Gage Expires 4 September 2025 [Page 12]
Internet-Draft QUIC Path Management March 2025
An endpoint may include a Parameter_pathInitialRTT (Section 12.2.2)
in the list of path parameters in a PM_CHALLENGE or
PM_CHALLENGE_RESPONSE frame to provide an initial estimate of the
path RTT.
If a Parameter_pathInitialRTT 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.
The mechanism used by an endpoint to determine an initial estimate of
the path RTT is beyond the scope of this document.
6.6. Path Maximum UDP Payload Size
By default, the maximum UDP payload size for a path is the
max_udp_payload_size transport parameter defined in [RFC9000],
Section 18.2.
The maximum UDP payload size for a path can be adjusted by including
a Parameter_pathPayloadSize (Section 12.2.1) in the list of path
parameters in a PM_CHALLENGE frame (Section 11.1) or in a
PM_CHALLENGE_RESPONSE frame (Section 11.2).
If a Parameter_pathPayloadSize is included in a PM_CHALLENGE frame,
this value takes precedence over the max_udp_payload_size transport
parameter.
If a Parameter_pathPayloadSize 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.
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.
7. Address Advertisement
In [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.
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:
Gage Expires 4 September 2025 [Page 13]
Internet-Draft QUIC Path Management March 2025
* an IP address advertisement may be used by a multi-homed server to
direct client traffic through an alternate IP subnet for load
balancing;
* an IP address advertisement may be used by a multi-homed client
for improved resiliency;
* an IP address advertisement may be used by a dual-stack endpoint
to enable a new path using a different IP address family;
* an IP address advertisement may be used by a receiving endpoint in
its route selection process.
An IP address advertisement is conveyed in a PM_ADDRESS frame
(Section 11.5). 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
(Section 6.1).
A PM_ADDRESS frame also includes a path status (Section 6.2)
indicating the _intended_ 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:
* Status_Available indicating that the resulting path may be used
for transmission of a QUIC packet;
* Status_Backup indicating that the resulting path should be used
as a backup path (Section 8);
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 Status_NotAvailable. If
a path has been established using the advertised address, the path
MUST be abandoned (Section 5.3) before sending an address
advertisement with this status.
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.
Gage Expires 4 September 2025 [Page 14]
Internet-Draft QUIC Path Management March 2025
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 Section 5.1.
However an endpoint receiving a PM_ADDRESS frame is not required to
make use of the advertised information.
8. Packet Scheduling
A QUIC packet may be scheduled for transmission over a given path
only if:
* the path status is either Status_Available or Status_Backup
(Section 6.2);
* there is no outstanding PM_ABANDON frame that is pending
acknowledgement;
* transmission of the packet does not increase the number of bytes-
in-flight beyond the congestion window of the path (Section 6.4);
* transmission of the packet does not cause the path maximum data
limit to be exceeded (Section 12.3.1).
An endpoint SHOULD schedule a transmission over a path with
Status_Available. If this is not possible, the endpoint MAY attempt
a transmission over a path with Status_Backup.
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 (Section 6.3).
Precedence should only used to distinguish between paths with the
same status -- i.e. between paths with Status_Available or between
paths with Status_Backup.
9. Packet Loss Detection and Recovery
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
[RFC9002], Section 6.1.
Gage Expires 4 September 2025 [Page 15]
Internet-Draft QUIC Path Management March 2025
Timer-based loss detection ([RFC9002], Section 6.1.2) must recognise
that different paths may exhibit different RTTs (Section 6.5) and
SHOULD adjust the packet loss time threshold to accommodate those
differences. Probe timeout ([RFC9002], Section 6.2) requires
derivation of a PTO period that should also accommodate the different
RTT that may be experienced over different paths.
The mechanism used to accommodate those differences in path RTT is
beyond the scope of this document.
10. Path Management Connection Errors
This document extends the QUIC Transport Error Codes of [RFC9000],
Section 22.5 with the following values (Section 15.6):
* Error_pmExceededMaxData indicates that the endpoint received more
data than allowed over a path (Section 12.3.1).
* Error_pmInvalidPathID indicates the endpoint received an invalid
path identifier (Section 4) -- e.g. a duplicated path
identifier, an unknown path identifier, or the identifier of an
abandoned path.
* Error_pmPathParameter indicates that a received path parameter
(Section 12) 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.
* Error_pmProtocolViolation 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.
Path management connection errors MUST be processed according to
[RFC9000], Section 11.1.
11. Path Management Frame Types
PMQUIC procedures utilise five new QUIC frame types -- PM_CHALLENGE,
PM_CHALLENGE_RESPONSE, PM_STATUS, PM_ABANDON and PM_ADDRESS:
* all five path management frame types are ack-eliciting;
* PM_CHALLENGE and PM_CHALLENGE_RESPONSE frames are "probing
frames";
* PM_STATUS, PM_ABANDON and PM_ADDRESS are "non-probing frames";
Gage Expires 4 September 2025 [Page 16]
Internet-Draft QUIC Path Management March 2025
* path management frame types MUST be conveyed in 1-RTT packets and
MUST NOT be conveyed in 0-RTT packets.
11.1. PM_CHALLENGE frame
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 [RFC9000].
A PM_CHALLENGE frame (Figure 2) includes the following fields:
PM_CHALLENGE Frame {
Type (i) = Type_pmChallenge,
Initiator_PathID (i),
Nonce (64),
Path_Parameter (8..) ...,
}
Figure 2: PM_CHALLENGE Frame Fields
* Type is set to Type_pmChallenge (Section 15.2).
* Initiator_PathID is the PathID assigned to the path by the
endpoint sending the PM_CHALLENGE frame (Section 4).
* Nonce is an unpredictable nonce generated by the endpoint for use
in this instance of a PM_CHALLENGE frame (Section 5.1).
* Path_Parameter is a list of path parameters (Section 12). A path
parameter may be a path configuration group parameter
(Section 12.2) or a path operations group parameter
(Section 12.3), or the list may be an empty list
(Section 12.4). Path parameters not included in the
PM_CHALLENGE frame assume their default values.
The QUIC packet containing the PM_CHALLENGE frame MUST include
PADDING frames to the maximum UDP payload size as defined by
Parameter_pathPayloadSize (Section 12.2.1), if included in the path
parameters, or by the default value if not included in the path
parameters.
11.2. PM_CHALLENGE_RESPONSE frame
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
[RFC9000].
Gage Expires 4 September 2025 [Page 17]
Internet-Draft QUIC Path Management March 2025
A PM_CHALLENGE_RESPONSE frame (Figure 3) includes the following
fields:
PM_CHALLENGE_RESPONSE Frame {
Type (i) = Type_pmChallengeResponse,
Initiator_PathID (i),
Responder_PathID (i),
Nonce (64),
Path_Parameter (8..) ...,
}
Figure 3: PM_CHALLENGE_RESPONSE Frame Fields
* Type is set to Type_pmChallengeResponse (Section 15.2).
* Initiator_PathID is the PathID included in the corresponding
PM_CHALLENGE frame (Section 11.1).
* Responder_PathID is the PathID assigned to the path by the
endpoint sending the PM_CHALLENGE_RESPONSE frame (Section 4).
* Nonce is the nonce included in the corresponding PM_CHALLENGE
frame (Section 11.1).
* Path_Parameter is a list of path parameters (Section 12). A path
parameter may be a path configuration group parameter
(Section 12.2) or a path operations group parameter
(Section 12.3), or the list may be an empty list
(Section 12.4). Path parameters not included in the
PM_CHALLENGE_RESPONSE frame assume the (default) values
indicated by the corresponding PM_CHALLENGE frame.
The QUIC packet containing the PM_CHALLENGE_RESPONSE frame MUST
include PADDING frames to the maximum UDP payload size as defined by
Parameter_pathPayloadSize (Section 12.2.1), if specified, or by the
default value, if not specified.
11.3. PM_STATUS frame
An endpoint uses a PM_STATUS frame to signal a change in a path
parameter.
A PM_STATUS frame (Figure 4) includes the following fields:
Gage Expires 4 September 2025 [Page 18]
Internet-Draft QUIC Path Management March 2025
PM_STATUS Frame {
Type (i) = Type_pmStatus,
Receiver_PathID (i),
Path_Status_Sequence_Number (i),
Path_Parameter (8..) ...,
}
Figure 4: PM_STATUS Frame Fields
* Type is set to Type_pmStatus (Section 15.2).
* Receiver_PathID is the PathID assigned to the path by the peer
endpoint receiving the PM_STATUS frame.
* Path_Status_Sequence_Number is the sending endpoint's sequence
number for this PM_STATUS frame (Section 6.1).
* Path_Parameter is a list of path parameters (Section 12). A path
parameter MUST be a path operations group parameter
(Section 12.3) (i.e. a path parameter MUST NOT be a path
configuration group parameter or an empty list parameter).
Note that the status of the path defaults to Status_Available unless
explicitly defined by including a Parameter_pathStatus
(Section 12.3.3) in the list of path parameters.
11.4. PM_ABANDON frame
An endpoint uses a PM_ABANDON frame to to indicate that it will no
longer use the indicated path.
A PM_ABANDON frame (Figure 5) includes the following fields:
PM_ABANDON Frame {
Type (i) = Type_pmAbandon,
Receiver_PathID (i),
Reason_Code (i)
}
Figure 5: PM_ABANDON Frame Fields
* Type is set to Type_pmAbandon (Section 15.2).
* Receiver_PathID is the PathID assigned to the path by the peer
endpoint receiving the PM_ABANDON frame.
* Reason_Code is the reason that the path is being abandoned
(Section 5.3).
Gage Expires 4 September 2025 [Page 19]
Internet-Draft QUIC Path Management March 2025
11.5. PM_ADDRESS frame
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.
A PM_ADDRESS frame (Figure 6) includes the following fields:
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),
}
Figure 6: PM_ADDRESS Frame Fields
* Type is set to Type_pmAddress (Section 15.2).
* Path_Status_Sequence_Number is the sending endpoint's path status
sequence number for this PM_ADDRESS frame (Section 6.1).
* Path_Status is the intended status of a path associated with the
IP address (Section 7).
* Port_Number is a non-zero UDP port number.
* Path_Address_Family 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.
* Path_Address is the binary 4- or 16-byte value of the advertised
IP address, in network (big-endian) byte-order.
12. Path Parameters
Each path parameter in a list of path parameters includes the
following fields (Figure 7):
Path_Parameter {
End_of_List (1),
Path_Parameter_ID (7),
Path_Parameter_Value (i),
}
Figure 7: Path Parameter Encoding
Gage Expires 4 September 2025 [Page 20]
Internet-Draft QUIC Path Management March 2025
* End_of_List 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.
* Path_Parameter_ID uniquely identifies the path parameter
(Section 15.3).
* Path_Parameter_Value is a variable-length integer value assigned
to the path parameter.
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 Error_pmPathParameter (Section 10).
12.1. Path Parameter Groups
Path parameters are organised into three groups -- a path
configuration group, a path operations group, and an empty list
group:
* the path configuration group (Section 12.2) consists of parameters
used to configure a new path;
* the path operations group (Section 12.3) consists of parameters
used to modify the operational state of a path;
* the empty list group (Section 12.4) consists of a special
parameter used to indicate that there are no path parameters in a
parameter list.
The group associated with a path parameter is determined by by the
value of the Path_Parameter_ID (Section 15.3).
12.2. Path Configuration Group Parameters
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.
12.2.1. Parameter_pathPayloadSize
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 (Section 6.6), 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.
Gage Expires 4 September 2025 [Page 21]
Internet-Draft QUIC Path Management March 2025
The default value for this parameter is the max_udp_payload_size
transport parameter defined in [RFC9000], Section 18.2.
12.2.2. Parameter_pathInitialRTT
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 ([RFC9002], Section 5).
The default value for this parameter is the kInitialRtt value defined
in [RFC9002], Appendix A.2.
12.2.3. Parameter_pathInitialCWND
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 [RFC9000], Section 9.4,
"implementations are advised to be cautious when using saved CC
parameters on a new path". Further guidance is provided in [RESUME].
There is no default value for this parameter.
12.3. Path Operations Group Parameters
A path operations group parameter MAY be included in the path
parameter list of a PM_CHALLENGE, PM_CHALLENGE_RESPONSE or PM_STATUS
frame.
12.3.1. Parameter_pathMaxData
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.
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.
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.
Gage Expires 4 September 2025 [Page 22]
Internet-Draft QUIC Path Management March 2025
By default, the maximum amount of data that can be sent on the path
is not limited.
If included in a PM_STATUS frame (Section 11.3), 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.
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 Error_pmExceededMaxData
(Section 10).
12.3.2. Parameter_pathPrecedence
The path precedence parameter is a variable-length integer value that
indicates the precedence of the path to be used in path selection
algorithms (Section 6.3).
There is no default value for this parameter. It is RECOMMENDED that
precedence values be limited to the range 0..100.
12.3.3. Parameter_pathStatus
The path status parameter is a variable-length integer value that
indicates the current status of the path (Section 6.1).
The default value for this parameter is Status_Available.
12.4. Parameter_empty
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.
The empty list parameter MUST include a Path_Parameter_ID field but
MUST NOT include a Path_Parameter_Value field. The End_of_List field
MUST be set to 0 (zero).
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.
12.5. Path Parameter List Examples
Empty list:
Gage Expires 4 September 2025 [Page 23]
Internet-Draft QUIC Path Management March 2025
0x0
Single-entry list:
0x03
0x04
Multiple-entry list:
0x83
0x04
0x02
0x10
13. Transport Parameters
PMQUIC defines two new transport parameters that may be encoded in
the initial cryptographic handshake ([RFC9000], Section 7.4) --
max_active_paths and disable_path_migration. Endpoints MUST NOT
remember the value of the PMQUIC transport parameters they received
for use in a subsequent connection ([RFC9000], Section 7.4.1).
13.1. max_active_paths
An endpoint signals support for PMQUIC procedures by including a
max_active_paths transport parameter in the initial handshake.
max_active_paths (Section 15.1) 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
max_active_paths values.
If a max_active_paths 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.
To enable use of PMQUIC procedures, both endpoints in a session MUST
include a valid max_active_paths transport parameter in the initial
handshake. If either of the endpoints does not include the
max_active_paths transport parameter, then the endpoints MUST NOT use
any of the PMQUIC procedures or frames defined in this document.
Gage Expires 4 September 2025 [Page 24]
Internet-Draft QUIC Path Management March 2025
13.2. disable_path_migration
An endpoint can prevent use of a connection identifier on more than
one path by including a disable_path_migration transport parameter in
the initial handshake.
disable_path_migration (Section 15.1) is a zero-length value where
presence of the transport parameter indicates migration is disabled.
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.
If migration is not disabled (i.e. the disable_path_migration
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.
Migration is disabled if at least one of the endpoints includes a
disable_path_migration transport parameter in the initial
cryptographic handshake.
Receiving a disable_path_migration transport parameter without also
receiving a max_active_paths transport parameter MUST be treated as a
connection error using transport error code Error_pmProtocolViolation
(Section 10).
14. Security Considerations
PMQUIC does not change the operating principles of [RFC9000] and, as
such, is subject to the same security considerations as [RFC9000],
Section 21.
Specific security considerations, associated with the use of path
management procedures, include:
* resource usage: 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 max_active_paths transport parameter (Section 13).
* data amplification: The simultaneous use of multiple paths
Gage Expires 4 September 2025 [Page 25]
Internet-Draft QUIC Path Management March 2025
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 [RFC9000], the anti-amplification limits
of [RFC9000], Section 8.2 are also applicable to PMQUIC.
Further, an endpoint can limit the maximum amount of data that
can be sent on a particular path through the PMQUIC
Parameter_pathMaxData path parameter (Section 12.3.1). 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.
* address spoofing: PMQUIC uses a path validation mechanism
(Section 5.1) similar to [RFC9000] to prevent address spoofing
over a new path by a malicious intermediate node.
* correlation of activity across multiple paths: 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
(Section 5.1). As discussed in [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 disable_path_migration transport
parameter in the initial cryptographic handshake
(Section 13.2).
15. IANA Considerations
If approved, the following _provisional_ entries will be added to the
IANA QUIC Protocol Registry [IANA].
| The values in this section of the Internet Draft are
| preliminary, for testing purposes only.
15.1. New QUIC transport parameters
This document defines two new (preliminary) QUIC transport parameters
(Section 13):
* max_active_paths (0x21c7948988209ada)
* disable_path_migration (0x33186fc5d0c7cac3)
Gage Expires 4 September 2025 [Page 26]
Internet-Draft QUIC Path Management March 2025
15.2. New QUIC frame types
This document defines five new (preliminary) QUIC frame types:
* Type_pmChallenge (0x1ae4ea418795ad60) -- Section 11.1
* Type_pmChallengeResponse (0x12c5938576430d3f) -- Section 11.2
* Type_pmStatus (0x06614d6b80a40a24) -- Section 11.3
* Type_pmAbandon (0x2dde9db26610d041) -- Section 11.4
* Type_pmAddress (0x198a357e6fe41403) -- Section 11.5
15.3. PMQUIC path parameters
This document defines seven PMQUIC path parameters:
* Parameter_empty (0x00) -- Section 12.4
* Parameter_pathMaxData (0x01) -- Section 12.3.1
* Parameter_pathPrecedence (0x02) -- Section 12.3.2
* Parameter_pathStatus (0x03) -- Section 12.3.3
* Parameter_pathPayloadSize (0x40) -- Section 12.2.1
* Parameter_pathInitialRTT (0x41) -- Section 12.2.2
* Parameter_pathInitialCWND (0x42) -- Section 12.2.3
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.
15.4. PMQUIC path status
This document defines four PMQUIC path status values:
* Status_NotAvailable (0x01)
* Status_Blocked (0x02)
* Status_Backup (0x03)
* Status_Available (0x04)
Gage Expires 4 September 2025 [Page 27]
Internet-Draft QUIC Path Management March 2025
15.5. PMQUIC path abandon reasons
This document defines five PMQUIC path abandon reason codes:
* Reason_Unspecified (0x00)
* Reason_Failing (0x01)
* Reason_Lost (0x02)
* Reason_NoAck (0x03)
* Reason_Timeout (0x04)
* Reason_MaxData (0x05)
15.6. PMQUIC transport error codes
This document extends the QUIC Transport Error Codes of [RFC9000],
Section 22.5 with the following (preliminary) values:
* Error_pmExceededMaxData (0x165ee2f99e0d09fa)
* Error_pmInvalidPathID (0x07c0907b4c18170f)
* Error_pmPathParameter (0x0170789441bc48aa)
* Error_pmProtocolViolation (0x297abbb8bb0b3afa)
16. References
16.1. Normative References
[IANA] Internet Assigned Numbers Authority, "QUIC Protocol
Registry", .
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, .
Gage Expires 4 September 2025 [Page 28]
Internet-Draft QUIC Path Management March 2025
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021,
.
[RFC9002] Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection
and Congestion Control", RFC 9002, DOI 10.17487/RFC9002,
May 2021, .
16.2. Informative References
[LAG] Wikipedia, "Link aggregation",
.
[MPQUIC-DRAFT]
Liu, Y., Ma, Y., De Coninck, Q., Bonaventure, O., Huitema,
C., and M. Kühlewind, "Multipath Extension for QUIC", Work
in Progress, Internet-Draft, draft-ietf-quic-multipath-12,
22 January 2025, .
[MPTCP] Ford, A., Raiciu, C., Handley, M., Bonaventure, O., and C.
Paasch, "TCP Extensions for Multipath Operation with
Multiple Addresses", RFC 8684, DOI 10.17487/RFC8684, March
2020, .
[RESUME] Kuhn, N., Stephan, E., Fairhurst, G., Secchi, R., and C.
Huitema, "Convergence of Congestion Control from Retained
State", Work in Progress, Internet-Draft, draft-ietf-
tsvwg-careful-resume-15, 28 February 2025,
.
Appendix A. Comparison to [MPQUIC-DRAFT]
| This section is provided for information only.
[MPQUIC-DRAFT] diverges from the principles of [RFC9000] in a number
of areas, as described below.
A.1. Connection identifiers
[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.
Gage Expires 4 September 2025 [Page 29]
Internet-Draft QUIC Path Management March 2025
By contrast, [RFC9000] (and PMQUIC) does not associate a connection
identifier with a path -- i.e. connection identifiers are independent
of paths.
A.2. Connection identifier sequence numbers
[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.
By contrast [RFC9000] (and PMQUIC) define a single connection
identifier sequence number space.
A.3. Application data packet number spaces
[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.
By contrast [RFC9000] (and PMQUIC) define a single application data
packet number space.
A.4. AEAD encryption nonce
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, [MPQUIC-DRAFT] changes the AEAD calculation by using the
path identifier as part of AEAD encryption nonce.
By contrast [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.
A.5. Multipath-specific connection management frames and procedures
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).
Gage Expires 4 September 2025 [Page 30]
Internet-Draft QUIC Path Management March 2025
By contrast, [RFC9000] operations are not affected by the use of
PMQUIC procedures which obviates the need for multipath-specific
connection management procedures and frames.
A.6. Zero-length connection identifiers
Because [MPQUIC-DRAFT] uses connection identifiers to identify paths,
a zero-length connection identifier cannot be used with multipath
operations.
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.
Author's Address
Bill Gage
Unaffiliated
Ottawa
Canada
Email: billgage.ietf@gmail.com
Gage Expires 4 September 2025 [Page 31]