rfc-9779

Performance Measurement for Segment Routing Networks with the MPLS Data Plane

R. Gandhi (Editor), C. Filsfils, D. Voyer, S. Salsano, M. Chen
date2025-05 streamIETF areartg wgmpls statusPROPOSED STANDARD pages20 canonicalhttps://www.rfc-editor.org/rfc/rfc9779 doi10.17487/RFC9779
This document specifies the application of the MPLS loss and delay measurement techniques (originally defined in RFCs 6374, 7876, and 9341) within Segment Routing (SR) networks that utilize the MPLS data plane, also referred to as Segment Routing over MPLS (SR-MPLS). SR enables the forwarding of packets through an ordered list of instructions, known as segments, which are imposed at the ingress node. This document defines the procedures and extensions necessary to perform accurate measurement of packet loss and delay in SR-MPLS environments, ensuring that network operators can effectively measure and maintain the quality of service across their SR-based MPLS networks. This includes coverage of links and end-to-end SR-MPLS paths, as well as SR Policies.

Extracted elements (29)

design-rationale §7

For ECMP delay measurement on SR-MPLS Policies, different entropy label values (per RFC 6790) are used in query and response messages to influence the ECMP path taken via the forwarding plane's hashing function, enabling per-ECMP-path delay measurement without modifying the SR label stack.

mpls, routing, measurement

design-rationale §5.5

RFC 9341 states that block number synchronization requires time-synchronized nodes. This document clarifies that time synchronization is not necessary because the block number on the responder can be synchronized based on the received LM query messages, broadening applicability.

mpls, measurement

design-rationale §6.1

The Return Path TLV and Block Number TLV are defined in the 'Mandatory TLV Type' registry space of RFC 6374 rather than as optional TLVs, ensuring that responders which do not support them return a standardized error (0x17) rather than silently ignoring them, preserving measurement integrity.

mpls, routing

design-rationale §6.1

The Return Path TLV is designed so the querier, not the responder, maintains return path state. By including the return path in the query message, the responder avoids creating and maintaining per-session state containing return paths, simplifying responder implementation especially in ECMP environments.

mpls, routing

interoperability-note §9

The procedures defined in this document are backwards compatible with RFC 6374 at both querier and responder. If the responder does not support the new Mandatory TLV Types (Return Path TLV=5 or Block Number TLV=6), it will return Error 0x17 (Unsupported Mandatory TLV Object) per RFC 6374.

mpls, routing

normative-requirement §4.1.2 MUST

For delay and/or loss measurement for an end-to-end SR-MPLS Policy, query messages MUST be transmitted for every Segment List (SL) of the SR-MPLS Policy Candidate-Path, using a separate session for each SL.

mpls, routing, measurement

normative-requirement §4.2.2 MUST

For two-way measurement of links, the Control Code in the query message MUST be set to In-band Response Requested, and the response is sent back on the same incoming link where the query was received.

mpls, measurement

normative-requirement §4.1.1 MUST

In each Label Stack Entry (LSE) in the MPLS label stack of query messages, the TTL value MUST be set to 255 per the Generalized TTL Security Mechanism (RFC 5082). This applies to both link and SR-MPLS Policy query messages.

mpls, routing, security

normative-requirement §3 MUST

In SR-MPLS networks, query messages defined in RFC 6374 MUST be transmitted along the same path as the data traffic for links and end-to-end SR-MPLS paths. This ensures collection of both transmit and receive timestamps for delay measurement and traffic counters for loss measurement.

mpls, routing, measurement

normative-requirement §6.1.1 MUST

The label entries in the MPLS Label Stack Sub-TLV MUST be in network order. The responder that supports this Sub-TLV MUST process only the first Return Path Sub-TLV and MUST send the response message back on the return path specified therein.

mpls, routing

normative-requirement §5.4 MUST

The PSID (Path Segment Identifier) MUST be carried in the received data packet for the traffic flow under measurement in order to account for received traffic on the egress node of the SR-MPLS Policy.

mpls, routing, measurement

normative-requirement §6.2 MUST

The querier MUST only insert one Block Number TLV in the query message; the responder that supports this TLV MUST only insert one Block Number TLV in the response message and MUST return the first Block Number TLV from the query, ignoring others. The R flag MUST be clear in the query and set in the response.

mpls, measurement

normative-requirement §6.1 MUST

The querier MUST only insert one Return Path TLV in a query message. The responder that supports this TLV MUST process only the first Return Path TLV, send the response on the specified return path, and MUST NOT add a Return Path TLV in the response message.

mpls, routing

normative-requirement §6.1 MUST

