RFC 9779
Performance Measurement for Segment Routing Networks with the MPLS Data Plane
RFC 9779: Performance Measurement for Segment Routing Networks with the MPLS Data Plane π
Okay bestie, the title block first π This is an IETF document on the Standards Track (ISSN 2070-1721), dated May 2025. The authors are R. Gandhi (Ed.) and C. Filsfils and D. Voyer at Cisco Systems, Inc., S. Salsano at Universita di Roma "Tor Vergata", and M. Chen at Huawei. The header doesn't list any Obsoletes or Updates entries, so this doesn't replace or change any earlier RFC, per the header π«Ά
Abstract β¨
Okay so this doc takes the MPLS loss and delay measurement tools from RFCs 6374, 7876, and 9341 and makes them work inside Segment Routing (SR) networks that run on the MPLS data plane, which people call Segment Routing over MPLS (SR-MPLS) π¦ SR lets packets follow an ordered list of instructions called segments, and those get stuck on at the ingress node. The whole point is giving operators the procedures and extensions they need to measure packet loss and delay accurately, so they can keep an eye on quality of service across their SR-MPLS networks π It covers links, end-to-end SR-MPLS paths, and SR Policies, obsessed.
Status of This Memo β¨
This is an Internet Standards Track document πΈ
It's a product of the Internet Engineering Task Force (IETF), it reflects what the IETF community agreed on, it got public review, and the Internet Engineering Steering Group (IESG) approved it for publication. More info on Internet Standards is in Section 2 of RFC 7841.
Info about the current status, any errata, and how to give feedback lives at https://www.rfc-editor.org/info/rfc9779 π§
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) as they stand on the publication date. Read those carefully, because they spell out your rights and restrictions for this doc. Code Components pulled out of this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as described in the Revised BSD License π
Table of Contents π
1. Introduction
2. Conventions Used in This Document
2.1. Requirements Language
2.2. Abbreviations
2.3. Reference Topology
3. Overview
4. Query and Response Messages
4.1. Query Message for Links and SR-MPLS Policies
4.1.1. Query Message for Links
4.1.2. Query Message for SR-MPLS Policies
4.2. Response Message for Links and SR-MPLS Policies
4.2.1. One-Way Measurement Mode
4.2.2. Two-Way Measurement Mode
4.2.3. Loopback Measurement Mode
5. Delay and Loss Measurement
5.1. Delay Measurement Message
5.2. Loss Measurement Message
5.3. Combined Loss/Delay Measurement Message
5.4. Counters
5.5. Block Number for Counters
6. TLV Extensions
6.1. Return Path TLV Extension
6.1.1. Return Path Sub-TLV Extension
6.2. Block Number TLV Extension
7. ECMP for SR-MPLS Policies
8. Extended TE Link Metrics Advertisement
9. Backwards Compatibility
10. Manageability Considerations
11. Security Considerations
12. IANA Considerations
13. References
13.1. Normative References
13.2. Informative References
Acknowledgments
Contributors
Authors' Addresses
1. Introduction π¦
Segment Routing (SR), as specified in [RFC8402], uses the source routing paradigm and works with both the Multiprotocol Label Switching (MPLS) and Internet Protocol version 6 (IPv6) data planes. Those are called Segment Routing over MPLS (SR-MPLS) and Segment Routing over IPv6 (SRv6). SR takes advantage of Equal-Cost Multipaths (ECMPs) between source and transit nodes, between transit nodes, and between transit and destination nodes. SR Policies, defined in [RFC9256], steer traffic along specific, user-defined paths using a list of segments π
A full SR Performance Measurement toolset is one of the essentials if you want to measure network performance for Service Level Agreements (SLAs) π«Ά
[RFC6374] defines protocol mechanisms for measuring packet loss, one-way and two-way delay, and related metrics like delay-variation in MPLS networks, all done efficiently and accurately π₯
[RFC7876] defines how to send and process out-of-band responses over a UDP return path when query messages from [RFC6374] come in. Those mechanisms can be applied to SR-MPLS networks β¨
[RFC9341] defines the Alternate-Marking Method using Block Numbers as a data correlation mechanism for packet loss measurement πΈ
This document uses the mechanisms from [RFC6374], [RFC7876], and [RFC9341] for delay and loss measurements in SR-MPLS networks. That covers links, end-to-end SR-MPLS paths, and SR Policies π
This document extends [RFC6374] by defining Return Path and Block Number TLVs (see Section 6) for delay and loss measurement in SR-MPLS networks. These TLVs can also be used in MPLS Label Switched Paths (LSPs) [RFC3031]. However, the procedure for delay and loss measurement of MPLS LSPs is outside the scope of this document π§
2. Conventions Used in This Document β¨
2.1. Requirements Language π
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. Lowercase versions don't count, bestie π
2.2. Abbreviations π
- ACH: Associated Channel Header
- DM: Delay Measurement
- ECMP: Equal-Cost Multipath
- G-ACh: Generic Associated Channel
- GAL: Generic Associated Channel Label
- LM: Loss Measurement
- LSE: Label Stack Entry
- MPLS: Multiprotocol Label Switching
- PSID: Path Segment Identifier
- SID: Segment Identifier
- SL: Segment List
- SR: Segment Routing
- SR-MPLS: Segment Routing over MPLS
- TC: Traffic Class
- TE: Traffic Engineering
- TTL: Time to Live
- URO: UDP Return Object
2.3. Reference Topology π
In the reference topology in Figure 1, the querier node Q1 starts a query message, and the responder node R1 sends back a response message for the query it got. The response message may go back to Q1 on the same path (same set of links and nodes), or on a different path in the reverse direction from the path taken toward R1 π¦
T1 is a transmit timestamp and T4 is a receive timestamp, and both get added by Q1. T2 is a receive timestamp and T3 is a transmit timestamp, and both get added by R1 π
SR is enabled with the MPLS data plane on Q1 and R1. Q1 and R1 are connected via a channel (Section 2.9.1 of [RFC6374]). That channel may be a directly connected link enabled with MPLS (Section 2.9.1 of [RFC6374]) or an SR-MPLS path [RFC8402]. The link may be a physical interface, a virtual link, a Link Aggregation Group (LAG) [IEEE802.1AX], or a LAG member link. The SR-MPLS path may be an SR-MPLS Policy [RFC9256] on node Q1 (called the "head-end") with the destination at node R1 (called the "tail-end") π
T1 T2
/ \
+-------+ Query +-------+
| | - - - - - - - - - ->| |
| Q1 |=====================| R1 |
| |<- - - - - - - - - - | |
+-------+ Response +-------+
\ /
T4 T3
Querier Responder
Figure 1: Reference Topology
3. Overview πΈ
In this document, the procedures from [RFC6374], [RFC7876], and [RFC9341] are used for delay and loss measurement in SR-MPLS networks. Specifically, the one-way, two-way, and round-trip delay measurements described in Section 2.4 of [RFC6374] get elaborated further for SR-MPLS networks. Similarly, the packet loss measurement procedures in Section 2.2 of [RFC6374] get extended for SR-MPLS networks π₯
Packet loss measurement using the Alternate-Marking Method from [RFC9341] may use the Block Number for data correlation. That happens with the Block Number TLV extension defined in this document β¨
In SR-MPLS networks, the query messages defined in [RFC6374] MUST be sent along the same path as the data traffic for links and end-to-end SR-MPLS paths. This way, delay measurement collects both transmit and receive timestamps, and loss measurement collects both transmit and receive traffic counters π
If the querier and responder need the same path (same set of links and nodes) in both directions of the measurement, the Return Path TLV extension defined in this document can get that done π§
The performance measurement procedures for links can compute extended Traffic Engineering (TE) metrics for delay and loss, as described here. These metrics get advertised in the network using the routing protocol extensions defined in [RFC7471], [RFC8570], and [RFC8571] π
4. Query and Response Messages β¨
4.1. Query Message for Links and SR-MPLS Policies π¦
4.1.1. Query Message for Links π
The query message, as defined in [RFC6374], gets sent over links for both delay and loss measurement. In each Label Stack Entry (LSE) [RFC3032] in the MPLS label stack, the TTL value MUST be set to 255 [RFC5082] π«Ά
4.1.2. Query Message for SR-MPLS Policies π
okay so bestie, an SR-MPLS Policy Candidate-Path can hold a bunch of Segment Lists (SLs), and each SL is basically a stack of MPLS labels [RFC9256] π§. For delay and/or loss measurement on an end-to-end SR-MPLS Policy, you MUST send query messages for every SL of the Candidate-Path π . The way you do that is by making a separate session for each SL π¦. Every query message in a session carries the SR-MPLS label stack of the Candidate-Path, with the G-ACh Label (GAL) sitting at the bottom of the stack with S=1, like in Figure 2 β¨. And in each LSE in the MPLS label stack, the TTL value MUST be set to 255 [RFC5082] π.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label(1) | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label(n) | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| GAL (value 13) | TC |1| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 1|Version| Reserved | Channel Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Example Query Message Header for an End-to-End SR-MPLS
Policy
The fields 0001, Version, Reserved, and Channel Type shown in Figure 2 are specified in [RFC5586] π.
The SR-MPLS label stack can be empty in the case of a one-hop SR-MPLS Policy with an Implicit NULL label πΈ.
For an SR-MPLS Policy, to make sure the query message gets processed by the intended responder, the Destination Address TLV (Type 129) [RFC6374] containing an address of the responder can be sent in the query messages π«Ά. The responder that supports this TLV MUST return Control Code 0x1 (Success) [RFC6374] if it is the intended destination for the query. Otherwise, it MUST return Error 0x15: Invalid Destination Node Identifier [RFC6374] π.
4.2. Response Message for Links and SR-MPLS Policies π
4.2.1. One-Way Measurement Mode
In one-way measurement mode, as defined in Section 2.4 of [RFC6374], the querier can set the UDP Return Object (URO) TLV in the query message π. That lets the querier receive the out-of-band response message, encapsulated in an IP/UDP header, sent to the IP address and UDP port specified in the URO TLV π¦. The URO TLV (Type 131) is defined in [RFC7876] and includes the UDP-Destination-Port and IP address π. When the querier sets an IP address and a UDP port in the URO TLV, the response message MUST be sent to that IP address, with that IP address as the destination address and the UDP port as the destination port π₯. On top of that, the Control Code in the query message MUST be set to Out-of-band Response Requested [RFC6374] β¨.
4.2.2. Two-Way Measurement Mode
In the two-way measurement mode defined in Section 2.4 of [RFC6374], the response messages SHOULD be sent back one of two ways π: either they go back in-band on the same link, or they go back on the same end-to-end SR-MPLS path (so, the same set of links and nodes) in the reverse direction to the querier πΈ. The point of this is to get accurate two-way delay measurement π§.
For links, the response message as defined in [RFC6374] is sent back on the same incoming link where the query message was received π. In this case, the Control Code in the query message MUST be set to In-band Response Requested [RFC6374] π .
For end-to-end SR-MPLS paths, the responder transmits the response message (see the example in Figure 2) on a specific return SR-MPLS path π¦. In the query message, the querier can ask the responder to send the response message back on a given return path, using the MPLS Label Stack Sub-TLV in the Return Path TLV defined in this document π.
4.2.3. Loopback Measurement Mode
The loopback measurement mode defined in Section 2.8 of [RFC6374] is used to measure round-trip delay for a bidirectional circular path [RFC6374] in SR-MPLS networks π. In this mode for SR-MPLS, the received query messages are not punted out of the fast path in forwarding (i.e., to the slow path or control plane) at the responder π. In other words, the responder does not process the payload or generate response messages π. The loopback function simply returns the received query message to the querier without responder modifications [RFC6374] π.
The loopback mode is done by generating "queries" with the Response flag set to 1 and adding the Loopback Request object (Type 3) [RFC6374] π§. In query messages, the label stack, as shown in Figure 3, carries both the forward and reverse path labels in the MPLS header π. The GAL is still carried at the bottom of the label stack (with S=1) π«.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label(1) | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label(n) | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reverse Path Label(1)| TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reverse Path Label(n)| TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| GAL (value 13) | TC |1| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 1|Version| Reserved | Channel Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: Example Query Message Header for an End-to-End SR-MPLS
Policy in the Loopback Measurement Mode
5. Delay and Loss Measurement β±οΈ
5.1. Delay Measurement Message
As defined in [RFC6374], MPLS Delay Measurement (DM) query and response messages use the Associated Channel Header (ACH) with value 0x000C for delay measurement π·. That value identifies the message type and the message payload that follow the ACH, as defined in Section 3.2 of [RFC6374] π«§. For delay measurement, the same ACH value is used for both links and end-to-end SR-MPLS Policies π.
5.2. Loss Measurement Message
The Loss Measurement (LM) protocol can do two distinct kinds of loss measurement, as described in Section 2.9.8 of [RFC6374] π΅οΈββοΈ.
- In the inferred mode, LM measures the loss of specially generated test messages to infer the approximate data plane loss level. Inferred mode LM provides only approximate loss accounting π€.
- In the direct mode, LM directly measures data plane packet loss. Direct mode LM provides perfect loss accounting but may require hardware support π οΈ.
As defined in [RFC6374], MPLS LM query and response messages use the ACH (with value 0x000A for direct loss measurement or value 0x000B for inferred loss measurement) π―. This value identifies the message type and message payload that follow the ACH, as defined in Section 3.1 of [RFC6374] π. For loss measurement, the same ACH value is used for both links and end-to-end SR-MPLS Policies π¦.
5.3. Combined Loss/Delay Measurement Message
As defined in [RFC6374], combined LM/DM query and response messages use the ACH (with value 0x000D for direct loss and delay measurement or value 0x000E for inferred loss and delay measurement) π. The value identifies the message type and the message payload that follows the ACH, as defined in Section 3.3 of [RFC6374] π«. For combined loss and delay measurement, the same ACH value is used for both links and end-to-end SR-MPLS Policies π§ββοΈ.
5.4. Counters
The Path Segment Identifier (PSID) [RFC9545] MUST be carried in the received data packet for the traffic flow under measurement, so that received traffic gets counted on the egress node of the SR-MPLS Policy π. In the direct mode, the PSID in the received query message (as shown in Figure 4) can be used to associate the received traffic counter on the responder, to detect the transmit packet loss for the end-to-end SR-MPLS Policy π΅οΈββοΈ.
In the inferred mode, the PSID in the received query messages (as shown in Figure 4) can be used to count the received query messages on the responder, to detect the transmit packet loss for an end-to-end SR-MPLS Policy π.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label(1) | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label(n) | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PSID | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| GAL (value 13) | TC |1| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 1|Version| Reserved | Channel Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: Example with the PSID for SR-MPLS Policy
The fields 0001, Version, Reserved, and Channel Type shown in Figure 4 are specified in [RFC5586] π§Ύ.
Different values of the PSID can be used per Candidate-Path to account for received traffic and to measure packet loss at the Candidate-Path level π€οΈ. Similarly, different values of the PSID can be used per Segment List (SL) of the Candidate-Path for accounting received traffic, to measure packet loss at the SL level π―. The same value of the PSID can be used for all SLs of the SR-MPLS Policy to measure packet loss at the SR-MPLS Policy level π.
5.5. Block Number for Counters
okay bestie, so the packet loss measurement using the Alternate-Marking Method in [RFC9341] π¦ may use the block number for data correlation on the traffic flow under measurement. As defined in Section 3.1 of [RFC9341], the block number splits the traffic flow into consecutive blocks, and then you count the packets sent and received in each block for loss measurement. it's giving organization π¦β¨
As described in Section 4.3 of [RFC9341], a protocol-based distributed solution can be used to swap counter values between the nodes for loss measurement. This document goes deeper into that solution using the LM messages defined in [RFC6374] π
The querier node gives a block number to each block of data packets in the traffic flow under measurement. The querier counts how many packets it transmitted in each block. How the block number gets assigned is a local decision on the querier, and it's outside the scope of this document π
As an example, the querier can use the procedure defined in [RFC9714] to alternate-mark the data packets of the traffic flow under measurement. The responder counts how many packets it received in each block, based on the marking in the received data packets. The querier and responder keep separate sets of transmit and receive counters for each marking. The marking can serve as a block number, or a separate block number can get incremented whenever the marking changes. Other methods can be defined for alternate marking of the data packets of the traffic flow under measurement, to assign a block number for the counters π
The LM query and response messages defined in [RFC6374] are used to measure packet loss for the block of data packets sent with the previous marking, while the data packets carry the alternate marking. To be specific, LM query and response messages carry the transmit and receive counters (which are not incrementing right now) along with their block number, so loss can be correlated π
Section 4.3 of [RFC9341] specifies that: "The assumption of this BN mechanism is that the measurement nodes are time synchronized." However, this is not necessary, because the responder's block number can be synchronized based on the received LM query messages. no clocks needed, iykyk π§
6. TLV Extensions β¨
6.1. Return Path TLV Extension
In the two-way measurement mode, the responder may send the response message on a specific return path, for example in an ECMP environment π€οΈ The querier can ask, in the query message, for the responder to send the response message back on a given return path (e.g., a co-routed bidirectional path). This lets the responder avoid creating and maintaining extra state (containing return paths) for the sessions. so efficient, main character energy π
The querier may not be directly reachable from the responder in a network. In this case, the querier MUST send its reachability path information to the responder using the Return Path TLV. no skipping this step, bestie π ββοΈ
[RFC6374] defines query and response messages that can include one or more optional TLVs. This document defines the Return Path TLV (5) to carry return path information in query messages. The Return Path TLV is specific to a measurement session. The format of the Return Path TLV is shown in Figure 5 below:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 5 | Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Return Path Sub-TLV |
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5: Return Path TLV
The Length is a one-byte field and is equal to the length of the Return Path Sub-TLV and the Reserved field in bytes. The Length MUST NOT be 0 or 1. β οΈ
The Return Path TLV is defined in the "Mandatory TLV Type" registry space [RFC6374]. The querier MUST only insert one Return Path TLV in the query message. The responder that supports this TLV MUST only process the first Return Path TLV and ignore the other Return Path TLVs if present. The responder that supports this TLV also MUST send the response message back on the return path specified in the Return Path TLV. The responder also MUST NOT add a Return Path TLV in the response message. rules, rules, rules π
The Reserved field MUST be set to 0 and MUST be ignored on the receive side. π«Ά
6.1.1. Return Path Sub-TLV Extension
The Return Path TLV holds a Sub-TLV to carry the return path. The format of the MPLS Label Stack Sub-TLV is shown in Figure 6. The label entries in the Sub-TLV MUST be in network order. The MPLS Label Stack Sub-TLV in the Return Path TLV is of the following type:
- Type (value 1): MPLS Label Stack of the Return Path
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=1 | Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label(1) | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label(n) | TC |1| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 6: MPLS Label Stack Sub-TLV in the Return Path TLV
The MPLS label stack is a list of 32-bit LSEs that includes a 20-bit label value, an 8-bit TTL value, a 3-bit TC value, and a 1-bit End of Stack (S) field. An MPLS Label Stack Sub-TLV may carry a stack of labels or a Binding SID label [RFC8402] of the Return SR-MPLS Policy. π§©
The Length is a one-byte field and is equal to the length of the label stack field and the Reserved field in bytes. The Length MUST NOT be 0 or 1.
The Return Path TLV MUST carry only one Return Path Sub-TLV. The MPLS Label Stack in the Return Path Sub-TLV MUST contain at least one MPLS Label. The responder that supports this Sub-TLV MUST only process the first Return Path Sub-TLV and ignore the other Return Path Sub-TLVs if present. The responder that supports this Sub-TLV MUST send the response message back on the return path specified in the Return Path Sub-TLV. π
The Reserved field MUST be set to 0 and MUST be ignored on the receive side. π
6.2. Block Number TLV Extension
[RFC6374] defines query and response messages that can include one or more optional TLVs. This document defines the Block Number TLV (6) to carry the (8-bit) Block Number of the traffic counters in the LM query and response messages. The format of the Block Number TLV is shown in Figure 7:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=6 | Length | Reserved |R| Block Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 7: Block Number TLV
The Length is a one-byte field and is equal to 2 bytes.
The Block Number TLV is defined in the "Mandatory TLV Type" registry space [RFC6374]. The querier MUST only insert one Block Number TLV in the query message to identify the Block Number for the traffic counters in the forward direction. The responder that supports this TLV MUST only insert one Block Number TLV in the response message to identify the Block Number for the traffic counters in the reverse direction. The responder also MUST return the first Block Number TLV from the query message and ignore the other Block Number TLVs if present. The Block Number TLV is specific to a measurement session. The R flag is used to indicate the query and response message direction associated with the Block Number. The R flag MUST be clear in the query message for the Block Number associated with Counter 1 and Counter 2, and set in the response message for the Block Number associated with Counter 3 and Counter 4. π―
The Reserved field MUST be set to 0 and MUST be ignored on the receive side. πΈ
7. ECMP for SR-MPLS Policies π
The SLs of an SR-MPLS Policy can have ECMPs between the source and transit nodes, between transit nodes, and between transit and destination nodes. Using a node-SID [RFC8402] in the SLs of an SR-MPLS Policy can result in ECMP paths. On top of that, using an Anycast-SID [RFC8402] in the SLs of an SR-MPLS Policy can result in ECMP paths via transit nodes that are part of that anycast group. The query and response messages get sent so they traverse different ECMP paths, which lets you measure the delay of each ECMP path of an SL π¦
The forwarding plane has various hashing functions available to forward packets on specific ECMP paths. For end-to-end SR-MPLS Policy delay measurement, different entropy label values [RFC6790] can be used in query and response messages, to take advantage of the hashing function in the forwarding plane and influence the ECMP path they take π§
The considerations for loss measurement for different ECMP paths of an SR-MPLS Policy are outside the scope of this document. π
8. Extended TE Link Metrics Advertisement π£
The extended TE metrics for link delay (namely, average delay, minimum delay, maximum delay, and delay-variance) and packet loss can be computed using the performance measurement procedures described in this document, and then advertised in the routing domain as follows:
- For OSPF, IS-IS, and the Border Gateway Protocol - Link State (BGP-LS), the protocol extensions defined in [RFC7471], [RFC8570], and [RFC8571], respectively, are used for advertising the extended TE link delay and loss metrics in the network.
- The extended TE link delay and loss metrics are advertised for Layer-2 LAG bundle member links in OSPF [RFC9356] and IS-IS [RFC8668] using the same protocol extensions defined in [RFC7471] and [RFC8570], respectively.
- The advertised delay-variance metric is computed as Packet Delay Variation (PDV), as described in Section 4.2 of [RFC5481]. π
9. Backwards Compatibility π
The procedures defined in this document are backwards compatible with the procedures defined in [RFC6374] at both the querier and the responder. If the responder does not support the new Mandatory TLV Types defined in this document, it will return Error 0x17: Unsupported Mandatory TLV Object as per [RFC6374]. so nobody gets left on read π
10. Manageability Considerations π οΈ
The manageability considerations described in Section 7 of [RFC6374] and Section 6 of [RFC7876] are applicable to this specification. π
11. Security Considerations β¨
Okay, security is serious business, but it's also lowkey my fave part ππ The security stuff in [RFC6374], [RFC7471], [RFC8570], [RFC8571], [RFC7876], and [RFC9341] still applies to everything in this doc, so go read those too π«Ά
This procedure is meant to be deployed inside a single operator administrative domain π That means the operator is the one setting up the querier node, the responder node, the forward path, and the return paths for the probe session π οΈ It's also assumed that the operator has already verified the integrity of the forward and return paths for the probe packets β
β οΈ Bestie, the Return Path TLV extensions defined here may be used for potential address spoofing π For example, a query message could carry a return path whose destination isn't local at the querier. To stop that kind of thing, the responder may drop the query messages when it can't figure out whether the return path's destination is local at the querier. The querier may send a proper source address in the Source Address TLV, and the responder can use that to make the call, for example by checking the access control list the operator provisioned π§±
12. IANA Considerations π
IANA has allocated values for the following Mandatory TLV Types [RFC6374] from the "MPLS Loss/Delay Measurement TLV Object" registry, which lives inside the "Generic Associated Channel (G-ACh) Parameters" registry group ποΈ
+======+==============+===========+
| Code | Description | Reference |
+======+==============+===========+
| 5 | Return Path | RFC 9779 |
+------+--------------+-----------+
| 6 | Block Number | RFC 9779 |
+------+--------------+-----------+
Table 1: MPLS Loss/Delay
Measurement TLV Types
The Block Number TLV is carried in the query and response messages, and the Return Path TLV is carried in the query messages π¨
IANA also created a brand new "Return Path Sub-TLV Types" registry π All code points are allocated per the registration policies in Table 2 (see [RFC8126]) π
+===========+=========================+===========+
| Value | Description | Reference |
+===========+=========================+===========+
| 1 - 175 | IETF Review | RFC 9779 |
+-----------+-------------------------+-----------+
| 176 - 239 | First Come First Served | RFC 9779 |
+-----------+-------------------------+-----------+
| 240 - 251 | Experimental Use | RFC 9779 |
+-----------+-------------------------+-----------+
| 252 - 254 | Private Use | RFC 9779 |
+-----------+-------------------------+-----------+
Table 2: Return Path Sub-TLV Types Registry
This document defines the following values in the "Return Path Sub-TLV Types" registry π¦
+=======+=====================================+===========+
| Value | Description | Reference |
+=======+=====================================+===========+
| 0 | Reserved | RFC 9779 |
+-------+-------------------------------------+-----------+
| 1 | MPLS Label Stack of the Return Path | RFC 9779 |
+-------+-------------------------------------+-----------+
| 255 | Reserved | RFC 9779 |
+-------+-------------------------------------+-----------+
Table 3: Return Path Sub-TLV Types
13. References π
13.1. Normative References
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. - [RFC6374] Frost, D. and S. Bryant, "Packet Loss and Delay Measurement for MPLS Networks", RFC 6374, DOI 10.17487/RFC6374, September 2011,
<https://www.rfc-editor.org/info/rfc6374>. - [RFC7876] Bryant, S., Sivabalan, S., and S. Soni, "UDP Return Path for Packet Loss and Delay Measurement for MPLS Networks", RFC 7876, DOI 10.17487/RFC7876, July 2016,
<https://www.rfc-editor.org/info/rfc7876>. - [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017,
<https://www.rfc-editor.org/info/rfc8174>. - [RFC9341] Fioccola, G., Ed., Cociglio, M., Mirsky, G., Mizrahi, T., and T. Zhou, "Alternate-Marking Method", RFC 9341, DOI 10.17487/RFC9341, December 2022,
<https://www.rfc-editor.org/info/rfc9341>.
13.2. Informative References
- [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol Label Switching Architecture", RFC 3031, DOI 10.17487/RFC3031, January 2001,
<https://www.rfc-editor.org/info/rfc3031>. - [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001,
<https://www.rfc-editor.org/info/rfc3032>. - [RFC5082] Gill, V., Heasley, J., Meyer, D., Savola, P., Ed., and C. Pignataro, "The Generalized TTL Security Mechanism (GTSM)", RFC 5082, DOI 10.17487/RFC5082, October 2007,
<https://www.rfc-editor.org/info/rfc5082>. - [RFC5481] Morton, A. and B. Claise, "Packet Delay Variation Applicability Statement", RFC 5481, DOI 10.17487/RFC5481, March 2009,
<https://www.rfc-editor.org/info/rfc5481>. - [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., "MPLS Generic Associated Channel", RFC 5586, DOI 10.17487/RFC5586, June 2009,
<https://www.rfc-editor.org/info/rfc5586>. - [RFC6790] Kompella, K., Drake, J., Amante, S., Henderickx, W., and L. Yong, "The Use of Entropy Labels in MPLS Forwarding", RFC 6790, DOI 10.17487/RFC6790, November 2012,
<https://www.rfc-editor.org/info/rfc6790>. - [RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S. Previdi, "OSPF Traffic Engineering (TE) Metric Extensions", RFC 7471, DOI 10.17487/RFC7471, March 2015,
<https://www.rfc-editor.org/info/rfc7471>. - [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>. - [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, July 2018,
<https://www.rfc-editor.org/info/rfc8402>. - [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward, D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE) Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March 2019,
<https://www.rfc-editor.org/info/rfc8570>. - [RFC8571] Ginsberg, L., Ed., Previdi, S., Wu, Q., Tantsura, J., and C. Filsfils, "BGP - Link State (BGP-LS) Advertisement of IGP Traffic Engineering Performance Metric Extensions", RFC 8571, DOI 10.17487/RFC8571, March 2019,
<https://www.rfc-editor.org/info/rfc8571>. - [RFC8668] Ginsberg, L., Ed., Bashandy, A., Filsfils, C., Nanduri, M., and E. Aries, "Advertising Layer 2 Bundle Member Link Attributes in IS-IS", RFC 8668, DOI 10.17487/RFC8668, December 2019,
<https://www.rfc-editor.org/info/rfc8668>. - [RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, A., and P. Mattes, "Segment Routing Policy Architecture", RFC 9256, DOI 10.17487/RFC9256, July 2022,
<https://www.rfc-editor.org/info/rfc9256>. - [RFC9356] Talaulikar, K., Ed. and P. Psenak, "Advertising Layer 2 Bundle Member Link Attributes in OSPF", RFC 9356, DOI 10.17487/RFC9356, January 2023,
<https://www.rfc-editor.org/info/rfc9356>. - [RFC9545] Cheng, W., Ed., Li, H., Li, C., Ed., Gandhi, R., and R. Zigler, "Path Segment Identifier in MPLS-Based Segment Routing Networks", RFC 9545, DOI 10.17487/RFC9545, February 2024,
<https://www.rfc-editor.org/info/rfc9545>. - [RFC9714] Cheng, W., Ed., Min, X., Ed., Zhou, T., Dai, J., and Y. Peleg, "Encapsulation for MPLS Performance Measurement with the Alternate-Marking Method", RFC 9714, DOI 10.17487/RFC9714, February 2025,
<https://www.rfc-editor.org/info/rfc9714>. - [IEEE802.1AX] IEEE, "IEEE Standard for Local and Metropolitan Area Networks - Link Aggregation", IEEE Std 802.1AX-2020, DOI 10.1109/IEEESTD.2020.9105034, May 2020,
<https://doi.org/10.1109/IEEESTD.2020.9105034>.
Acknowledgments π«Ά
The authors wanna thank Thierry Couture and Ianik Semco π¬ for the convos about use cases for performance measurement in segment routing networks. Big thanks to Patrick Khordoc, Ruby Lin, and Haowei Shi π for implementing the mechanisms defined in this document. The authors also want to thank Greg Mirsky and Xiao Min πΈ for loads of useful comments and suggestions. Stewart Bryant, Sam Aldrin, Tarek Saad, and Rajiv Asati also get a shoutout π for their review comments.
Thanks to Huaimo Chen, Yimin Shen, and Xufeng Liu for the MPLS expert review π§ ; Zhaohui Zhang for the RTGDIR early review π; Tony Li for shepherd's review π; Ned Smith for the SECDIR review π‘οΈ; Roni Even for the Gen-ART review π¨; Marcus Ihlar for the TSV-ART review πΆ; Dhruv Dhody for the OPSDIR review π οΈ; and Gunter Van de Velde, Paul Wouters, Γric Vyncke, Murray Kucherawy, John Scudder, and Roman Danyliw for the IESG review π
Contributors π
Sagar Soni Cisco Systems, Inc. Email: sagsoni@cisco.com
Zafar Ali Cisco Systems, Inc. Email: zali@cisco.com
Pier Luigi Ventre CNIT Italy Email: pierluigi.ventre@cnit.it
Authors' Addresses π¦
Rakesh Gandhi (editor) Cisco Systems, Inc. Canada Email: rgandhi@cisco.com
Clarence Filsfils Cisco Systems, Inc. Email: cfilsfil@cisco.com
Daniel Voyer Cisco Systems, Inc. Canada Email: davoyer@cisco.com
Stefano Salsano Universita di Roma "Tor Vergata" Italy Email: stefano.salsano@uniroma2.it
Mach(Guoyi) Chen Huawei Email: mach.chen@huawei.com
π¦ where this page comes from
- ietf: rfc9779 2025-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms