rfc9857.original   rfc9857.txt 
Inter-Domain Routing S. Previdi Internet Engineering Task Force (IETF) S. Previdi
Internet-Draft Individual Request for Comments: 9857 Individual
Intended status: Standards Track K. Talaulikar, Ed. Category: Standards Track K. Talaulikar, Ed.
Expires: 7 September 2025 Cisco Systems ISSN: 2070-1721 Cisco Systems
J. Dong J. Dong
Huawei Technologies Huawei Technologies
H. Gredler H. Gredler
RtBrick Inc. RtBrick Inc.
J. Tantsura J. Tantsura
Nvidia Nvidia
6 March 2025 September 2025
Advertisement of Segment Routing Policies using BGP Link-State Advertisement of Segment Routing Policies Using BGP Link-State
draft-ietf-idr-bgp-ls-sr-policy-17
Abstract Abstract
This document describes a mechanism to collect the Segment Routing This document describes a mechanism used to collect Segment Routing
Policy information that is locally available in a node and advertise (SR) Policy information that is locally available in a node and
it into BGP Link-State (BGP-LS) updates. Such information can be advertise it into BGP Link-State (BGP-LS) updates. Such information
used by external components for path computation, re-optimization, can be used by external components for path computation,
service placement, network visualization, etc. reoptimization, service placement, network visualization, etc.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
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 This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on 7 September 2025. 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/rfc9857.
Copyright Notice Copyright Notice
Copyright (c) 2025 IETF Trust and the persons identified as the Copyright (c) 2025 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. Code Components carefully, as they describe your rights and restrictions with respect
extracted from this document must include Revised BSD License text as to this document. Code Components extracted from this document must
described in Section 4.e of the Trust Legal Provisions and are include Revised BSD License text as described in Section 4.e of the
provided without warranty as described in the Revised BSD License. Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 1.1. Requirements Language
2. Carrying SR Policy Information in BGP . . . . . . . . . . . . 5 2. Carrying SR Policy Information in BGP
3. SR Policy Candidate Path NLRI Type . . . . . . . . . . . . . 6 3. SR Policy Candidate Path NLRI Type
3.1. SR Policy Headend as BGP-LS Producer . . . . . . . . . . 7 3.1. SR Policy Headend as the BGP-LS Producer
3.2. PCE as BGP-LS Producer . . . . . . . . . . . . . . . . . 8 3.2. PCE as the BGP-LS Producer
4. SR Policy Candidate Path Descriptor . . . . . . . . . . . . . 8 4. SR Policy Candidate Path Descriptor
5. SR Policy State TLVs . . . . . . . . . . . . . . . . . . . . 10 5. SR Policy State TLVs
5.1. SR Binding SID TLV . . . . . . . . . . . . . . . . . . . 10 5.1. SR Binding SID TLV
5.2. SRv6 Binding SID TLV . . . . . . . . . . . . . . . . . . 13 5.2. SRv6 Binding SID TLV
5.3. SR Candidate Path State TLV . . . . . . . . . . . . . . . 14 5.3. SR Candidate Path State TLV
5.4. SR Policy Name TLV . . . . . . . . . . . . . . . . . . . 17 5.4. SR Policy Name TLV
5.5. SR Candidate Path Name TLV . . . . . . . . . . . . . . . 17 5.5. SR Candidate Path Name TLV
5.6. SR Candidate Path Constraints TLV . . . . . . . . . . . . 18 5.6. SR Candidate Path Constraints TLV
5.6.1. SR Affinity Constraint Sub-TLV . . . . . . . . . . . 21 5.6.1. SR Affinity Constraint Sub-TLV
5.6.2. SR SRLG Constraint Sub-TLV . . . . . . . . . . . . . 22 5.6.2. SR SRLG Constraint Sub-TLV
5.6.3. SR Bandwidth Constraint Sub-TLV . . . . . . . . . . . 23 5.6.3. SR Bandwidth Constraint Sub-TLV
5.6.4. SR Disjoint Group Constraint Sub-TLV . . . . . . . . 23 5.6.4. SR Disjoint Group Constraint Sub-TLV
5.6.5. SR Bidirectional Group Constraint Sub-TLV . . . . . . 26 5.6.5. SR Bidirectional Group Constraint Sub-TLV
5.6.6. SR Metric Constraint Sub-TLV . . . . . . . . . . . . 28 5.6.6. SR Metric Constraint Sub-TLV
5.7. SR Segment List TLV . . . . . . . . . . . . . . . . . . . 31 5.7. SR Segment List TLV
5.7.1. SR Segment Sub-TLV . . . . . . . . . . . . . . . . . 33 5.7.1. SR Segment Sub-TLV
5.7.2. SR Segment List Metric Sub-TLV . . . . . . . . . . . 43 5.7.2. SR Segment List Metric Sub-TLV
5.7.3. SR Segment List Bandwidth Sub-TLV . . . . . . . . . . 45 5.7.3. SR Segment List Bandwidth Sub-TLV
5.7.4. SR Segment List Identifier Sub-TLV . . . . . . . . . 46 5.7.4. SR Segment List Identifier Sub-TLV
6. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 47 6. Procedures
7. Manageability Considerations . . . . . . . . . . . . . . . . 47 7. Manageability Considerations
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 8. IANA Considerations
8.1. BGP-LS NLRI-Types . . . . . . . . . . . . . . . . . . . . 48 8.1. BGP-LS NLRI Types
8.2. BGP-LS Protocol-IDs . . . . . . . . . . . . . . . . . . . 48 8.2. BGP-LS Protocol-IDs
8.3. BGP-LS TLVs . . . . . . . . . . . . . . . . . . . . . . . 48 8.3. BGP-LS TLVs
8.4. SR Policy Protocol Origin . . . . . . . . . . . . . . . . 49 8.4. SR Policy Protocol Origin
8.5. BGP-LS SR Segment Descriptors . . . . . . . . . . . . . . 50 8.5. BGP-LS SR Segment Descriptors
8.6. BGP-LS SR Policy Metric Type . . . . . . . . . . . . . . 51 8.6. BGP-LS SR Policy Metric Type
9. Security Considerations . . . . . . . . . . . . . . . . . . . 52 9. Security Considerations
10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 53 10. References
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 53 10.1. Normative References
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 10.2. Informative References
12.1. Normative References . . . . . . . . . . . . . . . . . . 53 Acknowledgements
12.2. Informative References . . . . . . . . . . . . . . . . . 55 Contributors
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 Authors' Addresses
1. Introduction 1. Introduction
SR Policy architecture details are specified in [RFC9256]. An SR SR Policy architecture details are specified in [RFC9256]. An SR
Policy comprises one or more candidate paths of which at a given time Policy comprises one or more candidate paths of which at a given time
one and only one may be active (i.e., installed in forwarding and one and only one may be active (i.e., installed in forwarding and
usable for steering of traffic). Each candidate path in turn may usable for the steering of traffic). Each candidate path in turn may
have one or more SID-List of which one or more SID-List may be have one or more SID-Lists of which one or more SID-Lists may be
active. When multiple SID-Lists are active then traffic is load active. When multiple SID-Lists are active, traffic is load balanced
balanced over them. This document covers the advertisement of state over them. This document covers the advertisement of state
information at the individual SR Policy candidate path level. information at the individual SR Policy candidate path level.
SR Policies are generally instantiated at the head-end and are based SR Policies are generally instantiated at the headend and are based
on either local configuration or controller-based programming of the on either local configuration or controller-based programming of the
node using various APIs and protocols (e.g., PCEP or BGP). node using various APIs and protocols (e.g., the Path Computation
Element Communication Protocol (PCEP) or BGP).
In many network environments, the configuration, and state of each SR In many network environments, the configuration and state of each SR
Policy that is available in the network is required by controllers. Policy that is available in the network is required by controllers.
Such controllers, that are aware of both topology and SR Policy state Such controllers, which are aware of both topology and SR Policy
information, allow the network operator to optimize several functions state information, allow the network operator to optimize several
and operations in their networks. functions and operations in their networks.
One example of a controller is the stateful Path Computation Element One example of a controller is the stateful Path Computation Element
(PCE) [RFC8231], which could provide benefits in path optimization. (PCE) [RFC8231], which can provide benefits in path optimization.
While some extensions are proposed in the Path Computation Element While some extensions are proposed in the PCEP for Path Computation
Communication Protocol (PCEP) for the Path Computation Clients (PCCs) Clients (PCCs) to report Label Switched Path (LSP) states to the PCE,
to report the LSP states to the PCE, this mechanism may not be this mechanism may not be applicable in a management-based PCE
applicable in a management-based PCE architecture as specified in architecture as specified in Section 5.5 of [RFC4655]. As
section 5.5 of [RFC4655]. As illustrated in the figure below, the illustrated in the figure below, the PCC is not a Label Switching
PCC is not an LSR in the routing domain, thus the head-end nodes of Router (LSR) in the routing domain, thus the headend nodes of the SR
the SR Policies may not implement the PCEP protocol. In this case, a Policies may not implement the PCEP protocol. In this case, a
general mechanism to collect the SR Policy states from the ingress general mechanism to collect the SR Policy states from the ingress
LERs is needed. This document proposes an SR Policy state collection Label Edge Routers (LERs) is needed. This document proposes an SR
mechanism complementary to the mechanism defined in [RFC8231]. Policy state collection mechanism complementary to the mechanism
defined in [RFC8231].
----------- -----------
| ----- | | ----- |
Service | | TED |<-+-----------> Service | | TED |<-+----------->
Request | ----- | TED synchronization Request | ----- | TED synchronization
| | | | mechanism (e.g., | | | | mechanism (e.g., the
v | | | routing protocol) v | | | routing protocol)
------------- Request/ | v | ------------- Request/ | v |
| | Response| ----- | | | Response| ----- |
| NMS |<--------+> | PCE | | | NMS |<--------+> | PCE | |
| | | ----- | | | | ----- |
------------- ----------- ------------- -----------
Service | Service |
Request | Request |
v v
---------- Signaling ---------- ---------- Signaling ----------
| Head-End | Protocol | Adjacent | | Headend | Protocol | Adjacent |
| Node |<---------->| Node | | Node |<---------->| Node |
---------- ---------- ---------- ----------
Figure 1 Management-Based PCE Usage Figure 1: Management-Based PCE Usage
In networks with composite PCE nodes as specified in section 5.1 of In networks with composite PCE nodes as specified in Section 5.1 of
[RFC4655], PCE is implemented on several routers in the network, and [RFC4655], PCE is implemented on several routers in the network, and
the PCCs in the network can use the mechanism described in [RFC8231] the PCCs in the network can use the mechanism described in [RFC8231]
to report the SR Policy information to the PCE nodes. An external to report the SR Policy information to the PCE nodes. An external
component may also need to collect the SR Policy information from all component may also need to collect the SR Policy information from all
the PCEs in the network to obtain a global view of the state of all the PCEs in the network to obtain a global view of the state of all
SR Policy paths in the network. SR Policy paths in the network.
In multi-area or multi-AS scenarios, each area or AS can have a child In multi-area or multi-AS scenarios, each area or AS can have a child
PCE to collect the SR Policies in its domain, in addition, a parent PCE to collect the SR Policies in its domain. In addition, a parent
PCE needs to collect SR Policy information from multiple child PCEs PCE needs to collect SR Policy information from multiple child PCEs
to obtain a global view of SR Policy paths inside and across the to obtain a global view of SR Policy paths inside and across the
domains involved. domains involved.
In another network scenario, a centralized controller is used for In another network scenario, a centralized controller is used for
service placement. Obtaining the SR Policy state information is service placement. Obtaining the SR Policy state information is
quite important for making appropriate service placement decisions quite important for making appropriate service placement decisions
with the purpose of both meeting the application's requirements and with the purpose of both meeting the application's requirements and
utilizing network resources efficiently. utilizing network resources efficiently.
The Network Management System (NMS) may need to provide global The Network Management System (NMS) may need to provide global
visibility of the SR Policies in the network as part of the network visibility of the SR Policies in the network as part of the network
visualization function. visualization function.
BGP has been extended to distribute link-state and traffic BGP has been extended to distribute link-state and Traffic
engineering information to external components [RFC9552]. Using the Engineering (TE) information to external components [RFC9552]. Using
same protocol to collect SR Policy and state information is desirable the same protocol to collect SR Policy and state information is
for these external components since this avoids introducing multiple desirable for these external components since this avoids introducing
protocols for network topology information collection. This document multiple protocols for network topology information collection. This
describes a mechanism to distribute SR Policy information (both SR- document describes a mechanism to distribute SR Policy information
MPLS, and SRv6 [RFC8402]) to external components using BGP-LS and (both SR-MPLS and SRv6 [RFC8402]) to external components using BGP-LS
covers both explicit and dynamic candidate paths. The advertisements and covers both explicit and dynamic candidate paths. The
of composite candidate path is outside the scope of this document. advertisements of a composite candidate path are outside the scope of
this document.
The BGP-LS Producer [RFC9552] that is originating the advertisement The BGP-LS Producer [RFC9552] that is originating the advertisement
of SR Policy information can be either: of SR Policy information can be either:
* a SR Policy headend node, or * an SR Policy headend node or
* a PCE which is receiving the SR Policy information from its PCCs * a PCE that is receiving the SR Policy information from its PCCs
(i.e., SR Policy headend nodes) via PCEP (i.e., SR Policy headend nodes) via PCEP
The extensions specified in this document complement the BGP SR The extensions specified in this document complement the BGP SR
Policy SAFI [I-D.ietf-idr-sr-policy-safi] and Policy SAFI [RFC9830] [RFC9831] and are used to advertise SR Policies
[I-D.ietf-idr-bgp-sr-segtypes-ext] that are used to advertise SR from controllers to the headend routers using BGP by enabling the
Policies from controllers to the headend routers using BGP by reporting of the operational state of those SR Policies back from the
enabling the reporting of the operational state of those SR Policies headend to the controllers.
back from the headend to the controllers.
While this document focuses on SR Policies, While this document focuses on SR Policies, [BGP-LS-TE-PATH]
[I-D.ietf-idr-bgp-ls-te-path] introduces further extension to support introduces further extensions to support other TE paths such as MPLS-
other TE Paths such as MPLS-TE LSPs. TE LSPs.
The encodings specified in this document (specifically in Section 4 The encodings specified in this document (specifically in Sections 4
and Section 5) make use of flags that convey various types of and 5) make use of flags that convey various types of information of
information of the SR Policy. The document uses the term "set" to the SR Policy. The document uses the term "set" to indicate that the
indicate that the value of a flag bit is 1 and the term "clear" when value of a flag bit is 1 and the term "clear" when the value is 0.
the value is 0.
1.1. Requirements Language 1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in
14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
2. Carrying SR Policy Information in BGP 2. Carrying SR Policy Information in BGP
The "Link-State NLRI" defined in [RFC9552] is extended to carry the The "Link-State Network Layer Reachability Information (NLRI)"
SR Policy information. New TLVs carried in the BGP Link-State defined in [RFC9552] is extended to carry the SR Policy information.
Attribute defined in [RFC9552] are also defined to carry the New TLVs carried in the BGP-LS Attribute defined in [RFC9552] are
attributes of an SR Policy in the subsequent sections. also defined to carry the attributes of an SR Policy in the
subsequent sections.
The format of "Link-State NLRI" is defined in [RFC9552] as follows: The format of the Link-State NLRI is defined in [RFC9552] as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NLRI Type | Total NLRI Length | | NLRI Type | Total NLRI Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
// Link-State NLRI (variable) // // Link-State NLRI (variable) //
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2 BGP-LS NLRI Format Figure 2: BGP-LS NLRI Format
An additional "NLRI Type" known as SR Policy Candidate Path NLRI An additional NLRI Type known as "SR Policy Candidate Path NLRI"
(value 5) is defined for the advertisement of SR Policy Information. (value 5) is defined for the advertisement of SR Policy Information.
This SR Policy Candidate Path NLRI is used to report the state This SR Policy Candidate Path NLRI is used to report the state
details of individual SR Policy Candidate paths along with their details of individual SR Policy Candidate paths along with their
underlying segment lists. underlying segment lists.
3. SR Policy Candidate Path NLRI Type 3. SR Policy Candidate Path NLRI Type
This document defines SR Policy Candidate Path NLRI Type with its This document defines the SR Policy Candidate Path NLRI Type with its
format as shown in the following figure: format as shown in the following figure:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| Protocol-ID | | Protocol-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | | Identifier |
| (64 bits) | | (64 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Local Node Descriptor TLV (for the Headend) // // Local Node Descriptors TLV (for the Headend) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// SR Policy Candidate Path Descriptor TLV // // SR Policy Candidate Path Descriptor TLV //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3 SR Policy Candidate Path NLRI Format Figure 3: SR Policy Candidate Path NLRI Format
Where: Where:
* Protocol-ID field specifies the component that owns the SR Policy * Protocol-ID field specifies the component that owns the SR Policy
state in the advertising node. An additional Protocol-ID "Segment state in the advertising node. An additional Protocol-ID "Segment
Routing" (value 9) is introduced by this document that MUST be Routing" (value 9) is introduced by this document that MUST be
used for advertisement of SR Policies. used for the advertisement of SR Policies.
* "Identifier" is an 8 octet value as defined in section 5.2 of * "Identifier" is an 8-octet value as defined in Section 5.2 of
[RFC9552]. [RFC9552].
* "Local Node Descriptor" (TLV 256) [RFC9552] is used as specified * "Local Node Descriptors" (TLV 256) [RFC9552] is used as specified
further in this section. further in this section.
* The SR Policy Candidate Path Descriptor TLV is specified in * The SR Policy Candidate Path Descriptor TLV is specified in
Section 4. Section 4.
The Local Node Descriptor TLV carries information that only The Local Node Descriptors TLV carries information that only
identifies the headend node of the SR Policy irrespective of whether identifies the headend node of the SR Policy irrespective of whether
the BGP-LS Producer is a headend or a PCE node. the BGP-LS Producer is a headend or a PCE node.
The Local Node Descriptor TLV MUST include at least one of the The Local Node Descriptors TLV MUST include at least one of the
following Node Descriptor TLVs: following Node Descriptor TLVs:
* IPv4 Router-ID of Local Node (TLV 1028) [RFC9552], which * IPv4 Router-ID of Local Node (TLV 1028) [RFC9552], which
identifies the headend node of the SR Policy as specified in identifies the headend node of the SR Policy as specified in
section 2.1 of [RFC9256]. Section 2.1 of [RFC9256].
* IPv6 Router-ID of Local Node (TLV 1029) [RFC9552], which * IPv6 Router-ID of Local Node (TLV 1029) [RFC9552], which
identifies the headend node of the SR Policy as specified in identifies the headend node of the SR Policy as specified in
section 2.1 of [RFC9256]. Section 2.1 of [RFC9256].
The following sub-sections describe the encoding of sub-TLVs within The following subsections describe the encoding of sub-TLVs within
the Local Node Descriptor TLV depending on which node is the BGP-LS the Local Node Descriptors TLV depending on which node is the BGP-LS
Producer. Producer.
3.1. SR Policy Headend as BGP-LS Producer 3.1. SR Policy Headend as the BGP-LS Producer
The Local Node Descriptor TLV MUST include the following Node The Local Node Descriptors TLV MUST include the following Node
Descriptor TLVs when the headend node is the BGP-LS Producer: Descriptor TLVs when the headend node is the BGP-LS Producer:
* BGP Router-ID (TLV 516) [RFC9086], which contains a valid BGP * BGP Router-ID (TLV 516) [RFC9086], which contains a valid BGP
Identifier of the headend node of the SR Policy. Identifier of the headend node of the SR Policy.
* Autonomous System Number (TLV 512) [RFC9552], which contains the * Autonomous System (TLV 512) [RFC9552], which contains the
ASN (or AS Confederation Identifier (ASN) [RFC5065], if Autonomous System Number (ASN) (or AS Confederation Identifier
confederations are used) of the headend node of the SR Policy. [RFC5065], if confederations are used) of the headend node of the
SR Policy.
The Local Node Descriptor TLV MAY include the following Node The Local Node Descriptors TLV MAY include the following Node
Descriptor TLVs when the headend node is the BGP-LS Producer: Descriptor TLVs when the headend node is the BGP-LS Producer:
* BGP Confederation Member (TLV 517) [RFC9086], which contains the * BGP Confederation Member (TLV 517) [RFC9086], which contains the
ASN of the confederation member (i.e. Member-AS Number), if BGP ASN of the confederation member (i.e., Member-AS Number); if BGP
confederations are used, the headend node of the SR Policy. confederations are used, it contains the headend node of the SR
Policy.
* Other Node Descriptors as defined in [RFC9552] to identify the * Other Node Descriptors as defined in [RFC9552] to identify the
headend node of the SR Policy. The determination of whether the headend node of the SR Policy. The determination of whether the
IGP Router-ID sub-TLV (TLV 515) contains a 4-octet OSPF Router-ID IGP Router-ID sub-TLV (TLV 515) contains a 4-octet OSPF Router-ID
or a 6-octet ISO System-ID is to be done based on the length of or a 6-octet ISO System-ID is to be done based on the length of
that sub-TLV since the Protocol-ID in the NLRI is always going to that sub-TLV as the Protocol-ID in the NLRI is always going to be
be "Segment Routing". "Segment Routing".
3.2. PCE as BGP-LS Producer 3.2. PCE as the BGP-LS Producer
The PCE node MUST NOT include its identifiers in the Node Descriptor The PCE node MUST NOT include its identifiers in the Node Descriptor
TLV in the NLRI as the Node Descriptor TLV MUST only carry the TLV in the NLRI as the Node Descriptor TLV MUST only carry the
identifiers of the SR Policy headend. identifiers of the SR Policy headend.
The Local Node Descriptor TLV MAY include the following Node The Local Node Descriptors TLV MAY include the following Node
Descriptor TLVs when the PCE node is the BGP-LS Producer and it has Descriptor TLVs when the PCE node is the BGP-LS Producer and it has
this information about the headend (e.g., as part of its topology this information about the headend (e.g., as part of its topology
database): database):
* BGP Router-ID (TLV 516) [RFC9086], which contains a valid BGP * BGP Router-ID (TLV 516) [RFC9086], which contains a valid BGP
Identifier of the headend node of the SR Policy. Identifier of the headend node of the SR Policy.
* Autonomous System Number (TLV 512) [RFC9552], which contains the * Autonomous System (TLV 512) [RFC9552], which contains the ASN (or
ASN (or AS Confederation Identifier (ASN) [RFC5065], if AS Confederation Identifier [RFC5065], if confederations are used)
confederations are used) of the headend node of the SR Policy. of the headend node of the SR Policy.
* BGP Confederation Member (TLV 517) [RFC9086], which contains the * BGP Confederation Member (TLV 517) [RFC9086], which contains the
ASN of the confederation member (i.e. Member-AS Number), if BGP ASN of the confederation member (i.e., Member-AS Number); if BGP
confederations are used, the headend node of the SR Policy. confederations are used, it contains the headend node of the SR
Policy.
* Other Node Descriptors as defined in [RFC9552] to identify the * Other Node Descriptors as defined in [RFC9552] to identify the
headend node of the SR Policy. The determination of whether the headend node of the SR Policy. The determination of whether the
IGP Router-ID sub-TLV (TLV 515) contains a 4-octet OSPF Router-ID IGP Router-ID sub-TLV (TLV 515) contains a 4-octet OSPF Router-ID
or a 6-octet ISO System-ID is to be done based on the length of or a 6-octet ISO System-ID is to be done based on the length of
that sub-TLV since the Protocol-ID in the NLRI is always going to that sub-TLV since the Protocol-ID in the NLRI is always going to
be "Segment Routing". be "Segment Routing".
When a Path Computation Element (PCE) node is functioning as the BGP- When a PCE node is functioning as the BGP-LS Producer on behalf of
LS Producer on behalf of one or more headends, it MAY include its own one or more headends, it MAY include its own BGP Router-ID (TLV 516),
BGP Router-ID (TLV 516), Autonomous System Number (TLV 512), or BGP Autonomous System (TLV 512), or BGP Confederation Member (TLV 517) in
Confederation Member (TLV 517) in the BGP-LS Attribute. the BGP-LS Attribute.
4. SR Policy Candidate Path Descriptor 4. SR Policy Candidate Path Descriptor
The SR Policy Candidate Path Descriptor TLV identifies a Segment The SR Policy Candidate Path Descriptor TLV identifies an SR Policy
Routing Policy candidate path as defined in [RFC9256]. It is a candidate path as defined in [RFC9256]. It is a mandatory TLV for
mandatory TLV for SR Policy Candidate Path NLRI type. The TLV has the SR Policy Candidate Path NLRI type. The TLV has the following
the following format: format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Protocol-origin| Flags | RESERVED | |Protocol-Origin| Flags | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Endpoint (4 or 16 octets) // | Endpoint (4 or 16 octets) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Policy Color (4 octets) | | Policy Color (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Originator AS Number (4 octets) | | Originator AS Number (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Originator Address (4 or 16 octets) // | Originator Address (4 or 16 octets) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Discriminator (4 octets) | | Discriminator (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4 SR Policy Candidate Path Descriptor Format Figure 4: SR Policy Candidate Path Descriptor Format
Where: Where:
* Type: 554 Type: 554
* Length: variable (valid values are 24, 36 or 48 octets) Length: Variable (valid values are 24, 36, or 48 octets)
* Protocol-Origin: 1-octet field which identifies the protocol or Protocol-Origin: 1-octet field that identifies the protocol or
component which is responsible for the instantiation of this path component that is responsible for the instantiation of this path
as specified in section 2.3 of [RFC9256]. The protocol-origin as specified in Section 2.3 of [RFC9256]. The protocol-origin
codepoints to be used are listed in Section 8.4. code points to be used are listed in Section 8.4.
* Flags: 1-octet field with following bit positions defined. Other Flags: 1-octet field with the following bit positions defined.
bits MUST be cleared by the originator and MUST be ignored by a Other bits MUST be cleared by the originator and MUST be ignored
receiver. by a receiver.
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|E|O| | |E|O| |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Where: Where:
- E-Flag: Indicates the encoding of endpoint as IPv6 address when E-Flag: Indicates the encoding of an endpoint as an IPv6 address
set and IPv4 address when clear when set and an IPv4 address when clear.
- O-Flag: Indicates the encoding of originator address as IPv6 O-Flag: Indicates the encoding of the originator address as an
address when set and IPv4 address when clear IPv6 address when set and an IPv4 address when clear.
* Reserved: 2 octets which MUST be set to 0 by the originator and Reserved: 2 octets that MUST be set to 0 by the originator and MUST
MUST be ignored by a receiver. be ignored by a receiver.
* Endpoint: 4 or 16 octets (as indicated by the flags) containing Endpoint: 4 or 16 octets (as indicated by the flags) containing the
the address of the endpoint of the SR Policy as specified in address of the endpoint of the SR Policy as specified in
section 2.1 of [RFC9256]. Section 2.1 of [RFC9256].
* Color: 4 octets that indicate the color of the SR Policy as Policy Color: 4 octets that indicate the color of the SR Policy as
specified in section 2.1 of [RFC9256]. specified in Section 2.1 of [RFC9256].
* Originator ASN: 4 octets to carry the 4-byte encoding of the ASN Originator ASN: 4 octets to carry the 4-byte encoding of the ASN of
of the originator. Refer to section 2.4 of [RFC9256] for details. the originator. Refer to Section 2.4 of [RFC9256] for details.
* Originator Address: 4 or 16 octets (as indicated by the flags) to Originator Address: 4 or 16 octets (as indicated by the flags) to
carry the address of the originator. Refer to section 2.4 of carry the address of the originator. Refer to Section 2.4 of
[RFC9256] for details. [RFC9256] for details.
* Discriminator: 4 octets to carry the discriminator of the path. Discriminator: 4 octets to carry the discriminator of the path.
Refer to section 2.5 of [RFC9256] for details. Refer to Section 2.5 of [RFC9256] for details.
5. SR Policy State TLVs 5. SR Policy State TLVs
This section defines the various TLVs which enable the headend to This section defines the various TLVs that enable the headend to
report the state at the SR Policy candidate path level. These TLVs report the state at the SR Policy candidate path level. These TLVs
(and their sub-TLVs) are carried in the optional non-transitive BGP- (and their sub-TLVs) are carried in the optional non-transitive BGP-
LS Attribute defined in [RFC9552] associated with the SR Policy LS Attribute defined in [RFC9552] and are associated with the SR
Candidate Path NLRI type. Policy Candidate Path NLRI type.
The detailed procedures for the advertisement are described in The detailed procedures for the advertisement are described in
Section 6. Section 6.
5.1. SR Binding SID TLV 5.1. SR Binding SID TLV
The SR Binding SID (BSID) is an optional TLV that is used to report The SR Binding Segment Identifier (BSID) is an optional TLV that is
the BSID and its attributes for the SR Policy candidate path. The used to report the BSID and its attributes for the SR Policy
TLV MAY also optionally contain the Specified BSID value for candidate path. The TLV MAY also optionally contain the Specified
reporting as described in section 6.2.3 of [RFC9256]. Only a single BSID value for reporting as described in Section 6.2.3 of [RFC9256].
instance of this TLV is advertised for a given candidate path. If Only a single instance of this TLV is advertised for a given
multiple instances are present, then the first valid (i.e., not candidate path. If multiple instances are present, then the first
determined to be malformed as per section 8.2.2 of [RFC9552]) one is valid one (i.e., not determined to be malformed as per Section 8.2.2
used and the rest are ignored. of [RFC9552]) is used and the rest are ignored.
The TLV has the following format: The TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BSID Flags | RESERVED | | BSID Flags | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Binding SID (4 or 16 octets) // | Binding SID (4 or 16 octets) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Specified Binding SID (4 or 16 octets) // | Specified Binding SID (4 or 16 octets) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5 SR Binding SID TLV Format Figure 5: SR Binding SID TLV Format
Where: Where:
* Type: 1201 Type: 1201
* Length: variable (valid values are 12 or 36 octets) Length: Variable (valid values are 12 or 36 octets)
* BSID Flags: 2-octet field that indicates attribute and status of BSID Flags: 2-octet field that indicates the attribute and status of
the Binding SID (BSID) associated with this candidate path. The the Binding SID (BSID) associated with this candidate path. The
following bit positions are defined and the semantics are following bit positions are defined, and the semantics are
described in detail in section 6.2 of [RFC9256]. Other bits MUST described in detail in Section 6.2 of [RFC9256]. Other bits MUST
be cleared by the originator and MUST be ignored by a receiver. be cleared by the originator and MUST be ignored by a receiver.
0 1 0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|D|B|U|L|F| | |D|B|U|L|F| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where: Where:
- D-Flag: Indicates the dataplane for the BSIDs and if they are D-Flag: Indicates the data plane for the BSIDs and if they are
16 octet SRv6 SID (when set) or are 4 octet SR/MPLS label value 16-octet SRv6 SID (when set) or 4-octet SR/MPLS label value
(when clear). (when clear).
- B-Flag: Indicates the allocation of the value in the BSID field B-Flag: Indicates the allocation of the value in the BSID field
when set and indicates that BSID is not allocated when clear. when set and that BSID is not allocated when clear.
- U-Flag: Indicates the specified BSID value is unavailable when U-Flag: Indicates that the specified BSID value is unavailable
set. When clear it indicates that this candidate path is using when set. When clear, it indicates that this candidate path is
the specified BSID. This flag is ignored when there is no using the specified BSID. This flag is ignored when there is
specified BSID. no specified BSID.
- L-Flag: Indicates the BSID value is from the Segment Routing L-Flag: Indicates that the BSID value is from the Segment Routing
Local Block (SRLB) of the headend node when set and is from the Local Block (SRLB) of the headend node when set and from the
local dynamic label pool when clear. local dynamic label pool when clear.
- F-Flag: Indicates the BSID value is one allocated from dynamic F-Flag: Indicates that the BSID value is one allocated from a
label pool due to fallback (e.g. when specified BSID is dynamic label pool due to fallback (e.g., when a specified BSID
unavailable) when set and indicates that there has been no is unavailable) when set and that there has been no fallback
fallback for BSID allocation when clear. for BSID allocation when clear.
* RESERVED: 2 octets. MUST be set to 0 by the originator and MUST RESERVED: 2 octets. MUST be set to 0 by the originator and MUST be
be ignored by a receiver. ignored by a receiver.
* Binding SID: It indicates the operational or allocated BSID value Binding SID: Indicates the operational or allocated BSID value based
based on the status flags. on the status flags.
* Specified BSID: It is used to report the explicitly specified BSID Specified BSID: Used to report the explicitly specified BSID value
value regardless of whether it is successfully allocated or not. regardless of whether it is successfully allocated or not. The
The field is set to value 0 when BSID has not been specified. field is set to value 0 when the BSID has not been specified.
The BSID fields above depend on the dataplane (SRv6 or MPLS) The BSID fields above depend on the data plane (SRv6 or MPLS)
indicated by the D-Flag. If D-Flag set (SRv6 dataplane), then the indicated by the D-Flag. If the D-Flag is set (SRv6 data plane),
length of the BSID fields is 16 octets. If the D-Flag is clear (MPLS then the length of the BSID fields is 16 octets. If the D-Flag is
dataplane), then the length of the BSID fields is 4 octets. When clear (MPLS data plane), then the length of the BSID fields is 4
carrying the MPLS Label, as shown in the figure below, the TC, S, and octets. When carrying the MPLS Label, as shown in the figure below,
TTL (total of 12 bits) are RESERVED and MUST be set to 0 by the the TC, S, and TTL (total of 12 bits) are RESERVED and MUST be set to
originator and MUST be ignored by a receiver. 0 by the originator and MUST be ignored by a receiver.
0 1 2 3 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 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 | TC |S| TTL | | Label | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 6 SR Binding SID Label Format Figure 6: SR Binding SID Label Format
In the case of an SRv6, the SR Binding SID sub-TLV does not have the In the case of an SRv6, the SR Binding SID sub-TLV does not have the
ability to signal the SRv6 Endpoint Behavior [RFC8986] or the ability to signal the SRv6 Endpoint behavior [RFC8986] or the
structure of the SID. Therefore, the SR Binding SID sub-TLV SHOULD structure of the SID. Therefore, the SR Binding SID sub-TLV SHOULD
NOT be used for the advertisement of an SRv6 Binding SID. Instead, NOT be used for the advertisement of an SRv6 Binding SID. Instead,
the SRv6 Binding SID TLV defined in Section 5.2 SHOULD be used for the SRv6 Binding SID TLV defined in Section 5.2 SHOULD be used for
signaling of an SRv6 Binding SID. The use of the SR Binding SID sub- the signaling of an SRv6 Binding SID. The use of the SR Binding SID
TLV for advertisement of the SRv6 Binding SID has been deprecated, sub-TLV for advertisement of the SRv6 Binding SID has been
and is documented here only for backward compatibility with deprecated, and it is documented here only for backward compatibility
implementations that followed early versions of this specification. with implementations that followed early draft versions of this
specification.
5.2. SRv6 Binding SID TLV 5.2. SRv6 Binding SID TLV
The SRv6 Binding SID (BSID) is an optional TLV that is used to report The SRv6 Binding SID (BSID) is an optional TLV that is used to report
the SRv6 BSID and its attributes for the SR Policy candidate path. the SRv6 BSID and its attributes for the SR Policy candidate path.
The TLV MAY also optionally contain the Specified SRv6 BSID value for The TLV MAY also optionally contain the Specified SRv6 BSID value for
reporting as described in section 6.2.3 of [RFC9256]. Multiple reporting as described in Section 6.2.3 of [RFC9256]. Multiple
instances of this TLV may be used to report each of the SRv6 BSIDs instances of this TLV may be used to report each of the SRv6 BSIDs
associated with the candidate path. associated with the candidate path.
The TLV has the following format: The TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BSID Flags | RESERVED | | BSID Flags | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Binding SID (16 octets) // | Binding SID (16 octets) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Specified Binding SID (16 octets) // | Specified Binding SID (16 octets) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Sub-TLVs (variable) // // Sub-TLVs (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 7 SRv6 Binding SID TLV Format Figure 7: SRv6 Binding SID TLV Format
Where: Where:
* Type: 1212 Type: 1212
* Length: variable Length: Variable
* BSID Flags: 2-octet field that indicates attribute and status of BSID Flags: 2-octet field that indicates the attribute and status of
the Binding SID (BSID) associated with this candidate path. The the BSID associated with this candidate path. The following bit
following bit positions are defined and the semantics are positions are defined, and the semantics are described in detail
described in detail in section 6.2 of [RFC9256]. Other bits MUST in Section 6.2 of [RFC9256]. Other bits MUST be cleared by the
be cleared by the originator and MUST be ignored by a receiver. originator and MUST be ignored by a receiver.
0 1 0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|B|U|F| | |B|U|F| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where: Where:
- B-Flag: Indicates the allocation of the value in the BSID field B-Flag: Indicates the allocation of the value in the BSID field
when set and indicates that BSID is not allocated when clear. when set and that BSID is not allocated when clear.
- U-Flag: Indicates the specified BSID value is unavailable when U-Flag: Indicates the specified BSID value is unavailable when
set. When clear it indicates that this candidate path is using set. When clear, it indicates that this candidate path is
the specified BSID. This flag is ignored when there is no using the specified BSID. This flag is ignored when there is
specified BSID. no specified BSID.
- F-Flag: Indicates the BSID value is one allocated dynamically F-Flag: Indicates that the BSID value is one allocated
due to fallback (e.g. when specified BSID is unavailable) when dynamically due to fallback (e.g., when the specified BSID is
set and indicates that there has been no fallback for BSID unavailable) when set and that there has been no fallback for
allocation when clear. BSID allocation when clear.
* RESERVED: 2 octets. MUST be set to 0 by the originator and MUST RESERVED: 2 octets. MUST be set to 0 by the originator and MUST be
be ignored by a receiver. ignored by a receiver.
* Binding SID: It indicates the operational or allocated BSID value Binding SID: Indicates the operational or allocated BSID value based
based on the status flags. on the status flags.
* Specified BSID: It is used to report the explicitly specified BSID Specified BSID: Used to report the explicitly specified BSID value
value regardless of whether it is successfully allocated or not. regardless of whether it is successfully allocated or not. The
The field is set to value 0 when BSID has not been specified. field is set to value 0 when the BSID has not been specified.
* Sub-TLVs: variable and contains any other optional attributes Sub-TLVs: Variable and contain any other optional attributes
associated with the SRv6 BSID. associated with the SRv6 BSID.
The SRv6 Endpoint Behavior TLV (1250) and the SRv6 SID Structure TLV The SRv6 Endpoint Behavior TLV (1250) and the SRv6 SID Structure TLV
(1252) MAY optionally be used as sub-TLVs of the SRv6 Binding SID TLV (1252) MAY optionally be used as sub-TLVs of the SRv6 Binding SID TLV
to indicate the SRv6 Endpoint behavior and SID structure for the to indicate the SRv6 Endpoint behavior and SID structure for the
Binding SID value in the TLV. [RFC9514] defines SRv6 Endpoint Binding SID value in the TLV. [RFC9514] defines the SRv6 Endpoint
Behavior TLV And SRv6 SID Structure TLV. Behavior TLV and the SRv6 SID Structure TLV.
5.3. SR Candidate Path State TLV 5.3. SR Candidate Path State TLV
The SR Candidate Path State TLV provides the operational status and The SR Candidate Path State TLV provides the operational status and
attributes of the SR Policy at the candidate path level. Only a attributes of the SR Policy at the candidate path level. Only a
single instance of this TLV is advertised for a given candidate path. single instance of this TLV is advertised for a given candidate path.
If multiple instances are present, then the first valid (i.e., not If multiple instances are present, then the first valid one (i.e.,
determined to be malformed as per section 8.2.2 of [RFC9552]) one is not determined to be malformed as per Section 8.2.2 of [RFC9552]) is
used and the rest are ignored. used and the rest are ignored.
The TLV has the following format: The TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Priority | RESERVED | Flags | | Priority | RESERVED | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Preference (4 octets) | | Preference (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 8 SR Candidate Path State TLV Format Figure 8: SR Candidate Path State TLV Format
Where: Where:
* Type: 1202 Type: 1202
* Length: 8 octets Length: 8 octets
* Priority: 1-octet value which indicates the priority of the Priority: 1-octet value that indicates the priority of the candidate
candidate path. Refer Section 2.12 of [RFC9256]. path. Refer to Section 2.12 of [RFC9256].
* RESERVED: 1 octet. MUST be set to 0 by the originator and MUST be RESERVED: 1 octet. MUST be set to 0 by the originator and MUST be
ignored by a receiver. ignored by a receiver.
* Flags: 2-octet field that indicates attribute and status of the Flags: 2-octet field that indicates the attribute and status of the
candidate path. The following bit positions are defined and the candidate path. The following bit positions are defined, and the
semantics are described in section 5 of [RFC9256] unless stated semantics are described in Section 5 of [RFC9256] unless stated
otherwise for individual flags. Other bits MUST be cleared by the otherwise for individual flags. Other bits MUST be cleared by the
originator and MUST be ignored by a receiver. originator and MUST be ignored by a receiver.
0 1 0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|S|A|B|E|V|O|D|C|I|T|U| | |S|A|B|E|V|O|D|C|I|T|U| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where: Where:
- S-Flag: Indicates the candidate path is in an administrative S-Flag: Indicates that the candidate path is in an administrative
shut state when set and not in administrative shut state when shut state when set and not in an administrative shut state
clear. when clear.
- A-Flag: Indicates the candidate path is the active path (i.e. A-Flag: Indicates that the candidate path is the active path
one provisioned in the forwarding plane as specified in section (i.e., one provisioned in the forwarding plane as specified in
2.9 of [RFC9256]) for the SR Policy when set and not the active Section 2.9 of [RFC9256]) for the SR Policy when set and not
path when clear. the active path when clear.
- B-Flag: Indicates the candidate path is the backup path (i.e. B-Flag: Indicates that the candidate path is the backup path
one identified for path protection of the active path as (i.e., one identified for path protection of the active path as
specified in section 9.3 of [RFC9256]) for the SR Policy when specified in Section 9.3 of [RFC9256]) for the SR Policy when
set and not the backup path when clear. set and not the backup path when clear.
- E-Flag: Indicates that the candidate path has been evaluated E-Flag: Indicates that the candidate path has been evaluated for
for validity (e.g. headend may evaluate candidate paths based validity (e.g., headend may evaluate candidate paths based on
on their preferences) when set and has not been evaluated for their preferences) when set and has not been evaluated for
validity when clear. validity when clear.
- V-Flag: Indicates the candidate path has at least one valid V-Flag: Indicates that the candidate path has at least one valid
SID-List when set and indicates no valid SID-List is available SID-List when set and that no valid SID-List is available or
or evaluated when clear. When the E-Flag is clear (i.e. the evaluated when clear. When the E-Flag is clear (i.e., the
candidate path has not been evaluated), then this flag MUST be candidate path has not been evaluated), then this flag MUST be
set to 0 by the originator and ignored by the receiver. set to 0 by the originator and ignored by a receiver.
- O-Flag: Indicates the candidate path was instantiated by the O-Flag: Indicates that the candidate path was instantiated by the
headend due to an on-demand nexthop trigger based on a local headend due to an on-demand next hop trigger based on a local
template when set and that the candidate path has not been template when set and that the candidate path has not been
instantiated due to on-demand nexthop trigger when clear. instantiated due to an on-demand next hop trigger when clear.
Refer to section 8.5 of [RFC9256] for details. Refer to Section 8.5 of [RFC9256] for details.
- D-Flag: Indicates the candidate path was delegated for D-Flag: Indicates that the candidate path was delegated for
computation to a PCE/controller when set and indicates that the computation to a PCE/controller when set and that the candidate
candidate path has not been delegated for computation when path has not been delegated for computation when clear.
clear.
- C-Flag: Indicates the candidate path was provisioned by a PCE/ C-Flag: Indicates that the candidate path was provisioned by a
controller when set and indicates that the candidate path was PCE/controller when set and that the candidate path was not
not provisioned by a PCE/controller when clear. provisioned by a PCE/controller when clear.
- I-Flag: Indicates the candidate path is to perform the "drop I-Flag: Indicates that the candidate path is to perform the
upon invalid" behavior when no other valid candidate path is "Drop-Upon-Invalid" behavior when no other valid candidate path
available for this SR Policy when the flag is set. Refer to is available for this SR Policy when the flag is set. Refer to
section 8.2 of [RFC9256] for details. When clear, it indicates Section 8.2 of [RFC9256] for details. When clear, it indicates
that the candidate path is not enabled for the "drop upon that the candidate path is not enabled for the "Drop-Upon-
invalid" behavior. Invalid" behavior.
- T-Flag: Indicates the candidate path has been marked as T-Flag: Indicates that the candidate path has been marked as
eligible for use as a transit policy on the headend when set eligible for use as a transit policy on the headend when set
and not eligible for use as a transit policy when clear. and not eligible for use as a transit policy when clear.
Transit policy is a policy whose BSID can be used in the Transit policy is a policy whose BSID can be used in the
segment list of another SR Policy. Refer to section 8.3 of segment list of another SR Policy. Refer to Section 8.3 of
[RFC9256] for steering into a transit policy using its BSID. [RFC9256] for steering into a transit policy using its BSID.
- U-Flag: Indicates that this candidate path is reported as U-Flag: Indicates that the candidate path is reported as active
active and is dropping traffic as a result of the "drop upon and is dropping traffic as a result of the "Drop-Upon-Invalid"
invalid" behavior being activated for the SR Policy when set. behavior being activated for the SR Policy when set. When
clear, it indicates that the candidate path is not dropping
When clear, it indicates that the candidate path is not traffic as a result of the "Drop-Upon-Invalid" behavior. Refer
dropping traffic as a result of the "drop upon invalid" to Section 8.2 of [RFC9256] for details.
behavior. Refer to section 8.2 of [RFC9256] for details.
* Preference: 4-octet value which indicates the preference of the Preference: 4-octet value that indicates the preference of the
candidate path. Refer to section 2.7 of [RFC9256] for details. candidate path. Refer to Section 2.7 of [RFC9256] for details.
5.4. SR Policy Name TLV 5.4. SR Policy Name TLV
The SR Policy Name TLV is an optional TLV that is used to carry the The SR Policy Name TLV is an optional TLV that is used to carry the
symbolic name associated with the SR Policy. Only a single instance symbolic name associated with the SR Policy. Only a single instance
of this TLV is advertised for a given candidate path. If multiple of this TLV is advertised for a given candidate path. If multiple
instances are present, then the first valid (i.e., not determined to instances are present, then the first valid one (i.e., not determined
be malformed as per section 8.2.2 of [RFC9552]) one is used and the to be malformed as per Section 8.2.2 of [RFC9552]) is used and the
rest are ignored. rest are ignored.
The TLV has the following format: The TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SR Policy Name (variable) // | SR Policy Name (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 9 SR Policy Name TLV Format Figure 9: SR Policy Name TLV Format
Where: Where:
* Type: 1213 Type: 1213
* Length: variable Length: Variable
* SR Policy Name: Symbolic name for the SR Policy without a NULL SR Policy Name: Symbolic name for the SR Policy without a NULL
terminator as specified in section 2.1 of [RFC9256]. It is terminator as specified in Section 2.1 of [RFC9256]. It is
RECOMMENDED that the size of the symbolic name be limited to 255 RECOMMENDED that the size of the symbolic name be limited to 255
bytes. Implementations MAY choose to truncate long names to 255 bytes. Implementations MAY choose to truncate long names to 255
bytes when signaling via BGP-LS. bytes when signaling via BGP-LS.
5.5. SR Candidate Path Name TLV 5.5. SR Candidate Path Name TLV
The SR Candidate Path Name TLV is an optional TLV that is used to The SR Candidate Path Name TLV is an optional TLV that is used to
carry the symbolic name associated with the candidate path. Only a carry the symbolic name associated with the candidate path. Only a
single instance of this TLV is advertised for a given candidate path. single instance of this TLV is advertised for a given candidate path.
If multiple instances are present, then the first valid (i.e., not If multiple instances are present, then the first valid one (i.e.,
determined to be malformed as per section 8.2.2 of [RFC9552]) one is not determined to be malformed as per Section 8.2.2 of [RFC9552]) is
used and the rest are ignored. used and the rest are ignored.
The TLV has the following format: The TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Candidate Path Name (variable) // | Candidate Path Name (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 10 SR Candidate Path Name TLV Format Figure 10: SR Candidate Path Name TLV Format
Where: Where:
* Type: 1203 Type: 1203
* Length: variable Length: Variable
* Candidate Path Name: Symbolic name for the SR Policy candidate Candidate Path Name: Symbolic name for the SR Policy candidate path
path without a NULL terminator as specified in section 2.6 of without a NULL terminator as specified in Section 2.6 of
[RFC9256]. It is RECOMMENDED that the size of the symbolic name [RFC9256]. It is RECOMMENDED that the size of the symbolic name
be limited to 255 bytes. Implementations MAY choose to truncate be limited to 255 bytes. Implementations MAY choose to truncate
long names to 255 bytes when signaling via BGP-LS. long names to 255 bytes when signaling via BGP-LS.
5.6. SR Candidate Path Constraints TLV 5.6. SR Candidate Path Constraints TLV
The SR Candidate Path Constraints TLV is an optional TLV that is used The SR Candidate Path Constraints TLV is an optional TLV that is used
to report the constraints associated with the candidate path. The to report the constraints associated with the candidate path. The
constraints are generally applied to a dynamic candidate path which constraints are generally applied to a dynamic candidate path that is
is computed either by the headend or may be delegated to a computed either by the headend or may be delegated to a controller.
controller. The constraints may also be applied to an explicit path The constraints may also be applied to an explicit path where the
where the computation entity is expected to validate that the path computation entity is expected to validate that the path satisfies
satisfies the specified constraints and if not the path is to be the specified constraints; if not, the path is to be invalidated
invalidated (e.g., due to topology changes). Only a single instance (e.g., due to topology changes). Only a single instance of this TLV
of this TLV is advertised for a given candidate path. If multiple is advertised for a given candidate path. If multiple instances are
instances are present, then the first valid (i.e., not determined to present, then the first valid one (i.e., not determined to be
be malformed as per section 8.2.2 of [RFC9552]) one is used and the malformed as per Section 8.2.2 of [RFC9552]) is used and the rest are
rest are ignored. ignored.
The TLV has the following format: The TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | RESERVED1 | | Flags | RESERVED1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MTID | Algorithm | RESERVED2 | | MTID | Algorithm | RESERVED2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sub-TLVs (variable) // | sub-TLVs (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 11 SR Candidate Path Constraints TLV Format Figure 11: SR Candidate Path Constraints TLV Format
Where: Where:
* Type: 1204 Type: 1204
* Length: variable Length: Variable
* Flags: 2-octet field that indicates the constraints that are being Flags: 2-octet field that indicates the constraints that are being
applied to the candidate path. The following bit positions are applied to the candidate path. The following bit positions are
defined and the other bits MUST be cleared by the originator and defined, and the other bits MUST be cleared by the originator and
MUST be ignored by a receiver. MUST be ignored by a receiver.
0 1 0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|D|P|U|A|T|S|F|H| | |D|P|U|A|T|S|F|H| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where: Where:
- D-Flag: Indicates that the candidate path uses SRv6 dataplane D-Flag: Indicates that the candidate path uses an SRv6 data plane
when set and SR/MPLS dataplane when clear when set and an SR/MPLS data plane when clear.
- P-Flag: Indicates that the candidate path prefers the use of P-Flag: Indicates that the candidate path prefers the use of only
only protected SIDs when set and indicates that the candidate protected SIDs when set and that the candidate path does not
path does not prefer the use of only protected SIDs when clear. prefer the use of only protected SIDs when clear. This flag is
This flag is mutually exclusive with the U-Flag (i.e., both mutually exclusive with the U-Flag (i.e., both of these flags
these flags cannot be set at the same time). cannot be set at the same time).
- U-Flag: Indicates that the candidate path prefers the use of U-Flag: Indicates that the candidate path prefers the use of only
only unprotected SIDs when set and indicates that the candidate unprotected SIDs when set and that the candidate path does not
path does not prefer the use of only unprotected SIDs when prefer the use of only unprotected SIDs when clear. This flag
clear. This flag is mutually exclusive with the P-Flag (i.e., is mutually exclusive with the P-Flag (i.e., both of these
both these flags cannot be set at the same time). flags cannot be set at the same time).
- A-Flag: Indicates that the candidate path uses only the SIDs A-Flag: Indicates that the candidate path uses only the SIDs
belonging to the specified SR Algorithm when set and indicates belonging to the specified SR Algorithm when set and that the
that the candidate path does not use only the SIDs belonging to candidate path does not use only the SIDs belonging to the
the specified SR Algorithm when clear. specified SR Algorithm when clear.
- T-Flag: Indicates that the candidate path uses only the SIDs T-Flag: Indicates that the candidate path uses only the SIDs
belonging to the specified topology when set and indicates that belonging to the specified topology when set and that the
the candidate path does not use only the SIDs belonging to the candidate path does not use only the SIDs belonging to the
specified topology when clear. specified topology when clear.
- S-Flag: Indicates that the use of protected (P-Flag) or S-Flag: Indicates that the use of protected (P-Flag) or
unprotected (U-Flag) SIDs becomes a strict constraint instead unprotected (U-Flag) SIDs becomes a strict constraint instead
of a preference when set and indicates that there is no strict of a preference when set and that there is no strict constraint
constraint (and only a preference) when clear. (and only a preference) when clear.
- F-Flag: Indicates that the candidate path is fixed once F-Flag: Indicates that the candidate path is fixed once computed
computed and not modified except on operator intervention and and not modified except on operator intervention and that the
indicates that the candidate path may be modified as part of candidate path may be modified as part of recomputation when
recomputation when clear. clear.
- H-Flag: Indicates that the candidate path uses only adjacency H-Flag: Indicates that the candidate path uses only adjacency
SIDs and traverses hop-by-hop over the links corresponding to SIDs and traverses hop-by-hop over the links corresponding to
those adjacency SIDs when set and indicates that the candidate those adjacency SIDs when set and that the candidate path is
path is not restricted to using only hop-by-hop adjacency SIDs not restricted to using only hop-by-hop adjacency SIDs when
when clear. clear.
* RESERVED1: 2 octets. MUST be set to 0 by the originator and MUST RESERVED1: 2 octets. MUST be set to 0 by the originator and MUST be
be ignored by a receiver. ignored by a receiver.
* MTID: Indicates the multi-topology identifier of the IGP topology MTID: Indicates the multi-topology identifier of the IGP topology
that is preferred to be used when the path is set up. When the that is preferred to be used when the path is set up. When the
T-flag is set then the path is strictly using the specified T-flag is set, then the path is strictly using the specified
topology SIDs only. topology SIDs only.
* Algorithm: Indicates the algorithm that is preferred to be used Algorithm: Indicates the algorithm that is preferred to be used when
when the path is set up. When the A-flag is set then the path is the path is set up. When the A-flag is set, then the path is
strictly using the specified algorithm SIDs only. The algorithm strictly using the specified algorithm SIDs only. The algorithm
values are from IGP Algorithm Types registry under the IANA values are from the "IGP Algorithm Types" IANA registry under the
Interior Gateway Protocol (IGP) Parameters. "Interior Gateway Protocol (IGP) Parameters" registry group.
* RESERVED2: 1 octet. MUST be set to 0 by the originator and MUST RESERVED2: 1 octet. MUST be set to 0 by the originator and MUST be
be ignored by a receiver. ignored by a receiver.
* sub-TLVs: one or more optional sub-TLVs MAY be included in this sub-TLVs: One or more optional sub-TLVs MAY be included in this TLV
TLV to describe other constraints. These sub-TLVs are: SR to describe other constraints. These sub-TLVs are: SR Affinity
Affinity Constraint, SR SRLG Constraint, SR Bandwidth Constraint, Constraint, SR Shared Risk Link Group (SRLG) Constraint, SR
SR Disjoint Group Constraint, SR Bidirectional Group Constraint, Bandwidth Constraint, SR Disjoint Group Constraint, SR
and SR Metric Constraint. Bidirectional Group Constraint, and SR Metric Constraint.
These constraint sub-TLVs are defined below. These constraint sub-TLVs are defined below.
5.6.1. SR Affinity Constraint Sub-TLV 5.6.1. SR Affinity Constraint Sub-TLV
The SR Affinity Constraint sub-TLV is an optional sub-TLV of the SR The SR Affinity Constraint sub-TLV is an optional sub-TLV of the SR
Candidate Path Constraints TLV that is used to carry the affinity Candidate Path Constraints TLV that is used to carry the affinity
constraints [RFC2702] associated with the candidate path. The constraints [RFC2702] associated with the candidate path. The
affinity is expressed in terms of Extended Admin Group (EAG) as affinity is expressed in terms of an Extended Administrative Group
defined in [RFC7308]. Only a single instance of this sub-TLV is (EAG) as defined in [RFC7308]. Only a single instance of this sub-
advertised for a given candidate path. If multiple instances are TLV is advertised for a given candidate path. If multiple instances
present, then the first valid (i.e., not determined to be malformed are present, then the first valid one (i.e., not determined to be
as per section 8.2.2 of [RFC9552]) one is used and the rest are malformed as per Section 8.2.2 of [RFC9552]) is used and the rest are
ignored. ignored.
The sub-TLV has the following format: The sub-TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Excl-Any-Size | Incl-Any-Size | Incl-All-Size | RESERVED | | Excl-Any-Size | Incl-Any-Size | Incl-All-Size | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Exclude-Any EAG (optional, variable) // | Exclude-Any EAG (optional, variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Include-Any EAG (optional, variable) // | Include-Any EAG (optional, variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Include-All EAG (optional, variable) // | Include-All EAG (optional, variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 12 SR Affinity Constraints Sub-TLV Format Figure 12: SR Affinity Constraint Sub-TLV Format
Where: Where:
* Type: 1208 Type: 1208
* Length: variable, dependent on the size of the Extended Admin Length: Variable, dependent on the size of the EAG. MUST be a non-
Group. MUST be a non-zero multiple of 4 octets. zero multiple of 4 octets.
* Exclude-Any-Size: one octet to indicate the size of Exclude-Any Exclude-Any-Size: 1 octet to indicate the size of Exclude-Any EAG
EAG bitmask size in multiples of 4 octets. (e.g. value 0 bitmask size in multiples of 4 octets (e.g., value 0 indicates the
indicates the Exclude-Any EAG field is skipped, value 1 indicates Exclude-Any EAG field is skipped, and value 1 indicates that 4
that 4 octets of Exclude-Any EAG is included) octets of Exclude-Any EAG are included).
* Include-Any-Size: one octet to indicate the size of Include-Any Include-Any-Size: 1 octet to indicate the size of Include-Any EAG
EAG bitmask size in multiples of 4 octets. (e.g. value 0 bitmask size in multiples of 4 octets (e.g., value 0 indicates the
indicates the Include-Any EAG field is skipped, value 1 indicates Include-Any EAG field is skipped, and value 1 indicates that 4
that 4 octets of Include-Any EAG is included) octets of Include-Any EAG are included).
* Include-All-Size: one octet to indicate the size of Include-All Include-All-Size: 1 octet to indicate the size of Include-All EAG
EAG bitmask size in multiples of 4 octets. (e.g. value 0 bitmask size in multiples of 4 octets (e.g., value 0 indicates the
indicates the Include-All EAG field is skipped, value 1 indicates Include-All EAG field is skipped, and value 1 indicates that 4
that 4 octets of Include-All EAG is included) octets of Include-All EAG are included).
* RESERVED: 1 octet. MUST be set to 0 by the originator and MUST be RESERVED: 1 octet. MUST be set to 0 by the originator and MUST be
ignored by a receiver. ignored by a receiver.
* Exclude-Any EAG: the bitmask used to represent the affinities that Exclude-Any EAG: The bitmask used to represent the affinities that
have been excluded from the path. have been excluded from the path.
* Include-Any EAG: the bitmask used to represent the affinities that Include-Any EAG: The bitmask used to represent the affinities that
have been included in the path. have been included in the path.
* Include-All EAG: the bitmask used to represent all the affinities Include-All EAG: The bitmask used to represent all the affinities
that have been included in the path. that have been included in the path.
5.6.2. SR SRLG Constraint Sub-TLV 5.6.2. SR SRLG Constraint Sub-TLV
The SR SRLG Constraint sub-TLV is an optional sub-TLV of the SR The SR SRLG Constraint sub-TLV is an optional sub-TLV of the SR
Candidate Path Constraints TLV that is used to carry the Shared Risk Candidate Path Constraints TLV that is used to carry the SRLG values
Link Group (SRLG) values [RFC4202] that have been excluded from the [RFC4202] that have been excluded from the candidate path. Only a
candidate path. Only a single instance of this sub-TLV is advertised single instance of this sub-TLV is advertised for a given candidate
for a given candidate path. If multiple instances are present, then path. If multiple instances are present, then the first valid one
the first valid (i.e., not determined to be malformed as per section (i.e., not determined to be malformed as per Section 8.2.2 of
8.2.2 of [RFC9552]) one is used and the rest are ignored. [RFC9552]) is used and the rest are ignored.
The sub-TLV has the following format: The sub-TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SRLG Values (variable, multiples of 4 octets) // | SRLG Values (variable, multiples of 4 octets) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 13 SR SRLG Constraints Sub-TLV Format Figure 13: SR SRLG Constraint Sub-TLV Format
Where: Where:
* Type: 1209 Type: 1209
* Length: variable, dependent on the number of SRLGs encoded. MUST Length: Variable, dependent on the number of SRLGs encoded. MUST be
be a non-zero multiple of 4 octets. a non-zero multiple of 4 octets.
* SRLG Values: One or more SRLG values. Each SRLG value is of 4 SRLG Values: One or more SRLG values. Each SRLG value is of 4
octets. octets.
5.6.3. SR Bandwidth Constraint Sub-TLV 5.6.3. SR Bandwidth Constraint Sub-TLV
The SR Bandwidth Constraint sub-TLV is an optional sub-TLV of the SR The SR Bandwidth Constraint sub-TLV is an optional sub-TLV of the SR
Candidate Path Constraints TLV that is used to indicate the bandwidth Candidate Path Constraints TLV that is used to indicate the bandwidth
that has been requested for the candidate path. Only a single that has been requested for the candidate path. Only a single
instance of this sub-TLV is advertised for a given candidate path. instance of this sub-TLV is advertised for a given candidate path.
If multiple instances are present, then the first valid (i.e., not If multiple instances are present, then the first valid one (i.e.,
determined to be malformed as per section 8.2.2 of [RFC9552]) one is not determined to be malformed as per Section 8.2.2 of [RFC9552]) is
used and the rest are ignored. used and the rest are ignored.
The sub-TLV has the following format: The sub-TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Bandwidth | | Bandwidth |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 14 SR Bandwidth Constraints Sub-TLV Format Figure 14: SR Bandwidth Constraint Sub-TLV Format
Where: Where:
* Type: 1210 Type: 1210
* Length: 4 octets Length: 4 octets
* Bandwidth: 4 octets which specify the desired bandwidth in unit of Bandwidth: 4 octets that specify the desired bandwidth in unit of
bytes per second in IEEE floating point format [IEEE754]. bytes per second in IEEE floating point format [IEEE754].
5.6.4. SR Disjoint Group Constraint Sub-TLV 5.6.4. SR Disjoint Group Constraint Sub-TLV
The SR Disjoint Group Constraint sub-TLV is an optional sub-TLV of The SR Disjoint Group Constraint sub-TLV is an optional sub-TLV of
the SR Candidate Path Constraints TLV that is used to carry the the SR Candidate Path Constraints TLV that is used to carry the
disjointness constraint associated with the candidate path. The disjointness constraint associated with the candidate path. The
disjointness between two SR Policy Candidate Paths is expressed by disjointness between two SR Policy Candidate Paths is expressed by
associating them with the same disjoint group identifier and then associating them with the same disjoint group identifier and then
specifying the type of disjointness required between their paths. specifying the type of disjointness required between their paths.
The types of disjointness are described in section 3 of [RFC8800] The types of disjointness are described in Section 3 of [RFC8800]
where the level of disjointness increases in the order: link, node, where the level of disjointness increases in the order: link, node,
SRLG, Node + SRLG. The computation is expected to achieve the SRLG, Node + SRLG. The computation is expected to achieve the
highest level of disjointness requested and when that is not possible highest level of disjointness requested; when that is not possible,
then fall back to a lesser level progressively based on the levels then fall back to a lesser level progressively based on the levels
indicated. Only a single instance of this sub-TLV is advertised for indicated. Only a single instance of this sub-TLV is advertised for
a given candidate path. If multiple instances are present, then the a given candidate path. If multiple instances are present, then the
first valid (i.e., not determined to be malformed as per section first valid one (i.e., not determined to be malformed as per
8.2.2 of [RFC9552]) one is used and the rest are ignored. Section 8.2.2 of [RFC9552]) is used and the rest are ignored.
The sub-TLV has the following format: The sub-TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Request-Flags | Status-Flags | RESERVED | | Request-Flags | Status-Flags | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Disjoint Group Identifier (variable) // | Disjoint Group Identifier (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 15 SR Disjoint Group Constraints Sub-TLV Format Figure 15: SR Disjoint Group Constraint Sub-TLV Format
Where: Where:
* Type: 1211 Type: 1211
* Length: Variable. Minimum of 8 octets. Length: Variable. Minimum of 8 octets.
* Request Flags: one octet to indicate the level of disjointness Request Flags: 1 octet to indicate the level of disjointness
requested as specified in the form of flags. The following flags requested as specified in the form of flags. The following flags
are defined and the other bits MUST be cleared by the originator are defined, and the other bits MUST be cleared by the originator
and MUST be ignored by a receiver. and MUST be ignored by a receiver.
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|S|N|L|F|I| | |S|N|L|F|I| |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Where: Where:
- S-Flag: Indicates that SRLG disjointness is requested when set S-Flag: Indicates that SRLG disjointness is requested when set
and indicates that SRLG disjointness is not requested when and that SRLG disjointness is not requested when clear.
clear.
- N-Flag: Indicates that node disjointness is requested when set N-Flag: Indicates that node disjointness is requested when set
and indicates that node disjointness is not requested when and that node disjointness is not requested when clear.
clear.
- L-Flag: Indicates that link disjointness is requested when set L-Flag: Indicates that link disjointness is requested when set
and indicates that the link disjointness is not requested when and that the link disjointness is not requested when clear.
clear.
- F-Flag: Indicates that the computation may fall back to a lower F-Flag: Indicates that the computation may fall back to a lower
level of disjointness amongst the ones requested when all level of disjointness amongst the ones requested when all
cannot be achieved when set and indicates that fallback to a cannot be achieved when set and that fallback to a lower level
lower level of disjointness is not allowed when clear. of disjointness is not allowed when clear.
- I-Flag: Indicates that the computation may fall back to the I-Flag: Indicates that the computation may fall back to the
default best path (e.g. IGP path) in case of none of the default best path (e.g., an IGP path) in case none of the
desired disjointness can be achieved when set and indicates desired disjointness can be achieved when set and that fallback
that fallback to the default best path is not allowed when to the default best path is not allowed when clear.
clear.
* Status Flags: one octet to indicate the level of disjointness that Status Flags: 1 octet to indicate the level of disjointness that has
has been achieved by the computation as specified in the form of been achieved by the computation as specified in the form of
flags. The following flags are defined and the other bits MUST be flags. The following flags are defined, and the other bits MUST
cleared by the originator and MUST be ignored by a receiver. be cleared by the originator and MUST be ignored by a receiver.
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|S|N|L|F|I|X| | |S|N|L|F|I|X| |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Where: Where:
- S-Flag: Indicates that SRLG disjointness is achieved when set S-Flag: Indicates that SRLG disjointness is achieved when set and
and indicates that SRLG disjointness is not achieved when that SRLG disjointness is not achieved when clear.
clear.
- N-Flag: Indicates that node disjointness is achieved when set N-Flag: Indicates that node disjointness is achieved when set and
and indicates that node disjointness was not achieved when that node disjointness was not achieved when clear.
clear.
- L-Flag: Indicates that link disjointness is achieved when set L-Flag: Indicates that link disjointness is achieved when set and
and indicates that link disjointness was not achieved when that link disjointness was not achieved when clear.
clear.
- F-Flag: Indicates that the computation has fallen back to a F-Flag: Indicates that the computation has fallen back to a lower
lower level of disjointness than requested when set and level of disjointness than requested when set and that there
indicates that there has been no fallback to a lower level of has been no fallback to a lower level of disjointness when
disjointness when clear. clear.
- I-Flag: Indicates that the computation has fallen back to the I-Flag: Indicates that the computation has fallen back to the
best path (e.g. IGP path) and disjointness has not been best path (e.g., an IGP path) and disjointness has not been
achieved when set and indicates that there has been no fallback achieved when set and that there has been no fallback to the
to best path when clear. best path when clear.
- X-Flag : Indicates that the disjointness constraint could not X-Flag: Indicates that the disjointness constraint could not be
be achieved and hence path has been invalidated when set and achieved and hence the path has been invalidated when set and
indicates that the path has not been invalidated due to unmet that the path has not been invalidated due to unmet
disjointness constraints when clear. disjointness constraints when clear.
* RESERVED: 2 octets. MUST be set to 0 by the originator and MUST RESERVED: 2 octets. MUST be set to 0 by the originator and MUST be
be ignored by a receiver. ignored by a receiver.
* Disjoint Group Identifier: 4-octet value that is the group Disjoint Group Identifier: 4-octet value that is the group
identifier for a set of disjoint paths. Alternatively, this field identifier for a set of disjoint paths. Alternatively, this field
MAY contain the entire PCEP Association Object as specified in MAY contain the entire PCEP Association Object as specified in
section 6.1 of [RFC8697] (including its optional TLVs) when PCEP Section 6.1 of [RFC8697] (including its optional TLVs) when PCEP
is used for the signaling the SR Policy candidate path and where is used for the signaling of the SR Policy candidate path and
the BGP-LS Producer is unable to determine the group identifier where the BGP-LS Producer is unable to determine the group
that can be accommodated in a 4-octet value (since PCEP supports identifier that can be accommodated in a 4-octet value (since PCEP
multiple methods of encoding an association identifier). Note supports multiple methods of encoding an association identifier).
that the parsing of the PCEP object is expected to be performed Note that the parsing of the PCEP object is expected to be
only by the BGP-LS Consumer (hence, outside the scope of this performed only by the BGP-LS Consumer (hence, outside the scope of
document) and not by any BGP Speaker as specified in [RFC9552]. this document) and not by any BGP Speaker as specified in
If the PCEP object size is such that the update for a single SR [RFC9552]. If the PCEP object size is such that the update for a
Policy Candidate Path NLRI would exceed the supported BGP message single SR Policy Candidate Path NLRI would exceed the supported
size by the implementation, then the PCEP Association Object MUST BGP message size by the implementation, then the PCEP Association
NOT be encoded and this sub-TLV skipped along with an error log. Object MUST NOT be encoded and this sub-TLV skipped along with an
Refer section 5.3 of [RFC9552] for discussion on implications of error log. Refer to Section 5.3 of [RFC9552] for discussion on
encoding large sets of information into BGP-LS. implications of encoding large sets of information into BGP-LS.
5.6.5. SR Bidirectional Group Constraint Sub-TLV 5.6.5. SR Bidirectional Group Constraint Sub-TLV
The SR Bidirectional Group Constraint sub-TLV is an optional sub-TLV The SR Bidirectional Group Constraint sub-TLV is an optional sub-TLV
of the SR Candidate Path Constraints TLV that is used to carry the of the SR Candidate Path Constraints TLV that is used to carry the
bidirectional constraint associated with the candidate path. The bidirectional constraint associated with the candidate path. The
bidirectional relationship between two SR Policy Candidate Paths is bidirectional relationship between two SR Policy Candidate Paths is
expressed by associating them with the same bidirectional group expressed by associating them with the same bidirectional group
identifier and then specifying the type of bidirectional routing identifier and then specifying the type of bidirectional routing
required between their paths. Only a single instance of this sub-TLV required between their paths. Only a single instance of this sub-TLV
is advertised for a given candidate path. If multiple instances are is advertised for a given candidate path. If multiple instances are
present, then the first valid (i.e., not determined to be malformed present, then the first valid one (i.e., not determined to be
as per section 8.2.2 of [RFC9552]) one is used and the rest are malformed as per Section 8.2.2 of [RFC9552]) is used and the rest are
ignored. ignored.
The sub-TLV has the following format: The sub-TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | RESERVED | | Flags | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Bidirectional Group Identifier (variable) // | Bidirectional Group Identifier (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 16 SR Bidirectional Group Constraints Sub-TLV Format Figure 16: SR Bidirectional Group Constraint Sub-TLV Format
Where: Where:
* Type: 1214 Type: 1214
* Length: Variable. Minimum of 8 octets. Length: Variable. Minimum of 8 octets.
* Flags: two octets to indicate the bidirectional path setup Flags: 2 octets to indicate the bidirectional path setup information
information as specified in the form of flags. The following as specified in the form of flags. The following flags are
flags are defined and the other bits MUST be cleared by the defined, and the other bits MUST be cleared by the originator and
originator and MUST be ignored by a receiver. MUST be ignored by a receiver.
0 1 0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|C| | |R|C| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where: Where:
- R-Flag: Indicates that this candidate path of the SR Policy R-Flag: Indicates that the candidate path of the SR Policy forms
forms the reverse path when the R-Flag is set. If the R-Flag the reverse path when the R-Flag is set. If the R-Flag is
is clear, this candidate path forms the forward path. clear, the candidate path forms the forward path.
- C-Flag: Indicates that the bidirectional path is co-routed when C-Flag: Indicates that the bidirectional path is co-routed when
set and indicates that the bidirectional path is not co-routed set and that the bidirectional path is not co-routed when
when clear. clear.
* RESERVED: 2 octets. MUST be set to 0 by the originator and MUST RESERVED: 2 octets. MUST be set to 0 by the originator and MUST be
be ignored by a receiver. ignored by a receiver.
* Bidirectional Group Identifier: 4-octet value that is the group Bidirectional Group Identifier: 4-octet value that is the group
identifier for a set of bidirectional paths. Alternatively, this identifier for a set of bidirectional paths. Alternatively, this
field MAY contain the entire PCEP Association Object as specified field MAY contain the entire PCEP Association Object as specified
in section 6.1 of [RFC8697] (including its optional TLVs) when in Section 6.1 of [RFC8697] (including its optional TLVs) when
PCEP is used for the signaling the SR Policy candidate path and PCEP is used for the signaling of the SR Policy candidate path and
where the BGP-LS Producer is unable to determine the group where the BGP-LS Producer is unable to determine the group
identifier that can be accommodated in a 4-octet value (since PCEP identifier that can be accommodated in a 4-octet value (since PCEP
supports multiple methods of encoding an association identifier). supports multiple methods of encoding an association identifier).
Note that the parsing of the PCEP object is expected to be Note that the parsing of the PCEP object is expected to be
performed only by the BGP-LS Consumer (hence, outside the scope of performed only by the BGP-LS Consumer (hence, outside the scope of
this document) and not by any BGP Speaker as specified in this document) and not by any BGP Speaker as specified in
[RFC9552]. If the PCEP object size is such that the update for a [RFC9552]. If the PCEP object size is such that the update for a
single SR Policy Candidate Path NLRI would exceed the supported single SR Policy Candidate Path NLRI would exceed the supported
BGP message size by the implementation, then the PCEP Association BGP message size by the implementation, then the PCEP Association
Object MUST NOT be encoded and this sub-TLV skipped along with an Object MUST NOT be encoded and this sub-TLV skipped along with an
error log. Refer section 5.3 of [RFC9552] for discussion on error log. Refer to Section 5.3 of [RFC9552] for discussion on
implications of encoding large sets of information into BGP-LS. implications of encoding large sets of information into BGP-LS.
5.6.6. SR Metric Constraint Sub-TLV 5.6.6. SR Metric Constraint Sub-TLV
The SR Metric Constraint sub-TLV is an optional sub-TLV of the SR The SR Metric Constraint sub-TLV is an optional sub-TLV of the SR
Candidate Path Constraints TLV that is used to report the Candidate Path Constraints TLV that is used to report the
optimization metric of the candidate path. For a dynamic path optimization metric of the candidate path. For a dynamic path
computation, it is used to report the optimization metric used along computation, it is used to report the optimization metric used along
with its parameters. For an explicit path, this sub-TLV MAY be used with its parameters. For an explicit path, this sub-TLV MAY be used
to report the metric margin or bound to be used for validation (i.e., to report the metric margin or is bound to be used for validation
the path is invalidated if the metric is beyond specified values). (i.e., the path is invalidated if the metric is beyond specified
Multiple instances of this sub-TLV may be used to report different values). Multiple instances of this sub-TLV may be used to report
metric type uses. different metric type uses.
The sub-TLV has the following format: The sub-TLV has the following format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Metric Type | Flags | RESERVED | | Metric Type | Flags | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Metric Margin | | Metric Margin |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Metric Bound | | Metric Bound |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 17 SR Metric Constraints Sub-TLV Format Figure 17: SR Metric Constraint Sub-TLV Format
Where: Where:
* Type: 1215 Type: 1215
* Length: 12 octets Length: 12 octets
* Metric Type: 1-octet field which identifies the type of the metric Metric Type: 1-octet field that identifies the type of metric being
being used. The Table 1 below lists the metric types introduced used. Table 1 lists the metric types introduced by this document
by this document along with reference for each. Where the along with reference for each. Where the references are for IS-IS
references are for IS-IS and OSPF specifications, those metric and OSPF specifications, those metric types are defined for a link
types are defined for a link while in the SR Policy context those while in the SR Policy context those relate to the candidate path
relate to the candidate path or the segment list. The metric type or the segment list. The metric type code points that may be used
code points that may be used in this sub-TLV are also listed in in this sub-TLV are also listed in Section 8.6 of this document.
Section 8.6 of this document. Note that the metric type in this Note that the metric type in this field is not taken from the "IGP
field is not taken from the "IGP Metric Type" registry from IANA Metric-Type" registry from IANA "IGP Parameters" and is a separate
"IGP Parameters" and is a separate registry that includes IGP registry that includes IGP Metric Types as well as metric types
Metric Types as well as metric types specific to SR Policy path specific to SR Policy path computation. Additional metric types
computation. Additional metric types may be introduced by future may be introduced by future documents. This document does not
documents. This document does not make any assumption of a make any assumptions about a smaller metric value being better
smaller metric value being better than a higher metric value; that than a higher metric value; that is something that is dependent on
is something dependent on the semantics of the specific metric the semantics of the specific metric type. This document uses the
type. The document uses the words "best" and "worst" to abstract words "best" and "worst" to abstract this aspect when referring to
this aspect when referring to metric margins and bounds. metric margins and bounds.
- Type 0: IGP: In IS-IS, this is known as the default metric and Type 0: IGP:
specified in section 3 of [RFC5305]. This is known as metric This is specified in Section 3 of [RFC5305] for IS-IS and is
in both OSPFv2 [RFC2328] and OSPFv3 [RFC5340]. known as the default metric. This is specified in [RFC2328]
for OSPFv2 and in [RFC5340] for OSPFv3 and is known as the
metric in both.
- Type 1: Min Unidirectional Delay: This is specified in section Type 1: Min Unidirectional Delay:
4.2 of [RFC8570] for IS-IS and in section 4.2 of [RFC7471] for This is specified in Section 4.2 of [RFC8570] for IS-IS and in
OSPFv2/OSPFv3. Section 4.2 of [RFC7471] for OSPFv2/OSPFv3.
- Type 2: TE: This is specified in section 3.7 of [RFC5305] as Type 2: TE:
the TE default metric for IS-IS, in section 2.5.5 of [RFC3630] This is specified in Section 3.7 of [RFC5305] for IS-IS as the
for OSPFv2, and in section 4 of [RFC5329] for OSPFv3. TE default metric, in Section 2.5.5 of [RFC3630] for OSPFv2,
and in Section 4 of [RFC5329] for OSPFv3.
- Type 3: Hop Count: This is specified in section 7.8 of Type 3: Hop Count:
[RFC5440]. This is specified in Section 7 of [RFC5440].
- Type 4: SID List Length: This is specified in section 4.5 of Type 4: SID List Length:
[RFC8664]. This is specified in Section 4.5 of [RFC8664].
- Type 5: Bandwidth: This is specified in section 4 of Type 5: Bandwidth:
[I-D.ietf-lsr-flex-algo-bw-con]. This is specified in Section 4 of [RFC9843].
- Type 6: Average Unidirectional Delay: This is specified in Type 6: Avg Unidirectional Delay:
section 4.1 of [RFC8570] for IS-IS and in section 4.1 of This is specified in Section 4.1 of [RFC8570] for IS-IS and in
[RFC7471] for OSPFv2/OSPFv3. Section 4.1 of [RFC7471] for OSPFv2/OSPFv3.
- Type 7: Unidirectional Delay Variation: This is specified in Type 7: Unidirectional Delay Variation:
section 4.3 of [RFC8570] for IS-IS and in section 4.3 of This is specified in Section 4.3 of [RFC8570] for IS-IS and in
[RFC7471] for OSPFv2/OSPFv3. Section 4.3 of [RFC7471] for OSPFv2/OSPFv3.
- Type 8: Loss: This is specified in section 4.4 of [RFC8570] for Type 8: Loss:
IS-IS and in section 4.4 of [RFC7471] for OSPFv2/OSPFv3. This is specified in Section 4.4 of [RFC8570] for IS-IS and in
Section 4.4 of [RFC7471] for OSPFv2/OSPFv3.
- Types 128 to 255 (both inclusive): User Defined: This is Types 128 to 255 (both inclusive): User Defined:
specified for IS-IS and OSPF in section 2 of This is specified in Section 2 of [RFC9843] for IS-IS and OSPF.
[I-D.ietf-lsr-flex-algo-bw-con].
* Flags: 1-octet field that indicates the validity of the metric Flags: 1-octet field that indicates the validity of the metric
fields and their semantics. The following bit positions are fields and their semantics. The following bit positions are
defined and the other bits MUST be cleared by the originator and defined, and the other bits MUST be cleared by the originator and
MUST be ignored by a receiver. MUST be ignored by a receiver.
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|O|M|A|B| | |O|M|A|B| |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Where: Where:
- O-Flag: Indicates that this is the optimization metric being O-Flag: Indicates that this is the optimization metric being
reported for a dynamic candidate path when set and indicates reported for a dynamic candidate path when set and that the
that the metric is not the optimization metric when clear. metric is not the optimization metric when clear. This bit
This bit MUST NOT be set in more than one instance of this TLV MUST NOT be set in more than one instance of this TLV for a
for a given candidate path advertisement. given candidate path advertisement.
- M-Flag: Indicates that the metric margin allowed is specified M-Flag: Indicates that the metric margin allowed is specified
when set and indicates that metric margin allowed is not when set and that the metric margin allowed is not specified
specified when clear. when clear.
- A-Flag: Indicates that the metric margin is specified as an A-Flag: Indicates that the metric margin is specified as an
absolute value when set and is expressed as a percentage of the absolute value when set and that the metric margin is expressed
minimum metric when clear. as a percentage of the minimum metric when clear.
- B-Flag: Indicates that the metric bound allowed for the path is B-Flag: Indicates that the metric bound allowed for the path is
specified when set and indicates that metric bound is not specified when set and that the metric bound is not specified
specified when clear. when clear.
* RESERVED: 2 octets. MUST be set to 0 by the originator and MUST RESERVED: 2 octets. MUST be set to 0 by the originator and MUST be
be ignored by a receiver. ignored by a receiver.
* Metric Margin: 4-octet value which indicates the metric margin Metric Margin: 4-octet value that indicates the metric margin when
when the M-flag is set. The metric margin is specified, depending the M-flag is set. The metric margin is specified, depending on
on the A-flag, as either an absolute value or as a percentage of the A-flag, as either an absolute value or a percentage of the
the best computed path metric based on the specified constraints best computed path metric based on the specified constraints for
for path calculation. The metric margin allows for the metric path calculation. The metric margin allows for the metric value
value of the computed path to vary (depending on the semantics of of the computed path to vary (depending on the semantics of the
the specific metric type) from the best metric value possible to specific metric type) from the best metric value possible to
optimize for other factors (that are not specified as constraints) optimizing for other factors (that are not specified as
such as bandwidth availability, minimal SID stack depth, and constraints) such as bandwidth availability, minimal SID stack
maximizing of ECMP for the SR path computed. depth, and the maximizing of ECMP for the computed SR path.
* Metric Bound: 4-octet value which indicates the worst metric value Metric Bound: 4-octet value that indicates the worst metric value
(depending on the semantics of the specific metric type) that is (depending on the semantics of the specific metric type) allowed
allowed when the B-flag is set. If the computed path metric when the B-flag is set. If the computed path metric crosses the
crosses the specified bound value then the path is considered specified bound value, then the path is considered invalid.
invalid.
The absolute metric margin and the metric bound values are encoded as The absolute metric margin and the metric bound values are encoded as
specified for each metric type. For metric types that are smaller specified for each metric type. For metric types that are smaller
than 4 octets in size, the most significant bits are filled with than 4 octets in size, the most significant bits are filled with
zeros. The percentage metric margin is encoded as an unsigned zeros. The percentage metric margin is encoded as an unsigned
integer percentage value. integer percentage value.
5.7. SR Segment List TLV 5.7. SR Segment List TLV
The SR Segment List TLV is used to report a single SID-List of a The SR Segment List TLV is used to report a single SID-List of a
skipping to change at page 31, line 33 skipping to change at line 1428
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | RESERVED | | Flags | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MTID | Algorithm | RESERVED | | MTID | Algorithm | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Weight (4 octets) | | Weight (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sub-TLVs (variable) // | sub-TLVs (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 18 SR Segment List TLV Format Figure 18: SR Segment List TLV Format
Where: Where:
* Type: 1205 Type: 1205
* Length: variable Length: Variable
* Flags: 2-octet field that indicates attribute and status of the Flags: 2-octet field that indicates the attribute and status of the
SID-List.The following bit positions are defined and the semantics SID-List. The following bit positions are defined, and the
are described in detail in [RFC9256]. Other bits MUST be cleared semantics are described in detail in [RFC9256]. Other bits MUST
by the originator and MUST be ignored by a receiver. be cleared by the originator and MUST be ignored by a receiver.
0 1 0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|D|E|C|V|R|F|A|T|M| | |D|E|C|V|R|F|A|T|M| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where: Where:
- D-Flag: Indicates the SID-List consists of SRv6 SIDs when set D-Flag: Indicates that the SID-List consists of SRv6 SIDs when
and indicates it consists of SR/MPLS labels when clear. set and SR/MPLS labels when clear.
- E-Flag: Indicates that SID-List is associated with an explicit E-Flag: Indicates that the SID-List is associated with an
candidate path when set and with a dynamic candidate path when explicit candidate path when set and a dynamic candidate path
clear. All segment lists of a given candidate path MUST be when clear. All segment lists of a given candidate path MUST
either explicit or dynamic and in case of inconsistency, the be either explicit or dynamic. In case of inconsistency, the
receiver MAY consider them all to be dynamic. receiver MAY consider them all to be dynamic.
- C-Flag: Indicates that SID-List has been computed for a dynamic C-Flag: Indicates that the SID-List has been computed for a
path when set. It is always reported as set for explicit dynamic path when set. It is always reported as set for
paths. When clear, it indicates that the SID-List has not been explicit paths. When clear, it indicates that the SID-List has
computed for a dynamic path. not been computed for a dynamic path.
- V-Flag: Indicates the SID-List has passed verification or its V-Flag: Indicates that the SID-List has passed verification or
verification was not required when set and failed verification its verification was not required when set and that it failed
when clear. verification when clear.
- R-Flag: Indicates that the first Segment has been resolved when R-Flag: Indicates that the first Segment has been resolved when
set and failed resolution when clear. set and that it failed resolution when clear.
- F-Flag: Indicates that the computation for the dynamic path F-Flag: Indicates that the computation for the dynamic path
failed when set and succeeded (or not required in case of failed when set and that it succeeded (or was not required in
explicit path) when clear. case of an explicit path) when clear.
- A-Flag: Indicates that all the SIDs in the SID-List belong to A-Flag: Indicates that all the SIDs in the SID-List belong to the
the specified algorithm when set and indicates that not all the specified algorithm when set and that not all the SIDs belong
SIDs belong to the specified algorithm when clear. to the specified algorithm when clear.
- T-Flag: Indicates that all the SIDs in the SID-List belong to T-Flag: Indicates that all the SIDs in the SID-List belong to the
the specified topology (identified by the multi-topology ID) specified topology (identified by the multi-topology ID) when
when set and indicates that not all the SIDs belong to the set and that not all the SIDs belong to the specified topology
specified topology when clear. when clear.
- M-Flag: Indicates that the SID-list has been removed from the M-Flag: Indicates that the SID-list has been removed from the
forwarding plane due to fault detection by a monitoring forwarding plane due to fault detection by a monitoring
mechanism (e.g. BFD) when set and indicates no fault detected mechanism (e.g., Bidirectional Forwarding Detection (BFD)) when
or monitoring is not being done when clear. set and that no fault is detected or no monitoring is being
done when clear.
* RESERVED: 2 octets. MUST be set to 0 by the originator and MUST RESERVED: 2 octets. MUST be set to 0 by the originator and MUST be
be ignored by a receiver. ignored by a receiver.
* MTID: 2 octets that indicates the multi-topology identifier of the MTID: 2 octets that indicate the multi-topology identifier of the
IGP topology that is to be used when the T-flag is set. IGP topology that is to be used when the T-flag is set.
* Algorithm: 1 octet that indicates the algorithm of the SIDs used Algorithm: 1 octet that indicates the algorithm of the SIDs used in
in the SID-List when the A-flag is set. The algorithm values are the SID-List when the A-flag is set. The algorithm values are
from IGP Algorithm Types registry under the IANA Interior Gateway from the "IGP Algorithm Types" IANA registry under the "Interior
Protocol (IGP) Parameters. Gateway Protocol (IGP) Parameters" registry group.
* RESERVED: 1 octet. MUST be set to 0 by the originator and MUST be RESERVED: 1 octet. MUST be set to 0 by the originator and MUST be
ignored by a receiver. ignored by a receiver.
* Weight: 4-octet field that indicates the weight associated with Weight: 4-octet field that indicates the weight associated with the
the SID-List for weighted load-balancing. Refer to section 2.2 SID-List for weighted load balancing. Refer to Sections 2.2 and
and 2.11 of [RFC9256]. 2.11 of [RFC9256].
* Sub-TLVs: variable and contains the ordered set of Segments and Sub-TLVs: Variable and contain the ordered set of Segments and any
any other optional attributes associated with the specific SID- other optional attributes associated with the specific SID-List.
List.
The SR Segment sub-TLV (defined in Section 5.7.1) MUST be included as The SR Segment sub-TLV (defined in Section 5.7.1) MUST be included as
an ordered set of sub-TLVs within the SR Segment List TLV when the an ordered set of sub-TLVs within the SR Segment List TLV when the
SID-List is not empty. A SID-List may be empty in certain situations SID-List is not empty. A SID-List may be empty in certain situations
(e.g. for a dynamic path) where the headend has not yet performed the (e.g., for a dynamic path) where the headend has not yet performed
computation and hence not derived the segments required for the path. the computation and hence not derived the segments required for the
In such cases where the SID-LIST is empty, the SR Segment List TLV path. In such cases where the SID-LIST is empty, the SR Segment List
MUST NOT include any SR Segment sub-TLVs. TLV MUST NOT include any SR Segment sub-TLVs.
5.7.1. SR Segment Sub-TLV 5.7.1. SR Segment Sub-TLV
The SR Segment sub-TLV describes a single segment in a SID-List. One The SR Segment sub-TLV describes a single segment in a SID-List. One
or more instances of this sub-TLV in an ordered manner constitute a or more instances of this sub-TLV in an ordered manner constitute a
SID-List for an SR Policy candidate path. It is a sub-TLV of the SR SID-List for an SR Policy candidate path. It is a sub-TLV of the SR
Segment List TLV and it has the following format: Segment List TLV and it has the following format:
0 1 2 3 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 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
skipping to change at page 33, line 50 skipping to change at line 1539
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Segment Type | RESERVED | Flags | | Segment Type | RESERVED | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (4 or 16 octets) // | SID (4 or 16 octets) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Segment Descriptor (variable) // // Segment Descriptor (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Sub-TLVs (variable) // // Sub-TLVs (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 19 SR Segment Sub-TLV Format Figure 19: SR Segment Sub-TLV Format
Where: Where:
* Type: 1206 Type: 1206
* Length: variable Length: Variable
* Segment Type: 1 octet which indicates the type of segment. Segment Type: 1 octet that indicates the type of segment. Initial
Initial values are specified by this document (see Section 5.7.1.1 values are specified by this document (see Section 5.7.1.1 for
for details). Additional segment types are possible, but out of details). Additional segment types are possible but are out of
scope for this document. scope for this document.
* RESERVED: 1 octet. MUST be set to 0 by the originator and MUST be RESERVED: 1 octet. MUST be set to 0 by the originator and MUST be
ignored by a receiver. ignored by a receiver.
* Flags: 2-octet field that indicates attribute and status of the Flags: 2-octet field that indicates the attribute and status of the
Segment and its SID. The following bit positions are defined and Segment and its SID. The following bit positions are defined, and
the semantics are described in section 5 of [RFC9256]. Other bits the semantics are described in Section 5 of [RFC9256]. Other bits
MUST be cleared by the originator and MUST be ignored by a MUST be cleared by the originator and MUST be ignored by a
receiver. receiver.
0 1 0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|S|E|V|R|A| | |S|E|V|R|A| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where: Where:
- S-Flag: Indicates the presence of SID value in the SID field S-Flag: Indicates the presence of the SID value in the SID field
when set and that no value is indicated when clear. when set and no value when clear.
- E-Flag: Indicates the SID value is explicitly provisioned value E-Flag: Indicates that the SID value is an explicitly provisioned
(locally on headend or via controller/PCE) when set and is a value (locally on headend or via controller/PCE) when set and
dynamically resolved value by headend when clear is a dynamically resolved value by headend when clear.
- V-Flag: Indicates the SID has passed verification or did not V-Flag: Indicates that the SID has passed verification or did not
require verification when set. When V-Flag is clear, it require verification when set. When the V-Flag is clear, it
indicates the SID has failed verification. indicates the SID has failed verification.
- R-Flag: Indicates the SID has been resolved or did not require R-Flag: Indicates that the SID has been resolved or did not
resolution (e.g. because it is not the first SID) when set. require resolution (e.g., because it is not the first SID) when
When R-Flag is clear, it indicates the SID has failed set. When the R-Flag is clear, it indicates the SID has failed
resolution. resolution.
- A-Flag: Indicates that the Algorithm indicated in the Segment A-Flag: Indicates that the Algorithm indicated in the Segment
descriptor is valid when set. When clear, it indicates that descriptor is valid when set. When clear, it indicates that
the headend is unable to determine the algorithm of the SID. the headend is unable to determine the algorithm of the SID.
* SID: 4 octets carrying the MPLS Label or 16 octets carrying the SID: 4 octets carrying the MPLS Label or 16 octets carrying the SRv6
SRv6 SID based on the Segment Type. When carrying the MPLS Label, SID based on the Segment Type. When carrying the MPLS Label, as
as shown in the figure below, the TC, S, and TTL (total of 12 shown in the figure below, the TC, S, and TTL (total of 12 bits)
bits) are RESERVED and MUST be set to 0 by the originator and MUST are RESERVED and MUST be set to 0 by the originator and MUST be
be ignored by a receiver. ignored by a receiver.
0 1 2 3 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 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 | TC |S| TTL | | Label | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* Segment Descriptor: variable size Segment descriptor based on the Segment Descriptor: Variable size Segment descriptor based on the
type of segment (refer to Section 5.7.1.1 for details) type of segment (refer to Section 5.7.1.1 for details).
* Sub-Sub-TLVs: variable and contains any other optional attributes Sub-Sub-TLVs: Variable and contain any other optional attributes
associated with the specific segment. associated with the specific segment.
The SRv6 Endpoint Behavior TLV (1250) and the SRv6 SID Structure TLV The SRv6 Endpoint Behavior TLV (1250) and the SRv6 SID Structure TLV
(1252) defined in [RFC9514] are used as sub-sub-TLVs of the SR (1252) defined in [RFC9514] are used as sub-sub-TLVs of the SR
Segment sub-TLV. These two sub-sub-TLVs are used to optionally Segment sub-TLV. These two sub-sub-TLVs are used to optionally
indicate the SRv6 Endpoint behavior and SID structure when indicate the SRv6 Endpoint behavior and SID structure when
advertising the SRv6 specific segment types. advertising the SRv6-specific segment types.
5.7.1.1. Segment Descriptors 5.7.1.1. Segment Descriptors
Section 4 of [RFC9256] defines multiple types of segments and their Section 4 of [RFC9256] defines multiple types of segments and their
description. This section defines the encoding of the Segment descriptions. This section defines the encoding of the Segment
Descriptors for each of those Segment types to be used in the Segment Descriptors for each of those segment types to be used in the Segment
sub-TLV described previously in Section 5.7.1. sub-TLV described previously in Section 5.7.1.
The following types are currently defined and their mapping to the The following types are currently defined, and their mappings to the
respective segment types defined in [RFC9256]: respective segment types are defined in [RFC9256]:
+------+-------------------------------------------------------------+ +======+=========================================================+
| Type | Segment Description | | Type | Segment Description |
+------+-------------------------------------------------------------+ +======+=========================================================+
| 1 | (Type A) SR-MPLS Label | | 1 | (Type A) SR-MPLS Label |
| 2 | (Type B) SRv6 SID as IPv6 address | +------+---------------------------------------------------------+
| 3 | (Type C) SR-MPLS Prefix SID as IPv4 Node Address | | 2 | (Type B) SRv6 SID as IPv6 address |
| 4 | (Type D) SR-MPLS Prefix SID as IPv6 Node Global Address | +------+---------------------------------------------------------+
| 5 | (Type E) SR-MPLS Adjacency SID as IPv4 Node Address & Local | | 3 | (Type C) SR-MPLS Prefix SID as IPv4 Node Address |
| | Interface ID | +------+---------------------------------------------------------+
| 6 | (Type F) SR-MPLS Adjacency SID as IPv4 Local & Remote | | 4 | (Type D) SR-MPLS Prefix SID as IPv6 Node Global Address |
| | Interface Addresses | +------+---------------------------------------------------------+
| 7 | (Type G) SR-MPLS Adjacency SID as pair of IPv6 Global | | 5 | (Type E) SR-MPLS Adjacency SID as IPv4 Node Address & |
| | Address & Interface ID for Local & Remote nodes | | | Local Interface ID |
| 8 | (Type H) SR-MPLS Adjacency SID as pair of IPv6 Global | +------+---------------------------------------------------------+
| | Addresses for the Local & Remote Interface | | 6 | (Type F) SR-MPLS Adjacency SID as IPv4 Local & Remote |
| 9 | (Type I) SRv6 END SID as IPv6 Node Global Address | | | Interface Addresses |
| 10 | (Type J) SRv6 END.X SID as pair of IPv6 Global Address & | +------+---------------------------------------------------------+
| | Interface ID for Local & Remote nodes | | 7 | (Type G) SR-MPLS Adjacency SID as pair of IPv6 Global |
| 11 | (Type K) SRv6 END.X SID as pair of IPv6 Global Addresses | | | Address & Interface ID for Local & Remote nodes |
| | for the Local & Remote Interface | +------+---------------------------------------------------------+
+------+-------------------------------------------------------------+ | 8 | (Type H) SR-MPLS Adjacency SID as pair of IPv6 Global |
| | Addresses for the Local & Remote Interface |
+------+---------------------------------------------------------+
| 9 | (Type I) SRv6 END SID as IPv6 Node Global Address |
+------+---------------------------------------------------------+
| 10 | (Type J) SRv6 END.X SID as pair of IPv6 Global Address |
| | & Interface ID for Local & Remote nodes |
+------+---------------------------------------------------------+
| 11 | (Type K) SRv6 END.X SID as pair of IPv6 Global |
| | Addresses for the Local & Remote Interface |
+------+---------------------------------------------------------+
Table 1 SR Segment Types Table 1: SR Segment Types
5.7.1.1.1. Type 1: SR-MPLS Label (Type A) 5.7.1.1.1. Type 1: SR-MPLS Label (Type A)
The Segment is SR-MPLS type and is specified simply as the label. The Segment is an SR-MPLS type and is specified simply as the label.
The format of its Segment Descriptor is as follows: The format of its Segment Descriptor is as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| Algorithm | | Algorithm |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Figure 20 Type 1 Segment Descriptor Figure 20: Type 1 Segment Descriptor
Where: Where:
* Algorithm: 1-octet value that indicates the algorithm used for Algorithm: 1-octet value that indicates the algorithm used for
picking the SID. This is valid only when the A-flag has been set picking the SID. This is valid only when the A-flag has been set
in the Segment TLV. The algorithm values are from IGP Algorithm in the Segment TLV. The algorithm values are from the "IGP
Types registry under the IANA Interior Gateway Protocol (IGP) Algorithm Types" IANA registry under the "Interior Gateway
Parameters. Protocol (IGP) Parameters" registry group.
5.7.1.1.2. Type 2: SRv6 SID (Type B) 5.7.1.1.2. Type 2: SRv6 SID (Type B)
The Segment is SRv6 type and is specified simply as the SRv6 SID The Segment is an SRv6 type and is specified simply as the SRv6 SID
address. The format of its Segment Descriptor is as follows: address. The format of its Segment Descriptor is as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| Algorithm | | Algorithm |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Figure 21 Type 2 Segment Descriptor Figure 21: Type 2 Segment Descriptor
Where: Where:
* Algorithm: 1-octet value that indicates the algorithm used for Algorithm: 1-octet value that indicates the algorithm used for
picking the SID. This is valid only when the A-flag has been set picking the SID. This is valid only when the A-flag has been set
in the Segment TLV. The algorithm values are from IGP Algorithm in the Segment TLV. The algorithm values are from the "IGP
Types registry under the IANA Interior Gateway Protocol (IGP) Algorithm Types" IANA registry under the "Interior Gateway
Parameters. Protocol (IGP) Parameters" registry group.
5.7.1.1.3. Type 3: SR-MPLS Prefix SID for IPv4 (Type C) 5.7.1.1.3. Type 3: SR-MPLS Prefix SID for IPv4 (Type C)
The Segment is SR-MPLS Prefix SID type and is specified as an IPv4 The Segment is an SR-MPLS Prefix SID type and is specified as an IPv4
node address. The format of its Segment Descriptor is as follows: node address. The format of its Segment Descriptor is as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| Algorithm | | Algorithm |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Node Address (4 octets) | | IPv4 Node Address (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 22 Type 3 Segment Descriptor Figure 22: Type 3 Segment Descriptor
Where: Where:
* Algorithm: 1-octet value that indicates the algorithm used for Algorithm: 1-octet value that indicates the algorithm used for
picking the SID. The algorithm values are from IGP Algorithm picking the SID. The algorithm values are from the "IGP Algorithm
Types registry under the IANA Interior Gateway Protocol (IGP) Types" IANA registry under the "Interior Gateway Protocol (IGP)
Parameters. Parameters" registry group.
* IPv4 Node Address: 4-octet value which carries the IPv4 address IPv4 Node Address: 4-octet value that carries the IPv4 address
associated with the node associated with the node.
5.7.1.1.4. Type 4: SR-MPLS Prefix SID for IPv6 (Type D) 5.7.1.1.4. Type 4: SR-MPLS Prefix SID for IPv6 (Type D)
The Segment is SR-MPLS Prefix SID type and is specified as an IPv6 The Segment is an SR-MPLS Prefix SID type and is specified as an IPv6
global address. The format of its Segment Descriptor is as follows: node global address. The format of its Segment Descriptor is as
follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| Algorithm | | Algorithm |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| IPv6 Node Global Address (16 octets) | | IPv6 Node Global Address (16 octets) |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 23 Type 4 Segment Descriptor Figure 23: Type 4 Segment Descriptor
Where: Where:
* Algorithm: 1-octet value that indicates the algorithm used for Algorithm: 1-octet value that indicates the algorithm used for
picking the SID. The algorithm values are from IGP Algorithm picking the SID. The algorithm values are from the "IGP Algorithm
Types registry under the IANA Interior Gateway Protocol (IGP) Types" IANA registry under the "Interior Gateway Protocol (IGP)
Parameters. Parameters" registry group.
* IPv6 Node Global Address: 16-octet value which carries the IPv6 IPv6 Node Global Address: 16-octet value that carries the IPv6
global address associated with the node global address associated with the node.
5.7.1.1.5. Type 5: SR-MPLS Adjacency SID for IPv4 with an Interface ID 5.7.1.1.5. Type 5: SR-MPLS Adjacency SID for IPv4 with an Interface ID
(Type E) (Type E)
The Segment is SR-MPLS Adjacency SID type and is specified as an IPv4 The Segment is an SR-MPLS Adjacency SID type and is specified as an
node address along with the local interface ID on that node. The IPv4 node address along with the local interface ID on that node.
format of its Segment Descriptor is as follows: The format of its Segment Descriptor is as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Node Address (4 octets) | | IPv4 Node Address (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Local Interface ID (4 octets) | | Local Interface ID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 24 Type 5 Segment Descriptor Figure 24: Type 5 Segment Descriptor
Where: Where:
* IPv4 Node Address: 4-octet value which carries the IPv4 address IPv4 Node Address: 4-octet value that carries the IPv4 address
associated with the node associated with the node.
* Local Interface ID: 4-octet value which carries the local Local Interface ID: 4-octet value that carries the local interface
interface ID of the node identified by the Node Address ID of the node identified by the Node Address.
5.7.1.1.6. Type 6: SR-MPLS Adjacency SID for IPv4 with an Interface 5.7.1.1.6. Type 6: SR-MPLS Adjacency SID for IPv4 with an Interface
Address (Type F) Address (Type F)
The Segment is SR-MPLS Adjacency SID type and is specified as a pair The Segment is an SR-MPLS Adjacency SID type and is specified as a
of IPv4 local and remote addresses. The format of its Segment pair of IPv4 local and remote interface addresses. The format of its
Descriptor is as follows: Segment Descriptor is as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Local Address (4 octets) | | IPv4 Local Address (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Remote Address (4 octets) | | IPv4 Remote Address (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 25 Type 6 Segment Descriptor Figure 25: Type 6 Segment Descriptor
Where: Where:
* IPv4 Local Address: 4-octet value which carries the local IPv4 IPv4 Local Address: 4-octet value that carries the local IPv4
address associated with the node's interface address associated with the node's interface.
* IPv4 Remote Address: 4-octet value which carries the remote IPv4 IPv4 Remote Address: 4-octet value that carries the remote IPv4
address associated with interface on the node's neighbor. This is address associated with the interface on the node's neighbor.
optional and MAY be set to 0 when not used (e.g. when identifying This is optional and MAY be set to 0 when not used (e.g., when
point-to-point links). identifying point-to-point links).
5.7.1.1.7. Type 7: SR-MPLS Adjacency SID for IPv6 with an interface ID 5.7.1.1.7. Type 7: SR-MPLS Adjacency SID for IPv6 with an Interface ID
(Type G) (Type G)
The Segment is SR-MPLS Adjacency SID type and is specified as a pair The Segment is an SR-MPLS Adjacency SID type and is specified as a
of IPv6 global address and interface ID for local and remote nodes. pair of IPv6 global address and interface ID for local and remote
The format of its Segment Descriptor is as follows: nodes. The format of its Segment Descriptor is as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| IPv6 Local Node Global Address (16 octets) | | IPv6 Local Node Global Address (16 octets) |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Local Node Interface ID (4 octets) | | Local Node Interface ID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| IPv6 Remote Node Global Address (16 octets) | | IPv6 Remote Node Global Address (16 octets) |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Remote Node Interface ID (4 octets) | | Remote Node Interface ID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 26 Type 7 Segment Descriptor Figure 26: Type 7 Segment Descriptor
Where: Where:
* IPv6 Local Node Global Address: 16-octet value which carries the IPv6 Local Node Global Address: 16-octet value that carries the IPv6
IPv6 global address associated with the local node global address associated with the local node.
* Local Node Interface ID : 4-octet value which carries the Local Node Interface ID: 4-octet value that carries the interface ID
interface ID of the local node identified by the Local Node of the local node identified by the Local Node Address.
Address
* IPv6 Remote Node Global Address: 16-octet value which carries the IPv6 Remote Node Global Address: 16-octet value that carries the
IPv6 global address associated with the remote node. This is IPv6 global address associated with the remote node. This is
optional and MAY be set to 0 when not used (e.g. when identifying optional and MAY be set to 0 when not used (e.g., when identifying
point-to-point links). point-to-point links).
* Remote Node Interface ID: 4-octet value which carries the Remote Node Interface ID: 4-octet value that carries the interface
interface ID of the remote node identified by the Remote Node ID of the remote node identified by the Remote Node Address. This
Address. This is optional and MAY be set to 0 when not used (e.g. is optional and MAY be set to 0 when not used (e.g., when
when identifying point-to-point links). identifying point-to-point links).
5.7.1.1.8. Type 8: SR-MPLS Adjacency SID for IPv6 with an Interface 5.7.1.1.8. Type 8: SR-MPLS Adjacency SID for IPv6 with an Interface
Address (Type H) Address (Type H)
The Segment is SR-MPLS Adjacency SID type and is specified as a pair The Segment is an SR-MPLS Adjacency SID type and is specified as a
of IPv6 Global addresses for local and remote interface addresses. pair of IPv6 global addresses for local and remote interface
The format of its Segment Descriptor is as follows: addresses. The format of its Segment Descriptor is as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Global IPv6 Local Interface Address (16 octets) | | Global IPv6 Local Interface Address (16 octets) |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Global IPv6 Remote Interface Address (16 octets) | | Global IPv6 Remote Interface Address (16 octets) |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 27 Type 8 Segment Descriptor Figure 27: Type 8 Segment Descriptor
Where: Where:
* IPv6 Local Address: 16-octet value which carries the local IPv6 IPv6 Local Address: 16-octet value that carries the local IPv6
address associated with the node's interface address associated with the node's interface.
* IPv6 Remote Address: 16-octet value which carries the remote IPv6 IPv6 Remote Address: 16-octet value that carries the remote IPv6
address associated with the interface on the node's neighbor address associated with the interface on the node's neighbor.
5.7.1.1.9. Type 9: SRv6 END SID as IPv6 Node Address (Type I) 5.7.1.1.9. Type 9: SRv6 END SID as IPv6 Node Address (Type I)
The Segment is SRv6 END SID type and is specified as an IPv6 global The Segment is an SRv6 END SID type and is specified as an IPv6 node
address. The format of its Segment Descriptor is as follows: global address. The format of its Segment Descriptor is as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| Algorithm | | Algorithm |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| IPv6 Node Global Address (16 octets) | | IPv6 Node Global Address (16 octets) |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 28 Type 9 Segment Descriptor Figure 28: Type 9 Segment Descriptor
Where: Where:
* Algorithm: 1-octet value that indicates the algorithm used for Algorithm: 1-octet value that indicates the algorithm used for
picking the SID. The algorithm values are from IGP Algorithm picking the SID. The algorithm values are from the "IGP Algorithm
Types registry under the IANA Interior Gateway Protocol (IGP) Types" IANA registry under the "Interior Gateway Protocol (IGP)
Parameters. Parameters" registry group.
* IPv6 Node Global Address: 16-octet value which carries the IPv6 IPv6 Node Global Address: 16-octet value that carries the IPv6
global address associated with the node global address associated with the node.
5.7.1.1.10. Type 10: SRv6 END.X SID as an Interface ID (Type J) 5.7.1.1.10. Type 10: SRv6 END.X SID as an Interface ID (Type J)
The Segment is SRv6 END.X SID type and is specified as a pair of IPv6 The Segment is an SRv6 END.X SID type and is specified as a pair of
global address and interface ID for local and remote nodes. The IPv6 global address and interface ID for local and remote nodes. The
format of its Segment Descriptor is as follows: format of its Segment Descriptor is as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| IPv6 Local Node Global Address (16 octets) | | IPv6 Local Node Global Address (16 octets) |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Local Node Interface ID (4 octets) | | Local Node Interface ID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| IPv6 Remote Node Global Address (16 octets) | | IPv6 Remote Node Global Address (16 octets) |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Remote Node Interface ID (4 octets) | | Remote Node Interface ID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 29 Type 10 Segment Descriptor Figure 29: Type 10 Segment Descriptor
Where: Where:
* IPv6 Local Node Global Address: 16-octet value which carries the IPv6 Local Node Global Address: 16-octet value that carries the IPv6
IPv6 global address associated with the local node global address associated with the local node.
* Local Node Interface ID: 4-octet value which carries the interface Local Node Interface ID: 4-octet value that carries the interface ID
ID of the local node identified by the Local Node Address of the local node identified by the Local Node Address.
* IPv6 Remote Node Global Address: 16-octet value which carries the IPv6 Remote Node Global Address: 16-octet value that carries the
IPv6 global address associated with the remote node. This is IPv6 global address associated with the remote node. This is
optional and MAY be set to 0 when not used (e.g. when identifying optional and MAY be set to 0 when not used (e.g., when identifying
point-to-point links). point-to-point links).
* Remote Node Interface ID: 4-octet value which carries the Remote Node Interface ID: 4-octet value that carries the interface
interface ID of the remote node identified by the Remote Node ID of the remote node identified by the Remote Node Address. This
Address. This is optional and MAY be set to 0 when not used (e.g. is optional and MAY be set to 0 when not used (e.g., when
when identifying point-to-point links). identifying point-to-point links).
5.7.1.1.11. Type 11: SRv6 END.X SID as an Interface Address (Type K) 5.7.1.1.11. Type 11: SRv6 END.X SID as an Interface Address (Type K)
The Segment is SRv6 END.X SID type and is specified as a pair of IPv6 The Segment is an SRv6 END.X SID type and is specified as a pair of
Global addresses for local and remote interface addresses. The IPv6 global addresses for local and remote interface addresses. The
format of its Segment Descriptor is as follows: format of its Segment Descriptor is as follows:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Global IPv6 Local Interface Address (16 octets) | | Global IPv6 Local Interface Address (16 octets) |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Global IPv6 Remote Interface Address (16 octets) | | Global IPv6 Remote Interface Address (16 octets) |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 30 Type 11 Segment Descriptor Figure 30: Type 11 Segment Descriptor
Where: Where:
* IPv6 Local Address: 16-octet value which carries the local IPv6 IPv6 Local Address: 16-octet value that carries the local IPv6
address associated with the node's interface address associated with the node's interface.
* IPv6 Remote Address: 16-octet value which carries the remote IPv6 IPv6 Remote Address: 16-octet value that carries the remote IPv6
address associated with the interface on the node's neighbor address associated with the interface on the node's neighbor.
5.7.2. SR Segment List Metric Sub-TLV 5.7.2. SR Segment List Metric Sub-TLV
The SR Segment List Metric sub-TLV reports the computed metric of the The SR Segment List Metric sub-TLV reports the computed metric of the
specific SID-List. It is used to report the type of metric and its specific SID-List. It is used to report the type of metric and its
computed value by the computation entity (i.e., either the headend or computed value by the computation entity (i.e., either the headend or
the controller when the path is delegated) when available. More than the controller when the path is delegated) when available. More than
one instance of this sub-TLV may be present in SR Segment List to one instance of this sub-TLV may be present in the SR Segment List to
report metric values of different metric types. The metric margin report metric values of different metric types. The metric margin
and bound may be optionally reported using this sub-TLV when this and bound may be optionally reported using this sub-TLV when this
information is not being reported using the SR Metric Constraint sub- information is not being reported using the SR Metric Constraint sub-
TLV (refer to Section 5.6.6) at the SR candidate path level. TLV (refer to Section 5.6.6) at the SR Policy candidate path level.
It is a sub-TLV of the SR Segment List TLV and has the following It is a sub-TLV of the SR Segment List TLV and has the following
format: format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Metric Type | Flags | RESERVED | | Metric Type | Flags | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Metric Margin | | Metric Margin |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Metric Bound | | Metric Bound |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Metric Value | | Metric Value |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 31 SR Segment List Metric Sub-TLV Format Figure 31: SR Segment List Metric Sub-TLV Format
Where: Where:
* Type: 1207 Type: 1207
* Length: 16 octets Length: 16 octets
* Metric Type: 1-octet field which identifies the type of metric. Metric Type: 1-octet field that identifies the type of metric. The
The semantics are the same as the Metric Type field in the SR semantics are the same as the Metric Type field in the SR Metric
Metric Constraints sub-TLV in Section 5.6.6 of this document. Constraint sub-TLV in Section 5.6.6 of this document.
* Flags: 1-octet field that indicates the validity of the metric Flags: 1-octet field that indicates the validity of the metric
fields and their semantics. The following bit positions are fields and their semantics. The following bit positions are
defined and the other bits MUST be cleared by the originator and defined, and the other bits MUST be cleared by the originator and
MUST be ignored by a receiver. MUST be ignored by a receiver.
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|M|A|B|V| | |M|A|B|V| |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Where: Where:
- M-Flag: Indicates that the metric margin allowed for this path M-Flag: Indicates that the metric margin allowed for this path
computation is specified when set and indicates that metric computation is specified when set and that the metric margin
margin allowed is not specified when clear. allowed is not specified when clear.
- A-Flag: Indicates that the metric margin is specified as an A-Flag: Indicates that the metric margin is specified as an
absolute value when set and is expressed as a percentage of the absolute value when set and that the metric margin is expressed
minimum metric when clear. as a percentage of the minimum metric when clear.
- B-Flag: Indicates that the metric bound allowed for the path is B-Flag: Indicates that the metric bound allowed for the path is
specified when set and indicates that metric bound is not specified when set and that the metric bound is not specified
specified when clear. when clear.
- V-Flag: Indicates that the metric value computed is being V-Flag: Indicates that the computed metric value is being
reported when set and indicates that the computed metric value reported when set and that the computed metric value is not
is not being reported when clear. being reported when clear.
* RESERVED: 2 octets. MUST be set to 0 by the originator and MUST RESERVED: 2 octets. MUST be set to 0 by the originator and MUST be
be ignored by a receiver. ignored by a receiver.
* Metric Margin: 4-octet value which indicates the metric margin Metric Margin: 4-octet value that indicates the metric margin value
value when the M-flag is set. The metric margin is specified, when the M-flag is set. The metric margin is specified, depending
depending on the A-flag, as either an absolute value or as a on the A-flag, as either an absolute value or a percentage of the
percentage of the best computed path metric based on the specified best computed path metric based on the specified constraints for
constraints for path calculation. The metric margin allows for path calculation. The metric margin allows for the metric value
the metric value of the computed path to vary (depending on the of the computed path to vary (depending on the semantics of the
semantics of the specific metric type) from the best metric value specific metric type) from the best metric value possible to
possible to optimize for other factors (that are not specified as optimizing for other factors (that are not specified as
constraints) such as bandwidth availability, minimal SID stack constraints) such as bandwidth availability, minimal SID stack
depth, and maximizing of ECMP for the SR path computed. depth, and the maximizing of ECMP for the computed SR path.
* Metric Bound: 4-octet value which indicates the worst metric value Metric Bound: 4-octet value that indicates the worst metric value
(depending on the semantics of the specific metric type) that is (depending on the semantics of the specific metric type) that is
allowed when the B-flag is set. If the computed path metric allowed when the B-flag is set. If the computed path metric
crosses the specified bound value then the path is considered crosses the specified bound value, then the path is considered
invalid. invalid.
* Metric Value: 4-octet value which indicates the metric of the Metric Value: 4-octet value that indicates the metric of the
computed path when the V-flag is set. This value is available and computed path when the V-flag is set. This value is available and
reported when the computation is successful and a valid path is reported when the computation is successful and a valid path is
available. available.
The absolute metric margin, metric bound, and metric values are The absolute metric margin, metric bound, and metric values are
encoded as specified for each metric type. For metric types that are encoded as specified for each metric type. For metric types that are
smaller than 4 octets in size, the most significant bits are filled smaller than 4 octets in size, the most significant bits are filled
with zeros. The percentage metric margin is encoded as an unsigned with zeros. The percentage metric margin is encoded as an unsigned
integer percentage value. integer percentage value.
5.7.3. SR Segment List Bandwidth Sub-TLV 5.7.3. SR Segment List Bandwidth Sub-TLV
The SR Segment List Bandwidth sub-TLV is an optional sub-TLV used to The SR Segment List Bandwidth sub-TLV is an optional sub-TLV used to
report the bandwidth allocated to the specific SID-List by the path report the bandwidth allocated to the specific SID-List by the path
computation entity. Only a single instance of this sub-TLV is computation entity. Only a single instance of this sub-TLV is
advertised for a given Segment List. If multiple instances are advertised for a given Segment List. If multiple instances are
present, then the first valid (i.e., not determined to be malformed present, then the first valid one (i.e., not determined to be
as per section 8.2.2 of [RFC9552]) one is used and the rest are malformed as per Section 8.2.2 of [RFC9552]) is used and the rest are
ignored. ignored.
It is a sub-TLV of the SR Segment List TLV and has the following It is a sub-TLV of the SR Segment List TLV and has the following
format: format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Bandwidth | | Bandwidth |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 32 SR Segment List Bandwidth Sub-TLV Format Figure 32: SR Segment List Bandwidth Sub-TLV Format
Where: Where:
* Type: 1216 Type: 1216
* Length: 4 octets Length: 4 octets
* Bandwidth: 4 octets which specify the allocated bandwidth in unit Bandwidth: 4 octets that specify the allocated bandwidth in unit of
of bytes per second in IEEE floating point format [IEEE754]. bytes per second in IEEE floating point format [IEEE754].
5.7.4. SR Segment List Identifier Sub-TLV 5.7.4. SR Segment List Identifier Sub-TLV
The SR Segment List Identifier sub-TLV is an optional sub-TLV used to The SR Segment List Identifier sub-TLV is an optional sub-TLV used to
report an identifier associated with the specific SID-List. Only a report an identifier associated with the specific SID-List. Only a
single instance of this sub-TLV is advertised for a given Segment single instance of this sub-TLV is advertised for a given Segment
List. If multiple instances are present, then the first valid (i.e., List. If multiple instances are present, then the first valid one
not determined to be malformed as per section 8.2.2 of [RFC9552]) one (i.e., not determined to be malformed as per Section 8.2.2 of
is used and the rest are ignored. [RFC9552]) is used and the rest are ignored.
It is a sub-TLV of the SR Segment List TLV and has the following It is a sub-TLV of the SR Segment List TLV and has the following
format: format:
0 1 2 3 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 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 | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Segment List Identifier | | Segment List Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 33 SR Segment List Identifier Sub-TLV Format Figure 33: SR Segment List Identifier Sub-TLV Format
Where: Where:
* Type: 1217 Type: 1217
* Length: 4 octets
* Segment List Identifier: 4 octets which carry a 32-bit unsigned Length: 4 octets
non-zero integer that serves as the identifier associated with the
Segment List Identifier: 4 octets that carry a 32-bit unsigned non-
zero integer that serves as the identifier associated with the
segment list. A value of 0 indicates that there is no identifier segment list. A value of 0 indicates that there is no identifier
associated with the Segment List. The scope of this identifier is associated with the Segment List. The scope of this identifier is
the SR Policy Candidate path. the SR Policy Candidate path.
6. Procedures 6. Procedures
The BGP-LS advertisements for the SR Policy Candidate Path NLRI type The BGP-LS advertisements for the SR Policy Candidate Path NLRI type
are generally originated by the headend node for the SR Policies that are generally originated by the headend node for the SR Policies that
are instantiated on its local node (i.e., the headend is the BGP-LS are instantiated on its local node (i.e., the headend is the BGP-LS
Producer). The BGP-LS Producer may also be a node (e.g., a PCE) that Producer). The BGP-LS Producer may also be a node (e.g., a PCE) that
is advertising on behalf of the headend. is advertising on behalf of the headend.
For the reporting of SR Policy Candidate Paths, the NLRI descriptor For the reporting of SR Policy Candidate Paths, the NLRI descriptor
TLV as specified in Section 4 is used. An SR Policy candidate path TLV as specified in Section 4 is used. An SR Policy candidate path
may be instantiated on the headend node via a local configuration, may be instantiated on the headend node via a local configuration,
PCEP, or BGP SR Policy signaling and this is indicated via the SR PCEP, or BGP SR Policy signaling, and this is indicated via the SR
Protocol Origin. When a PCE node is the BGP-LS Producer, it uses the Protocol Origin. When a PCE node is the BGP-LS Producer, it uses the
"in PCEP" variants of the SR Protocol Origin (where available) so as "in PCEP" variants of the SR Protocol Origin (where available) so as
to distinguish them from advertisements by headend nodes. The SR to distinguish them from advertisements by headend nodes. The SR
Policy Candidate Path's state and attributes are encoded in the BGP- Policy Candidate Path's state and attributes are encoded in the BGP-
LS Attribute field as SR Policy State TLVs and sub-TLVs as described LS Attribute field as SR Policy State TLVs and sub-TLVs as described
in Section 5. The SR Candidate Path State TLV as defined in in Section 5. The SR Candidate Path State TLV as defined in
Section 5.3 is included to report the state of the candidate path. Section 5.3 is included to report the state of the candidate path.
The SR BSID TLV as defined in Section 5.1 or Section 5.2 is included The SR BSID TLV as defined in Sections 5.1 and 5.2 is included to
to report the BSID of the candidate path when one is either specified report the BSID of the candidate path when one is either specified or
or allocated by the headend. The constraints and the optimization allocated by the headend. The constraints and the optimization
metric for the SR Policy Candidate Path are reported using the SR metric for the SR Policy Candidate Path are reported using the SR
Candidate Path Constraints TLV and its sub-TLVs as described in Candidate Path Constraints TLV and its sub-TLVs as described in
Section 5.6. The SR Segment List TLV is included for each of the Section 5.6. The SR Segment List TLV is included for each SID-
SID-List(s) associated with the candidate path. Each SR Segment List List(s) associated with the candidate path. Each SR Segment List TLV
TLV in turn includes SR Segment sub-TLV(s) to report the segment(s) in turn includes an SR Segment sub-TLV(s) to report the segment(s)
and their status. The SR Segment List Metric sub-TLV is used to and its status. The SR Segment List Metric sub-TLV is used to report
report the metric values at an individual SID List level. the metric values at an individual SID List level.
7. Manageability Considerations 7. Manageability Considerations
The Existing BGP operational and management procedures apply to this The existing BGP operational and management procedures apply to this
document. No new procedures are defined in this document. The document. No new procedures are defined in this document. The
considerations as specified in [RFC9552] apply to this document. considerations as specified in [RFC9552] apply to this document.
In general, the SR Policy head-end nodes are responsible for the In general, the SR Policy headend nodes are responsible for the
advertisement of SR Policy state information. advertisement of SR Policy state information.
8. IANA Considerations 8. IANA Considerations
This section describes the code point allocation by IANA for this This section describes the code point allocations by IANA for this
document. document.
8.1. BGP-LS NLRI-Types 8.1. BGP-LS NLRI Types
IANA maintains a registry called "BGP-LS NLRI-Types" in the "Border IANA maintains a registry called "BGP-LS NLRI Types" under the
Gateway Protocol - Link State (BGP-LS) Parameters" registry group. "Border Gateway Protocol - Link State (BGP-LS) Parameters" registry
group.
The following table lists the code points that have been allocated by The following NLRI Type code point has been allocated by IANA:
IANA:
+------+-------------------------------+---------------+ +======+===============================+===========+
| Type | NLRI Type | Reference | | Type | NLRI Type | Reference |
+------+-------------------------------+---------------+ +======+===============================+===========+
| 5 | SR Policy Candidate Path NLRI | this document | | 5 | SR Policy Candidate Path NLRI | RFC 9857 |
+------+-------------------------------+---------------+ +------+-------------------------------+-----------+
Table 2 NLRI Type Codepoint Table 2: NLRI Type Code Point
8.2. BGP-LS Protocol-IDs 8.2. BGP-LS Protocol-IDs
IANA maintains a registry called "BGP-LS Protocol-IDs" in the "Border IANA maintains a registry called "BGP-LS Protocol-IDs" under the
Gateway Protocol - Link State (BGP-LS) Parameters" registry group. "Border Gateway Protocol - Link State (BGP-LS) Parameters" registry
group.
The following Protocol-ID codepoints have been allocated by IANA: The following Protocol-ID code point has been allocated by IANA:
+-------------+----------------------------------+---------------+ +=============+==================================+===========+
| Protocol-ID | NLRI information source protocol | Reference | | Protocol-ID | NLRI information source protocol | Reference |
+-------------+----------------------------------+---------------+ +=============+==================================+===========+
| 9 | Segment Routing | this document | | 9 | Segment Routing | RFC 9857 |
+-------------+----------------------------------+---------------+ +-------------+----------------------------------+-----------+
Table 3 Protocol ID Codepoint Table 3: Protocol-ID Code Point
8.3. BGP-LS TLVs 8.3. BGP-LS TLVs
IANA maintains a registry called "BGP-LS NLRI and Attribute TLVs" in IANA maintains a registry called "BGP-LS NLRI and Attribute TLVs"
the "Border Gateway Protocol - Link State (BGP-LS) Parameters" under the "Border Gateway Protocol - Link State (BGP-LS) Parameters"
registry group. registry group.
The following table lists the TLV code points that have been The following table lists the TLV code points that have been
allocated by IANA: allocated by IANA:
+-------+----------------------------------------+---------------+ +================+=====================================+===========+
| Code | Description | Value defined | | TLV Code Point | Description | Reference |
| Point | | in | +================+=====================================+===========+
+-------+----------------------------------------+---------------+ | 554 | SR Policy Candidate Path Descriptor | RFC 9857 |
| 554 | SR Policy Candidate Path Descriptor | this document | +----------------+-------------------------------------+-----------+
| 1201 | SR Binding SID | this document | | 1201 | SR Binding SID | RFC 9857 |
| 1202 | SR Candidate Path State | this document | +----------------+-------------------------------------+-----------+
| 1203 | SR Candidate Path Name | this document | | 1202 | SR Candidate Path State | RFC 9857 |
| 1204 | SR Candidate Path Constraints | this document | +----------------+-------------------------------------+-----------+
| 1205 | SR Segment List | this document | | 1203 | SR Candidate Path Name | RFC 9857 |
| 1206 | SR Segment | this document | +----------------+-------------------------------------+-----------+
| 1207 | SR Segment List Metric | this document | | 1204 | SR Candidate Path Constraints | RFC 9857 |
| 1208 | SR Affinity Constraint | this document | +----------------+-------------------------------------+-----------+
| 1209 | SR SRLG Constraint | this document | | 1205 | SR Segment List | RFC 9857 |
| 1210 | SR Bandwidth Constraint | this document | +----------------+-------------------------------------+-----------+
| 1211 | SR Disjoint Group Constraint | this document | | 1206 | SR Segment | RFC 9857 |
| 1212 | SRv6 Binding SID | this document | +----------------+-------------------------------------+-----------+
| 1213 | SR Policy Name | this document | | 1207 | SR Segment List Metric | RFC 9857 |
| 1214 | SR Bidirectional Group Constraint | this document | +----------------+-------------------------------------+-----------+
| 1215 | SR Metric Constraint | this document | | 1208 | SR Affinity Constraint | RFC 9857 |
| 1216 | SR Segment List Bandwidth | this document | +----------------+-------------------------------------+-----------+
| 1217 | SR Segment List Identifier | this document | | 1209 | SR SRLG Constraint | RFC 9857 |
+-------+----------------------------------------+---------------+ +----------------+-------------------------------------+-----------+
| 1210 | SR Bandwidth Constraint | RFC 9857 |
+----------------+-------------------------------------+-----------+
| 1211 | SR Disjoint Group Constraint | RFC 9857 |
+----------------+-------------------------------------+-----------+
| 1212 | SRv6 Binding SID | RFC 9857 |
+----------------+-------------------------------------+-----------+
| 1213 | SR Policy Name | RFC 9857 |
+----------------+-------------------------------------+-----------+
| 1214 | SR Bidirectional Group Constraint | RFC 9857 |
+----------------+-------------------------------------+-----------+
| 1215 | SR Metric Constraint | RFC 9857 |
+----------------+-------------------------------------+-----------+
| 1216 | SR Segment List Bandwidth | RFC 9857 |
+----------------+-------------------------------------+-----------+
| 1217 | SR Segment List Identifier | RFC 9857 |
+----------------+-------------------------------------+-----------+
Table 4 NLRI and Attribute TLVs Codepoint Table 4: NLRI and Attribute TLV Code Points
8.4. SR Policy Protocol Origin 8.4. SR Policy Protocol Origin
Note to IANA (RFC editor to remove this before publication): The new Per this document, IANA has created and maintains a new registry
registry creation request below is also present in the draft-ietf- called "SR Policy Protocol Origin" under the "Segment Routing"
pce-segment-routing-policy-cp. IANA is requested to process the registry group with the allocation policy of Expert Review [RFC8126]
registry creation via the first of these two documents to reach using the guidelines for designated experts as specified in
publication stage and the authors of the other document would update [RFC9256]. This registry contains the code points allocated to the
the IANA considerations suitably. The initial allocations in this "Protocol Origin" field defined in Section 4.
document are a super-set of the initial allocations in draft-ietf-
pce-segment-routing-policy-cp.
This document requests IANA to maintain a new registry under "Segment
Routing" registry group with the allocation policy of "Expert Review"
[RFC8126] using the guidelines for Designated Experts as specified in
[RFC9256]. The new registry is called "SR Policy Protocol Origin"
and should have the reference to this document. This registry
contains the codepoints allocated to the "Protocol Origin" field
defined in Section 4.
The registry contains the following codepoints, with initial values, IANA has assigned the initial values as follows:
to be assigned by IANA with the reference set to this document:
+---------+--------------------------------------+---------------+ +=========+================================+===========+
| Code | | | | Code | Protocol Origin | Reference |
| Point | Protocol Origin | Reference | | Point | | |
+---------+--------------------------------------+---------------+ +=========+================================+===========+
| 0 | Reserved (not to be used) | this document | | 0 | Reserved | RFC 9857 |
| 1 | PCEP | this document | +---------+--------------------------------+-----------+
| 2 | BGP SR Policy | this document | | 1 | PCEP | RFC 9857 |
| 3 | Configuration (CLI, YANG model via | this document | +---------+--------------------------------+-----------+
| | NETCONF, etc.) | | | 2 | BGP SR Policy | RFC 9857 |
| 4-9 | Unassigned | this document | +---------+--------------------------------+-----------+
| 10 | PCEP (In PCEP or when | this document | | 3 | Configuration (CLI, YANG model | RFC 9857 |
| | BGP-LS Producer is PCE) | | | | via NETCONF, etc.) | |
| 11-19 | Unassigned | this document | +---------+--------------------------------+-----------+
| 20 | BGP SR Policy (In PCEP or when | this document | | 4-9 | Unassigned | RFC 9857 |
| | BGP-LS Producer is PCE) | | +---------+--------------------------------+-----------+
| 21-29 | Unassigned | this document | | 10 | PCEP (in PCEP or when BGP-LS | RFC 9857 |
| 30 | Configuration (CLI, YANG model via | this document | | | Producer is PCE) | |
| | NETCONF, etc.) (In PCEP or when | | +---------+--------------------------------+-----------+
| | BGP-LS Producer is PCE) | | | 11-19 | Unassigned | RFC 9857 |
| 31-250 | Unassigned | this document | +---------+--------------------------------+-----------+
| 251-255 | Private Use (not to be assigned by | this document | | 20 | BGP SR Policy (in PCEP or when | RFC 9857 |
| | IANA) | | | | BGP-LS Producer is PCE) | |
+---------+--------------------------------------+---------------+ +---------+--------------------------------+-----------+
| 21-29 | Unassigned | RFC 9857 |
+---------+--------------------------------+-----------+
| 30 | Configuration (CLI, YANG model | RFC 9857 |
| | via NETCONF, etc. In PCEP or | |
| | when BGP-LS Producer is PCE) | |
+---------+--------------------------------+-----------+
| 31-250 | Unassigned | RFC 9857 |
+---------+--------------------------------+-----------+
| 251-255 | Reserved for Private Use | RFC 9857 |
+---------+--------------------------------+-----------+
Table 5 SR Policy Protocol Origin Codepoint Table 5: SR Policy Protocol Origin Code Points
8.5. BGP-LS SR Segment Descriptors 8.5. BGP-LS SR Segment Descriptors
This document requests IANA to create a registry called "SR Segment Per this document, IANA has created a registry called "BGP-LS SR
Descriptor Types" under the "Border Gateway Protocol - Link State Segment Descriptor Types" under the "Border Gateway Protocol - Link
(BGP-LS) Parameters" registry group with the allocation policy of State (BGP-LS) Parameters" registry group with the allocation policy
"Expert Review" [RFC8126] using the guidelines for Designated Experts of Expert Review [RFC8126] using the guidelines for designated
as specified in [RFC9552]. There is also an additional guideline to experts as specified in [RFC9552]. There is also an additional
the Designated Experts to maintain the alignment between the guideline for the designated experts to maintain the alignment
allocations in this registry with those in the "Segment Types" between the allocations in this registry with those in the "Segment
registry under the "Segment Routing" registry group. This requires Types" registry under the "Segment Routing" registry group. This
that an allocation in the Segment Routing "Segment Types" registry is requires that an allocation in the Segment Routing "Segment Types"
required before allocation can be done in the BGP-LS "SR Segment registry is required before allocation can be done in the "BGP-LS SR
Descriptor Types" registry for a new segment type. However, this Segment Descriptor Types" registry for a new segment type. However,
does not mandate that the specification of a new Segment Routing this does not mandate that the specification of a new Segment Routing
Segment Type also requires the specification of its equivalent SR Segment Type also requires the specification of its equivalent SR
Segment Descriptor Type in BGP-LS; that can be done as and when Segment Descriptor Type in BGP-LS; that can be done as and when
required while maintaining alignment. required while maintaining alignment.
This registry contains the codepoints allocated to the "Segment Type" This registry contains the code points allocated to the "Segment
field defined in Section 5.7.1 and described in Section 5.7.1.1. The Type" field defined in Section 5.7.1 and described in
registry contains the following codepoints, with initial values, to Section 5.7.1.1. IANA has assigned the initial values as follows:
be assigned by IANA with the reference set to this document:
+---------+---------------------------------------+---------------+ +========+========================================+===========+
| Code | Segment Description | Reference | | Code | Segment Descriptor | Reference |
| Point | | | | Point | | |
+--------+----------------------------------------+---------------+ +========+========================================+===========+
| 0 | Reserved (not to be used) | this document | | 0 | Reserved | RFC 9857 |
| 1 | (Type A) SR-MPLS Label | this document | +--------+----------------------------------------+-----------+
| 2 | (Type B) SRv6 SID as IPv6 address | this document | | 1 | (Type A) SR-MPLS Label | RFC 9857 |
| 3 | (Type C) SR-MPLS Prefix SID as | this document | +--------+----------------------------------------+-----------+
| | IPv4 Node Address | | | 2 | (Type B) SRv6 SID as IPv6 address | RFC 9857 |
| 4 | (Type D) SR-MPLS Prefix SID as | this document | +--------+----------------------------------------+-----------+
| | IPv6 Node Global Address | | | 3 | (Type C) SR-MPLS Prefix SID as IPv4 | RFC 9857 |
| 5 | (Type E) SR-MPLS Adjacency SID as | this document | | | Node Address | |
| | IPv4 Node Address & Local Interface ID | | +--------+----------------------------------------+-----------+
| 6 | (Type F) SR-MPLS Adjacency SID as | this document | | 4 | (Type D) SR-MPLS Prefix SID as IPv6 | RFC 9857 |
| | IPv4 Local & Remote Interface Addresses| | | | Node Global Address | |
| 7 | (Type G) SR-MPLS Adjacency SID as pair | this document | +--------+----------------------------------------+-----------+
| | of IPv6 Global Address & Interface ID | | | 5 | (Type E) SR-MPLS Adjacency SID as IPv4 | RFC 9857 |
| | for Local & Remote nodes | | | | Node Address & Local Interface ID | |
| 8 | (Type H) SR-MPLS Adjacency SID as pair | this document | +--------+----------------------------------------+-----------+
| | of IPv6 Global Addresses for the | | | 6 | (Type F) SR-MPLS Adjacency SID as IPv4 | RFC 9857 |
| | Local & Remote Interface | | | | Local & Remote Interface Addresses | |
| 9 | (Type I) SRv6 END SID as IPv6 Node | this document | +--------+----------------------------------------+-----------+
| | Global Address | 7 | (Type G) SR-MPLS Adjacency SID as pair | RFC 9857 |
| 10 | (Type J) SRv6 END.X SID as pair of | this document | | | of IPv6 Global Address & Interface ID | |
| | IPv6 Global Address & Interface ID for | | | | for Local & Remote nodes | |
| | Local & Remote nodes | | +--------+----------------------------------------+-----------+
| 11 | (Type K) SRv6 END.X SID as pair of | this document | | 8 | (Type H) SR-MPLS Adjacency SID as pair | RFC 9857 |
| | IPv6 Global Addresses for the | | | | of IPv6 Global Addresses for the Local | |
| | Local & Remote Interface | | | | & Remote Interface | |
| 12-255 | Unassigned | this document | +--------+----------------------------------------+-----------+
+--------+----------------------------------------+---------------+ | 9 | (Type I) SRv6 END SID as IPv6 Node | RFC 9857 |
| | Global Address | |
+--------+----------------------------------------+-----------+
| 10 | (Type J) SRv6 END.X SID as pair of | RFC 9857 |
| | IPv6 Global Address & Interface ID for | |
| | Local & Remote nodes | |
+--------+----------------------------------------+-----------+
| 11 | (Type K) SRv6 END.X SID as pair of | RFC 9857 |
| | IPv6 Global Addresses for the Local & | |
| | Remote Interface | |
+--------+----------------------------------------+-----------+
| 12-255 | Unassigned | RFC 9857 |
+--------+----------------------------------------+-----------+
Table 6 SR Segment Descriptor Types Codepoint Table 6: BGP-LS SR Segment Descriptor Type Code Points
8.6. BGP-LS SR Policy Metric Type 8.6. BGP-LS SR Policy Metric Type
This document requests IANA to create a registry called "BGP-LS SR Per this document, IANA has created a registry called "BGP-LS SR
Policy Metric Type" under the "Border Gateway Protocol - Link State Policy Metric Types" under the "Border Gateway Protocol - Link State
(BGP-LS) Parameters" registry group with the allocation policy of (BGP-LS) Parameters" registry group with the allocation policy of
"Expert Review" [RFC8126] using the guidelines for Designated Experts Expert Review [RFC8126] using the guidelines for designated experts
as specified in [RFC9552]. This registry contains the codepoints as specified in [RFC9552]. This registry contains the code points
allocated to the "metric type" field defined in Section 5.7.2. The allocated to the "Metric Type" field defined in Section 5.7.2. IANA
registry contains the following codepoints, with initial values, to has assigned the initial values as follows:
be assigned by IANA with the reference set to this document:
+---------+--------------------------------+---------------------+ +============+================================+===========+
| Code | | | | Code Point | Metric Type | Reference |
| Point | Metric Type | Reference | +============+================================+===========+
+---------+--------------------------------+---------------------+ | 0 | IGP | RFC 9857 |
| 0 | IGP | this document | +------------+--------------------------------+-----------+
| 1 | Min Unidirectional Delay | this document | | 1 | Min Unidirectional Delay | RFC 9857 |
| 2 | TE | this document | +------------+--------------------------------+-----------+
| 3 | Hop Count | this document | | 2 | TE | RFC 9857 |
| 4 | SID List Length | this document | +------------+--------------------------------+-----------+
| 5 | Bandwidth | this document | | 3 | Hop Count | RFC 9857 |
| 6 | Avg Unidirectional Delay | this document | +------------+--------------------------------+-----------+
| 7 | Unidirectional Delay Variation | this document | | 4 | SID List Length | RFC 9857 |
| 8 | Loss | this document | +------------+--------------------------------+-----------+
| 9-127 | Unassigned | this document | | 5 | Bandwidth | RFC 9857 |
| 128-255 | User Defined | this document | +------------+--------------------------------+-----------+
+---------+--------------------------------+---------------------+ | 6 | Avg Unidirectional Delay | RFC 9857 |
+------------+--------------------------------+-----------+
| 7 | Unidirectional Delay Variation | RFC 9857 |
+------------+--------------------------------+-----------+
| 8 | Loss | RFC 9857 |
+------------+--------------------------------+-----------+
| 9-127 | Unassigned | RFC 9857 |
+------------+--------------------------------+-----------+
| 128-255 | User Defined | RFC 9857 |
+------------+--------------------------------+-----------+
Table 7 SR Policy Metric Type Codepoint Table 7: SR Policy Metric Type Code Point
9. Security Considerations 9. Security Considerations
Procedures and protocol extensions defined in this document do not Procedures and protocol extensions defined in this document do not
affect the base BGP security model. See [RFC6952] for details. The affect the base BGP security model. See [RFC6952] for details. The
security considerations of the base BGP-LS specification as described security considerations of the base BGP-LS specification as described
in [RFC9552] also apply. in [RFC9552] also apply.
The BGP-LS SR Policy extensions specified in this document enable The BGP-LS SR Policy extensions specified in this document enable TE
traffic engineering and service programming use-cases within an SR and service programming use cases within an SR domain as described in
domain as described in [RFC9256]. SR operates within a trusted SR [RFC9256]. SR operates within a trusted SR domain [RFC8402], and its
domain [RFC8402] and its security considerations also apply to BGP security considerations also apply to BGP sessions when carrying SR
sessions when carrying SR Policy information. The SR Policies Policy information. The SR Policies advertised to controllers and
advertised to controllers and other applications via BGP-LS are other applications via BGP-LS are expected to be used entirely within
expected to be used entirely within this trusted SR domain, i.e., this trusted SR domain, i.e., within a single AS or between multiple
within a single AS or between multiple ASes/domains within a single ASes/domains within a single provider network. Therefore, precaution
provider network. Therefore, precaution is necessary to ensure that is necessary to ensure that the SR Policy information advertised via
the SR Policy information advertised via BGP sessions is limited to BGP sessions is limited to nodes and/or controllers/applications in a
nodes and/or controllers/applications in a secure manner within this secure manner within this trusted SR domain. The general guidance
trusted SR domain. The general guidance for BGP-LS with respect to for BGP-LS with respect to isolation of BGP-LS sessions from BGP
isolation of BGP-LS sessions from BGP sessions for other address- sessions for other address-families (refer to the security
families (refer security considerations of [RFC9552]) may be used to considerations of [RFC9552]) may be used to ensure that the SR Policy
ensure that the SR Policy information is not advertised by accident information is not advertised to an External BGP (EBGP) peering
or error to an EBGP peering session outside the SR domain. session outside the SR domain by accident or error.
Additionally, it may be considered that the export of SR Policy Additionally, it may be considered that the export of SR Policy
information, as described in this document, constitutes a risk to information, as described in this document, constitutes a risk to the
confidentiality of mission-critical or commercially sensitive confidentiality of mission-critical or commercially sensitive
information about the network (more specifically endpoint/node information about the network (more specifically, endpoint/node
addresses, SR SIDs, and the SR Policies deployed). BGP peerings are addresses, SR SIDs, and the SR Policies deployed). BGP peerings are
not automatic and require configuration. Thus, it is the not automatic and require configuration. Thus, it is the
responsibility of the network operator to ensure that only trusted responsibility of the network operator to ensure that only trusted
nodes (that include both routers and controller applications) within nodes (that include both routers and controller applications) within
the SR domain are configured to receive such information. the SR domain are configured to receive such information.
10. Contributors 10. References
The following people have substantially contributed to the editing of
this document:
Clarence Filsfils
Cisco Systems
Email: cfilsfil@cisco.com
Mach (Guoyi) Chen
Huawei Technologies
Email: mach.chen@huawei.com
11. Acknowledgements
The authors would like to thank Dhruv Dhody, Mohammed Abdul Aziz
Khalid, Lou Berger, Acee Lindem, Siva Sivabalan, Arjun Sreekantiah,
Dhanendra Jain, Francois Clad, Zafar Ali, Stephane Litkowski, Aravind
Babu Mahendra Babu, Geetanjalli Bhalla, Ahmed Bashandy, Mike
Koldychev, Samuel Sidor, Alex Tokar, Rajesh Melarcode Venkatesswaran,
Lin Changwang, Liu Yao, Joel Halpern, and Ned Smith for their review
and valuable comments. The authors would also like to thank Susan
Hares for her shepherd review of the document and helpful comments to
improve this document. The authors would like to thank John Scudder
for his AD review and helpful suggestions to improve this document.
12. References
12.1. Normative References
[I-D.ietf-lsr-flex-algo-bw-con] 10.1. Normative References
Hegde, S., Britto, W., Shetty, R., Decraene, B., Psenak,
P., and T. Li, "IGP Flexible Algorithms: Bandwidth, Delay,
Metrics and Constraints", Work in Progress, Internet-
Draft, draft-ietf-lsr-flex-algo-bw-con-22, 13 February
2025, <https://datatracker.ietf.org/doc/html/draft-ietf-
lsr-flex-algo-bw-con-22>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328,
DOI 10.17487/RFC2328, April 1998, DOI 10.17487/RFC2328, April 1998,
<https://www.rfc-editor.org/info/rfc2328>. <https://www.rfc-editor.org/info/rfc2328>.
skipping to change at page 55, line 51 skipping to change at line 2564
Bernier, D., and B. Decraene, "Border Gateway Protocol - Bernier, D., and B. Decraene, "Border Gateway Protocol -
Link State (BGP-LS) Extensions for Segment Routing over Link State (BGP-LS) Extensions for Segment Routing over
IPv6 (SRv6)", RFC 9514, DOI 10.17487/RFC9514, December IPv6 (SRv6)", RFC 9514, DOI 10.17487/RFC9514, December
2023, <https://www.rfc-editor.org/info/rfc9514>. 2023, <https://www.rfc-editor.org/info/rfc9514>.
[RFC9552] Talaulikar, K., Ed., "Distribution of Link-State and [RFC9552] Talaulikar, K., Ed., "Distribution of Link-State and
Traffic Engineering Information Using BGP", RFC 9552, Traffic Engineering Information Using BGP", RFC 9552,
DOI 10.17487/RFC9552, December 2023, DOI 10.17487/RFC9552, December 2023,
<https://www.rfc-editor.org/info/rfc9552>. <https://www.rfc-editor.org/info/rfc9552>.
12.2. Informative References [RFC9843] Hegde, S., Britto, W., Shetty, R., Decraene, B., Psenak,
P., and T. Li, "IGP Flexible Algorithms: Bandwidth, Delay,
Metrics, and Constraints", RFC 9843, DOI 10.17487/RFC9843,
September 2025, <https://www.rfc-editor.org/info/rfc9843>.
[I-D.ietf-idr-bgp-ls-te-path] 10.2. Informative References
Previdi, S., Talaulikar, K., Dong, J., Gredler, H., and J.
Tantsura, "Advertisement of Traffic Engineering Paths
using BGP Link-State", Work in Progress, Internet-Draft,
draft-ietf-idr-bgp-ls-te-path-02, 11 November 2024,
<https://datatracker.ietf.org/doc/html/draft-ietf-idr-bgp-
ls-te-path-02>.
[I-D.ietf-idr-bgp-sr-segtypes-ext] [BGP-LS-TE-PATH]
Talaulikar, K., Filsfils, C., Previdi, S., Mattes, P., and Previdi, S., Talaulikar, K., Ed., Dong, J., Gredler, H.,
D. Jain, "Segment Routing Segment Types Extensions for BGP and J. Tantsura, "Advertisement of Traffic Engineering
SR Policy", Work in Progress, Internet-Draft, draft-ietf- Paths using BGP Link-State", Work in Progress, Internet-
idr-bgp-sr-segtypes-ext-08, 20 February 2025, Draft, draft-ietf-idr-bgp-ls-te-path-02, 11 November 2024,
<https://datatracker.ietf.org/doc/html/draft-ietf-idr-bgp- <https://datatracker.ietf.org/doc/html/draft-ietf-idr-bgp-
sr-segtypes-ext-08>. ls-te-path-02>.
[I-D.ietf-idr-sr-policy-safi]
Previdi, S., Filsfils, C., Talaulikar, K., Mattes, P., and
D. Jain, "Advertising Segment Routing Policies in BGP",
Work in Progress, Internet-Draft, draft-ietf-idr-sr-
policy-safi-13, 6 February 2025,
<https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-
policy-safi-13>.
[IEEE754] Institute of Electrical and Electronics Engineers, "IEEE [IEEE754] IEEE, "IEEE Standard for Floating-Point Arithmetic", IEEE
Standard for Floating-Point Arithmetic", IEEE 754-2019, Std 754-2019, DOI 10.1109/ieeestd.2019.8766229, 22 July
DOI 10.1109/ieeestd.2019.8766229, 22 July 2019, 2019, <https://ieeexplore.ieee.org/document/8766229>.
<https://ieeexplore.ieee.org/document/8766229>.
[RFC2702] Awduche, D., Malcolm, J., Agogbua, J., O'Dell, M., and J. [RFC2702] Awduche, D., Malcolm, J., Agogbua, J., O'Dell, M., and J.
McManus, "Requirements for Traffic Engineering Over MPLS", McManus, "Requirements for Traffic Engineering Over MPLS",
RFC 2702, DOI 10.17487/RFC2702, September 1999, RFC 2702, DOI 10.17487/RFC2702, September 1999,
<https://www.rfc-editor.org/info/rfc2702>. <https://www.rfc-editor.org/info/rfc2702>.
[RFC4202] Kompella, K., Ed. and Y. Rekhter, Ed., "Routing Extensions [RFC4202] Kompella, K., Ed. and Y. Rekhter, Ed., "Routing Extensions
in Support of Generalized Multi-Protocol Label Switching in Support of Generalized Multi-Protocol Label Switching
(GMPLS)", RFC 4202, DOI 10.17487/RFC4202, October 2005, (GMPLS)", RFC 4202, DOI 10.17487/RFC4202, October 2005,
<https://www.rfc-editor.org/info/rfc4202>. <https://www.rfc-editor.org/info/rfc4202>.
skipping to change at page 57, line 28 skipping to change at line 2626
Extensions for Stateful PCE", RFC 8231, Extensions for Stateful PCE", RFC 8231,
DOI 10.17487/RFC8231, September 2017, DOI 10.17487/RFC8231, September 2017,
<https://www.rfc-editor.org/info/rfc8231>. <https://www.rfc-editor.org/info/rfc8231>.
[RFC8800] Litkowski, S., Sivabalan, S., Barth, C., and M. Negi, [RFC8800] Litkowski, S., Sivabalan, S., Barth, C., and M. Negi,
"Path Computation Element Communication Protocol (PCEP) "Path Computation Element Communication Protocol (PCEP)
Extension for Label Switched Path (LSP) Diversity Extension for Label Switched Path (LSP) Diversity
Constraint Signaling", RFC 8800, DOI 10.17487/RFC8800, Constraint Signaling", RFC 8800, DOI 10.17487/RFC8800,
July 2020, <https://www.rfc-editor.org/info/rfc8800>. July 2020, <https://www.rfc-editor.org/info/rfc8800>.
[RFC9830] Previdi, S., Filsfils, C., Talaulikar, K., Ed., Mattes,
P., and D. Jain, "Advertising Segment Routing Policies in
BGP", RFC 9830, DOI 10.17487/RFC9830, September 2025,
<https://www.rfc-editor.org/info/rfc9830>.
[RFC9831] Talaulikar, K., Ed., Filsfils, C., Previdi, S., Mattes,
P., and D. Jain, "Segment Type Extensions for BGP Segment
Routing (SR) Policy", RFC 9831, DOI 10.17487/RFC9831,
September 2025, <https://www.rfc-editor.org/info/rfc9831>.
Acknowledgements
The authors would like to thank Dhruv Dhody, Mohammed Abdul Aziz
Khalid, Lou Berger, Acee Lindem, Siva Sivabalan, Arjun Sreekantiah,
Dhanendra Jain, Francois Clad, Zafar Ali, Stephane Litkowski, Aravind
Babu Mahendra Babu, Geetanjalli Bhalla, Ahmed Bashandy, Mike
Koldychev, Samuel Sidor, Alex Tokar, Rajesh Melarcode Venkatesswaran,
Lin Changwang, Liu Yao, Joel Halpern, and Ned Smith for their reviews
and valuable comments. The authors would also like to thank Susan
Hares for her shepherd review and helpful comments to improve this
document. The authors would like to thank John Scudder for his AD
review and helpful suggestions to improve this document.
Contributors
The following people have contributed substantially to the content of
this document and should be considered coauthors:
Clarence Filsfils
Cisco Systems
Email: cfilsfil@cisco.com
Mach(Guoyi) Chen
Huawei Technologies
Email: mach.chen@huawei.com
Authors' Addresses Authors' Addresses
Stefano Previdi Stefano Previdi
Individual Individual
Email: stefano@previdi.net Email: stefano@previdi.net
Ketan Talaulikar (editor) Ketan Talaulikar (editor)
Cisco Systems Cisco Systems
India India
Email: ketant.ietf@gmail.com Email: ketant.ietf@gmail.com
 End of changes. 411 change blocks. 
1192 lines changed or deleted 1224 lines changed or added

This html diff was produced by rfcdiff 1.48.