The Return Path TLV Length field MUST NOT be 0 or 1. The Return Path TLV MUST carry only one Return Path Sub-TLV, and the MPLS Label Stack in that Sub-TLV MUST contain at least one MPLS Label.

mpls, routing

normative-requirement §4.1.2 MUST

When a responder receives a Destination Address TLV (Type 129) in a query message and supports it, it MUST return Control Code 0x1 (Success) if it is the intended destination, or Error 0x15 (Invalid Destination Node Identifier) otherwise.

mpls, routing

normative-requirement §4.2.1 MUST

When the querier sets an IP address and UDP port in the URO TLV for one-way measurement, the response message MUST be sent to that IP address and port. Additionally, the Control Code in the query message MUST be set to Out-of-band Response Requested.

mpls, measurement

protocol-element §5.1

ACH channel type values used for SR-MPLS measurement messages: 0x000C for delay measurement, 0x000A for direct loss measurement, 0x000B for inferred loss measurement, 0x000D for combined direct loss/delay, and 0x000E for combined inferred loss/delay. The same ACH values apply to both links and end-to-end SR-MPLS Policies.

mpls, measurement

protocol-element §6.2

The Block Number TLV (Type 6) is a new Mandatory TLV carried in LM query and response messages to correlate traffic counters using an 8-bit Block Number. The R flag distinguishes query direction (R=0, Counters 1&2) from response direction (R=1, Counters 3&4).

mpls, measurement

protocol-element §4.2.3

The loopback measurement mode for SR-MPLS is implemented by setting the Response flag to 1 and adding a Loopback Request object (Type 3). The label stack carries both forward and reverse path labels; the responder does not punt packets to the control plane but simply returns the query to the querier.

mpls, routing, measurement

protocol-element §6.1.1

The MPLS Label Stack Sub-TLV (Type 1) is carried within the Return Path TLV and contains a stack of 32-bit LSEs (20-bit label, 8-bit TTL, 3-bit TC, 1-bit S). It may carry a stack of labels or a Binding SID label of the return SR-MPLS Policy.

mpls, routing

protocol-element §6.1

The Return Path TLV (Type 5) is a new Mandatory TLV defined in the 'MPLS Loss/Delay Measurement TLV Object' registry. It is carried in query messages to instruct the responder to send the response message on a specified return path, avoiding the need for the responder to maintain per-session return path state.

mpls, routing

registry §12

IANA has allocated two new Mandatory TLV Types in the 'MPLS Loss/Delay Measurement TLV Object' registry within the 'Generic Associated Channel (G-ACh) Parameters' registry group: Type 5 (Return Path) and Type 6 (Block Number), both referencing RFC 9779.

mpls, registry

registry §12

IANA has created a new 'Return Path Sub-TLV Types' registry. Allocation policies: values 1-175 require IETF Review, 176-239 are First Come First Served, 240-251 are Experimental Use, 252-254 are Private Use. Currently defined: 0 (Reserved), 1 (MPLS Label Stack of the Return Path), 255 (Reserved).

mpls, registry

security-consideration §11

The procedure is intended for deployment within a single operator administrative domain. The querier, responder, forward path, and return paths are all operator-provisioned for probe sessions, and the operator is assumed to have verified the integrity of these paths.

mpls, security

security-consideration §11

The Return Path TLV may be exploited for address spoofing: a query message could carry a return path destined to a node not local at the querier. To mitigate this, responders may drop query messages when they cannot verify the return path destination is local at the querier, using the Source Address TLV and operator-provisioned ACLs.

mpls, security, routing

wire-format §5.4

For loss measurement using PSID, the query message label stack carries SR-MPLS SL labels (Label(1)..Label(n)), then the PSID label, then GAL (value 13, S=1), then the ACH. Different PSID values can be used per Candidate-Path or per SL for granular loss accounting.

mpls, routing, measurement

wire-format §6.2

The Block Number TLV format is 4 bytes total: 1-byte Type (=6), 1-byte Length (=2), a Reserved field with R flag (7 reserved bits + 1-bit R flag), and an 8-bit Block Number. The fixed Length of 2 bytes covers the Reserved/R-flag byte and the Block Number byte.

mpls, measurement

wire-format §4.1.2

The query message label stack for an SR-MPLS Policy ends with GAL (value 13) at the bottom (S=1), followed by the ACH with 4-bit 0001, Version, Reserved, and Channel Type fields per RFC 5586. For loopback mode, forward path labels are followed by reverse path labels before the GAL.

mpls, routing

wire-format §6.1

The Return Path TLV format consists of a 1-byte Type (=5), 1-byte Length (equal to Sub-TLV length plus Reserved field in bytes, MUST NOT be 0 or 1), a 2-byte Reserved field, followed by the Return Path Sub-TLV.

mpls, routing