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
Path Segment Identifier in MPLS-Based Segment Routing Networks
Abstract
A Segment Routing (SR) path is identified by an SR segment list. A
subset of segments from the segment list cannot be leveraged to
distinguish one SR path from another as they may be partially
congruent. SR path identification is a prerequisite for various use
cases such as performance measurement and end-to-end 1+1 path
protection.
In an SR over MPLS (SR-MPLS) data plane, an egress node cannot
determine on which SR path a packet traversed the network from the
label stack because the segment identifiers are removed from the
label stack as the packet transits the network.
This document defines a Path Segment Identifier (PSID) to identify an
SR path on the egress node of the path.
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] leverages the source-routing paradigm
to steer packets from a source node through a controlled set of
instructions, called "segments", by prepending the packet with an SR
header. In SR with the MPLS data plane [RFC8660], the SR header is
instantiated through a label stack.
In an SR-MPLS network, when a packet is transmitted along an SR path,
the labels in the MPLS label stack will be swapped or popped. The
result of this is that no label or only the last label may be left in
the MPLS label stack when the packet reaches the egress node. Thus,
the egress node cannot use the SR label stack to determine along
which SR path the packet came.
However, identifying a path on the egress node is a prerequisite for
various use cases in SR-MPLS networks, such as 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).
Therefore, this document defines a new segment type, referred to
herein as a "Path Segment". A Path Segment is defined to uniquely
identify an SR path on the egress node of the path. It MAY be used
by the egress node for path identification. Note that per-path state
will be maintained in the egress node due to the requirements in the
aforementioned use cases, though in normal cases, the per-path state
will be maintained in the ingress node only.
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 is assigned from the Segment Routing Local Block
(SRLB) [RFC8402] of the egress node of an SR path.
A PSID is used to identify a segment list. However, one PSID can be
used to 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, the PSID can be inserted at the ingress node and
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 is pointing to the egress node of the
SR path. Therefore, a PSID will not be the top label in the label
stack when received on an intermediate node of the associated path,
but it can be the top label in the label stack on the penultimate
node.
The value of the TTL field 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, and 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 will require the egress to read and process
the PSID label in addition to the regular processing. This
additional processing may have an impact on 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 ensures that the SID stack depth of a computed path does not
exceed 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, where the total number of MPLS labels includes the PSID.
An example label stack with a PSID is 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; hence, they do not interfere with the PSID,
which is placed below.
It is worthy to note that in the case of ECMP, with or without the
use of an EL, the SR packets may be forwarded over multiple paths.
In this case, the SID list cannot directly reflect the actual
forwarding path and the PSID can only identify the SID list rather
than the actual forwarding path.
Also, similar to a Synonymous Flow Label (SFL) [RFC8957], the
introduction of a PSID to an existing flow may cause that flow to
take a different path through the network under the conditions of
ECMP. In turn, this may invalidate certain uses of the PSID, such as
performance measurement applications. Therefore, the considerations
of SFLs as per 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 leverage a PSID for measuring
packet counts.
For Passive performance measurement, path identification at the
measuring points is the prerequisite. A PSID can be used by the
measuring points (e.g., the ingress and egress nodes of the SR path
or a centralized controller) 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
In some scenarios (e.g., mobile backhaul transport networks), there
are requirements to support bidirectional paths [RFC6965], and the
path is normally treated as a single entity. Forward and reverse
directions of the path have the same fate; for example, failure in
one direction will result in switching traffic at both directions.
MPLS supports this by introducing the concepts of a co-routed
bidirectional Label Switched Path (LSP) and an associated
bidirectional LSP [RFC5654].
In the current SR architecture, an SR path is a unidirectional path
[RFC8402]. In order to support bidirectional SR paths, a
straightforward way is to bind two unidirectional SR paths to a
single bidirectional SR path. PSIDs can be used to identify and
correlate the traffic for the two unidirectional SR paths at both
ends of the bidirectional path.
The mechanism of constructing bidirectional paths using a PSID is out
of the scope of this document and has been described in several
documents, such as [BIDIR-PATH] and [SR-EXTENSIONS].
3.3. PSID for End-to-End Path Protection
For end-to-end 1+1 path protection (i.e., a Live-Live case), the
egress node of the path needs to know the set of paths that
constitute the primary and the secondaries in order to select the
primary path packets for onward transmission and to discard the
packets from the secondaries [RFC4426].
To do this in SR, each SR path needs a path identifier that is unique
at the egress node. For SR-MPLS, this can be the Path Segment label
allocated by the egress node.
The detailed solution of using a PSID in end-to-end 1+1 path
protection is out of the scope of 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, where each sub-path is identified by a BSID.
Then, an end-to-end SR path can be identified by a list of BSIDs;
therefore, it can provide better scalability.
A BSID and a PSID can be combined to achieve both sub-path and end-
to-end path monitoring. A reference model for such a combination
(Figure 2) shows an end-to-end path (A->D) in a trusted domain that
spans three subdomains (the Access, Aggregation, and Core domains)
and consists 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 expressed as <SID1, SID2, ...,
SIDn, s-PSID>, where the s-PSID is the PSID of the 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 expressed 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 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
A PSID in SR-MPLS is a local label similar to other labels and
segments, such as a VPN label, defined in MPLS and SR-MPLS. The data
plane processing of a PSID is a local implementation of an ingress
node or an egress node, which follows the same logic of an existing
MPLS data plane. As per the definition of a PSID, only the egress
node and the ingress node of the associated path will learn the
information of a PSID. The intermediate nodes of this path will not
learn it.
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,
the case described in Section 3.4 and the related BSID are not used
while the original label stack of a sub-path is inserted as a part of
the whole label stack. In this 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 the domain; therefore, 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; this applies to
a PSID as well. Other security considerations of SR-MPLS described
in Section 8.1 of [RFC8402] apply to this document.
The distribution of a PSID from an egress node to an ingress node is
performed within an SR-trusted domain, and it is out of the scope of
this document. The details of the mechanism and related security
considerations will be described in other documents.
5. IANA Considerations
This document has no IANA actions.
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 authors would 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