| Internet-Draft | BGP SR Policy Segment List Identifier | August 2026 |
| Lin, et al. | Expires 21 February 2027 | [Page] |
Segment Routing (SR) is a source routing paradigm that explicitly indicates the forwarding path for packets at the ingress node. An SR Policy is a set of candidate paths, each consisting of one or more segment lists. This document defines extensions to BGP SR Policy to specify the identifier of a segment list.¶
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 21 February 2027.¶
Copyright (c) 2026 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.¶
Segment routing (SR) [RFC8402] is a source routing paradigm that explicitly indicates the forwarding path for packets at an ingress node. The ingress node steers packets into a specific path according to the Segment Routing Policy (SR Policy) as defined in [RFC9256]. In order to distribute SR Policy Candidate Paths to the headend (i.e., the node where the instructions for source routing are written into the packet), [RFC9830] specifies a mechanism by using BGP.¶
However, there is no identifier for segment lists in BGP SR Policy, which may cause inconvenience for other mechanisms to designate segment lists distributed by BGP.¶
Consider a scenario where a network controller distributes SR Policy Candidate Paths to the headend nodes, which need to collect traffic forwarding statistics per segment list. When a headend node reports each statistic to the controller, it needs to specify the segment list to which the statistic belongs. Due to the lack of an identifier, the headend node usually reports all SIDs in the associated segment list along with the statistic, and then the controller needs to compare the SIDs one by one to recognize which segment list it is. The advertisement of all SIDs in the segment list consumes a lot of octets, and the comparison of SIDs can be complicated.¶
Consider a second example where a network controller distributes SR Policy Candidate Paths using BGP, and then uses YANG [RFC7950] /NETCONF [RFC6241] to set some configurations of the segment lists that are not suitable to be carried in BGP. The controller needs to specify which segment list these configurations belong to when it issues them. In this case, an identifier of the segment list can also be helpful.¶
An identifier of a segment list may also serve as a user-friendly attribute for debugging and troubleshooting purposes, such as displaying an invalid segment list when its associated BFD session is down.¶
Section 5.7.4 of [RFC9857] defines an SR Segment List Identifier sub-TLV for reporting the identifier associated with a specific SID list. This document defines extensions to BGP SR Policy to specify the identifier of an SR Segment List. Note that the Segment List ID is scoped to a Candidate Path. It does not uniquely identify a segment list across an SR Policy or headend node, nor does it imply that the SID sequence is immutable. A controller may keep the same Segment List ID while updating the SIDs within the segment list. Any external reference that uses this identifier MUST also specify the associated Candidate Path.¶
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.¶
As defined in Section 2.2 of [RFC9830], the SR Policy Encoding structure is as follows:¶
SR Policy SAFI NLRI: <Distinguisher, Color, Endpoint>
Attributes:
Tunnel Encapsulation Attribute (23)
Tunnel Type: SR Policy (15)
Binding SID
SRv6 Binding SID
Preference
Priority
SR Policy Name
SR Policy Candidate Path Name
Explicit NULL Label Policy (ENLP)
Segment List
Weight
Segment
Segment
...
...
SR policy with segment list identifier is expressed as below:¶
SR Policy SAFI NLRI: <Distinguisher, Color, Endpoint>
Attributes:
Tunnel Encapsulation Attribute (23)
Tunnel Type: SR Policy (15)
Binding SID
SRv6 Binding SID
Preference
Priority
SR Policy Name
SR Policy Candidate Path Name
Explicit NULL Label Policy (ENLP)
Segment List
Weight
Segment List ID
Segment
Segment
...
...
The segment list identifier can be advertised using the Segment List ID sub-TLV, as defined in Section 2.1.¶
The notation used in Figure 1 and Figure 2 is a logical representation of the BGP attribute hierarchy. It is not a new encoding specification but a common convention to illustrate the nesting of TLVs and sub-TLVs. The top-level line represents the NLRI, and each indented line represents a TLV or sub-TLV contained within the parent. Angle brackets (<...>) enclose a tuple of fields that together form an NLRI. Ellipses (...) indicate that additional instances of the preceding item type or additional sub-TLVs may be present. This notation is consistent with the SR Policy encoding conventions used in [RFC9830] Section 2.2. The actual TLV encoding follows the TLV rules defined in the BGP Tunnel Encapsulation Attribute specification [RFC9012].¶
This document defines the Segment List ID sub-TLV. When present, it MUST be carried within a Segment List sub-TLV (type 128) of an SR Policy Tunnel Type TLV (type 15) in the BGP Tunnel Encapsulation Attribute [RFC9012]. It MUST NOT be carried directly as a sub-TLV of the SR Policy Tunnel Type TLV.¶
The Segment List ID sub-TLV specifies the identifier of the segment list by a 4-octet number. The Segment List ID is unique within the context of a Candidate Path. An originator that assigns non-zero Segment List IDs MUST assign a different value to each Segment List within the same Candidate Path. Multiple Segment Lists MAY carry the value zero because zero indicates that no identifier has been assigned.¶
The Segment List ID sub-TLV is an optional sub-TLV. It MUST NOT appear more than once in a given segment list. If multiple instances are present, only the first instance is used and the rest are ignored. The presence of multiple instances is not considered malformed, as per Section 2.4 of [RFC9830].¶
The Segment List ID sub-TLV has the following format:¶
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 | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Segment List ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
where:¶
Type: 19.¶
Length: 6.¶
Flags: 1 octet of flags. No flags are defined in this document. The Flags field MUST be set to zero on transmission and MUST be ignored on receipt.¶
RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt.¶
Segment List ID: 4 octets which carry a 32-bit unsigned number. The values are interpreted as follows:¶
Values 1 through 0xffffffff: Segment List ID.¶
Value 0: indicates that no Segment List ID has been assigned. Multiple Segment Lists within the same Candidate Path MAY carry the value zero.¶
The scope of the Segment List ID is the SR Policy Candidate Path.¶
The validation and error handling of an SR Policy NLRI with the Segment List ID sub-TLV in the BGP tunnel encapsulation attribute [RFC9012] follow the procedures in Sections 4.2 and 5 of [RFC9830].¶
A Segment List ID sub-TLV with a length other than 6 octets is considered malformed. If malformed, the associated BGP SR Policy NLRI MUST also be considered malformed, and the "treat-as-withdraw" strategy of [RFC7606] MUST be applied.¶
If a receiver encounters multiple segment lists with the same non-zero Segment List ID within a Candidate Path, the semantic error MUST be handled by the SR Policy Module (SRPM) component as described in Section 5 of [RFC9830]. The receiver MAY either treat all segment lists as having no Segment List ID associated.¶
An implementation SHOULD log any errors found during the above validation for further analysis.¶
As specified in Section 4.2.2 of [RFC9830], an SR Policy Candidate Path carrying an unrecognized or unsupported sub-TLV is, by default, not considered usable. This means that a headend node that does not implement this extension may treat a Candidate Path carrying the Segment List ID sub-TLV as invalid. Operators should be aware of this deployment consideration when introducing this extension into a network.¶
The protocol extensions defined in this document do not affect the base BGP security model. The security requirements and mechanisms described in [RFC9830] also apply to this document. SR operates within a trusted SR domain [RFC8402] and its security considerations also apply to BGP sessions when carrying SR Policy information.¶
The Segment List ID sub-TLV is an optional sub-TLV that specifies an identifier associated with a segment list. The scope of this identifier is the SR Policy Candidate Path. The Segment List ID uniquely identifies a segment list within an SR Policy Candidate Path.¶
The Segment List ID is assigned by the originator (often a controller), distributed via BGP, and used as an identifier for the segment list. Since this identifier may expose mission-critical or commercially sensitive network information, it introduces a confidentiality risk.¶
It is the responsibility of the network operator to ensure that only trusted nodes (that include both routers and controller applications) within the SR domain are configured to receive such information.¶
The management of the Segment List ID itself (e.g., via YANG/NETCONF) is out of scope for this document. As mentioned in Section 1, the identifier may be used to cross-reference configurations delivered via other mechanisms such as NETCONF, but the definition of such management interfaces is left to future documents.¶
[Note to the RFC Editor - remove this section before publication, as well as remove the reference to [RFC7942].]¶
This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in [RFC7942]. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.¶
According to [RFC7942], "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit".¶
Organization: New H3C Technologies.¶
Implementation: H3C CR16000, CR19000 series routers implementation.¶
Description: All sections including all the "MUST" and "SHOULD" clauses have been implemented in above-mentioned New H3C Products (running Version 7.1.099 and above).¶
Maturity Level: Product¶
Coverage: All sections.¶
Version: Draft-03¶
Licensing: N/A¶
Implementation experience: Nothing specific.¶
Contact: linchangwang.04414@h3c.com¶
Last updated: February 10, 2025¶
Organization: ZTE Corporation¶
Implementation: ZTE's ZXR10 core router¶
Description: The implementation in lab has been completed. The commercial implementation is under development.¶
Maturity Level: Product¶
Coverage: All¶
Version: Draft-03¶
Licensing: N/A¶
Implementation experience: Nothing specific.¶
Contact: feng.jun99@zte.com.cn¶
Last updated: February 6, 2025¶
This document defines a new Sub-TLV in the registry "SR Policy Segment List Sub-TLVs" [RFC9830] [IANA-SR-POLICY-SEGMENT-LIST].¶
Value Description Reference ------------------------------------------------------- 19 Segment List ID sub-TLV This document¶
The authors would like to acknowledge Hao Li, Haiyang Zhang, Jie Dong, Yongqing Zhu, Nat Kao, Allan Michael, Yisong Liu, Ran Chen, Libin Liu, Lancheng Qin, Xinxin Yi, Wei Wang, Jiangbo Wang, Wisdomtan, Zheng Zhang, Yujia Gao, Alex Lee, David Wright, Hongwei Li, Quan Xiong, Xiao Min and Xiaolan Wang for their review and discussion of this document.¶
The authors would also like to thank Susan Hares for her shepherd review and helpful comments to improve this document.¶
Thanks to Henning Rogge for the RTGDIR, and Alexey Melnikov for the SECDIR Early review.¶
The authors would like to thank Gunter Van de Velde, Mohamed Boucadair, Eric Vyncke, Mike Bishop, Mahesh Jethanandani, Roman Danyliw, Deb Cooley, and Jim Guichard for the IESG review.¶
[Note to the RFC Editor - remove this section before publication, as well as remove the reference to [I-D.ietf-pce-multipath].]¶
This section describes cross-working group information for the IETF review process.¶
[RFC9256] details SR Policy architecture, but does not define any identifier for a Segment List. The Segment List ID was introduced in BGP-LS (Section 5.7.4 of [RFC9857]) and PCEP (Section 4.2 of [I-D.ietf-pce-multipath]). Note that the names are different due to the objects/TLVs in respective protocols but the semantics are identical.¶
A Segment List belongs to a Candidate Path. Note that the Segment List is meant to realize the objectives of a specific Candidate Path. Therefore, the segment list ID is scoped under the candidate path hierarchy. The segment list ID is a 32-bit non-zero number that serves as the identifier associated with a segment list. Currently, in BGP-LS and PCEP extensions, the segment list ID is scoped under the candidate path.¶
This document defines extensions to BGP SR Policy to specify the identifier of an SR Segment List. The definition of the segment list ID in this document is consistent with the specification of segment list ID in BGP-LS and PCEP extensions.¶
The BGP extension in this document for the identifier of segment list also could be implemented via PCEP according to Section 4.2 of [I-D.ietf-pce-multipath]. The Path ID uniquely identifies a Path within the context of an LSP. Path IDs MUST be unique across all these path types within the same LSP. In this document, Path IDs correspond to the identifier of a segment list under CP.¶
Sections 4.3 and 4.4 of [I-D.ietf-pce-multipath] describe the usage of Path IDs in load-balancing and multiple paths for protection scenarios, respectively. Additionally, Appendix A of [I-D.ietf-pce-multipath] specifies how Path IDs are encapsulated within the PCEP protocol.¶