idnits 2.17.1 draft-ietf-idr-te-lsp-distribution-16.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 22, 2021) is 917 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-14) exists of draft-ietf-idr-bgpls-srv6-ext-08 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-policy-13 ** Obsolete normative reference: RFC 7752 (Obsoleted by RFC 9552) Summary: 1 error (**), 0 flaws (~~), 3 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group S. Previdi 3 Internet-Draft 4 Intended status: Standards Track K. Talaulikar, Ed. 5 Expires: April 25, 2022 Cisco Systems, Inc. 6 J. Dong, Ed. 7 M. Chen 8 Huawei Technologies 9 H. Gredler 10 RtBrick Inc. 11 J. Tantsura 12 Apstra 13 October 22, 2021 15 Distribution of Traffic Engineering (TE) Policies and State using BGP-LS 16 draft-ietf-idr-te-lsp-distribution-16 18 Abstract 20 This document describes a mechanism to collect the Traffic 21 Engineering and Policy information that is locally available in a 22 node and advertise it into BGP Link State (BGP-LS) updates. Such 23 information can be used by external components for path computation, 24 re-optimization, service placement, network visualization, etc. 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at https://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on April 25, 2022. 43 Copyright Notice 45 Copyright (c) 2021 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents 50 (https://trustee.ietf.org/license-info) in effect on the date of 51 publication of this document. Please review these documents 52 carefully, as they describe your rights and restrictions with respect 53 to this document. Code Components extracted from this document must 54 include Simplified BSD License text as described in Section 4.e of 55 the Trust Legal Provisions and are provided without warranty as 56 described in the Simplified BSD License. 58 Table of Contents 60 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 61 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 62 2. Carrying TE Policy Information in BGP . . . . . . . . . . . . 5 63 3. TE Policy NLRI . . . . . . . . . . . . . . . . . . . . . . . 6 64 4. TE Policy Descriptors . . . . . . . . . . . . . . . . . . . . 7 65 4.1. Tunnel Identifier (Tunnel ID) . . . . . . . . . . . . . . 8 66 4.2. LSP Identifier (LSP ID) . . . . . . . . . . . . . . . . . 8 67 4.3. IPv4/IPv6 Tunnel Head-End Address . . . . . . . . . . . . 9 68 4.4. IPv4/IPv6 Tunnel Tail-End Address . . . . . . . . . . . . 9 69 4.5. SR Policy Candidate Path Descriptor . . . . . . . . . . . 10 70 4.6. Local MPLS Cross Connect . . . . . . . . . . . . . . . . 11 71 4.6.1. MPLS Cross Connect Interface . . . . . . . . . . . . 13 72 4.6.2. MPLS Cross Connect FEC . . . . . . . . . . . . . . . 14 73 5. MPLS-TE Policy State TLV . . . . . . . . . . . . . . . . . . 15 74 5.1. RSVP Objects . . . . . . . . . . . . . . . . . . . . . . 16 75 5.2. PCEP Objects . . . . . . . . . . . . . . . . . . . . . . 17 76 6. SR Policy State TLVs . . . . . . . . . . . . . . . . . . . . 18 77 6.1. SR Binding SID . . . . . . . . . . . . . . . . . . . . . 18 78 6.2. SRv6 Binding SID . . . . . . . . . . . . . . . . . . . . 20 79 6.3. SR Candidate Path State . . . . . . . . . . . . . . . . . 22 80 6.4. SR Policy Name . . . . . . . . . . . . . . . . . . . . . 24 81 6.5. SR Candidate Path Name . . . . . . . . . . . . . . . . . 24 82 6.6. SR Candidate Path Constraints . . . . . . . . . . . . . . 25 83 6.6.1. SR Affinity Constraint . . . . . . . . . . . . . . . 27 84 6.6.2. SR SRLG Constraint . . . . . . . . . . . . . . . . . 28 85 6.6.3. SR Bandwidth Constraint . . . . . . . . . . . . . . . 28 86 6.6.4. SR Disjoint Group Constraint . . . . . . . . . . . . 29 87 6.7. SR Segment List . . . . . . . . . . . . . . . . . . . . . 31 88 6.8. SR Segment . . . . . . . . . . . . . . . . . . . . . . . 33 89 6.8.1. Segment Descriptors . . . . . . . . . . . . . . . . . 35 90 6.9. SR Segment List Metric . . . . . . . . . . . . . . . . . 42 91 7. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 44 92 8. Manageability Considerations . . . . . . . . . . . . . . . . 44 93 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 94 9.1. BGP-LS NLRI-Types . . . . . . . . . . . . . . . . . . . . 45 95 9.2. BGP-LS Protocol-IDs . . . . . . . . . . . . . . . . . . . 45 96 9.3. BGP-LS TLVs . . . . . . . . . . . . . . . . . . . . . . . 45 97 9.4. BGP-LS SR Policy Protocol Origin . . . . . . . . . . . . 46 98 9.5. BGP-LS TE State Object Origin . . . . . . . . . . . . . . 47 99 9.6. BGP-LS TE State Address Family . . . . . . . . . . . . . 47 100 9.7. BGP-LS SR Segment Descriptors . . . . . . . . . . . . . . 47 101 9.8. BGP-LS Metric Type . . . . . . . . . . . . . . . . . . . 48 102 10. Security Considerations . . . . . . . . . . . . . . . . . . . 48 103 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 49 104 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 49 105 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 49 106 13.1. Normative References . . . . . . . . . . . . . . . . . . 49 107 13.2. Informative References . . . . . . . . . . . . . . . . . 51 108 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 52 110 1. Introduction 112 In many network environments, traffic engineering (TE) policies are 113 instantiated into various forms: 115 o MPLS Traffic Engineering Label Switched Paths (TE-LSPs). 117 o IP based tunnels (IP in IP, GRE, etc). 119 o Segment Routing (SR) Policies as defined in 120 [I-D.ietf-spring-segment-routing-policy] 122 o Local MPLS cross-connect configuration 124 All this information can be grouped into the same term: TE Policies. 125 In the rest of this document we refer to TE Policies as the set of 126 information related to the various instantiation of polices: MPLS TE 127 LSPs, IP tunnels (IPv4 or IPv6), SR Policies, etc. 129 TE Polices are generally instantiated at the head-end and are based 130 on either local configuration or controller based programming of the 131 node using various APIs and protocols, e.g., PCEP or BGP. 133 In many network environments, the configuration and state of each TE 134 Policy that is available in the network is required by a controller 135 which allows the network operator to optimize several functions and 136 operations through the use of a controller aware of both topology and 137 state information. 139 One example of a controller is the stateful Path Computation Element 140 (PCE) [RFC8231], which could provide benefits in path reoptimization. 141 While some extensions are proposed in Path Computation Element 142 Communication Protocol (PCEP) for the Path Computation Clients (PCCs) 143 to report the LSP states to the PCE, this mechanism may not be 144 applicable in a management-based PCE architecture as specified in 145 section 5.5 of [RFC4655]. As illustrated in the figure below, the 146 PCC is not an LSR in the routing domain, thus the head-end nodes of 147 the TE-LSPs may not implement the PCEP protocol. In this case a 148 general mechanism to collect the TE-LSP states from the ingress LERs 149 is needed. This document proposes an TE Policy state collection 150 mechanism complementary to the mechanism defined in [RFC8231]. 152 ----------- 153 | ----- | 154 Service | | TED |<-+-----------> 155 Request | ----- | TED synchronization 156 | | | | mechanism (for example, 157 v | | | routing protocol) 158 ------------- Request/ | v | 159 | | Response| ----- | 160 | NMS |<--------+> | PCE | | 161 | | | ----- | 162 ------------- ----------- 163 Service | 164 Request | 165 v 166 ---------- Signaling ---------- 167 | Head-End | Protocol | Adjacent | 168 | Node |<---------->| Node | 169 ---------- ---------- 171 Figure 1. Management-Based PCE Usage 173 In networks with composite PCE nodes as specified in section 5.1 of 174 [RFC4655], PCE is implemented on several routers in the network, and 175 the PCCs in the network can use the mechanism described in [RFC8231] 176 to report the TE Policy information to the PCE nodes. An external 177 component may also need to collect the TE Policy information from all 178 the PCEs in the network to obtain a global view of the LSP state in 179 the network. 181 In multi-area or multi-AS scenarios, each area or AS can have a child 182 PCE to collect the TE Policies in its own domain, in addition, a 183 parent PCE needs to collect TE Policy information from multiple child 184 PCEs to obtain a global view of LSPs inside and across the domains 185 involved. 187 In another network scenario, a centralized controller is used for 188 service placement. Obtaining the TE Policy state information is 189 quite important for making appropriate service placement decisions 190 with the purpose to both meet the application's requirements and 191 utilize network resources efficiently. 193 The Network Management System (NMS) may need to provide global 194 visibility of the TE Policies in the network as part of the network 195 visualization function. 197 BGP has been extended to distribute link-state and traffic 198 engineering information to external components [RFC7752]. Using the 199 same protocol to collect Traffic Engineering Policy and state 200 information is desirable for these external components since this 201 avoids introducing multiple protocols for network information 202 collection. This document describes a mechanism to distribute 203 traffic engineering policy information (MPLS, SR, IPv4 and IPv6) to 204 external components using BGP-LS. 206 1.1. Requirements Language 208 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 209 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 210 "OPTIONAL" in this document are to be interpreted as described in BCP 211 14 [RFC2119] [RFC8174] when, and only when, they appear in all 212 capitals, as shown here. 214 2. Carrying TE Policy Information in BGP 216 TE Policy information is advertised in BGP UPDATE messages using the 217 MP_REACH_NLRI and MP_UNREACH_NLRI attributes [RFC4760]. The "Link- 218 State NLRI" defined in [RFC7752] is extended to carry the TE Policy 219 information. BGP speakers that wish to exchange TE Policy 220 information MUST use the BGP Multiprotocol Extensions Capability Code 221 (1) to advertise the corresponding (AFI, SAFI) pair, as specified in 222 [RFC4760]. New TLVs carried in the Link_State Attribute defined in 223 [RFC7752] are also defined in order to carry the attributes of a TE 224 Policy in the subsequent sections. 226 The format of "Link-State NLRI" is defined in [RFC7752] as follows: 228 0 1 2 3 229 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 230 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 231 | NLRI Type | Total NLRI Length | 232 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 233 | | 234 // Link-State NLRI (variable) // 235 | | 236 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 238 A new "NLRI Type" is defined for TE Policy Information as following: 240 o NLRI Type: TE Policy NLRI value 5. 242 The format of this new NLRI type is defined in Section 3 below. 244 3. TE Policy NLRI 246 This document defines the new TE Policy NLRI-Type and its format as 247 shown in the following figure: 249 0 1 2 3 250 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 251 +-+-+-+-+-+-+-+-+ 252 | Protocol-ID | 253 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 254 | Identifier | 255 | (64 bits) | 256 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 257 // Headend (Node Descriptors) // 258 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 259 // TE Policy Descriptors (variable) // 260 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 262 where: 264 o Protocol-ID field specifies the component that owns the TE Policy 265 state in the advertising node. The following new Protocol-IDs are 266 defined and apply to the TE Policy NLRI: 268 +-------------+----------------------------------+ 269 | Protocol-ID | NLRI information source protocol | 270 +-------------+----------------------------------+ 271 | 8 | RSVP-TE | 272 | 9 | Segment Routing | 273 +-------------+----------------------------------+ 275 o "Identifier" is an 8 octet value as defined in [RFC7752]. 277 o "Headend" consists of a Local Node Descriptor (TLV 256) as defined 278 in [RFC7752]. 280 o "TE Policy Descriptors" consists of one or more of the TLVs listed 281 as below: 283 +-----------+----------------------------------+ 284 | Codepoint | Descriptor TLVs | 285 +-----------+----------------------------------+ 286 | 550 | Tunnel ID | 287 | 551 | LSP ID | 288 | 552 | IPv4/6 Tunnel Head-end address | 289 | 553 | IPv4/6 Tunnel Tail-end address | 290 | 554 | SR Policy Candidate Path | 291 | 555 | Local MPLS Cross Connect | 292 +-----------+----------------------------------+ 294 The Local Node Descriptor TLV MUST include the following Node 295 Descriptor TLVs: 297 o BGP Router-ID (TLV 516) [RFC9086], which contains a valid BGP 298 Identifier of the local node. 300 o Autonomous System Number (TLV 512) [RFC7752], which contains the 301 ASN or AS Confederation Identifier (ASN) [RFC5065], if 302 confederations are used, of the local node. 304 The Local Node Descriptor TLV SHOULD include the following Node 305 Descriptor TLVs: 307 o IPv4 Router-ID of Local Node (TLV 1028) [RFC7752], which contains 308 the IPv4 TE Router-ID of the local node when one is provisioned. 310 o IPv6 Router-ID of Local Node (TLV 1029) [RFC7752], which contains 311 the IPv6 TE Router-ID of the local node when one is provisioned. 313 The Local Node Descriptor TLV MAY include the following Node 314 Descriptor TLVs: 316 o Member-ASN (TLV 517) [RFC9086], which contains the ASN of the 317 confederation member (i.e. Member-AS Number), if BGP 318 confederations are used, of the local node. 320 o Node Descriptors as defined in [RFC7752]. 322 4. TE Policy Descriptors 324 This sections defines the TE Policy Descriptors TLVs which are used 325 to describe the TE Policy being advertised by using the new BGP-LS TE 326 Policy NLRI type defined in Section 3. 328 4.1. Tunnel Identifier (Tunnel ID) 330 The Tunnel Identifier TLV contains the Tunnel ID defined in [RFC3209] 331 and is used for RSVP-TE protocol TE Policies. It has the following 332 format: 334 0 1 2 3 335 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 336 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 337 | Type | Length | 338 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 339 | Tunnel ID | 340 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 342 where: 344 o Type: 550 346 o Length: 2 octets. 348 o Tunnel ID: 2 octets as defined in [RFC3209]. 350 4.2. LSP Identifier (LSP ID) 352 The LSP Identifier TLV contains the LSP ID defined in [RFC3209] and 353 is used for RSVP-TE protocol TE Policies. It has the following 354 format: 356 0 1 2 3 357 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 358 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 359 | Type | Length | 360 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 361 | LSP ID | 362 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 364 where: 366 o Type: 551 368 o Length: 2 octets. 370 o LSP ID: 2 octets as defined in [RFC3209]. 372 4.3. IPv4/IPv6 Tunnel Head-End Address 374 The IPv4/IPv6 Tunnel Head-End Address TLV contains the Tunnel Head- 375 End Address defined in [RFC3209] and is used for RSVP-TE protocol TE 376 Policies. It has following format: 378 0 1 2 3 379 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 380 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 381 | Type | Length | 382 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 383 // IPv4/IPv6 Tunnel Head-End Address (variable) // 384 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 386 where: 388 o Type: 552 390 o Length: 4 or 16 octets. 392 When the IPv4/IPv6 Tunnel Head-end Address TLV contains an IPv4 393 address, its length is 4 (octets). 395 When the IPv4/IPv6 Tunnel Head-end Address TLV contains an IPv6 396 address, its length is 16 (octets). 398 4.4. IPv4/IPv6 Tunnel Tail-End Address 400 The IPv4/IPv6 Tunnel Tail-End Address TLV contains the Tunnel Tail- 401 End Address defined in [RFC3209] and is used for RSVP-TE protocol TE 402 Policies. It has following format: 404 0 1 2 3 405 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 406 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 407 | Type | Length | 408 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 409 // IPv4/IPv6 Tunnel Tail-End Address (variable) // 410 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 412 where: 414 o Type: 553 416 o Length: 4 or 16 octets. 418 When the IPv4/IPv6 Tunnel Tail-end Address TLV contains an IPv4 419 address, its length is 4 (octets). 421 When the IPv4/IPv6 Tunnel Tail-end Address TLV contains an IPv6 422 address, its length is 16 (octets). 424 4.5. SR Policy Candidate Path Descriptor 426 The SR Policy Candidate Path Descriptor TLV identifies a Segment 427 Routing Policy candidate path (CP) as defined in 428 [I-D.ietf-spring-segment-routing-policy] and has the following 429 format: 431 0 1 2 3 432 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 433 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 434 | Type | Length | 435 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 436 |Protocol-origin| Flags | RESERVED | 437 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 438 | Endpoint (4 or 16 octets) // 439 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 440 | Policy Color (4 octets) | 441 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 442 | Originator AS Number (4 octets) | 443 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 444 | Originator Address (4 or 16 octets) // 445 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 446 | Discriminator (4 octets) | 447 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 449 where: 451 o Type: 554 453 o Length: variable (valid values are 24, 36 or 48 octets) 455 o Protocol-Origin : 1 octet field which identifies the protocol or 456 component which is responsible for the instantiation of this path. 457 Following protocol-origin codepoints are defined in this document. 459 +------------+---------------------------------------------------------+ 460 | Code Point | Protocol Origin | 461 +------------+---------------------------------------------------------+ 462 | 1 | PCEP | 463 | 2 | BGP SR Policy | 464 | 3 | Local (via CLI, Yang model through NETCONF, gRPC, etc.) | 465 +------------+---------------------------------------------------------+ 466 o Flags: 1 octet field with following bit positions defined. Other 467 bits SHOULD be cleared by originator and MUST be ignored by 468 receiver. 470 0 1 2 3 4 5 6 7 471 +-+-+-+-+-+-+-+-+ 472 |E|O| | 473 +-+-+-+-+-+-+-+-+ 475 where: 477 * E-Flag : Indicates the encoding of endpoint as IPv6 address 478 when set and IPv4 address when clear 480 * O-Flag : Indicates the encoding of originator address as IPv6 481 address when set and IPv4 address when clear 483 o Reserved : 2 octets which SHOULD be set to 0 by originator and 484 MUST be ignored by receiver. 486 o Endpoint : 4 or 16 octets (as indicated by the flags) containing 487 the address of the endpoint of the SR Policy 489 o Color : 4 octets that indicates the color of the SR Policy 491 o Originator ASN : 4 octets to carry the 4 byte encoding of the ASN 492 of the originator. Refer [I-D.ietf-spring-segment-routing-policy] 493 Sec 2.4 for details. 495 o Originator Address : 4 or 16 octets (as indicated by the flags) to 496 carry the address of the originator. Refer 497 [I-D.ietf-spring-segment-routing-policy] Sec 2.4 for details. 499 o Discriminator : 4 octets to carry the discrimator of the path. 500 Refer [I-D.ietf-spring-segment-routing-policy] Sec 2.5 for 501 details. 503 4.6. Local MPLS Cross Connect 505 The Local MPLS Cross Connect TLV identifies a local MPLS state in the 506 form of incoming label and interface followed by an outgoing label 507 and interface. Outgoing interface may appear multiple times (for 508 multicast states). It is used with Protocol ID set to "Static 509 Configuration" value 5 as defined in [RFC7752]. 511 The Local MPLS Cross Connect TLV has the following format: 513 0 1 2 3 514 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 515 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 516 | Type | Length | 517 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 518 | Incoming label (4 octets) | 519 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 520 | Outgoing label (4 octets) | 521 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 522 // Sub-TLVs (variable) // 523 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 525 where: 527 o Type: 555 529 o Length: variable. 531 o Incoming and Outgoing labels: 4 octets each. 533 o Sub-TLVs: following Sub-TLVs are defined: 535 * Interface Sub-TLV 537 * Forwarding Equivalent Class (FEC) 539 The Local MPLS Cross Connect TLV: 541 MUST have an incoming label. 543 MUST have an outgoing label. 545 MAY contain an Interface Sub-TLV having the I-flag set. 547 MUST contain at least one Interface Sub-TLV having the I-flag 548 unset. 550 MAY contain multiple Interface Sub-TLV having the I-flag unset. 551 This is the case of a multicast MPLS cross connect. 553 MAY contain a FEC Sub-TLV. 555 The following sub-TLVs are defined for the Local MPLS Cross Connect 556 TLV: 558 +-----------+----------------------------------+ 559 | Codepoint | Descriptor TLV | 560 +-----------+----------------------------------+ 561 | 556 | MPLS Cross Connect Interface | 562 | 557 | MPLS Cross Connect FEC | 563 +-----------+----------------------------------+ 565 These are defined in the following sub-sections. 567 4.6.1. MPLS Cross Connect Interface 569 The MPLS Cross Connect Interface sub-TLV is optional and contains the 570 identifier of the interface (incoming or outgoing) in the form of an 571 IPv4/IPv6 address and/or a local interface identifier. 573 The MPLS Cross Connect Interface sub-TLV has the following format: 575 0 1 2 3 576 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 577 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 578 | Type | Length | 579 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 581 +-+-+-+-+-+-+-+-+ 582 | Flags | 583 +-+-+-+-+-+-+-+-+ 585 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 586 | Local Interface Identifier (4 octets) | 587 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 588 // Interface Address (4 or 16 octets) // 589 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 591 where: 593 o Type: 556 595 o Length: 9 or 21. 597 o Flags: 1 octet of flags defined as follows: 599 0 1 2 3 4 5 6 7 600 +-+-+-+-+-+-+-+-+ 601 |I| | 602 +-+-+-+-+-+-+-+-+ 604 where: 606 * I-Flag is the Interface flag. When set, the Interface Sub-TLV 607 describes an incoming interface. If the I-flag is not set, 608 then the Interface Sub-TLV describes an outgoing interface. 610 o Local Interface Identifier: a 4 octet identifier. 612 o Interface address: a 4 octet IPv4 address or a 16 octet IPv6 613 address. 615 4.6.2. MPLS Cross Connect FEC 617 The MPLS Cross Connect FEC sub-TLV is optional and contains the FEC 618 associated to the incoming label. 620 The MPLS Cross Connect FEC sub-TLV has the following format: 622 0 1 2 3 623 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 624 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 625 | Type | Length | 626 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 627 | Flags | Masklength | Prefix (variable) // 628 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 629 // Prefix (variable) // 630 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 632 where: 634 o Type: 557 636 o Length: variable. 638 o Flags: 1 octet of flags defined as follows: 640 0 1 2 3 4 5 6 7 641 +-+-+-+-+-+-+-+-+ 642 |4| | 643 +-+-+-+-+-+-+-+-+ 645 where: 647 * 4-Flag is the IPv4 flag. When set, the FEC Sub-TLV describes 648 an IPv4 FEC. If the 4-flag is not set, then the FEC Sub-TLV 649 describes an IPv6 FEC. 651 o Mask Length: 1 octet of prefix length. 653 o Prefix: an IPv4 or IPv6 prefix whose mask length is given by the " 654 Mask Length" field padded to an octet boundary. 656 5. MPLS-TE Policy State TLV 658 A new TLV called "MPLS-TE Policy State TLV", is used to describe the 659 characteristics of the MPLS-TE Policy and it is carried in the 660 optional non-transitive BGP Attribute "LINK_STATE Attribute" defined 661 in [RFC7752]. These MPLS-TE Policy characteristics include the 662 characteristics and attributes of the policy, its dataplane, explicit 663 path, Quality of Service (QoS) parameters, route information, the 664 protection mechanisms, etc. 666 The MPLS-TE Policy State TLV has the following format: 668 0 1 2 3 669 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 670 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 671 | Type | Length | 672 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 673 | Object-origin | Address Family| RESERVED | 674 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 676 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 677 // MPLS-TE Policy State Objects (variable) // 678 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 680 where: 682 MPLS-TE Policy State TLV 684 o Type: 1200 686 o Length: the total length of the MPLS-TE Policy State TLV not 687 including Type and Length fields. 689 o Object-origin: identifies the component (or protocol) from which 690 the contained object originated. This allows for objects defined 691 in different components to be collected while avoiding the 692 possible codepoint collisions among these components. Following 693 object-origin codepoints are defined in this document. 695 +----------+------------------+ 696 | Code | Object | 697 | Point | Origin | 698 +----------+------------------+ 699 | 1 | RSVP-TE | 700 | 2 | PCEP | 701 | 3 | Local/Static | 702 +----------+------------------+ 704 o Address Family: describes the address family used to setup the 705 MPLS-TE policy. The following address family values are defined 706 in this document: 708 +----------+------------------+ 709 | Code | Dataplane | 710 | Point | | 711 +----------+------------------+ 712 | 1 | MPLS-IPv4 | 713 | 2 | MPLS-IPv6 | 714 +----------+------------------+ 716 o RESERVED: 16-bit field. SHOULD be set to 0 on transmission and 717 MUST be ignored on receipt. 719 o TE Policy State Objects: Rather than replicating all these objects 720 in this document, the semantics and encodings of the objects as 721 defined in RSVP-TE and PCEP are reused. 723 The state information is carried in the "MPLS-TE Policy State 724 Objects" with the following format as described in the sub-sections 725 below. 727 5.1. RSVP Objects 729 RSVP-TE objects are encoded in the "MPLS-TE Policy State Objects" 730 field of the MPLS-TE Policy State TLV and consists of MPLS TE LSP 731 objects defined in RSVP-TE [RFC3209] [RFC3473]. Rather than 732 replicating all MPLS TE LSP related objects in this document, the 733 semantics and encodings of the MPLS TE LSP objects are re-used. 734 These MPLS TE LSP objects are carried in the MPLS-TE Policy State 735 TLV. 737 When carrying RSVP-TE objects, the "Object-Origin" field is set to 738 "RSVP-TE". 740 The following RSVP-TE Objects are defined: 742 o SENDER_TSPEC and FLOW_SPEC [RFC2205] 743 o SESSION_ATTRIBUTE [RFC3209] 745 o EXPLICIT_ROUTE Object (ERO) [RFC3209] 747 o ROUTE_RECORD Object (RRO) [RFC3209] 749 o FAST_REROUTE Object [RFC4090] 751 o DETOUR Object [RFC4090] 753 o EXCLUDE_ROUTE Object (XRO) [RFC4874] 755 o SECONDARY_EXPLICIT_ROUTE Object (SERO) [RFC4873] 757 o SECONDARY_RECORD_ROUTE (SRRO) [RFC4873] 759 o LSP_ATTRIBUTES Object [RFC5420] 761 o LSP_REQUIRED_ATTRIBUTES Object [RFC5420] 763 o PROTECTION Object [RFC3473][RFC4872][RFC4873] 765 o ASSOCIATION Object [RFC4872] 767 o PRIMARY_PATH_ROUTE Object [RFC4872] 769 o ADMIN_STATUS Object [RFC3473] 771 o LABEL_REQUEST Object [RFC3209][RFC3473] 773 For the MPLS TE LSP Objects listed above, the corresponding sub- 774 objects are also applicable to this mechanism. Note that this list 775 is not exhaustive, other MPLS TE LSP objects which reflect specific 776 characteristics of the MPLS TE LSP can also be carried in the LSP 777 state TLV. 779 5.2. PCEP Objects 781 PCEP objects are encoded in the "MPLS-TE Policy State Objects" field 782 of the MPLS-TE Policy State TLV and consists of PCEP objects defined 783 in [RFC5440]. Rather than replicating all MPLS TE LSP related 784 objects in this document, the semantics and encodings of the MPLS TE 785 LSP objects are re-used. These MPLS TE LSP objects are carried in 786 the MPLS-TE Policy State TLV. 788 When carrying PCEP objects, the "Object-Origin" field is set to 789 "PCEP". 791 The following PCEP Objects are defined: 793 o METRIC Object [RFC5440] 795 o BANDWIDTH Object [RFC5440] 797 For the MPLS TE LSP Objects listed above, the corresponding sub- 798 objects are also applicable to this mechanism. Note that this list 799 is not exhaustive, other MPLS TE LSP objects which reflect specific 800 characteristics of the MPLS TE LSP can also be carried in the TE 801 Policy State TLV. 803 6. SR Policy State TLVs 805 Segment Routing Policy (SR Policy) architecture is specified in 806 [I-D.ietf-spring-segment-routing-policy]. A SR Policy can comprise 807 of one or more candidate paths (CP) of which at a given time one and 808 only one may be active (i.e. installed in forwarding and usable for 809 steering of traffic). Each CP in turn may have one or more SID-List 810 of which one or more may be active; when multiple are active then 811 traffic is load balanced over them. 813 This section defines the various TLVs which enable the headend to 814 report the state of an SR Policy, its CP(s), SID-List(s) and their 815 status. These TLVs are carried in the optional non-transitive BGP 816 Attribute "LINK_STATE Attribute" defined in [RFC7752] and enable the 817 same consistent form of reporting for SR Policy state irrespective of 818 the Protocol-Origin used to provision the policy. Detailed procedure 819 is described in Section 7 . 821 6.1. SR Binding SID 823 The SR Binding SID (BSID) is an optional TLV that provides the BSID 824 and its attributes for the SR Policy CP. The TLV MAY also optionally 825 contain the Specified BSID value for reporting as described in 826 section 6.2.3 of [I-D.ietf-spring-segment-routing-policy]. 828 The TLV has the following format: 830 0 1 2 3 831 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 832 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 833 | Type | Length | 834 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 835 | BSID Flags | RESERVED | 836 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 837 | Binding SID (4 or 16 octets) // 838 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 839 | Specified Binding SID (4 or 16 octets) // 840 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 842 where: 844 o Type: 1201 846 o Length: variable (valid values are 12 or 36 octets) 848 o BSID Flags: 2 octet field that indicates attribute and status of 849 the Binding SID (BSID) associated with this CP. The following bit 850 positions are defined and the semantics are described in detail in 851 [I-D.ietf-spring-segment-routing-policy]. Other bits SHOULD be 852 cleared by originator and MUST be ignored by receiver. 854 0 1 855 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 856 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 857 |D|B|U|L|F| | 858 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 860 where: 862 * D-Flag : Indicates the dataplane for the BSIDs and if they are 863 16 octet SRv6 SID when set and are 4 octet SR/MPLS label value 864 when clear. 866 * B-Flag : Indicates the allocation of the value in the BSID 867 field when set and indicates that BSID is not allocated when 868 clear. 870 * U-Flag : Indicates the specified BSID value is unavailable when 871 set. 873 * L-Flag : Indicates the BSID value is from the Segment Routing 874 Local Block (SRLB) of the headend node when set and is from the 875 local dynamic label pool when clear 877 * F-Flag : Indicates the BSID value is one allocated from dynamic 878 label pool due to fallback (e.g. when specified BSID is 879 unavailable) when set. 881 o RESERVED: 2 octets. SHOULD be set to 0 by originator and MUST be 882 ignored by receiver. 884 o Binding SID: It indicates the operational or allocated BSID value 885 for the CP based on the status flags. 887 o Specified BSID: It is used to report the explicitly specified BSID 888 value regardless of whether it is successfully allocated or not. 889 The field is set to value 0 when BSID has not been specified for 890 the CP. 892 The BSID fields above are 4 octet carrying the MPLS Label or 16 893 octets carrying the SRv6 SID based on the BSID D-flag. When carrying 894 the MPLS Label, as shown in the figure below, the TC, S and TTL 895 (total of 12 bits) are RESERVED and SHOULD be set to 0 by originator 896 and MUST be ignored by the receiver. 898 0 1 2 3 899 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 900 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 901 | Label | TC |S| TTL | 902 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 904 In the case of an SRv6, the Binding SID sub-TLV does not have the 905 ability to signal the SRv6 Endpoint Behavior [RFC8986] or the 906 structure of the SID. It is RECOMMENDED that the SRv6 Binding SID 907 TLV defined in Section 6.2, that enables the specification of the 908 SRv6 Endpoint Behavior, be used for signaling of an SRv6 Binding SID 909 for an SR Policy candidate path. 911 6.2. SRv6 Binding SID 913 The SRv6 Binding SID (BSID) is an optional TLV that provides the SRv6 914 BSID and its attributes for the SR Policy CP. The TLV MAY also 915 optionally contain the Specified SRv6 BSID value for reporting as 916 described in section 6.2.3 of 917 [I-D.ietf-spring-segment-routing-policy]. 919 The TLV has the following format: 921 0 1 2 3 922 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 923 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 924 | Type | Length | 925 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 926 | BSID Flags | RESERVED | 927 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 928 | Binding SID (16 octets) // 929 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 930 | Specified Binding SID (16 octets) // 931 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 932 // Sub-TLVs (variable) // 933 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 935 where: 937 o Type: TBD 939 o Length: variable 941 o BSID Flags: 2 octet field that indicates attribute and status of 942 the Binding SID (BSID) associated with this CP. The following bit 943 positions are defined and the semantics are described in detail in 944 [I-D.ietf-spring-segment-routing-policy]. Other bits SHOULD be 945 cleared by originator and MUST be ignored by receiver. 947 0 1 948 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 949 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 950 |B|U|F| | 951 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 953 where: 955 * B-Flag : Indicates the allocation of the value in the BSID 956 field when set and indicates that BSID is not allocated when 957 clear. 959 * U-Flag : Indicates the specified BSID value is unavailable when 960 set. 962 * F-Flag : Indicates the BSID value is one allocated dynamically 963 due to fallback (e.g. when specified BSID is unavailable) when 964 set. 966 o RESERVED: 2 octets. SHOULD be set to 0 by originator and MUST be 967 ignored by receiver. 969 o Binding SID: It indicates the operational or allocated BSID value 970 for the CP based on the status flags. 972 o Specified BSID: It is used to report the explicitly specified BSID 973 value regardless of whether it is successfully allocated or not. 974 The field is set to value 0 when BSID has not been specified for 975 the CP. 977 o Sub-TLVs : variable and contains any other optional attributes 978 associated with the SRv6 BSID. 980 The SRv6 Endpoint Behavior TLV (1250) and the SRv6 SID Structure TLV 981 (1252) defined in [I-D.ietf-idr-bgpls-srv6-ext] are used as sub-TLVs 982 of the SRv6 Binding SID TLV to optionally indicate the SRv6 Endpoint 983 behavior and SID structure for the Binding SID value in the TLV. 985 6.3. SR Candidate Path State 987 The SR Candidate Path (CP) State TLV provides the operational status 988 and attributes of the SR Policy at the CP level. The TLV has the 989 following format: 991 0 1 2 3 992 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 993 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 994 | Type | Length | 995 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 996 | Priority | RESERVED | Flags | 997 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 998 | Preference (4 octets) | 999 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1001 where: 1003 o Type: 1202 1005 o Length: 8 octets 1007 o Priority : 1 octet value which indicates the priority of the CP. 1008 Refer Section 2.12 of [I-D.ietf-spring-segment-routing-policy]. 1010 o RESERVED: 1 octet. SHOULD be set to 0 by originator and MUST be 1011 ignored by receiver. 1013 o Flags: 2 octet field that indicates attribute and status of the 1014 CP. The following bit positions are defined and the semantics are 1015 described in detail in [I-D.ietf-spring-segment-routing-policy]. 1017 Other bits SHOULD be cleared by originator and MUST be ignored by 1018 receiver. 1020 0 1 1021 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 1022 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1023 |S|A|B|E|V|O|D|C|I|T| | 1024 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1026 where: 1028 * S-Flag : Indicates the CP is in administrative shut state when 1029 set 1031 * A-Flag : Indicates the CP is the active path (i.e. one 1032 provisioned in the forwarding plane) for the SR Policy when set 1034 * B-Flag : Indicates the CP is the backup path (i.e. one 1035 identified for path protection of the active path) for the SR 1036 Policy when set 1038 * E-Flag : Indicates that the CP has been evaluated for validity 1039 (e.g. headend may evaluate CPs based on their preferences) when 1040 set 1042 * V-Flag : Indicates the CP has at least one valid SID-List when 1043 set. When the E-Flag is clear (i.e. the CP has not been 1044 evaluated), then this flag MUST be set to 0 by the originator 1045 and ignored by the receiver. 1047 * O-Flag : Indicates the CP was instantiated by the headend due 1048 to an on-demand-nexthop trigger based on local template when 1049 set. Refer Section 8.5 of 1050 [I-D.ietf-spring-segment-routing-policy]. 1052 * D-Flag : Indicates the CP was delegated for computation to a 1053 PCE/controller when set 1055 * C-Flag : Indicates the CP was provisioned by a PCE/controller 1056 when set 1058 * I-Flag : Indicates the CP will perform the "drop upon invalid" 1059 behavior when no other active path is available for this SR 1060 Policy and this path is the one with best preference amongst 1061 the available CPs. Refer Section 8.2 of 1062 [I-D.ietf-spring-segment-routing-policy]. 1064 * T-Flag : Indicates the CP has been marked as eligible for use 1065 as Transit Policy on the headend when set. Refer Section 8.3 1066 of [I-D.ietf-spring-segment-routing-policy]. 1068 o Preference : 4 octet value which indicates the preference of the 1069 CP. Refer Section 2.7 of 1070 [I-D.ietf-spring-segment-routing-policy]. 1072 6.4. SR Policy Name 1074 The SR Policy Name TLV is an optional TLV that is used to carry the 1075 symbolic name associated with the SR Policy. The TLV has the 1076 following format: 1078 0 1 2 3 1079 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 1080 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1081 | Type | Length | 1082 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1083 | SR Policy Name (variable) // 1084 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1086 where: 1088 o Type: TBD 1090 o Length: variable 1092 o SR Policy Name : Symbolic name for the SR Policy without a NULL 1093 terminator as specified in section 2.6 of 1094 [I-D.ietf-spring-segment-routing-policy]. It is RECOMMENDED that 1095 the size of the symbolic name be limited to 255 bytes. 1096 Implementations MAY choose to truncate long names to 255 bytes 1097 when signaling via BGP-LS. 1099 6.5. SR Candidate Path Name 1101 The SR Candidate Path Name TLV is an optional TLV that is used to 1102 carry the symbolic name associated with the candidate path. The TLV 1103 has the following format: 1105 0 1 2 3 1106 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 1107 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1108 | Type | Length | 1109 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1110 | Candidate Path Name (variable) // 1111 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1113 where: 1115 o Type: 1203 1117 o Length: variable 1119 o Candidate Path Name : Symbolic name for the SR Policy candidate 1120 path without a NULL terminator as specified in section 2.6 of 1121 [I-D.ietf-spring-segment-routing-policy]. It is RECOMMENDED that 1122 the size of the symbolic name be limited to 255 bytes. 1123 Implementations MAY choose to truncate long names to 255 bytes 1124 when signaling via BGP-LS. 1126 6.6. SR Candidate Path Constraints 1128 The SR Candidate Path Constraints TLV is an optional TLV that is used 1129 to report the constraints associated with the candidate path. The 1130 constraints are generally applied to a dynamic candidate path which 1131 is computed by the headend. The constraints may also be applied to 1132 an explicit path where the headend is expected to validate that the 1133 path expresses satisfies the specified constraints and the path is to 1134 be invalidated by the headend when the constraints are no longer met 1135 (e.g. due to topology changes). 1137 The TLV has the following format: 1139 0 1 2 3 1140 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 1141 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1142 | Type | Length | 1143 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1144 | Flags | RESERVED | 1145 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1146 | MTID | Algorithm | RESERVED | 1147 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1148 | sub-TLVs (variable) // 1149 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1151 where: 1153 o Type: 1204 1155 o Length: variable 1157 o Flags: 2 octet field that indicates the constraints that are being 1158 applied to the CP. The following bit positions are defined and 1159 the other bits SHOULD be cleared by originator and MUST be ignored 1160 by receiver. 1162 0 1 1163 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 1164 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1165 |D|P|U|A|T| | 1166 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1168 where: 1170 * D-Flag : Indicates that the CP needs to use SRv6 dataplane when 1171 set and SR/MPLS dataplane when clear 1173 * P-Flag : Indicates that the CP needs to use only protected SIDs 1174 when set 1176 * U-Flag : Indicates that the CP needs to use only unprotected 1177 SIDs when set 1179 * A-Flag : Indicates that the CP needs to use the SIDs belonging 1180 to the specified SR Algorithm only when set 1182 * T-Flag: Indicates that the CP needs to use the SIDs belonging 1183 to the specified topology only when set 1185 o RESERVED: 2 octet. SHOULD be set to 0 by originator and MUST be 1186 ignored by receiver. 1188 o MTID : Indicates the multi-topology identifier of the IGP topology 1189 that is preferred to be used when the path is setup. When the 1190 T-flag is set then the path is strictly useing the specified 1191 topology SIDs only. 1193 o Algorithm : Indicates the algorithm that is preferred to be used 1194 when the path is setup. When the A-flag is set then the path is 1195 strictly using the specified algorithm SIDs only. 1197 o RESERVED: 1 octet. SHOULD be set to 0 by originator and MUST be 1198 ignored by receiver. 1200 o sub-TLVs: optional sub-TLVs MAY be included in this TLV to 1201 describe other constraints. 1203 The following constraint sub-TLVs are defined for the SR CP 1204 Constraints TLV. 1206 6.6.1. SR Affinity Constraint 1208 The SR Affinity Constraint sub-TLV is an optional sub-TLV that is 1209 used to carry the affinity constraints [RFC2702] associated with the 1210 candidate path. The affinity is expressed in terms of Extended Admin 1211 Group (EAG) as defined in [RFC7308]. The TLV has the following 1212 format: 1214 0 1 2 3 1215 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 1216 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1217 | Type | Length | 1218 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1219 | Excl-Any-Size | Incl-Any-Size | Incl-All-Size | RESERVED | 1220 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1221 | Exclude-Any EAG (optional, variable) // 1222 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1223 | Include-Any EAG (optional, variable) // 1224 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1225 | Include-All EAG (optional, variable) // 1226 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1228 where: 1230 o Type: 1208 1232 o Length: variable, dependent on the size of the Extended Admin 1233 Group. MUST be a multiple of 4 octets. 1235 o Exclude-Any-Size : one octet to indicate the size of Exclude-Any 1236 EAG bitmask size in multiples of 4 octets. (e.g. value 0 1237 indicates the Exclude-Any EAG field is skipped, value 1 indicates 1238 that 4 octets of Exclude-Any EAG is included) 1240 o Include-Any-Size : one octet to indicate the size of Include-Any 1241 EAG bitmask size in multiples of 4 octets. (e.g. value 0 1242 indicates the Include-Any EAG field is skipped, value 1 indicates 1243 that 4 octets of Include-Any EAG is included) 1245 o Include-All-Size : one octet to indicate the size of Include-All 1246 EAG bitmask size in multiples of 4 octets. (e.g. value 0 1247 indicates the Include-All EAG field is skipped, value 1 indicates 1248 that 4 octets of Include-All EAG is included) 1250 o RESERVED: 1 octet. SHOULD be set to 0 by originator and MUST be 1251 ignored by receiver. 1253 o Exclude-Any EAG : the bitmask used to represent the affinities to 1254 be excluded from the path. 1256 o Include-Any EAG : the bitmask used to represent the affinities to 1257 be included in the path. 1259 o Include-All EAG : the bitmask used to represent the all affinities 1260 to be included in the path. 1262 6.6.2. SR SRLG Constraint 1264 The SR SRLG Constraint sub-TLV is an optional sub-TLV that is used to 1265 carry the Shared Risk Link Group (SRLG) values [RFC4202] that are to 1266 be excluded from the candidate path. The TLV has the following 1267 format: 1269 0 1 2 3 1270 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 1271 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1272 | Type | Length | 1273 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1274 | SRLG Values (variable, multiples of 4 octets) // 1275 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1277 where: 1279 o Type: 1209 1281 o Length: variable, dependent on the number of SRLGs encoded. MUST 1282 be a multiple of 4 octets. 1284 o SRLG Values : One or more SRLG values (each of 4 octets). 1286 6.6.3. SR Bandwidth Constraint 1288 The SR Bandwidth Constraint sub-TLV is an optional sub-TLV that is 1289 used to indicate the desired bandwidth availability that needs to be 1290 ensured for the candidate path. The TLV has the following format: 1292 0 1 2 3 1293 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 1294 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1295 | Type | Length | 1296 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1297 | Bandwidth | 1298 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1300 where: 1302 o Type: 1210 1304 o Length: 4 octects 1306 o Bandwidth : 4 octets which specify the desired bandwidth in unit 1307 of bytes per second in IEEE floating point format. 1309 6.6.4. SR Disjoint Group Constraint 1311 The SR Disjoint Group Constraint sub-TLV is an optional sub-TLV that 1312 is used to carry the disjointness constraint associated with the 1313 candidate path. The disjointness between two SR Policy Candidate 1314 Paths is expressed by associating them with the same disjoint group 1315 identifier and then specifying the type of disjointness required 1316 between their paths. The computation is expected to achieve the 1317 highest level of disjointness requested and when that is not possible 1318 then fallback to a lesser level progressively based on the levels 1319 indicated. 1321 The TLV has the following format: 1323 0 1 2 3 1324 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 1325 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1326 | Type | Length | 1327 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1328 | Request-Flags | Status-Flags | RESERVED | 1329 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1330 | Disjoint Group Identifier | 1331 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1333 where: 1335 o Type: 1211 1337 o Length: 8 octets 1338 o Request Flags : one octet to indicate the level of disjointness 1339 requested as specified in the form of flags. The following flags 1340 are defined and the other bits SHOULD be cleared by originator and 1341 MUST be ignored by receiver. 1343 0 1 2 3 4 5 6 7 1344 +-+-+-+-+-+-+-+-+ 1345 |S|N|L|F|I| | 1346 +-+-+-+-+-+-+-+-+ 1348 where: 1350 * S-Flag : Indicates that SRLG disjointness is requested 1352 * N-Flag : Indicates that node disjointness is requested when 1354 * L-Flag : Indicates that link disjointness is requested when 1356 * F-Flag : Indicates that the computation may fallback to a lower 1357 level of disjointness amongst the ones requested when all 1358 cannot be achieved 1360 * I-Flag : Indicates that the computation may fallback to the 1361 default best path (e.g. IGP path) in case of none of the 1362 desired disjointness can be achieved. 1364 o Status Flags : one octet to indicate the level of disjointness 1365 that has been achieved by the computation as specified in the form 1366 of flags. The following flags are defined and the other bits 1367 SHOULD be cleared by originator and MUST be ignored by receiver. 1369 0 1 2 3 4 5 6 7 1370 +-+-+-+-+-+-+-+-+ 1371 |S|N|L|F|I|X| | 1372 +-+-+-+-+-+-+-+-+ 1374 where: 1376 * S-Flag : Indicates that SRLG disjointness is achieved 1378 * N-Flag : Indicates that node disjointness is achieved 1380 * L-Flag : Indicates that link disjointness is achieved 1382 * F-Flag : Indicates that the computation has fallen back to a 1383 lower level of disjointness that requested. 1385 * I-Flag : Indicates that the computation has fallen back to the 1386 best path (e.g. IGP path) and disjointness has not been 1387 achieved 1389 * X-Flag : Indicates that the disjointness constraint could not 1390 be achieved and hence path has been invalidated 1392 o RESERVED: 2 octets. SHOULD be set to 0 by originator and MUST be 1393 ignored by receiver. 1395 o Disjointness Group Identifier : 4 octet value that is the group 1396 identifier for a set of disjoint paths 1398 6.7. SR Segment List 1400 The SR Segment List TLV is used to report the SID-List(s) of a 1401 candidate path. The TLV has following format: 1403 0 1 2 3 1404 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 1405 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1406 | Type | Length | 1407 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1408 | Flags | RESERVED | 1409 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1410 | MTID | Algorithm | RESERVED | 1411 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1412 | Weight (4 octets) | 1413 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1414 | sub-TLVs (variable) // 1415 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1417 where: 1419 o Type: 1205 1421 o Length: variable 1423 o Flags: 2 octet field that indicates attribute and status of the 1424 SID-List.The following bit positions are defined and the semantics 1425 are described in detail in 1426 [I-D.ietf-spring-segment-routing-policy]. Other bits SHOULD be 1427 cleared by originator and MUST be ignored by receiver. 1429 0 1 1430 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 1431 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1432 |D|E|C|V|R|F|A|T|M| | 1433 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1435 where: 1437 * D-Flag : Indicates the SID-List is comprised of SRv6 SIDs when 1438 set and indicates it is comprised of SR/MPLS labels when clear. 1440 * E-Flag : Indicates that SID-List is an explicit path when set 1441 and indicates dynamic path when clear. 1443 * C-Flag : Indicates that SID-List has been computed for a 1444 dynamic path when set. It is always reported as set for 1445 explicit paths. 1447 * V-Flag : Indicates the SID-List has passed verification or its 1448 verification was not required when set and failed verification 1449 when clear. 1451 * R-Flag : Indicates that the first Segment has been resolved 1452 when set and failed resolution when clear. 1454 * F-Flag : Indicates that the computation for the dynamic path 1455 failed when set and succeeded (or not required in case of 1456 explicit path) when clear 1458 * A-Flag : Indicates that all the SIDs in the SID-List belong to 1459 the specified algorithm when set. 1461 * T-Flag : Indicates that all the SIDs in the SID-List belong to 1462 the specified topology (identified by the multi-topology ID) 1463 when set. 1465 * M-Flag : Indicates that the SID-list has been removed from the 1466 forwarding plane due to fault detection by a monitoring 1467 mechanism (e.g. BFD) when set and indicates no fault detected 1468 or monitoring is not being done when clear. 1470 o RESERVED: 2 octet. SHOULD be set to 0 by originator and MUST be 1471 ignored by receiver. 1473 o MTID : 2 octet that indicates the multi-topology identifier of the 1474 IGP topology to be used when the T-flag is set. 1476 o Algorithm: 1 octet that indicates the algorithm of the SIDs used 1477 in the SID-List when the A-flag is set. 1479 o RESERVED: 1 octet. SHOULD be set to 0 by originator and MUST be 1480 ignored by receiver. 1482 o Weight: 4 octet field that indicates the weight associated with 1483 the SID-List for weighted load-balancing. Refer Section 2.2 and 1484 2.11 of [I-D.ietf-spring-segment-routing-policy]. 1486 o Sub-TLVs : variable and contains the ordered set of Segments and 1487 any other optional attributes associated with the specific SID- 1488 List. 1490 The SR Segment sub-TLV (defined in Section 6.8) MUST be included as 1491 an ordered set of sub-TLVs within the SR Segment List TLV when the 1492 SID-List is not empty. A SID-List may be empty in certain cases 1493 (e.g. for a dynamic path) where the headend has not yet performed the 1494 computation and hence not derived the segments required for the path; 1495 in such cases, the SR Segment List TLV SHOULD NOT include any SR 1496 Segment sub-TLVs. 1498 6.8. SR Segment 1500 The SR Segment sub-TLV describes a single segment in a SID-List. One 1501 or more instances of this sub-TLV in an ordered manner constitute a 1502 SID-List for a SR Policy candidate path. It is a sub-TLV of the SR 1503 Segment List TLV and has following format: 1505 0 1 2 3 1506 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 1507 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1508 | Type | Length | 1509 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1510 | Segment Type | RESERVED | Flags | 1511 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1512 | SID (4 or 16 octets) // 1513 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1514 // Segment Descriptor (variable) // 1515 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1516 // Sub-TLVs (variable) // 1517 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1519 where: 1521 o Type: 1206 1523 o Length: variable 1524 o Segment Type : 1 octet which indicates the type of segment (refer 1525 Section 6.8.1 for details) 1527 o RESERVED: 1 octet. SHOULD be set to 0 by originator and MUST be 1528 ignored by receiver. 1530 o Flags: 2 octet field that indicates attribute and status of the 1531 Segment and its SID. The following bit positions are defined and 1532 the semantics are described in detail in 1533 [I-D.ietf-spring-segment-routing-policy]. Other bits SHOULD be 1534 cleared by originator and MUST be ignored by receiver. 1536 0 1 1537 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 1538 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1539 |S|E|V|R|A| | 1540 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1542 where: 1544 * S-Flag : Indicates the presence of SID value in the SID field 1545 when set and that no value is indicated when clear. 1547 * E-Flag : Indicates the SID value is explicitly provisioned 1548 value (locally on headend or via controller/PCE) when set and 1549 is a dynamically resolved value by headend when clear 1551 * V-Flag : Indicates the SID has passed verification or did not 1552 require verification when set and failed verification when 1553 clear. 1555 * R-Flag : Indicates the SID has been resolved or did not require 1556 resolution (e.g. because it is not the first SID) when set and 1557 failed resolution when clear. 1559 * A-Flag : Indicates that the Algorithm indicated in the Segment 1560 descriptor is valid when set. When clear, it indicates that 1561 the headend is unable to determine the algorithm of the SID. 1563 o SID : 4 octet carrying the MPLS Label or 16 octets carrying the 1564 SRv6 SID based on the Segment Type. When carrying the MPLS Label, 1565 as shown in the figure below, the TC, S and TTL (total of 12 bits) 1566 are RESERVED and SHOULD be set to 0 by originator and MUST be 1567 ignored by the receiver. 1569 0 1 2 3 1570 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 1571 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1572 | Label | TC |S| TTL | 1573 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1575 o Segment Descriptor : variable size Segment descriptor based on the 1576 type of segment (refer Section 6.8.1 for details) 1578 o Sub-Sub-TLVs : variable and contains any other optional attributes 1579 associated with the specific segment. 1581 The SRv6 Endpoint Behavior TLV (1250) and the SRv6 SID Structure TLV 1582 (1252) defined in [I-D.ietf-idr-bgpls-srv6-ext] are used as sub-sub- 1583 TLVs of the SR Segment sub-TLV to optionally indicate the SRv6 1584 Endpoint behavior and SID structure when advertising the SRv6 1585 specific segment types. 1587 6.8.1. Segment Descriptors 1589 [I-D.ietf-spring-segment-routing-policy] section 4 defines multiple 1590 types of segments and their description. This section defines the 1591 encoding of the Segment Descriptors for each of those Segment types 1592 to be used in the Segment sub-TLV describes previously in 1593 Section 6.8. 1595 The following types are currently defined: 1597 +-------+--------------------------------------------------------------+ 1598 | Type | Segment Description | 1599 +-------+--------------------------------------------------------------+ 1600 | 0 | Invalid | 1601 | 1 | SR-MPLS Label | 1602 | 2 | SRv6 SID as IPv6 address | 1603 | 3 | SR-MPLS Prefix SID as IPv4 Node Address | 1604 | 4 | SR-MPLS Prefix SID as IPv6 Node Global Address | 1605 | 5 | SR-MPLS Adjacency SID as IPv4 Node Address & Local | 1606 | | Interface ID | 1607 | 6 | SR-MPLS Adjacency SID as IPv4 Local & Remote Interface | 1608 | | Addresses | 1609 | 7 | SR-MPLS Adjacency SID as pair of IPv6 Global Address & | 1610 | | Interface ID for Local & Remote nodes | 1611 | 8 | SR-MPLS Adjacency SID as pair of IPv6 Global Addresses for | 1612 | | the Local & Remote Interface | 1613 | 9 | SRv6 END SID as IPv6 Node Global Address | 1614 | 10 | SRv6 END.X SID as pair of IPv6 Global Address & Interface ID | 1615 | | for Local & Remote nodes | 1616 | 11 | SRv6 END.X SID as pair of IPv6 Global Addresses for the | 1617 | | Local & Remote Interface | 1618 +-------+--------------------------------------------------------------+ 1620 6.8.1.1. Type 1: SR-MPLS Label 1622 The Segment is SR-MPLS type and is specified simply as the label. 1623 The format of its Segment Descriptor is as follows: 1625 0 1 2 3 1626 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 1627 +-+-+-+-+-+-+-+-+ 1628 | Algorithm | 1629 +-+-+-+-+-+-+-+-+ 1631 Where: 1633 o Algorithm: 1 octet value that indicates the algorithm used for 1634 picking the SID. This is valid only when the A-flag has been set 1635 in the Segment TLV. 1637 6.8.1.2. Type 2: SRv6 SID 1639 The Segment is SRv6 type and is specified simply as the SRv6 SID 1640 address. The format of its Segment Descriptor is as follows: 1642 0 1 2 3 1643 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 1644 +-+-+-+-+-+-+-+-+ 1645 | Algorithm | 1646 +-+-+-+-+-+-+-+-+ 1648 Where: 1650 o Algorithm: 1 octet value that indicates the algorithm used for 1651 picking the SID. This is valid only when the A-flag has been set 1652 in the Segment TLV. 1654 6.8.1.3. Type 3: SR-MPLS Prefix SID for IPv4 1656 The Segment is SR-MPLS Prefix SID type and is specified as an IPv4 1657 node address. The format of its Segment Descriptor is as follows: 1659 0 1 2 3 1660 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 1661 +-+-+-+-+-+-+-+-+ 1662 | Algorithm | 1663 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1664 | IPv4 Node Address (4 octets) | 1665 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1667 Where: 1669 o Algorithm: 1 octet value that indicates the algorithm used for 1670 picking the SID 1672 o IPv4 Node Address: 4 octet value which carries the IPv4 address 1673 associated with the node 1675 6.8.1.4. Type 4: SR-MPLS Prefix SID for IPv6 1677 The Segment is SR-MPLS Prefix SID type and is specified as an IPv6 1678 global address. The format of its Segment Descriptor is as follows: 1680 0 1 2 3 1681 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 1682 +-+-+-+-+-+-+-+-+ 1683 | Algorithm | 1684 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1685 | IPv6 Node Global Address (16 octets) | 1686 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1688 Where: 1690 o Algorithm: 1 octet value that indicates the algorithm used for 1691 picking the SID 1693 o IPv6 Node Global Address: 16 octet value which carries the IPv6 1694 global address associated with the node 1696 6.8.1.5. Type 5: SR-MPLS Adjacency SID for IPv4 with Interface ID 1698 The Segment is SR-MPLS Adjacency SID type and is specified as an IPv4 1699 node address along with the local interface ID on that node. The 1700 format of its Segment Descriptor is as follows: 1702 0 1 2 3 1703 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 1704 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1705 | IPv4 Node Address (4 octets) | 1706 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1707 | Local Interface ID (4 octets) | 1708 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1710 Where: 1712 o IPv4 Node Address: 4 octet value which carries the IPv4 address 1713 associated with the node 1715 o Local Interface ID : 4 octet value which carries the local 1716 interface ID of the node identified by the Node Address 1718 6.8.1.6. Type 6: SR-MPLS Adjacency SID for IPv4 with Interface Address 1720 The Segment is SR-MPLS Adjacency SID type and is specified as a pair 1721 of IPv4 local and remote addresses. The format of its Segment 1722 Descriptor is as follows: 1724 0 1 2 3 1725 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 1726 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1727 | IPv4 Local Address (4 octets) | 1728 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1729 | IPv4 Remote Address (4 octets) | 1730 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1732 Where: 1734 o IPv4 Local Address: 4 octet value which carries the local IPv4 1735 address associated with the node 1737 o IPv4 Remote Address: 4 octet value which carries the remote IPv4 1738 address associated with the node's neighbor. This is optional and 1739 MAY be set to 0 when not used (e.g. when identifying point-to- 1740 point links). 1742 6.8.1.7. Type 7: SR-MPLS Adjacency SID for IPv6 with interface ID 1744 The Segment is SR-MPLS Adjacency SID type and is specified as a pair 1745 of IPv6 global address and interface ID for local and remote nodes. 1746 The format of its Segment Descriptor is as follows: 1748 0 1 2 3 1749 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 1750 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1751 | IPv6 Local Node Global Address (16 octets) | 1752 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1753 | Local Node Interface ID (4 octets) | 1754 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1755 | IPv6 Remote Node Global Address (16 octets) | 1756 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1757 | Remote Node Interface ID (4 octets) | 1758 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1760 Where: 1762 o IPv6 Local Node Global Address: 16 octet value which carries the 1763 IPv6 global address associated with the local node 1765 o Local Node Interface ID : 4 octet value which carries the 1766 interface ID of the local node identified by the Local Node 1767 Address 1769 o IPv6 Remote Node Global Address: 16 octet value which carries the 1770 IPv6 global address associated with the remote node. This is 1771 optional and MAY be set to 0 when not used (e.g. when identifying 1772 point-to-point links). 1774 o Remote Node Interface ID : 4 octet value which carries the 1775 interface ID of the remote node identified by the Remote Node 1776 Address. This is optional and MAY be set to 0 when not used (e.g. 1777 when identifying point-to-point links). 1779 6.8.1.8. Type 8: SR-MPLS Adjacency SID for IPv6 with interface address 1781 The Segment is SR-MPLS Adjacency SID type and is specified as a pair 1782 of IPv6 Global addresses for local and remote interface addresses. 1783 The format of its Segment Descriptor is as follows: 1785 0 1 2 3 1786 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 1787 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1788 | Global IPv6 Local Interface Address (16 octets) | 1789 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1790 | Global IPv6 Remote Interface Address (16 octets) | 1791 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1793 Where: 1795 o IPv6 Local Address: 16 octet value which carries the local IPv6 1796 address associated with the node 1798 o IPv6 Remote Address: 16 octet value which carries the remote IPv6 1799 address associated with the node's neighbor 1801 6.8.1.9. Type 9: SRv6 END SID as IPv6 Node Address 1803 The Segment is SRv6 END SID type and is specified as an IPv6 global 1804 address. The format of its Segment Descriptor is as follows: 1806 0 1 2 3 1807 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 1808 +-+-+-+-+-+-+-+-+ 1809 | Algorithm | 1810 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1811 | IPv6 Node Global Address (16 octets) | 1812 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1814 Where: 1816 o Algorithm: 1 octet value that indicates the algorithm used for 1817 picking the SID 1819 o IPv6 Node Global Address: 16 octet value which carries the IPv6 1820 global address associated with the node 1822 6.8.1.10. Type 10: SRv6 END.X SID as interface ID 1824 The Segment is SRv6 END.X SID type and is specified as a pair of IPv6 1825 global address and interface ID for local and remote nodes. The 1826 format of its Segment Descriptor is as follows: 1828 0 1 2 3 1829 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 1830 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1831 | IPv6 Local Node Global Address (16 octets) | 1832 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1833 | Local Node Interface ID (4 octets) | 1834 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1835 | IPv6 Remote Node Global Address (16 octets) | 1836 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1837 | Remote Node Interface ID (4 octets) | 1838 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1840 Where: 1842 o IPv6 Local Node Global Address: 16 octet value which carries the 1843 IPv6 global address associated with the local node 1845 o Local Node Interface ID : 4 octet value which carries the 1846 interface ID of the local node identified by the Local Node 1847 Address 1849 o IPv6 Remote Node Global Address: 16 octet value which carries the 1850 IPv6 global address associated with the remote node. This is 1851 optional and MAY be set to 0 when not used (e.g. when identifying 1852 point-to-point links). 1854 o Remote Node Interface ID : 4 octet value which carries the 1855 interface ID of the remote node identified by the Remote Node 1856 Address. This is optional and MAY be set to 0 when not used (e.g. 1857 when identifying point-to-point links). 1859 6.8.1.11. Type 11: SRv6 END.X SID as interface address 1861 The Segment is SRv6 END.X SID type and is specified as a pair of IPv6 1862 Global addresses for local and remote interface addresses. The 1863 format of its Segment Descriptor is as follows: 1865 0 1 2 3 1866 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 1867 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1868 | Global IPv6 Local Interface Address (16 octets) | 1869 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1870 | Global IPv6 Remote Interface Address (16 octets) | 1871 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1873 Where: 1875 o IPv6 Local Address: 16 octet value which carries the local IPv6 1876 address associated with the node 1878 o IPv6 Remote Address: 16 octet value which carries the remote IPv6 1879 address associated with the node's neighbor 1881 6.9. SR Segment List Metric 1883 The SR Segment List Metric sub-TLV describes the metric used for 1884 computation of the SID-List. It is used to report the type of metric 1885 used in the computation of a dynamic path either on the headend or 1886 when the path computation is delegated to a PCE/controller. When the 1887 path computation is done on the headend, it is also used to report 1888 the calculated metric for the path. 1890 It is a sub-TLV of the SR Segment List TLV and has following format: 1892 0 1 2 3 1893 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 1894 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1895 | Type | Length | 1896 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1897 | Metric Type | Flags | RESERVED | 1898 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1899 | Metric Margin | 1900 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1901 | Metric Bound | 1902 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1903 | Metric Value | 1904 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1906 where: 1908 o Type: 1207 1910 o Length: 16 octets 1912 o Metric Type : 1 octet field which identifies the type of metric 1913 used for path computation. Following metric type codepoints are 1914 defined in this document. 1916 +------------+-----------------------------------------+ 1917 | Code Point | Metric Type | 1918 +------------+-----------------------------------------+ 1919 | 0 | IGP Metric | 1920 | 1 | Min Unidirectional Link Delay [RFC7471] | 1921 | 2 | TE Metric [RFC3630] | 1922 +------------+-----------------------------------------+ 1923 o Flags: 1 octet field that indicates the validity of the metric 1924 fields and their semantics. The following bit positions are 1925 defined and the other bits SHOULD be cleared by originator and 1926 MUST be ignored by receiver. 1928 0 1 2 3 4 5 6 7 1929 +-+-+-+-+-+-+-+-+ 1930 |M|A|B|V| | 1931 +-+-+-+-+-+-+-+-+ 1933 where: 1935 * M-Flag : Indicates that the metric margin allowed for path 1936 computation is specified when set 1938 * A-Flag : Indicates that the metric margin is specified as an 1939 absolute value when set and is expressed as a percentage of the 1940 minimum metric when clear. 1942 * B-Flag : Indicates that the metric bound allowed for the path 1943 is specified when set. 1945 * V-Flag : Indicates that the metric value computed is being 1946 reported when set. 1948 o RESERVED: 2 octets. SHOULD be set to 0 by originator and MUST be 1949 ignored by receiver. 1951 o Metric Margin : 4 octets which indicate the metric margin value 1952 when M-flag is set. The metric margin is specified as either an 1953 absolute value or as a percentage of the minimum computed path 1954 metric based on the A-flag. The metric margin loosens the 1955 criteria for minimum metric path calculation up to the specified 1956 metric to accomodate for other factors such as bandwidth 1957 availability, minimal SID stack depth and maximizing of ECMP for 1958 the SR path computed. 1960 o Metric Bound : 4 octects which indicate the maximum metric value 1961 that is allowed when B-flag is set. If the computed path metric 1962 crosses the specified bound value then the path is considered as 1963 invalid. 1965 o Metric Value : 4 octets which indicate the metric value of the 1966 computed path when V-flag is set. This value is available and 1967 reported when the computation is successful and a valid path is 1968 available. 1970 7. Procedures 1972 The BGP-LS advertisements for the TE Policy NLRI are originated by 1973 the headend node for the TE Policies that are instantiated on its 1974 local node. 1976 For MPLS TE LSPs signaled via RSVP-TE, the NLRI descriptor TLVs as 1977 specified in Section 4.1, Section 4.2, Section 4.3 and Section 4.4 1978 are used. Then the TE LSP state is encoded in the BGP-LS Attribute 1979 field as MPLS-TE Policy State TLV as described in Section 5. The 1980 RSVP-TE objects that reflect the state of the LSP are included as 1981 defined in Section 5.1. When the TE LSP is setup with the help of 1982 PCEP signaling then another MPLS-TE Policy State TLV SHOULD be used 1983 to to encode the related PCEP objects corresponding to the LSP as 1984 defined in Section 5.2. 1986 For SR Policies, the NLRI descriptor TLV as specified in Section 4.5 1987 is used. An SR Policy candidate path (CP) may be instantiated on the 1988 headend node via a local configuration, PCEP or BGP SR Policy 1989 signaling and this is indicated via the SR Protocol Origin. Then the 1990 SR Policy Candidate Path's attribute and state is encoded in the BGP- 1991 LS Attribute field as SR Policy State TLVs and sub-TLVs as described 1992 in Section 6. The SR Candidate Path State TLV as defined in 1993 Section 6.3 is included to report the state of the CP. The SR BSID 1994 TLV as defined in Section 6.1 or Section 6.2 is included to report 1995 the BSID of the CP when one is either specified or allocated by the 1996 headend. The constraints for the SR Policy Candidate Path are 1997 reported using the SR Candidate Path Constraints TLV as described in 1998 Section 6.6.The SR Segment List TLV is included for each of the SID- 1999 List(s) associated with the CP. Each SR Segment List TLV in turn 2000 includes SR Segment sub-TLV(s) to report the segment(s) and their 2001 status. The SR Segment List Metric sub-TLV is used to report the 2002 metric values and constraints for the specific SID List. 2004 When the SR Policy CP is setup with the help of PCEP signaling then 2005 another MPLS-TE Policy State TLV MAY be used to to encode the related 2006 PCEP objects corresponding to the LSP as defined in Section 5.2 2007 specifically to report information and status that is not covered by 2008 the defined TLVs under Section 6. In the event of a conflict of 2009 information, the receiver MUST prefer the information originated via 2010 TLVs defined in Section 6 over the PCEP objects reported via the TE 2011 Policy State TLV. 2013 8. Manageability Considerations 2015 The Existing BGP operational and management procedures apply to this 2016 document. No new procedures are defined in this document. The 2017 considerations as specified in [RFC7752] apply to this document. 2019 In general, it is assumed that the TE Policy head-end nodes are 2020 responsible for the distribution of TE Policy state information, 2021 while other nodes, e.g. the nodes in the path of a policy, MAY report 2022 the TE Policy information (if available) when needed. For example, 2023 the border routers in the inter-domain case will also distribute LSP 2024 state information since the ingress node may not have the complete 2025 information for the end-to-end path. 2027 9. IANA Considerations 2029 This document requires new IANA assigned codepoints. 2031 9.1. BGP-LS NLRI-Types 2033 IANA maintains a registry called "Border Gateway Protocol - Link 2034 State (BGP-LS) Parameters" with a sub-registry called "BGP-LS NLRI- 2035 Types". 2037 The following codepoints have been assigned by early allocation 2038 process by IANA: 2040 +------+----------------------------+---------------+ 2041 | Type | NLRI Type | Reference | 2042 +------+----------------------------+---------------+ 2043 | 5 | TE Policy NLRI type | this document | 2044 +------+----------------------------+---------------+ 2046 9.2. BGP-LS Protocol-IDs 2048 IANA maintains a registry called "Border Gateway Protocol - Link 2049 State (BGP-LS) Parameters" with a sub-registry called "BGP-LS 2050 Protocol-IDs". 2052 The following Protocol-ID codepoints have been assigned by early 2053 allocation process by IANA: 2055 +-------------+----------------------------------+---------------+ 2056 | Protocol-ID | NLRI information source protocol | Reference | 2057 +-------------+----------------------------------+---------------+ 2058 | 8 | RSVP-TE | this document | 2059 | 9 | Segment Routing | this document | 2060 +-------------+----------------------------------+---------------+ 2062 9.3. BGP-LS TLVs 2064 IANA maintains a registry called "Border Gateway Protocol - Link 2065 State (BGP-LS) Parameters" with a sub-registry called "Node Anchor, 2066 Link Descriptor and Link Attribute TLVs". 2068 The following TLV codepoints have been assigned by early allocation 2069 process by IANA: 2071 +----------+----------------------------------------+---------------+ 2072 | TLV Code | Description | Value defined | 2073 | Point | | in | 2074 +----------+----------------------------------------+---------------+ 2075 | 550 | Tunnel ID TLV | this document | 2076 | 551 | LSP ID TLV | this document | 2077 | 552 | IPv4/6 Tunnel Head-end address TLV | this document | 2078 | 553 | IPv4/6 Tunnel Tail-end address TLV | this document | 2079 | 554 | SR Policy CP Descriptor TLV | this document | 2080 | 555 | MPLS Local Cross Connect TLV | this document | 2081 | 556 | MPLS Cross Connect Interface TLV | this document | 2082 | 557 | MPLS Cross Connect FEC TLV | this document | 2083 | 1200 | MPLS-TE Policy State TLV | this document | 2084 | 1201 | SR BSID TLV | this document | 2085 | 1202 | SR CP State TLV | this document | 2086 | 1203 | SR CP Name TLV | this document | 2087 | 1204 | SR CP Constraints TLV | this document | 2088 | 1205 | SR Segment List TLV | this document | 2089 | 1206 | SR Segment sub-TLV | this document | 2090 | 1207 | SR Segment List Metric sub-TLV | this document | 2091 | 1208 | SR Affinity Constraint sub-TLV | this document | 2092 | 1209 | SR SRLG Constraint sub-TLV | this document | 2093 | 1210 | SR Bandwidth Constraint sub-TLV | this document | 2094 | 1211 | SR Disjoint Group Constraint sub-TLV | this document | 2095 | TBD | SRv6 BSID TLV | this document | 2096 | TBD | SR Policy Name TLV | this document | 2097 +----------+----------------------------------------+---------------+ 2099 9.4. BGP-LS SR Policy Protocol Origin 2101 This document requests IANA to maintain a new sub-registry under 2102 "Border Gateway Protocol - Link State (BGP-LS) Parameters". The new 2103 registry is called "SR Policy Protocol Origin" and contains the 2104 codepoints allocated to the "Protocol Origin" field defined in 2105 Section 4.5. The registry contains the following codepoints, with 2106 initial values, to be assigned by IANA: 2108 +------------+---------------------------------------------------------+ 2109 | Code Point | Protocol Origin | 2110 +------------+---------------------------------------------------------+ 2111 | 1 | PCEP | 2112 | 2 | BGP SR Policy | 2113 | 3 | Local (via CLI, Yang model through NETCONF, gRPC, etc.) | 2114 +------------+---------------------------------------------------------+ 2115 9.5. BGP-LS TE State Object Origin 2117 This document requests IANA to maintain a new sub-registry under 2118 "Border Gateway Protocol - Link State (BGP-LS) Parameters". The new 2119 registry is called "TE State Path Origin" and contains the codepoints 2120 allocated to the "Object Origin" field defined in Section 5. The 2121 registry contains the following codepoints, with initial values, to 2122 be assigned by IANA: 2124 +----------+------------------+ 2125 | Code | Object | 2126 | Point | Origin | 2127 +----------+------------------+ 2128 | 1 | RSVP-TE | 2129 | 2 | PCEP | 2130 | 3 | Local/Static | 2131 +----------+------------------+ 2133 9.6. BGP-LS TE State Address Family 2135 This document requests IANA to maintain a new sub-registry under 2136 "Border Gateway Protocol - Link State (BGP-LS) Parameters". The new 2137 registry is called "TE State Address Family" and contains the 2138 codepoints allocated to the "Address Family" field defined in 2139 Section 5. The registry contains the following codepoints, with 2140 initial values, to be assigned by IANA: 2142 +----------+------------------+ 2143 | Code | Address | 2144 | Point | Family | 2145 +----------+------------------+ 2146 | 1 | MPLS-IPv4 | 2147 | 2 | MPLS-IPv6 | 2148 +----------+------------------+ 2150 9.7. BGP-LS SR Segment Descriptors 2152 This document requests IANA to maintain a new sub-registry under 2153 "Border Gateway Protocol - Link State (BGP-LS) Parameters". The new 2154 registry is called "SR Segment Descriptor Types" and contains the 2155 codepoints allocated to the "Segment Type" field defined in 2156 Section 6.8 and described in Section 6.8.1. The registry contains 2157 the following codepoints, with initial values, to be assigned by 2158 IANA: 2160 +-------+--------------------------------------------------------------+ 2161 | Code | Segment Description | 2162 | Point | | 2163 +-------+--------------------------------------------------------------+ 2164 | 0 | Invalid | 2165 | 1 | SR-MPLS Label | 2166 | 2 | SRv6 SID as IPv6 address | 2167 | 3 | SR-MPLS Prefix SID as IPv4 Node Address | 2168 | 4 | SR-MPLS Prefix SID as IPv6 Node Global Address | 2169 | 5 | SR-MPLS Adjacency SID as IPv4 Node Address & Local | 2170 | | Interface ID | 2171 | 6 | SR-MPLS Adjacency SID as IPv4 Local & Remote Interface | 2172 | | Addresses | 2173 | 7 | SR-MPLS Adjacency SID as pair of IPv6 Global Address & | 2174 | | Interface ID for Local & Remote nodes | 2175 | 8 | SR-MPLS Adjacency SID as pair of IPv6 Global Addresses for | 2176 | | the Local & Remote Interface | 2177 | 9 | SRv6 END SID as IPv6 Node Global Address | 2178 | 10 | SRv6 END.X SID as pair of IPv6 Global Address & Interface ID | 2179 | | for Local & Remote nodes | 2180 | 11 | SRv6 END.X SID as pair of IPv6 Global Addresses for the | 2181 | | Local & Remote Interface | 2182 +-------+--------------------------------------------------------------+ 2184 9.8. BGP-LS Metric Type 2186 This document requests IANA to maintain a new sub-registry under 2187 "Border Gateway Protocol - Link State (BGP-LS) Parameters". The new 2188 registry is called "Metric Type" and contains the codepoints 2189 allocated to the "metric type" field defined in Section 6.9. The 2190 registry contains the following codepoints, with initial values, to 2191 be assigned by IANA: 2193 +------------+-----------------------------------------+ 2194 | Code Point | Metric Type | 2195 +------------+-----------------------------------------+ 2196 | 0 | IGP Metric | 2197 | 1 | Min Unidirectional Link Delay [RFC7471] | 2198 | 2 | TE Metric [RFC3630] | 2199 +------------+-----------------------------------------+ 2201 10. Security Considerations 2203 Procedures and protocol extensions defined in this document do not 2204 affect the BGP security model. See [RFC6952] for details. 2206 11. Contributors 2208 The following people have substantially contributed to the editing of 2209 this document: 2211 Clarence Filsfils 2212 Cisco Systems 2213 Email: cfilsfil@cisco.com 2215 12. Acknowledgements 2217 The authors would like to thank Dhruv Dhody, Mohammed Abdul Aziz 2218 Khalid, Lou Berger, Acee Lindem, Siva Sivabalan, Arjun Sreekantiah, 2219 and Dhanendra Jain for their review and valuable comments. 2221 13. References 2223 13.1. Normative References 2225 [I-D.ietf-idr-bgpls-srv6-ext] 2226 Dawra, G., Filsfils, C., Talaulikar, K., Chen, M., 2227 Bernier, D., and B. Decraene, "BGP Link State Extensions 2228 for SRv6", draft-ietf-idr-bgpls-srv6-ext-08 (work in 2229 progress), June 2021. 2231 [I-D.ietf-spring-segment-routing-policy] 2232 Filsfils, C., Talaulikar, K., Voyer, D., Bogdanov, A., and 2233 P. Mattes, "Segment Routing Policy Architecture", draft- 2234 ietf-spring-segment-routing-policy-13 (work in progress), 2235 May 2021. 2237 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2238 Requirement Levels", BCP 14, RFC 2119, 2239 DOI 10.17487/RFC2119, March 1997, 2240 . 2242 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 2243 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 2244 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 2245 September 1997, . 2247 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 2248 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 2249 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 2250 . 2252 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 2253 Switching (GMPLS) Signaling Resource ReserVation Protocol- 2254 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, 2255 DOI 10.17487/RFC3473, January 2003, 2256 . 2258 [RFC4090] Pan, P., Ed., Swallow, G., Ed., and A. Atlas, Ed., "Fast 2259 Reroute Extensions to RSVP-TE for LSP Tunnels", RFC 4090, 2260 DOI 10.17487/RFC4090, May 2005, 2261 . 2263 [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, 2264 "Multiprotocol Extensions for BGP-4", RFC 4760, 2265 DOI 10.17487/RFC4760, January 2007, 2266 . 2268 [RFC4872] Lang, J., Ed., Rekhter, Y., Ed., and D. Papadimitriou, 2269 Ed., "RSVP-TE Extensions in Support of End-to-End 2270 Generalized Multi-Protocol Label Switching (GMPLS) 2271 Recovery", RFC 4872, DOI 10.17487/RFC4872, May 2007, 2272 . 2274 [RFC4873] Berger, L., Bryskin, I., Papadimitriou, D., and A. Farrel, 2275 "GMPLS Segment Recovery", RFC 4873, DOI 10.17487/RFC4873, 2276 May 2007, . 2278 [RFC4874] Lee, CY., Farrel, A., and S. De Cnodder, "Exclude Routes - 2279 Extension to Resource ReserVation Protocol-Traffic 2280 Engineering (RSVP-TE)", RFC 4874, DOI 10.17487/RFC4874, 2281 April 2007, . 2283 [RFC5420] Farrel, A., Ed., Papadimitriou, D., Vasseur, JP., and A. 2284 Ayyangar, "Encoding of Attributes for MPLS LSP 2285 Establishment Using Resource Reservation Protocol Traffic 2286 Engineering (RSVP-TE)", RFC 5420, DOI 10.17487/RFC5420, 2287 February 2009, . 2289 [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation 2290 Element (PCE) Communication Protocol (PCEP)", RFC 5440, 2291 DOI 10.17487/RFC5440, March 2009, 2292 . 2294 [RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and 2295 S. Ray, "North-Bound Distribution of Link-State and 2296 Traffic Engineering (TE) Information Using BGP", RFC 7752, 2297 DOI 10.17487/RFC7752, March 2016, 2298 . 2300 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2301 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2302 May 2017, . 2304 [RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, 2305 D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 2306 (SRv6) Network Programming", RFC 8986, 2307 DOI 10.17487/RFC8986, February 2021, 2308 . 2310 [RFC9086] Previdi, S., Talaulikar, K., Ed., Filsfils, C., Patel, K., 2311 Ray, S., and J. Dong, "Border Gateway Protocol - Link 2312 State (BGP-LS) Extensions for Segment Routing BGP Egress 2313 Peer Engineering", RFC 9086, DOI 10.17487/RFC9086, August 2314 2021, . 2316 13.2. Informative References 2318 [RFC2702] Awduche, D., Malcolm, J., Agogbua, J., O'Dell, M., and J. 2319 McManus, "Requirements for Traffic Engineering Over MPLS", 2320 RFC 2702, DOI 10.17487/RFC2702, September 1999, 2321 . 2323 [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering 2324 (TE) Extensions to OSPF Version 2", RFC 3630, 2325 DOI 10.17487/RFC3630, September 2003, 2326 . 2328 [RFC4202] Kompella, K., Ed. and Y. Rekhter, Ed., "Routing Extensions 2329 in Support of Generalized Multi-Protocol Label Switching 2330 (GMPLS)", RFC 4202, DOI 10.17487/RFC4202, October 2005, 2331 . 2333 [RFC4655] Farrel, A., Vasseur, J., and J. Ash, "A Path Computation 2334 Element (PCE)-Based Architecture", RFC 4655, 2335 DOI 10.17487/RFC4655, August 2006, 2336 . 2338 [RFC5065] Traina, P., McPherson, D., and J. Scudder, "Autonomous 2339 System Confederations for BGP", RFC 5065, 2340 DOI 10.17487/RFC5065, August 2007, 2341 . 2343 [RFC6952] Jethanandani, M., Patel, K., and L. Zheng, "Analysis of 2344 BGP, LDP, PCEP, and MSDP Issues According to the Keying 2345 and Authentication for Routing Protocols (KARP) Design 2346 Guide", RFC 6952, DOI 10.17487/RFC6952, May 2013, 2347 . 2349 [RFC7308] Osborne, E., "Extended Administrative Groups in MPLS 2350 Traffic Engineering (MPLS-TE)", RFC 7308, 2351 DOI 10.17487/RFC7308, July 2014, 2352 . 2354 [RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S. 2355 Previdi, "OSPF Traffic Engineering (TE) Metric 2356 Extensions", RFC 7471, DOI 10.17487/RFC7471, March 2015, 2357 . 2359 [RFC8231] Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path 2360 Computation Element Communication Protocol (PCEP) 2361 Extensions for Stateful PCE", RFC 8231, 2362 DOI 10.17487/RFC8231, September 2017, 2363 . 2365 Authors' Addresses 2367 Stefano Previdi 2369 Email: stefano@previdi.net 2371 Ketan Talaulikar (editor) 2372 Cisco Systems, Inc. 2373 India 2375 Email: ketant.ietf@gmail.com 2377 Jie Dong (editor) 2378 Huawei Technologies 2379 Huawei Campus, No. 156 Beiqing Rd. 2380 Beijing 100095 2381 China 2383 Email: jie.dong@huawei.com 2385 Mach(Guoyi) Chen 2386 Huawei Technologies 2387 Huawei Campus, No. 156 Beiqing Rd. 2388 Beijing 100095 2389 China 2391 Email: mach.chen@huawei.com 2392 Hannes Gredler 2393 RtBrick Inc. 2395 Email: hannes@rtbrick.com 2397 Jeff Tantsura 2398 Apstra 2400 Email: jefftant.ietf@gmail.com