RFC 9545
Path Segment Identifier in MPLS-Based Segment Routing Networks
RFC 9545: Path Segment Identifier in MPLS-Based Segment Routing Networks β¨
okay bestie, let's get into this one π π RFC 9545 is a Standards Track document from the IETF, dated February 2024 (ISSN 2070-1721). It's written by W. Cheng (Ed.) of China Mobile, H. Li of China Mobile, C. Li (Ed.) of Huawei Technologies, R. Gandhi of Cisco Systems, Inc., and R. Zigler of Broadcom. The title block doesn't list anything it obsoletes or updates, so it's a fresh standalone spec π¦
Internet Engineering Task Force (IETF) W. Cheng, Ed.
Request for Comments: 9545 H. Li
Category: Standards Track China Mobile
ISSN: 2070-1721 C. Li, Ed.
Huawei Technologies
R. Gandhi
Cisco Systems, Inc.
R. Zigler
Broadcom
February 2024
Abstract
okay so the big idea πΈ A Segment Routing (SR) path gets identified by its SR segment list. The catch is that you can't just use a subset of those segments to tell two paths apart, because they can be partially congruent (basically, they overlap and share pieces) π Path identification is a must-have for stuff like performance measurement and end-to-end 1+1 path protection, so it's kind of a big deal β¨
In an SR over MPLS (SR-MPLS) data plane, the egress node can't figure out which SR path a packet took from the label stack alone. Why? Because the segment identifiers get removed from the label stack as the packet moves through the network π
So this document defines a Path Segment Identifier (PSID) to identify an SR path on the egress node of that path. iconic fix, no cap π
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9545.
Copyright Notice
Copyright (c) 2024 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. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.
Table of Contents π§
1. Introduction
1.1. Requirements Language
1.2. Abbreviations and Terms
2. Path Segment
2.1. Equal-Cost Multipath (ECMP) Considerations
3. Use Cases
3.1. PSID for Performance Measurement
3.2. PSID for Bidirectional SR Paths
3.3. PSID for End-to-End Path Protection
3.4. Nesting of PSIDs
4. Security Considerations
5. IANA Considerations
6. References
6.1. Normative References
6.2. Informative References
Acknowledgements
Contributors
Authors' Addresses
1. Introduction π¦
Segment Routing (SR) [RFC8402] is all about the source-routing paradigm π The source steers packets through a controlled set of instructions called "segments", and it does this by prepending the packet with an SR header. When you're running SR with the MPLS data plane [RFC8660], that SR header shows up as a label stack.
In an SR-MPLS network, when a packet goes down an SR path, the labels in the MPLS label stack get swapped or popped. So by the time the packet reaches the egress node, there may be no label left, or maybe just the last one. Which means the egress node can't use the SR label stack to figure out which SR path the packet came from π
But identifying a path on the egress node is a prerequisite for a bunch of SR-MPLS use cases, like performance measurement (Section 3.1), bidirectional paths (Section 3.2), and end-to-end 1+1 path protection (a Live-Live case) (Section 3.3). Main character energy, honestly π
So this document defines a new segment type called a "Path Segment". A Path Segment uniquely identifies an SR path on the egress node of the path. The egress node MAY use it for path identification π Heads up though: per-path state will be kept on the egress node because of those use cases. In normal cases, the per-path state only lives on the ingress node.
1.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. πβ¨
1.2. Abbreviations and Terms
- MPLS: Multiprotocol Label Switching
- PSID: Path Segment Identifier
- SID: Segment Identifier
- SR: Segment Routing
- SR-MPLS: SR over MPLS
- SR path: A path described by a segment list.
- Sub-Path: A part of a path, which contains a subset of the nodes and links of the path.
2. Path Segment πΈ
A Path Segment is a local segment [RFC8402] that uniquely identifies an SR path on the egress node. A Path Segment Identifier (PSID) is a single label that gets assigned from the Segment Routing Local Block (SRLB) [RFC8402] of the egress node of an SR path π
A PSID gets used to identify a segment list. But, okay, one PSID can identify multiple segment lists in some use cases if needed. For example, one single PSID MAY be used to identify some or all segment lists in a candidate path or an SR policy if an operator would like to aggregate these segment lists in operation.
When a PSID is used, it can be inserted at the ingress node, and it MUST immediately follow the last label of the SR path. In other words, it must be inserted after the routing segment (adjacency, node, or prefix segment) that points to the egress node of the SR path. So a PSID won't be the top label when it's received on an intermediate node of the associated path, but it can be the top label on the penultimate node π§
The TTL value in the MPLS label stack entry containing a PSID can be set to any value except 0. If a PSID is the bottom label, the S bit MUST be set. If the PSID is NOT the bottom label, the S bit MUST be 0.
The egress node MUST pop the PSID. The egress node MAY use the PSID for further processing. For example, when performance measurement is enabled on the SR path, it can trigger packet counting or timestamping π
The addition of the PSID means the egress has to read and process the PSID label on top of its regular processing. That extra work may affect forwarding performance. Behavior relating to the use of explicit null directly preceding the PSID is undefined in this document π
A Generic Associated Channel Label (GAL) MAY be used for Operations, Administration, and Maintenance (OAM) in MPLS networks. As per [RFC5586], when a GAL is used, the Associated Channel Header (ACH) appears immediately after the bottom of the label stack.
The SR path computation needs to know the Maximum SID Depth (MSD) that can be imposed at the ingress node of a given SR path [RFC8664]. This makes sure the SID stack depth of a computed path doesn't go over the number of SIDs the node is capable of imposing. As per [RFC8491], the MSD signals the total number of MPLS labels that can be imposed, and that total includes the PSID π
Here's an example label stack with a PSID, shown in Figure 1:
+--------------------+
| ... |
+--------------------+
| Label 1 |
+--------------------+
| Label 2 |
+--------------------+
| ... |
+--------------------+
| Label n |
+--------------------+
| PSID |
+--------------------+
~ Payload ~
+--------------------+
Figure 1: Label Stack with a PSID
Where:
- The Labels 1 to n are the segment label stack used to direct how to steer the packets along the SR path.
- The PSID identifies the SR path in the context of the egress node of the SR path.
The signaling of the PSID between the egress node, the ingress node, and possibly a centralized controller is out of the scope of this document π
2.1. Equal-Cost Multipath (ECMP) Considerations π¦
If an Entropy Label (EL) is also used on the egress node, as per [RFC6790], the EL and Entropy Label Indicator (ELI) would be placed before the tunnel label. So they don't interfere with the PSID, which sits below them β¨
It's worth noting that with ECMP, whether or not an EL is used, SR packets may be forwarded over multiple paths. In that case the SID list can't directly reflect the actual forwarding path, and the PSID can only identify the SID list rather than the actual forwarding path π
Also, kind of like a Synonymous Flow Label (SFL) [RFC8957], adding a PSID to an existing flow may cause that flow to take a different path through the network under ECMP conditions. That can invalidate certain uses of the PSID, like performance measurement applications. So the considerations for SFLs in Section 5 of [RFC8957] also apply to PSIDs in implementation π
3. Use Cases π
This section describes use cases that can leverage the PSID. The content is for informative purposes, and the detailed solutions might be defined in other documents in the future π§
3.1. PSID for Performance Measurement π
As defined in [RFC7799], performance measurement can be classified into Passive, Active, and Hybrid measurements. Since a PSID is encoded in the SR-MPLS label stack, as shown in Figure 1, existing implementations on the egress node can use a PSID to measure packet counts.
For Passive performance measurement, path identification at the measuring points is the prerequisite. The measuring points (for example, the ingress and egress nodes of the SR path, or a centralized controller) can use a PSID to correlate the packet counts and timestamps from the ingress and egress nodes for a specific SR path. Then packet loss and delay can be calculated for the end-to-end path, respectively πΈ
Furthermore, a PSID can also be used for:
- Active performance measurement for an SR path in SR-MPLS networks, for collecting packet counters and timestamps from the egress node using probe messages.
- In situ OAM [RFC9197] for SR-MPLS, to identify the SR path associated with the in situ data fields in the data packets on the egress node.
- In-band performance measurement for SR-MPLS, to identify the SR path associated with the collected performance metrics.
3.2. PSID for Bidirectional SR Paths β¨
okay so some setups, like mobile backhaul transport networks, need bidirectional paths [RFC6965] π¦ and the path is usually treated as ONE single entity. Both directions share the same fate, so if one direction fails, traffic gets switched in both directions too. MPLS handles this with a co-routed bidirectional Label Switched Path (LSP) and an associated bidirectional LSP [RFC5654] π
In the current SR architecture, an SR path is unidirectional [RFC8402], so it only goes one way πΈ The straightforward move is to bind two unidirectional SR paths into a single bidirectional SR path. PSIDs can then identify and correlate the traffic for those two unidirectional SR paths at both ends of the bidirectional path π
How you actually build bidirectional paths with a PSID is out of scope for this doc. It's covered in a few other documents, like [BIDIR-PATH] and [SR-EXTENSIONS] π
3.3. PSID for End-to-End Path Protection π‘οΈ
For end-to-end 1+1 path protection (aka the Live-Live case), the egress node of the path needs to know which set of paths make up the primary and which ones are the secondaries. That way it can pick the primary path's packets for onward transmission and toss out the packets coming from the secondaries [RFC4426] π
So to do this in SR, each SR path needs a path identifier that is unique at the egress node. For SR-MPLS, that identifier can be the Path Segment label allocated by the egress node π§
The detailed solution for using a PSID in end-to-end 1+1 path protection is out of scope for this document π
3.4. Nesting of PSIDs πͺ
A Binding SID (BSID) [RFC8402] can be used for SID list compression. With a BSID, an end-to-end SR path in a trusted domain can be split into several sub-paths, and each sub-path is identified by its own BSID. Then the end-to-end SR path can be identified by a list of BSIDs, which gives you better scalability β¨
A BSID and a PSID can team up to get both sub-path and end-to-end path monitoring. The reference model for this combo (Figure 2) shows an end-to-end path (A->D) in a trusted domain that spans three subdomains (the Access, Aggregation, and Core domains). It's made up of three sub-paths, one in each subdomain: sub-path (A->B), sub-path (B->C), and sub-path (C->D) π«Ά
The SID list of a sub-path can be written as <SID1, SID2, ..., SIDn, s-PSID>, where the s-PSID is the PSID of that sub-path. Each sub-path is associated with a BSID and an s-PSID π
The SID list of the end-to-end path can be written as <BSID1, BSID2, ..., BSIDn, e-PSID>, where the e-PSID is the PSID of the end-to-end path π₯
Figure 2 shows the details of the label stacks when a PSID and a BSID are used together to support both sub-path and end-to-end path monitoring in a multi-domain scenario π
/--------\ /--------\ /--------\
/ \ / \ / \
A{ Access }B{ Aggregation }C{ Core }D
\ / \ / \ /
\--------/ \--------/ \--------/
sub-path(A->B) sub-path(B->C) sub-path(C->D)
|<--------------->|<-------------->|<-------------->|
E2E Path(A->D)
|<------------------------------------------------->|
+-------------+
~A->B sub-path~
+-------------+ +-------------+
|s-PSID(A->B) | ~B->C sub-path~
+-------------+ +-------------+ +-------------+
| BSID(B->C) | |s-PSID(B->C) | ~C->D sub-path~
+-------------+ +-------------+ +-------------+
| BSID(C->D) | | BSID(C->D) | |s-PSID(C->D) |
+-------------+ +-------------+ +-------------+ +------------+
|e-PSID(A->D) | |e-PSID(A->D) | |e-PSID(A->D) | |e-PSID(A->D)|
+-------------+ +-------------+ +-------------+ +------------+
Figure 2: Nesting of PSIDs
4. Security Considerations π
okay this one is SO important bestie, so read it closely π
A PSID in SR-MPLS is a local label, just like other labels and segments in MPLS and SR-MPLS, such as a VPN label. The data plane processing of a PSID is a local implementation of an ingress node or an egress node, and it follows the same logic as the existing MPLS data plane. By definition, only the egress node and the ingress node of the associated path learn the information of a PSID. The intermediate nodes of that path will NOT learn it π ββοΈ
Wait, here's the twist π A PSID may be used on an ingress node that is not the ingress of the associated path, if the associated label stack with the PSID is part of a deeper label stack that represents a longer path. For example, take the case described in Section 3.4 where the related BSID is not used, and the original label stack of a sub-path gets inserted as part of the whole label stack. In that case, the PSID must be distributed in a trusted domain under the considerations defined in Section 8.1 of [RFC8402] π§
A PSID is used within an SR-MPLS trusted domain [RFC8402] and must not leak outside that domain. Because of this, no new security threats are introduced compared to current SR-MPLS π As per [RFC8402], SR domain boundary routers MUST filter any external traffic destined to a label associated with a segment within the trusted domain, and this applies to a PSID as well π§ Other security considerations of SR-MPLS described in Section 8.1 of [RFC8402] apply to this document too.
The distribution of a PSID from an egress node to an ingress node happens within an SR-trusted domain, and it's out of scope for this document. The details of that mechanism and its related security considerations will be described in other documents π
5. IANA Considerations π
This document has no IANA actions. Nothing to see here, bestie π
6. References π
6.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>.
[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>.
[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>.
[RFC8660] Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S.,
Decraene, B., Litkowski, S., and R. Shakir, "Segment
Routing with the MPLS Data Plane", RFC 8660,
DOI 10.17487/RFC8660, December 2019,
<https://www.rfc-editor.org/info/rfc8660>.
6.2. Informative References
[BIDIR-PATH]
Li, C., Chen, M., Cheng, W., Gandhi, R., and Q. Xiong,
"Path Computation Element Communication Protocol (PCEP)
Extensions for Associated Bidirectional Segment Routing
(SR) Paths", Work in Progress, Internet-Draft, draft-ietf-
pce-sr-bidir-path-13, 13 February 2024,
<https://datatracker.ietf.org/doc/html/draft-ietf-pce-sr-
bidir-path-13>.
[RFC4426] Lang, J., Ed., Rajagopalan, B., Ed., and D. Papadimitriou,
Ed., "Generalized Multi-Protocol Label Switching (GMPLS)
Recovery Functional Specification", RFC 4426,
DOI 10.17487/RFC4426, March 2006,
<https://www.rfc-editor.org/info/rfc4426>.
[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>.
[RFC5654] Niven-Jenkins, B., Ed., Brungard, D., Ed., Betts, M., Ed.,
Sprecher, N., and S. Ueno, "Requirements of an MPLS
Transport Profile", RFC 5654, DOI 10.17487/RFC5654,
September 2009, <https://www.rfc-editor.org/info/rfc5654>.
[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>.
[RFC6965] Fang, L., Ed., Bitar, N., Zhang, R., Daikoku, M., and P.
Pan, "MPLS Transport Profile (MPLS-TP) Applicability: Use
Cases and Design", RFC 6965, DOI 10.17487/RFC6965, August
2013, <https://www.rfc-editor.org/info/rfc6965>.
[RFC7799] Morton, A., "Active and Passive Metrics and Methods (with
Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799,
May 2016, <https://www.rfc-editor.org/info/rfc7799>.
[RFC8491] Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg,
"Signaling Maximum SID Depth (MSD) Using IS-IS", RFC 8491,
DOI 10.17487/RFC8491, November 2018,
<https://www.rfc-editor.org/info/rfc8491>.
[RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W.,
and J. Hardwick, "Path Computation Element Communication
Protocol (PCEP) Extensions for Segment Routing", RFC 8664,
DOI 10.17487/RFC8664, December 2019,
<https://www.rfc-editor.org/info/rfc8664>.
[RFC8957] Bryant, S., Chen, M., Swallow, G., Sivabalan, S., and G.
Mirsky, "Synonymous Flow Label Framework", RFC 8957,
DOI 10.17487/RFC8957, January 2021,
<https://www.rfc-editor.org/info/rfc8957>.
[RFC9197] Brockners, F., Ed., Bhandari, S., Ed., and T. Mizrahi,
Ed., "Data Fields for In Situ Operations, Administration,
and Maintenance (IOAM)", RFC 9197, DOI 10.17487/RFC9197,
May 2022, <https://www.rfc-editor.org/info/rfc9197>.
[SR-EXTENSIONS]
Li, C., Li, Z., Yin, Y., Cheng, W., and K. Talaulikar, "SR
Policy Extensions for Path Segment and Bidirectional
Path", Work in Progress, Internet-Draft, draft-ietf-idr-
sr-policy-path-segment-09, 19 February 2024,
<https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-
policy-path-segment-09>.
Acknowledgements π«Ά
The authors would like to thank Adrian Farrel, Stewart Bryant, Shuangping Zhan, Alexander Vainshtein, Andrew G. Malis, Ketan Talaulikar, Shraddha Hegde, Xinyue Zhang, Loa Andersson, and Bruno Decraene for their review, suggestions, comments, and contributions to this document. The main-character list of thank-yous π
The authors would also like to acknowledge the contribution from Alexander Vainshtein on "Nesting of PSIDs" (Section 3.4) π¦
Contributors π
The following people have substantially contributed to this document.
Mach(Guoyi) Chen
Huawei Technologies Co., Ltd.
Email: mach.chen@huawei.com
Lei Wang
China Mobile
Email: wangleiyj@chinamobile.com
Aihua Liu
ZTE Corp.
Email: liu.aihua@zte.com.cn
Greg Mirsky
ZTE Corp.
Email: gregimirsky@gmail.com
Gyan S. Mishra
Verizon Inc.
Email: gyan.s.mishra@verizon.com
Authors' Addresses π
Weiqiang Cheng (editor)
China Mobile
Email: chengweiqiang@chinamobile.com
Han Li
China Mobile
Email: lihan@chinamobile.com
Cheng Li (editor)
Huawei Technologies
China
Email: c.l@huawei.com
Rakesh Gandhi
Cisco Systems, Inc.
Canada
Email: rgandhi@cisco.com
Royi Zigler
Broadcom
Email: royi.zigler@broadcom.com
π¦ where this page comes from
- ietf: rfc9545 2024-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms