idnits 2.17.1 draft-ietf-idr-te-lsp-distribution-14.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 23, 2020) is 1274 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 (-22) exists of draft-ietf-spring-segment-routing-policy-08 ** Obsolete normative reference: RFC 7752 (Obsoleted by RFC 9552) Summary: 1 error (**), 0 flaws (~~), 2 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 26, 2021 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 23, 2020 15 Distribution of Traffic Engineering (TE) Policies and State using BGP-LS 16 draft-ietf-idr-te-lsp-distribution-14 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 26, 2021. 43 Copyright Notice 45 Copyright (c) 2020 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. SR Candidate Path State . . . . . . . . . . . . . . . . . 20 79 6.3. SR Candidate Path Name . . . . . . . . . . . . . . . . . 22 80 6.4. SR Candidate Path Constraints . . . . . . . . . . . . . . 22 81 6.4.1. SR Affinity Constraint . . . . . . . . . . . . . . . 24 82 6.4.2. SR SRLG Constraint . . . . . . . . . . . . . . . . . 25 83 6.4.3. SR Bandwidth Constraint . . . . . . . . . . . . . . . 26 84 6.4.4. SR Disjoint Group Constraint . . . . . . . . . . . . 26 85 6.5. SR Segment List . . . . . . . . . . . . . . . . . . . . . 28 86 6.6. SR Segment . . . . . . . . . . . . . . . . . . . . . . . 31 87 6.6.1. Segment Descriptors . . . . . . . . . . . . . . . . . 32 88 6.7. SR Segment List Metric . . . . . . . . . . . . . . . . . 39 89 7. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 41 90 8. Manageability Considerations . . . . . . . . . . . . . . . . 41 91 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 92 9.1. BGP-LS NLRI-Types . . . . . . . . . . . . . . . . . . . . 42 93 9.2. BGP-LS Protocol-IDs . . . . . . . . . . . . . . . . . . . 42 94 9.3. BGP-LS TLVs . . . . . . . . . . . . . . . . . . . . . . . 42 95 9.4. BGP-LS SR Policy Protocol Origin . . . . . . . . . . . . 43 96 9.5. BGP-LS TE State Object Origin . . . . . . . . . . . . . . 44 97 9.6. BGP-LS TE State Address Family . . . . . . . . . . . . . 44 98 9.7. BGP-LS SR Segment Descriptors . . . . . . . . . . . . . . 44 99 9.8. BGP-LS Metric Type . . . . . . . . . . . . . . . . . . . 45 100 10. Security Considerations . . . . . . . . . . . . . . . . . . . 45 101 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 46 102 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 46 103 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 46 104 13.1. Normative References . . . . . . . . . . . . . . . . . . 46 105 13.2. Informative References . . . . . . . . . . . . . . . . . 48 106 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 108 1. Introduction 110 In many network environments, traffic engineering (TE) policies are 111 instantiated into various forms: 113 o MPLS Traffic Engineering Label Switched Paths (TE-LSPs). 115 o IP based tunnels (IP in IP, GRE, etc). 117 o Segment Routing (SR) Policies as defined in 118 [I-D.ietf-spring-segment-routing-policy] 120 o Local MPLS cross-connect configuration 122 All this information can be grouped into the same term: TE Policies. 123 In the rest of this document we refer to TE Policies as the set of 124 information related to the various instantiation of polices: MPLS TE 125 LSPs, IP tunnels (IPv4 or IPv6), SR Policies, etc. 127 TE Polices are generally instantiated at the head-end and are based 128 on either local configuration or controller based programming of the 129 node using various APIs and protocols, e.g., PCEP or BGP. 131 In many network environments, the configuration and state of each TE 132 Policy that is available in the network is required by a controller 133 which allows the network operator to optimize several functions and 134 operations through the use of a controller aware of both topology and 135 state information. 137 One example of a controller is the stateful Path Computation Element 138 (PCE) [RFC8231], which could provide benefits in path reoptimization. 139 While some extensions are proposed in Path Computation Element 140 Communication Protocol (PCEP) for the Path Computation Clients (PCCs) 141 to report the LSP states to the PCE, this mechanism may not be 142 applicable in a management-based PCE architecture as specified in 143 section 5.5 of [RFC4655]. As illustrated in the figure below, the 144 PCC is not an LSR in the routing domain, thus the head-end nodes of 145 the TE-LSPs may not implement the PCEP protocol. In this case a 146 general mechanism to collect the TE-LSP states from the ingress LERs 147 is needed. This document proposes an TE Policy state collection 148 mechanism complementary to the mechanism defined in [RFC8231]. 150 ----------- 151 | ----- | 152 Service | | TED |<-+-----------> 153 Request | ----- | TED synchronization 154 | | | | mechanism (for example, 155 v | | | routing protocol) 156 ------------- Request/ | v | 157 | | Response| ----- | 158 | NMS |<--------+> | PCE | | 159 | | | ----- | 160 ------------- ----------- 161 Service | 162 Request | 163 v 164 ---------- Signaling ---------- 165 | Head-End | Protocol | Adjacent | 166 | Node |<---------->| Node | 167 ---------- ---------- 169 Figure 1. Management-Based PCE Usage 171 In networks with composite PCE nodes as specified in section 5.1 of 172 [RFC4655], PCE is implemented on several routers in the network, and 173 the PCCs in the network can use the mechanism described in [RFC8231] 174 to report the TE Policy information to the PCE nodes. An external 175 component may also need to collect the TE Policy information from all 176 the PCEs in the network to obtain a global view of the LSP state in 177 the network. 179 In multi-area or multi-AS scenarios, each area or AS can have a child 180 PCE to collect the TE Policies in its own domain, in addition, a 181 parent PCE needs to collect TE Policy information from multiple child 182 PCEs to obtain a global view of LSPs inside and across the domains 183 involved. 185 In another network scenario, a centralized controller is used for 186 service placement. Obtaining the TE Policy state information is 187 quite important for making appropriate service placement decisions 188 with the purpose to both meet the application's requirements and 189 utilize network resources efficiently. 191 The Network Management System (NMS) may need to provide global 192 visibility of the TE Policies in the network as part of the network 193 visualization function. 195 BGP has been extended to distribute link-state and traffic 196 engineering information to external components [RFC7752]. Using the 197 same protocol to collect Traffic Engineering Policy and state 198 information is desirable for these external components since this 199 avoids introducing multiple protocols for network information 200 collection. This document describes a mechanism to distribute 201 traffic engineering policy information (MPLS, SR, IPv4 and IPv6) to 202 external components using BGP-LS. 204 1.1. Requirements Language 206 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 207 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 208 "OPTIONAL" in this document are to be interpreted as described in BCP 209 14 [RFC2119] [RFC8174] when, and only when, they appear in all 210 capitals, as shown here. 212 2. Carrying TE Policy Information in BGP 214 TE Policy information is advertised in BGP UPDATE messages using the 215 MP_REACH_NLRI and MP_UNREACH_NLRI attributes [RFC4760]. The "Link- 216 State NLRI" defined in [RFC7752] is extended to carry the TE Policy 217 information. BGP speakers that wish to exchange TE Policy 218 information MUST use the BGP Multiprotocol Extensions Capability Code 219 (1) to advertise the corresponding (AFI, SAFI) pair, as specified in 220 [RFC4760]. New TLVs carried in the Link_State Attribute defined in 221 [RFC7752] are also defined in order to carry the attributes of a TE 222 Policy in the subsequent sections. 224 The format of "Link-State NLRI" is defined in [RFC7752] as follows: 226 0 1 2 3 227 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 228 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 229 | NLRI Type | Total NLRI Length | 230 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 231 | | 232 // Link-State NLRI (variable) // 233 | | 234 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 236 A new "NLRI Type" is defined for TE Policy Information as following: 238 o NLRI Type: TE Policy NLRI value 5. 240 The format of this new NLRI type is defined in Section 3 below. 242 3. TE Policy NLRI 244 This document defines the new TE Policy NLRI-Type and its format as 245 shown in the following figure: 247 0 1 2 3 248 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 249 +-+-+-+-+-+-+-+-+ 250 | Protocol-ID | 251 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 252 | Identifier | 253 | (64 bits) | 254 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 255 // Headend (Node Descriptors) // 256 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 257 // TE Policy Descriptors (variable) // 258 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 260 where: 262 o Protocol-ID field specifies the component that owns the TE Policy 263 state in the advertising node. The following new Protocol-IDs are 264 defined and apply to the TE Policy NLRI: 266 +-------------+----------------------------------+ 267 | Protocol-ID | NLRI information source protocol | 268 +-------------+----------------------------------+ 269 | 8 | RSVP-TE | 270 | 9 | Segment Routing | 271 +-------------+----------------------------------+ 273 o "Identifier" is an 8 octet value as defined in [RFC7752]. 275 o "Headend" consists of a Local Node Descriptor (TLV 256) as defined 276 in [RFC7752]. 278 o "TE Policy Descriptors" consists of one or more of the TLVs listed 279 as below: 281 +-----------+----------------------------------+ 282 | Codepoint | Descriptor TLVs | 283 +-----------+----------------------------------+ 284 | 550 | Tunnel ID | 285 | 551 | LSP ID | 286 | 552 | IPv4/6 Tunnel Head-end address | 287 | 553 | IPv4/6 Tunnel Tail-end address | 288 | 554 | SR Policy Candidate Path | 289 | 555 | Local MPLS Cross Connect | 290 +-----------+----------------------------------+ 292 The Local Node Descriptor TLV MUST include the following Node 293 Descriptor TLVs: 295 o BGP Router-ID (TLV 516) [I-D.ietf-idr-bgpls-segment-routing-epe], 296 which contains a valid BGP Identifier of the local node. 298 o Autonomous System Number (TLV 512) [RFC7752], which contains the 299 ASN or AS Confederation Identifier (ASN) [RFC5065], if 300 confederations are used, of the local node. 302 The Local Node Descriptor TLV SHOULD include the following Node 303 Descriptor TLVs: 305 o IPv4 Router-ID of Local Node (TLV 1028) [RFC7752], which contains 306 the IPv4 TE Router-ID of the local node when one is provisioned. 308 o IPv6 Router-ID of Local Node (TLV 1029) [RFC7752], which contains 309 the IPv6 TE Router-ID of the local node when one is provisioned. 311 The Local Node Descriptor TLV MAY include the following Node 312 Descriptor TLVs: 314 o Member-ASN (TLV 517) [I-D.ietf-idr-bgpls-segment-routing-epe], 315 which contains the ASN of the confederation member (i.e. Member- 316 AS Number), if BGP confederations are used, of the local node. 318 o Node Descriptors as defined in [RFC7752]. 320 4. TE Policy Descriptors 322 This sections defines the TE Policy Descriptors TLVs which are used 323 to describe the TE Policy being advertised by using the new BGP-LS TE 324 Policy NLRI type defined in Section 3. 326 4.1. Tunnel Identifier (Tunnel ID) 328 The Tunnel Identifier TLV contains the Tunnel ID defined in [RFC3209] 329 and is used for RSVP-TE protocol TE Policies. It has the following 330 format: 332 0 1 2 3 333 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 334 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 335 | Type | Length | 336 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 337 | Tunnel ID | 338 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 340 where: 342 o Type: 550 344 o Length: 2 octets. 346 o Tunnel ID: 2 octets as defined in [RFC3209]. 348 4.2. LSP Identifier (LSP ID) 350 The LSP Identifier TLV contains the LSP ID defined in [RFC3209] and 351 is used for RSVP-TE protocol TE Policies. It has the following 352 format: 354 0 1 2 3 355 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 356 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 357 | Type | Length | 358 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 359 | LSP ID | 360 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 362 where: 364 o Type: 551 366 o Length: 2 octets. 368 o LSP ID: 2 octets as defined in [RFC3209]. 370 4.3. IPv4/IPv6 Tunnel Head-End Address 372 The IPv4/IPv6 Tunnel Head-End Address TLV contains the Tunnel Head- 373 End Address defined in [RFC3209] and is used for RSVP-TE protocol TE 374 Policies. It has following format: 376 0 1 2 3 377 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 378 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 379 | Type | Length | 380 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 381 // IPv4/IPv6 Tunnel Head-End Address (variable) // 382 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 384 where: 386 o Type: 552 388 o Length: 4 or 16 octets. 390 When the IPv4/IPv6 Tunnel Head-end Address TLV contains an IPv4 391 address, its length is 4 (octets). 393 When the IPv4/IPv6 Tunnel Head-end Address TLV contains an IPv6 394 address, its length is 16 (octets). 396 4.4. IPv4/IPv6 Tunnel Tail-End Address 398 The IPv4/IPv6 Tunnel Tail-End Address TLV contains the Tunnel Tail- 399 End Address defined in [RFC3209] and is used for RSVP-TE protocol TE 400 Policies. It has following format: 402 0 1 2 3 403 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 404 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 405 | Type | Length | 406 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 407 // IPv4/IPv6 Tunnel Tail-End Address (variable) // 408 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 410 where: 412 o Type: 553 414 o Length: 4 or 16 octets. 416 When the IPv4/IPv6 Tunnel Tail-end Address TLV contains an IPv4 417 address, its length is 4 (octets). 419 When the IPv4/IPv6 Tunnel Tail-end Address TLV contains an IPv6 420 address, its length is 16 (octets). 422 4.5. SR Policy Candidate Path Descriptor 424 The SR Policy Candidate Path Descriptor TLV identifies a Segment 425 Routing Policy candidate path (CP) as defined in 426 [I-D.ietf-spring-segment-routing-policy] and has the following 427 format: 429 0 1 2 3 430 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 431 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 432 | Type | Length | 433 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 434 |Protocol-origin| Flags | RESERVED | 435 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 436 | Endpoint (4 or 16 octets) // 437 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 438 | Policy Color (4 octets) | 439 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 440 | Originator AS Number (4 octets) | 441 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 442 | Originator Address (4 or 16 octets) // 443 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 444 | Discriminator (4 octets) | 445 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 447 where: 449 o Type: 554 451 o Length: variable (valid values are 24, 36 or 48 octets) 453 o Protocol-Origin : 1 octet field which identifies the protocol or 454 component which is responsible for the instantiation of this path. 455 Following protocol-origin codepoints are defined in this document. 457 +------------+---------------------------------------------------------+ 458 | Code Point | Protocol Origin | 459 +------------+---------------------------------------------------------+ 460 | 1 | PCEP | 461 | 2 | BGP SR Policy | 462 | 3 | Local (via CLI, Yang model through NETCONF, gRPC, etc.) | 463 +------------+---------------------------------------------------------+ 464 o Flags: 1 octet field with following bit positions defined. Other 465 bits SHOULD be cleared by originator and MUST be ignored by 466 receiver. 468 0 1 2 3 4 5 6 7 469 +-+-+-+-+-+-+-+-+ 470 |E|O| | 471 +-+-+-+-+-+-+-+-+ 473 where: 475 * E-Flag : Indicates the encoding of endpoint as IPv6 address 476 when set and IPv4 address when clear 478 * O-Flag : Indicates the encoding of originator address as IPv6 479 address when set and IPv4 address when clear 481 o Reserved : 2 octets which SHOULD be set to 0 by originator and 482 MUST be ignored by receiver. 484 o Endpoint : 4 or 16 octets (as indicated by the flags) containing 485 the address of the endpoint of the SR Policy 487 o Color : 4 octets that indicates the color of the SR Policy 489 o Originator ASN : 4 octets to carry the 4 byte encoding of the ASN 490 of the originator. Refer [I-D.ietf-spring-segment-routing-policy] 491 Sec 2.4 for details. 493 o Originator Address : 4 or 16 octets (as indicated by the flags) to 494 carry the address of the originator. Refer 495 [I-D.ietf-spring-segment-routing-policy] Sec 2.4 for details. 497 o Discriminator : 4 octets to carry the discrimator of the path. 498 Refer [I-D.ietf-spring-segment-routing-policy] Sec 2.5 for 499 details. 501 4.6. Local MPLS Cross Connect 503 The Local MPLS Cross Connect TLV identifies a local MPLS state in the 504 form of incoming label and interface followed by an outgoing label 505 and interface. Outgoing interface may appear multiple times (for 506 multicast states). It is used with Protocol ID set to "Static 507 Configuration" value 5 as defined in [RFC7752]. 509 The Local MPLS Cross Connect TLV has the following format: 511 0 1 2 3 512 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 513 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 514 | Type | Length | 515 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 516 | Incoming label (4 octets) | 517 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 518 | Outgoing label (4 octets) | 519 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 520 // Sub-TLVs (variable) // 521 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 523 where: 525 o Type: 555 527 o Length: variable. 529 o Incoming and Outgoing labels: 4 octets each. 531 o Sub-TLVs: following Sub-TLVs are defined: 533 * Interface Sub-TLV 535 * Forwarding Equivalent Class (FEC) 537 The Local MPLS Cross Connect TLV: 539 MUST have an incoming label. 541 MUST have an outgoing label. 543 MAY contain an Interface Sub-TLV having the I-flag set. 545 MUST contain at least one Interface Sub-TLV having the I-flag 546 unset. 548 MAY contain multiple Interface Sub-TLV having the I-flag unset. 549 This is the case of a multicast MPLS cross connect. 551 MAY contain a FEC Sub-TLV. 553 The following sub-TLVs are defined for the Local MPLS Cross Connect 554 TLV: 556 +-----------+----------------------------------+ 557 | Codepoint | Descriptor TLV | 558 +-----------+----------------------------------+ 559 | 556 | MPLS Cross Connect Interface | 560 | 557 | MPLS Cross Connect FEC | 561 +-----------+----------------------------------+ 563 These are defined in the following sub-sections. 565 4.6.1. MPLS Cross Connect Interface 567 The MPLS Cross Connect Interface sub-TLV is optional and contains the 568 identifier of the interface (incoming or outgoing) in the form of an 569 IPv4 address or an IPv6 address. 571 The MPLS Cross Connect Interface sub-TLV has the following format: 573 0 1 2 3 574 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 575 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 576 | Type | Length | 577 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 579 +-+-+-+-+-+-+-+-+ 580 | Flags | 581 +-+-+-+-+-+-+-+-+ 583 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 584 | Local Interface Identifier (4 octets) | 585 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 586 // Interface Address (4 or 16 octets) // 587 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 589 where: 591 o Type: 556 593 o Length: 9 or 21. 595 o Flags: 1 octet of flags defined as follows: 597 0 1 2 3 4 5 6 7 598 +-+-+-+-+-+-+-+-+ 599 |I| | 600 +-+-+-+-+-+-+-+-+ 602 where: 604 * I-Flag is the Interface flag. When set, the Interface Sub-TLV 605 describes an incoming interface. If the I-flag is not set, 606 then the Interface Sub-TLV describes an outgoing interface. 608 o Local Interface Identifier: a 4 octet identifier. 610 o Interface address: a 4 octet IPv4 address or a 16 octet IPv6 611 address. 613 4.6.2. MPLS Cross Connect FEC 615 The MPLS Cross Connect FEC sub-TLV is optional and contains the FEC 616 associated to the incoming label. 618 The MPLS Cross Connect FEC sub-TLV has the following format: 620 0 1 2 3 621 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 622 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 623 | Type | Length | 624 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 625 | Flags | Masklength | Prefix (variable) // 626 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 627 // Prefix (variable) // 628 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 630 where: 632 o Type: 557 634 o Length: variable. 636 o Flags: 1 octet of flags defined as follows: 638 0 1 2 3 4 5 6 7 639 +-+-+-+-+-+-+-+-+ 640 |4| | 641 +-+-+-+-+-+-+-+-+ 643 where: 645 * 4-Flag is the IPv4 flag. When set, the FEC Sub-TLV describes 646 an IPv4 FEC. If the 4-flag is not set, then the FEC Sub-TLV 647 describes an IPv6 FEC. 649 o Mask Length: 1 octet of prefix length. 651 o Prefix: an IPv4 or IPv6 prefix whose mask length is given by the " 652 Mask Length" field padded to an octet boundary. 654 5. MPLS-TE Policy State TLV 656 A new TLV called "MPLS-TE Policy State TLV", is used to describe the 657 characteristics of the MPLS-TE Policy and it is carried in the 658 optional non-transitive BGP Attribute "LINK_STATE Attribute" defined 659 in [RFC7752]. These MPLS-TE Policy characteristics include the 660 characteristics and attributes of the policy, its dataplane, explicit 661 path, Quality of Service (QoS) parameters, route information, the 662 protection mechanisms, etc. 664 The MPLS-TE Policy State TLV has the following format: 666 0 1 2 3 667 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 668 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 669 | Type | Length | 670 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 671 | Object-origin | Address Family| RESERVED | 672 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 674 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 675 // MPLS-TE Policy State Objects (variable) // 676 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 678 where: 680 MPLS-TE Policy State TLV 682 o Type: 1200 684 o Length: the total length of the MPLS-TE Policy State TLV not 685 including Type and Length fields. 687 o Object-origin: identifies the component (or protocol) from which 688 the contained object originated. This allows for objects defined 689 in different components to be collected while avoiding the 690 possible codepoint collisions among these components. Following 691 object-origin codepoints are defined in this document. 693 +----------+------------------+ 694 | Code | Object | 695 | Point | Origin | 696 +----------+------------------+ 697 | 1 | RSVP-TE | 698 | 2 | PCEP | 699 | 3 | Local/Static | 700 +----------+------------------+ 702 o Address Family: describes the address family used to setup the 703 MPLS-TE policy. The following address family values are defined 704 in this document: 706 +----------+------------------+ 707 | Code | Dataplane | 708 | Point | | 709 +----------+------------------+ 710 | 1 | MPLS-IPv4 | 711 | 2 | MPLS-IPv6 | 712 +----------+------------------+ 714 o RESERVED: 16-bit field. SHOULD be set to 0 on transmission and 715 MUST be ignored on receipt. 717 o TE Policy State Objects: Rather than replicating all these objects 718 in this document, the semantics and encodings of the objects as 719 defined in RSVP-TE and PCEP are reused. 721 The state information is carried in the "MPLS-TE Policy State 722 Objects" with the following format as described in the sub-sections 723 below. 725 5.1. RSVP Objects 727 RSVP-TE objects are encoded in the "MPLS-TE Policy State Objects" 728 field of the MPLS-TE Policy State TLV and consists of MPLS TE LSP 729 objects defined in RSVP-TE [RFC3209] [RFC3473]. Rather than 730 replicating all MPLS TE LSP related objects in this document, the 731 semantics and encodings of the MPLS TE LSP objects are re-used. 732 These MPLS TE LSP objects are carried in the MPLS-TE Policy State 733 TLV. 735 When carrying RSVP-TE objects, the "Object-Origin" field is set to 736 "RSVP-TE". 738 The following RSVP-TE Objects are defined: 740 o SENDER_TSPEC and FLOW_SPEC [RFC2205] 741 o SESSION_ATTRIBUTE [RFC3209] 743 o EXPLICIT_ROUTE Object (ERO) [RFC3209] 745 o ROUTE_RECORD Object (RRO) [RFC3209] 747 o FAST_REROUTE Object [RFC4090] 749 o DETOUR Object [RFC4090] 751 o EXCLUDE_ROUTE Object (XRO) [RFC4874] 753 o SECONDARY_EXPLICIT_ROUTE Object (SERO) [RFC4873] 755 o SECONDARY_RECORD_ROUTE (SRRO) [RFC4873] 757 o LSP_ATTRIBUTES Object [RFC5420] 759 o LSP_REQUIRED_ATTRIBUTES Object [RFC5420] 761 o PROTECTION Object [RFC3473][RFC4872][RFC4873] 763 o ASSOCIATION Object [RFC4872] 765 o PRIMARY_PATH_ROUTE Object [RFC4872] 767 o ADMIN_STATUS Object [RFC3473] 769 o LABEL_REQUEST Object [RFC3209][RFC3473] 771 For the MPLS TE LSP Objects listed above, the corresponding sub- 772 objects are also applicable to this mechanism. Note that this list 773 is not exhaustive, other MPLS TE LSP objects which reflect specific 774 characteristics of the MPLS TE LSP can also be carried in the LSP 775 state TLV. 777 5.2. PCEP Objects 779 PCEP objects are encoded in the "MPLS-TE Policy State Objects" field 780 of the MPLS-TE Policy State TLV and consists of PCEP objects defined 781 in [RFC5440]. Rather than replicating all MPLS TE LSP related 782 objects in this document, the semantics and encodings of the MPLS TE 783 LSP objects are re-used. These MPLS TE LSP objects are carried in 784 the MPLS-TE Policy State TLV. 786 When carrying PCEP objects, the "Object-Origin" field is set to 787 "PCEP". 789 The following PCEP Objects are defined: 791 o METRIC Object [RFC5440] 793 o BANDWIDTH Object [RFC5440] 795 For the MPLS TE LSP Objects listed above, the corresponding sub- 796 objects are also applicable to this mechanism. Note that this list 797 is not exhaustive, other MPLS TE LSP objects which reflect specific 798 characteristics of the MPLS TE LSP can also be carried in the TE 799 Policy State TLV. 801 6. SR Policy State TLVs 803 Segment Routing Policy (SR Policy) architecture is specified in 804 [I-D.ietf-spring-segment-routing-policy]. A SR Policy can comprise 805 of one or more candidate paths (CP) of which at a given time one and 806 only one may be active (i.e. installed in forwarding and usable for 807 steering of traffic). Each CP in turn may have one or more SID-List 808 of which one or more may be active; when multiple are active then 809 traffic is load balanced over them. 811 This section defines the various TLVs which enable the headend to 812 report the state of an SR Policy, its CP(s), SID-List(s) and their 813 status. These TLVs are carried in the optional non-transitive BGP 814 Attribute "LINK_STATE Attribute" defined in [RFC7752] and enable the 815 same consistent form of reporting for SR Policy state irrespective of 816 the Protocol-Origin used to provision the policy. Detailed procedure 817 is described in Section 7 . 819 6.1. SR Binding SID 821 The SR Binding SID (BSID) is an optional TLV that provides the BSID 822 and its attributes for the SR Policy CP. The TLV MAY also optionally 823 contain the Provisioned BSID value for reporting when explicitly 824 provisioned. 826 The TLV has the following format: 828 0 1 2 3 829 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 830 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 831 | Type | Length | 832 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 833 | BSID Flags | RESERVED | 834 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 835 | Binding SID (4 or 16 octets) // 836 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 837 | Provisioned Binding SID (4 or 16 octets) // 838 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 840 where: 842 o Type: 1201 844 o Length: variable (valid values are 12 or 36 octets) 846 o BSID Flags: 2 octet field that indicates attribute and status of 847 the Binding SID (BSID) associated with this CP. The following bit 848 positions are defined and the semantics are described in detail in 849 [I-D.ietf-spring-segment-routing-policy]. Other bits SHOULD be 850 cleared by originator and MUST be ignored by receiver. 852 0 1 853 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 854 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 855 |D|B|U|L|F| | 856 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 858 where: 860 * D-Flag : Indicates the dataplane for the BSIDs and if they are 861 16 octet SRv6 SID when set and are 4 octet SR/MPLS label value 862 when clear. 864 * B-Flag : Indicates the allocation of the value in the BSID 865 field when set and indicates that BSID is not allocated when 866 clear. 868 * U-Flag : Indicates the provisioned BSID value is unavailable 869 when set. 871 * L-Flag : Indicates the BSID value is from the Segment Routing 872 Local Block (SRLB) of the headend node when set and is from the 873 local dynamic label pool when clear 875 * F-Flag : Indicates the BSID value is one allocated from dynamic 876 label pool due to fallback (e.g. when specified BSID is 877 unavailable) when set. 879 o RESERVED: 2 octets. SHOULD be set to 0 by originator and MUST be 880 ignored by receiver. 882 o Binding SID: It indicates the operational or allocated BSID value 883 for the CP based on the status flags. 885 o Provisioned BSID: It is used to report the explicitly provisioned 886 BSID value regardless of whether it is successfully allocated or 887 not. The field is set to value 0 when BSID has not been specified 888 or provisioned for the CP. 890 The BSID fields above are 4 octet carrying the MPLS Label or 16 891 octets carrying the SRv6 SID based on the BSID D-flag. When carrying 892 the MPLS Label, as shown in the figure below, the TC, S and TTL 893 (total of 12 bits) are RESERVED and SHOULD be set to 0 by originator 894 and MUST be ignored by the receiver. 896 0 1 2 3 897 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 898 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 899 | Label | TC |S| TTL | 900 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 902 6.2. SR Candidate Path State 904 The SR Candidate Path (CP) State TLV provides the operational status 905 and attributes of the SR Policy at the CP level. The TLV has the 906 following format: 908 0 1 2 3 909 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 910 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 911 | Type | Length | 912 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 913 | Priority | RESERVED | Flags | 914 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 915 | Preference (4 octets) | 916 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 918 where: 920 o Type: 1202 921 o Length: 8 octets 923 o Priority : 1 octet value which indicates the priority of the CP. 924 Refer Section 2.12 of [I-D.ietf-spring-segment-routing-policy]. 926 o RESERVED: 1 octet. SHOULD be set to 0 by originator and MUST be 927 ignored by receiver. 929 o Flags: 2 octet field that indicates attribute and status of the 930 CP. The following bit positions are defined and the semantics are 931 described in detail in [I-D.ietf-spring-segment-routing-policy]. 932 Other bits SHOULD be cleared by originator and MUST be ignored by 933 receiver. 935 0 1 936 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 937 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 938 |S|A|B|E|V|O|D|C|I|T| | 939 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 941 where: 943 * S-Flag : Indicates the CP is in administrative shut state when 944 set 946 * A-Flag : Indicates the CP is the active path (i.e. one 947 provisioned in the forwarding plane) for the SR Policy when set 949 * B-Flag : Indicates the CP is the backup path (i.e. one 950 identified for path protection of the active path) for the SR 951 Policy when set 953 * E-Flag : Indicates that the CP has been evaluated for validity 954 (e.g. headend may evaluate CPs based on their preferences) when 955 set 957 * V-Flag : Indicates the CP has at least one valid SID-List when 958 set. When the E-Flag is clear (i.e. the CP has not been 959 evaluated), then this flag MUST be set to 0 by the originator 960 and ignored by the receiver. 962 * O-Flag : Indicates the CP was instantiated by the headend due 963 to an on-demand-nexthop trigger based on local template when 964 set. Refer Section 8.5 of 965 [I-D.ietf-spring-segment-routing-policy]. 967 * D-Flag : Indicates the CP was delegated for computation to a 968 PCE/controller when set 970 * C-Flag : Indicates the CP was provisioned by a PCE/controller 971 when set 973 * I-Flag : Indicates the CP will perform the "drop upon invalid" 974 behavior when no other active path is available for this SR 975 Policy and this path is the one with best preference amongst 976 the available CPs. Refer Section 8.2 of 977 [I-D.ietf-spring-segment-routing-policy]. 979 * T-Flag : Indicates the CP has been marked as eligible for use 980 as Transit Policy on the headend when set. Refer Section 8.3 981 of [I-D.ietf-spring-segment-routing-policy]. 983 o Preference : 4 octet value which indicates the preference of the 984 CP. Refer Section 2.7 of 985 [I-D.ietf-spring-segment-routing-policy]. 987 6.3. SR Candidate Path Name 989 The SR Candidate Path Name TLV is an optional TLV that is used to 990 carry the symbolic name associated with the candidate path. The TLV 991 has the following format: 993 0 1 2 3 994 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 995 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 996 | Type | Length | 997 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 998 | Candidate Path Symbolic Name (variable) // 999 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1001 where: 1003 o Type: 1203 1005 o Length: variable 1007 o CP Name : Symbolic name for the CP. It is a string of printable 1008 ASCII characters without a NULL terminator. 1010 6.4. SR Candidate Path Constraints 1012 The SR Candidate Path Constraints TLV is an optional TLV that is used 1013 to report the constraints associated with the candidate path. The 1014 constraints are generally applied to a dynamic candidate path which 1015 is computed by the headend. The constraints may also be applied to 1016 an explicit path where the headend is expected to validate that the 1017 path expresses satisfies the specified constraints and the path is to 1018 be invalidated by the headend when the constraints are no longer met 1019 (e.g. due to topology changes). 1021 The TLV has the following format: 1023 0 1 2 3 1024 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 1025 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1026 | Type | Length | 1027 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1028 | Flags | RESERVED | 1029 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1030 | MTID | Algorithm | RESERVED | 1031 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1032 | sub-TLVs (variable) // 1033 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1035 where: 1037 o Type: 1204 1039 o Length: variable 1041 o Flags: 2 octet field that indicates the constraints that are being 1042 applied to the CP. The following bit positions are defined and 1043 the other bits SHOULD be cleared by originator and MUST be ignored 1044 by receiver. 1046 0 1 1047 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 1048 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1049 |D|P|U|A|T| | 1050 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1052 where: 1054 * D-Flag : Indicates that the CP needs to use SRv6 dataplane when 1055 set and SR/MPLS dataplane when clear 1057 * P-Flag : Indicates that the CP needs to use only protected SIDs 1058 when set 1060 * U-Flag : Indicates that the CP needs to use only unprotected 1061 SIDs when set 1063 * A-Flag : Indicates that the CP needs to use the SIDs belonging 1064 to the specified SR Algorithm only when set 1066 * T-Flag: Indicates that the CP needs to use the SIDs belonging 1067 to the specified topology only when set 1069 o RESERVED: 2 octet. SHOULD be set to 0 by originator and MUST be 1070 ignored by receiver. 1072 o MTID : Indicates the multi-topology identifier of the IGP topology 1073 that is preferred to be used when the path is setup. When the 1074 T-flag is set then the path is strictly useing the specified 1075 topology SIDs only. 1077 o Algorithm : Indicates the algorithm that is preferred to be used 1078 when the path is setup. When the A-flag is set then the path is 1079 strictly using the specified algorithm SIDs only. 1081 o RESERVED: 1 octet. SHOULD be set to 0 by originator and MUST be 1082 ignored by receiver. 1084 o sub-TLVs: optional sub-TLVs MAY be included in this TLV to 1085 describe other constraints. 1087 The following constraint sub-TLVs are defined for the SR CP 1088 Constraints TLV. 1090 6.4.1. SR Affinity Constraint 1092 The SR Affinity Constraint sub-TLV is an optional sub-TLV that is 1093 used to carry the affinity constraints [RFC2702] associated with the 1094 candidate path. The affinity is expressed in terms of Extended Admin 1095 Group (EAG) as defined in [RFC7308]. The TLV has the following 1096 format: 1098 0 1 2 3 1099 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 1100 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1101 | Type | Length | 1102 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1103 | Excl-Any-Size | Incl-Any-Size | Incl-All-Size | RESERVED | 1104 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1105 | Exclude-Any EAG (optional, variable) // 1106 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1107 | Include-Any EAG (optional, variable) // 1108 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1109 | Include-All EAG (optional, variable) // 1110 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1112 where: 1114 o Type: 1208 1116 o Length: variable, dependent on the size of the Extended Admin 1117 Group. MUST be a multiple of 4 octets. 1119 o Exclude-Any-Size : one octet to indicate the size of Exclude-Any 1120 EAG bitmask size in multiples of 4 octets. (e.g. value 0 1121 indicates the Exclude-Any EAG field is skipped, value 1 indicates 1122 that 4 octets of Exclude-Any EAG is included) 1124 o Include-Any-Size : one octet to indicate the size of Include-Any 1125 EAG bitmask size in multiples of 4 octets. (e.g. value 0 1126 indicates the Include-Any EAG field is skipped, value 1 indicates 1127 that 4 octets of Include-Any EAG is included) 1129 o Include-All-Size : one octet to indicate the size of Include-All 1130 EAG bitmask size in multiples of 4 octets. (e.g. value 0 1131 indicates the Include-All EAG field is skipped, value 1 indicates 1132 that 4 octets of Include-All EAG is included) 1134 o RESERVED: 1 octet. SHOULD be set to 0 by originator and MUST be 1135 ignored by receiver. 1137 o Exclude-Any EAG : the bitmask used to represent the affinities to 1138 be excluded from the path. 1140 o Include-Any EAG : the bitmask used to represent the affinities to 1141 be included in the path. 1143 o Include-All EAG : the bitmask used to represent the all affinities 1144 to be included in the path. 1146 6.4.2. SR SRLG Constraint 1148 The SR SRLG Constraint sub-TLV is an optional sub-TLV that is used to 1149 carry the Shared Risk Link Group (SRLG) values [RFC4202] that are to 1150 be excluded from the candidate path. The TLV has the following 1151 format: 1153 0 1 2 3 1154 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 1155 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1156 | Type | Length | 1157 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1158 | SRLG Values (variable, multiples of 4 octets) // 1159 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1161 where: 1163 o Type: 1209 1165 o Length: variable, dependent on the number of SRLGs encoded. MUST 1166 be a multiple of 4 octets. 1168 o SRLG Values : One or more SRLG values (each of 4 octets). 1170 6.4.3. SR Bandwidth Constraint 1172 The SR Bandwidth Constraint sub-TLV is an optional sub-TLV that is 1173 used to indicate the desired bandwidth availability that needs to be 1174 ensured for the candidate path. The TLV has the following format: 1176 0 1 2 3 1177 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 1178 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1179 | Type | Length | 1180 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1181 | Bandwidth | 1182 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1184 where: 1186 o Type: 1210 1188 o Length: 4 octects 1190 o Bandwidth : 4 octets which specify the desired bandwidth in unit 1191 of bytes per second in IEEE floating point format. 1193 6.4.4. SR Disjoint Group Constraint 1195 The SR Disjoint Group Constraint sub-TLV is an optional sub-TLV that 1196 is used to carry the disjointness constraint associated with the 1197 candidate path. The disjointness between two SR Policy Candidate 1198 Paths is expressed by associating them with the same disjoint group 1199 identifier and then specifying the type of disjointness required 1200 between their paths. The computation is expected to achieve the 1201 highest level of disjointness requested and when that is not possible 1202 then fallback to a lesser level progressively based on the levels 1203 indicated. 1205 The TLV has the following format: 1207 0 1 2 3 1208 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 1209 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1210 | Type | Length | 1211 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1212 | Request-Flags | Status-Flags | RESERVED | 1213 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1214 | Disjoint Group Identifier | 1215 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1217 where: 1219 o Type: 1211 1221 o Length: 8 octets 1223 o Request Flags : one octet to indicate the level of disjointness 1224 requested as specified in the form of flags. The following flags 1225 are defined and the other bits SHOULD be cleared by originator and 1226 MUST be ignored by receiver. 1228 0 1 2 3 4 5 6 7 1229 +-+-+-+-+-+-+-+-+ 1230 |S|N|L|F|I| | 1231 +-+-+-+-+-+-+-+-+ 1233 where: 1235 * S-Flag : Indicates that SRLG disjointness is requested 1237 * N-Flag : Indicates that node disjointness is requested when 1239 * L-Flag : Indicates that link disjointness is requested when 1241 * F-Flag : Indicates that the computation may fallback to a lower 1242 level of disjointness amongst the ones requested when all 1243 cannot be achieved 1245 * I-Flag : Indicates that the computation may fallback to the 1246 default best path (e.g. IGP path) in case of none of the 1247 desired disjointness can be achieved. 1249 o Status Flags : one octet to indicate the level of disjointness 1250 that has been achieved by the computation as specified in the form 1251 of flags. The following flags are defined and the other bits 1252 SHOULD be cleared by originator and MUST be ignored by receiver. 1254 0 1 2 3 4 5 6 7 1255 +-+-+-+-+-+-+-+-+ 1256 |S|N|L|F|I|X| | 1257 +-+-+-+-+-+-+-+-+ 1259 where: 1261 * S-Flag : Indicates that SRLG disjointness is achieved 1263 * N-Flag : Indicates that node disjointness is achieved 1265 * L-Flag : Indicates that link disjointness is achieved 1267 * F-Flag : Indicates that the computation has fallen back to a 1268 lower level of disjointness that requested. 1270 * I-Flag : Indicates that the computation has fallen back to the 1271 best path (e.g. IGP path) and disjointness has not been 1272 achieved 1274 * X-Flag : Indicates that the disjointness constraint could not 1275 be achieved and hence path has been invalidated 1277 o RESERVED: 2 octets. SHOULD be set to 0 by originator and MUST be 1278 ignored by receiver. 1280 o Disjointness Group Identifier : 4 octet value that is the group 1281 identifier for a set of disjoint paths 1283 6.5. SR Segment List 1285 The SR Segment List TLV is used to report the SID-List(s) of a 1286 candidate path. The TLV has following format: 1288 0 1 2 3 1289 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 1290 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1291 | Type | Length | 1292 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1293 | Flags | RESERVED | 1294 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1295 | MTID | Algorithm | RESERVED | 1296 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1297 | Weight (4 octets) | 1298 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1299 | sub-TLVs (variable) // 1300 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1302 where: 1304 o Type: 1205 1306 o Length: variable 1308 o Flags: 2 octet field that indicates attribute and status of the 1309 SID-List.The following bit positions are defined and the semantics 1310 are described in detail in 1311 [I-D.ietf-spring-segment-routing-policy]. Other bits SHOULD be 1312 cleared by originator and MUST be ignored by receiver. 1314 0 1 1315 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 1316 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1317 |D|E|C|V|R|F|A|T|M| | 1318 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1320 where: 1322 * D-Flag : Indicates the SID-List is comprised of SRv6 SIDs when 1323 set and indicates it is comprised of SR/MPLS labels when clear. 1325 * E-Flag : Indicates that SID-List is an explicit path when set 1326 and indicates dynamic path when clear. 1328 * C-Flag : Indicates that SID-List has been computed for a 1329 dynamic path when set. It is always reported as set for 1330 explicit paths. 1332 * V-Flag : Indicates the SID-List has passed verification or its 1333 verification was not required when set and failed verification 1334 when clear. 1336 * R-Flag : Indicates that the first Segment has been resolved 1337 when set and failed resolution when clear. 1339 * F-Flag : Indicates that the computation for the dynamic path 1340 failed when set and succeeded (or not required in case of 1341 explicit path) when clear 1343 * A-Flag : Indicates that all the SIDs in the SID-List belong to 1344 the specified algorithm when set. 1346 * T-Flag : Indicates that all the SIDs in the SID-List belong to 1347 the specified topology (identified by the multi-topology ID) 1348 when set. 1350 * M-Flag : Indicates that the SID-list has been removed from the 1351 forwarding plane due to fault detection by a monitoring 1352 mechanism (e.g. BFD) when set and indicates no fault detected 1353 or monitoring is not being done when clear. 1355 o RESERVED: 2 octet. SHOULD be set to 0 by originator and MUST be 1356 ignored by receiver. 1358 o MTID : 2 octet that indicates the multi-topology identifier of the 1359 IGP topology to be used when the T-flag is set. 1361 o Algorithm: 1 octet that indicates the algorithm of the SIDs used 1362 in the SID-List when the A-flag is set. 1364 o RESERVED: 1 octet. SHOULD be set to 0 by originator and MUST be 1365 ignored by receiver. 1367 o Weight: 4 octet field that indicates the weight associated with 1368 the SID-List for weighted load-balancing. Refer Section 2.2 and 1369 2.11 of [I-D.ietf-spring-segment-routing-policy]. 1371 o Sub-TLVs : variable and contains the ordered set of Segments and 1372 any other optional attributes associated with the specific SID- 1373 List. 1375 The SR Segment sub-TLV (defined in Section 6.6) MUST be included as 1376 an ordered set of sub-TLVs within the SR Segment List TLV when the 1377 SID-List is not empty. A SID-List may be empty in certain cases 1378 (e.g. for a dynamic path) where the headend has not yet performed the 1379 computation and hence not derived the segments required for the path; 1380 in such cases, the SR Segment List TLV SHOULD NOT include any SR 1381 Segment sub-TLVs. 1383 6.6. SR Segment 1385 The SR Segment sub-TLV describes a single segment in a SID-List. One 1386 or more instances of this sub-TLV in an ordered manner constitute a 1387 SID-List for a SR Policy candidate path. It is a sub-TLV of the SR 1388 Segment List TLV and has following format: 1390 0 1 2 3 1391 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 1392 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1393 | Type | Length | 1394 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1395 | Segment Type | RESERVED | Flags | 1396 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1397 | SID (4 or 16 octets) // 1398 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1399 // Segment Descriptor (variable) // 1400 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1401 // Sub-TLVs (variable) // 1402 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1404 where: 1406 o Type: 1206 1408 o Length: variable 1410 o Segment Type : 1 octet which indicates the type of segment (refer 1411 Section 6.6.1 for details) 1413 o RESERVED: 1 octet. SHOULD be set to 0 by originator and MUST be 1414 ignored by receiver. 1416 o Flags: 2 octet field that indicates attribute and status of the 1417 Segment and its SID. The following bit positions are defined and 1418 the semantics are described in detail in 1419 [I-D.ietf-spring-segment-routing-policy]. Other bits SHOULD be 1420 cleared by originator and MUST be ignored by receiver. 1422 0 1 1423 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 1424 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1425 |S|E|V|R|A| | 1426 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1428 where: 1430 * S-Flag : Indicates the presence of SID value in the SID field 1431 when set and that no value is indicated when clear. 1433 * E-Flag : Indicates the SID value is explicitly provisioned 1434 value (locally on headend or via controller/PCE) when set and 1435 is a dynamically resolved value by headend when clear 1437 * V-Flag : Indicates the SID has passed verification or did not 1438 require verification when set and failed verification when 1439 clear. 1441 * R-Flag : Indicates the SID has been resolved or did not require 1442 resolution (e.g. because it is not the first SID) when set and 1443 failed resolution when clear. 1445 * A-Flag : Indicates that the Algorithm indicated in the Segment 1446 descriptor is valid when set. When clear, it indicates that 1447 the headend is unable to determine the algorithm of the SID. 1449 o SID : 4 octet carrying the MPLS Label or 16 octets carrying the 1450 SRv6 SID based on the Segment Type. When carrying the MPLS Label, 1451 as shown in the figure below, the TC, S and TTL (total of 12 bits) 1452 are RESERVED and SHOULD be set to 0 by originator and MUST be 1453 ignored by the receiver. 1455 0 1 2 3 1456 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 1457 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1458 | Label | TC |S| TTL | 1459 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1461 o Segment Descriptor : variable size Segment descriptor based on the 1462 type of segment (refer Section 6.6.1 for details) 1464 o Sub-Sub-TLVs : variable and contains any other optional attributes 1465 associated with the specific SID-List. 1467 Currently no Sub-Sub-TLV of the SR Segment sub-TLV is defined. 1469 6.6.1. Segment Descriptors 1471 [I-D.ietf-spring-segment-routing-policy] section 4 defines multiple 1472 types of segments and their description. This section defines the 1473 encoding of the Segment Descriptors for each of those Segment types 1474 to be used in the Segment sub-TLV describes previously in 1475 Section 6.6. 1477 The following types are currently defined: 1479 +-------+--------------------------------------------------------------+ 1480 | Type | Segment Description | 1481 +-------+--------------------------------------------------------------+ 1482 | 0 | Invalid | 1483 | 1 | SR-MPLS Label | 1484 | 2 | SRv6 SID as IPv6 address | 1485 | 3 | SR-MPLS Prefix SID as IPv4 Node Address | 1486 | 4 | SR-MPLS Prefix SID as IPv6 Node Global Address | 1487 | 5 | SR-MPLS Adjacency SID as IPv4 Node Address & Local | 1488 | | Interface ID | 1489 | 6 | SR-MPLS Adjacency SID as IPv4 Local & Remote Interface | 1490 | | Addresses | 1491 | 7 | SR-MPLS Adjacency SID as pair of IPv6 Global Address & | 1492 | | Interface ID for Local & Remote nodes | 1493 | 8 | SR-MPLS Adjacency SID as pair of IPv6 Global Addresses for | 1494 | | the Local & Remote Interface | 1495 | 9 | SRv6 END SID as IPv6 Node Global Address | 1496 | 10 | SRv6 END.X SID as pair of IPv6 Global Address & Interface ID | 1497 | | for Local & Remote nodes | 1498 | 11 | SRv6 END.X SID as pair of IPv6 Global Addresses for the | 1499 | | Local & Remote Interface | 1500 +-------+--------------------------------------------------------------+ 1502 6.6.1.1. Type 1: SR-MPLS Label 1504 The Segment is SR-MPLS type and is specified simply as the label. 1505 The format of its Segment Descriptor is as follows: 1507 0 1 2 3 1508 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 1509 +-+-+-+-+-+-+-+-+ 1510 | Algorithm | 1511 +-+-+-+-+-+-+-+-+ 1513 Where: 1515 o Algorithm: 1 octet value that indicates the algorithm used for 1516 picking the SID. This is valid only when the A-flag has been set 1517 in the Segment TLV. 1519 6.6.1.2. Type 2: SRv6 SID 1521 The Segment is SRv6 type and is specified simply as the SRv6 SID 1522 address. The format of its Segment Descriptor is as follows: 1524 0 1 2 3 1525 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 1526 +-+-+-+-+-+-+-+-+ 1527 | Algorithm | 1528 +-+-+-+-+-+-+-+-+ 1530 Where: 1532 o Algorithm: 1 octet value that indicates the algorithm used for 1533 picking the SID. This is valid only when the A-flag has been set 1534 in the Segment TLV. 1536 6.6.1.3. Type 3: SR-MPLS Prefix SID for IPv4 1538 The Segment is SR-MPLS Prefix SID type and is specified as an IPv4 1539 node address. The format of its Segment Descriptor is as follows: 1541 0 1 2 3 1542 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 1543 +-+-+-+-+-+-+-+-+ 1544 | Algorithm | 1545 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1546 | IPv4 Node Address (4 octets) | 1547 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1549 Where: 1551 o Algorithm: 1 octet value that indicates the algorithm used for 1552 picking the SID 1554 o IPv4 Node Address: 4 octet value which carries the IPv4 address 1555 associated with the node 1557 6.6.1.4. Type 4: SR-MPLS Prefix SID for IPv6 1559 The Segment is SR-MPLS Prefix SID type and is specified as an IPv6 1560 global address. The format of its Segment Descriptor is as follows: 1562 0 1 2 3 1563 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 1564 +-+-+-+-+-+-+-+-+ 1565 | Algorithm | 1566 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1567 | IPv6 Node Global Address (16 octets) | 1568 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1570 Where: 1572 o Algorithm: 1 octet value that indicates the algorithm used for 1573 picking the SID 1575 o IPv6 Node Global Address: 16 octet value which carries the IPv6 1576 global address associated with the node 1578 6.6.1.5. Type 5: SR-MPLS Adjacency SID for IPv4 with Interface ID 1580 The Segment is SR-MPLS Adjacency SID type and is specified as an IPv4 1581 node address along with the local interface ID on that node. The 1582 format of its Segment Descriptor is as follows: 1584 0 1 2 3 1585 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 1586 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1587 | IPv4 Node Address (4 octets) | 1588 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1589 | Local Interface ID (4 octets) | 1590 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1592 Where: 1594 o IPv4 Node Address: 4 octet value which carries the IPv4 address 1595 associated with the node 1597 o Local Interface ID : 4 octet value which carries the local 1598 interface ID of the node identified by the Node Address 1600 6.6.1.6. Type 6: SR-MPLS Adjacency SID for IPv4 with Interface Address 1602 The Segment is SR-MPLS Adjacency SID type and is specified as a pair 1603 of IPv4 local and remote addresses. The format of its Segment 1604 Descriptor is as follows: 1606 0 1 2 3 1607 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 1608 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1609 | IPv4 Local Address (4 octets) | 1610 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1611 | IPv4 Remote Address (4 octets) | 1612 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1614 Where: 1616 o IPv4 Local Address: 4 octet value which carries the local IPv4 1617 address associated with the node 1619 o IPv4 Remote Address: 4 octet value which carries the remote IPv4 1620 address associated with the node's neighbor. This is optional and 1621 MAY be set to 0 when not used (e.g. when identifying point-to- 1622 point links). 1624 6.6.1.7. Type 7: SR-MPLS Adjacency SID for IPv6 with interface ID 1626 The Segment is SR-MPLS Adjacency SID type and is specified as a pair 1627 of IPv6 global address and interface ID for local and remote nodes. 1628 The format of its Segment Descriptor is as follows: 1630 0 1 2 3 1631 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 1632 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1633 | IPv6 Local Node Global Address (16 octets) | 1634 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1635 | Local Node Interface ID (4 octets) | 1636 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1637 | IPv6 Remote Node Global Address (16 octets) | 1638 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1639 | Remote Node Interface ID (4 octets) | 1640 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1642 Where: 1644 o IPv6 Local Node Global Address: 16 octet value which carries the 1645 IPv6 global address associated with the local node 1647 o Local Node Interface ID : 4 octet value which carries the 1648 interface ID of the local node identified by the Local Node 1649 Address 1651 o IPv6 Remote Node Global Address: 16 octet value which carries the 1652 IPv6 global address associated with the remote node. This is 1653 optional and MAY be set to 0 when not used (e.g. when identifying 1654 point-to-point links). 1656 o Remote Node Interface ID : 4 octet value which carries the 1657 interface ID of the remote node identified by the Remote Node 1658 Address. This is optional and MAY be set to 0 when not used (e.g. 1659 when identifying point-to-point links). 1661 6.6.1.8. Type 8: SR-MPLS Adjacency SID for IPv6 with interface address 1663 The Segment is SR-MPLS Adjacency SID type and is specified as a pair 1664 of IPv6 Global addresses for local and remote interface addresses. 1665 The format of its Segment Descriptor is as follows: 1667 0 1 2 3 1668 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 1669 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1670 | Global IPv6 Local Interface Address (16 octets) | 1671 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1672 | Global IPv6 Remote Interface Address (16 octets) | 1673 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1675 Where: 1677 o IPv6 Local Address: 16 octet value which carries the local IPv6 1678 address associated with the node 1680 o IPv6 Remote Address: 16 octet value which carries the remote IPv6 1681 address associated with the node's neighbor 1683 6.6.1.9. Type 9: SRv6 END SID as IPv6 Node Address 1685 The Segment is SRv6 END SID type and is specified as an IPv6 global 1686 address. The format of its Segment Descriptor is as follows: 1688 0 1 2 3 1689 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 1690 +-+-+-+-+-+-+-+-+ 1691 | Algorithm | 1692 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1693 | IPv6 Node Global Address (16 octets) | 1694 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1696 Where: 1698 o Algorithm: 1 octet value that indicates the algorithm used for 1699 picking the SID 1701 o IPv6 Node Global Address: 16 octet value which carries the IPv6 1702 global address associated with the node 1704 6.6.1.10. Type 10: SRv6 END.X SID as interface ID 1706 The Segment is SRv6 END.X SID type and is specified as a pair of IPv6 1707 global address and interface ID for local and remote nodes. The 1708 format of its Segment Descriptor is as follows: 1710 0 1 2 3 1711 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 1712 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1713 | IPv6 Local Node Global Address (16 octets) | 1714 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1715 | Local Node Interface ID (4 octets) | 1716 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1717 | IPv6 Remote Node Global Address (16 octets) | 1718 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1719 | Remote Node Interface ID (4 octets) | 1720 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1722 Where: 1724 o IPv6 Local Node Global Address: 16 octet value which carries the 1725 IPv6 global address associated with the local node 1727 o Local Node Interface ID : 4 octet value which carries the 1728 interface ID of the local node identified by the Local Node 1729 Address 1731 o IPv6 Remote Node Global Address: 16 octet value which carries the 1732 IPv6 global address associated with the remote node. This is 1733 optional and MAY be set to 0 when not used (e.g. when identifying 1734 point-to-point links). 1736 o Remote Node Interface ID : 4 octet value which carries the 1737 interface ID of the remote node identified by the Remote Node 1738 Address. This is optional and MAY be set to 0 when not used (e.g. 1739 when identifying point-to-point links). 1741 6.6.1.11. Type 11: SRv6 END.X SID as interface address 1743 The Segment is SRv6 END.X SID type and is specified as a pair of IPv6 1744 Global addresses for local and remote interface addresses. The 1745 format of its Segment Descriptor is as follows: 1747 0 1 2 3 1748 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 1749 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1750 | Global IPv6 Local Interface Address (16 octets) | 1751 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1752 | Global IPv6 Remote Interface Address (16 octets) | 1753 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1755 Where: 1757 o IPv6 Local Address: 16 octet value which carries the local IPv6 1758 address associated with the node 1760 o IPv6 Remote Address: 16 octet value which carries the remote IPv6 1761 address associated with the node's neighbor 1763 6.7. SR Segment List Metric 1765 The SR Segment List Metric sub-TLV describes the metric used for 1766 computation of the SID-List. It is used to report the type of metric 1767 used in the computation of a dynamic path either on the headend or 1768 when the path computation is delegated to a PCE/controller. When the 1769 path computation is done on the headend, it is also used to report 1770 the calculated metric for the path. 1772 It is a sub-TLV of the SR Segment List TLV and has following format: 1774 0 1 2 3 1775 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 1776 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1777 | Type | Length | 1778 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1779 | Metric Type | Flags | RESERVED | 1780 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1781 | Metric Margin | 1782 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1783 | Metric Bound | 1784 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1785 | Metric Value | 1786 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1788 where: 1790 o Type: 1207 1792 o Length: 16 octets 1794 o Metric Type : 1 octet field which identifies the type of metric 1795 used for path computation. Following metric type codepoints are 1796 defined in this document. 1798 +------------+-----------------------------------------+ 1799 | Code Point | Metric Type | 1800 +------------+-----------------------------------------+ 1801 | 0 | IGP Metric | 1802 | 1 | Min Unidirectional Link Delay [RFC7471] | 1803 | 2 | TE Metric [RFC3630] | 1804 +------------+-----------------------------------------+ 1805 o Flags: 1 octet field that indicates the validity of the metric 1806 fields and their semantics. The following bit positions are 1807 defined and the other bits SHOULD be cleared by originator and 1808 MUST be ignored by receiver. 1810 0 1 2 3 4 5 6 7 1811 +-+-+-+-+-+-+-+-+ 1812 |M|A|B|V| | 1813 +-+-+-+-+-+-+-+-+ 1815 where: 1817 * M-Flag : Indicates that the metric margin allowed for path 1818 computation is specified when set 1820 * A-Flag : Indicates that the metric margin is specified as an 1821 absolute value when set and is expressed as a percentage of the 1822 minimum metric when clear. 1824 * B-Flag : Indicates that the metric bound allowed for the path 1825 is specified when set. 1827 * V-Flag : Indicates that the metric value computed is being 1828 reported when set. 1830 o RESERVED: 2 octets. SHOULD be set to 0 by originator and MUST be 1831 ignored by receiver. 1833 o Metric Margin : 4 octets which indicate the metric margin value 1834 when M-flag is set. The metric margin is specified as either an 1835 absolute value or as a percentage of the minimum computed path 1836 metric based on the A-flag. The metric margin loosens the 1837 criteria for minimum metric path calculation up to the specified 1838 metric to accomodate for other factors such as bandwidth 1839 availability, minimal SID stack depth and maximizing of ECMP for 1840 the SR path computed. 1842 o Metric Bound : 4 octects which indicate the maximum metric value 1843 that is allowed when B-flag is set. If the computed path metric 1844 crosses the specified bound value then the path is considered as 1845 invalid. 1847 o Metric Value : 4 octets which indicate the metric value of the 1848 computed path when V-flag is set. This value is available and 1849 reported when the computation is successful and a valid path is 1850 available. 1852 7. Procedures 1854 The BGP-LS advertisements for the TE Policy NLRI are originated by 1855 the headend node for the TE Policies that are instantiated on its 1856 local node. 1858 For MPLS TE LSPs signaled via RSVP-TE, the NLRI descriptor TLVs as 1859 specified in Section 4.1, Section 4.2, Section 4.3 and Section 4.4 1860 are used. Then the TE LSP state is encoded in the BGP-LS Attribute 1861 field as MPLS-TE Policy State TLV as described in Section 5. The 1862 RSVP-TE objects that reflect the state of the LSP are included as 1863 defined in Section 5.1. When the TE LSP is setup with the help of 1864 PCEP signaling then another MPLS-TE Policy State TLV SHOULD be used 1865 to to encode the related PCEP objects corresponding to the LSP as 1866 defined in Section 5.2. 1868 For SR Policies, the NLRI descriptor TLV as specified in Section 4.5 1869 is used. An SR Policy candidate path (CP) may be instantiated on the 1870 headend node via a local configuration, PCEP or BGP SR Policy 1871 signaling and this is indicated via the SR Protocol Origin. Then the 1872 SR Policy Candidate Path's attribute and state is encoded in the BGP- 1873 LS Attribute field as SR Policy State TLVs and sub-TLVs as described 1874 in Section 6. The SR Candidate Path State TLV as defined in 1875 Section 6.2 is included to report the state of the CP. The SR BSID 1876 TLV as defined in Section 6.1 is included to report the BSID of the 1877 CP when one is either provisioned or allocated by the headend. The 1878 constraints for the SR Policy Candidate Path are reported using the 1879 SR Candidate Path Constraints TLV as described in Section 6.4.The SR 1880 Segment List TLV is included for each of the SID-List(s) associated 1881 with the CP. Each SR Segment List TLV in turn includes SR Segment 1882 sub-TLV(s) to report the segment(s) and their status. The SR Segment 1883 List Metric sub-TLV is used to report the metric values and 1884 constraints for the specific SID List. 1886 When the SR Policy CP is setup with the help of PCEP signaling then 1887 another MPLS-TE Policy State TLV MAY be used to to encode the related 1888 PCEP objects corresponding to the LSP as defined in Section 5.2 1889 specifically to report information and status that is not covered by 1890 the defined TLVs under Section 6. In the event of a conflict of 1891 information, the receiver MUST prefer the information originated via 1892 TLVs defined in Section 6 over the PCEP objects reported via the TE 1893 Policy State TLV. 1895 8. Manageability Considerations 1897 The Existing BGP operational and management procedures apply to this 1898 document. No new procedures are defined in this document. The 1899 considerations as specified in [RFC7752] apply to this document. 1901 In general, it is assumed that the TE Policy head-end nodes are 1902 responsible for the distribution of TE Policy state information, 1903 while other nodes, e.g. the nodes in the path of a policy, MAY report 1904 the TE Policy information (if available) when needed. For example, 1905 the border routers in the inter-domain case will also distribute LSP 1906 state information since the ingress node may not have the complete 1907 information for the end-to-end path. 1909 9. IANA Considerations 1911 This document requires new IANA assigned codepoints. 1913 9.1. BGP-LS NLRI-Types 1915 IANA maintains a registry called "Border Gateway Protocol - Link 1916 State (BGP-LS) Parameters" with a sub-registry called "BGP-LS NLRI- 1917 Types". 1919 The following codepoints have been assigned by early allocation 1920 process by IANA: 1922 +------+----------------------------+---------------+ 1923 | Type | NLRI Type | Reference | 1924 +------+----------------------------+---------------+ 1925 | 5 | TE Policy NLRI type | this document | 1926 +------+----------------------------+---------------+ 1928 9.2. BGP-LS Protocol-IDs 1930 IANA maintains a registry called "Border Gateway Protocol - Link 1931 State (BGP-LS) Parameters" with a sub-registry called "BGP-LS 1932 Protocol-IDs". 1934 The following Protocol-ID codepoints have been assigned by early 1935 allocation process by IANA: 1937 +-------------+----------------------------------+---------------+ 1938 | Protocol-ID | NLRI information source protocol | Reference | 1939 +-------------+----------------------------------+---------------+ 1940 | 8 | RSVP-TE | this document | 1941 | 9 | Segment Routing | this document | 1942 +-------------+----------------------------------+---------------+ 1944 9.3. BGP-LS TLVs 1946 IANA maintains a registry called "Border Gateway Protocol - Link 1947 State (BGP-LS) Parameters" with a sub-registry called "Node Anchor, 1948 Link Descriptor and Link Attribute TLVs". 1950 The following TLV codepoints have been assigned by early allocation 1951 process by IANA: 1953 +----------+----------------------------------------+---------------+ 1954 | TLV Code | Description | Value defined | 1955 | Point | | in | 1956 +----------+----------------------------------------+---------------+ 1957 | 550 | Tunnel ID TLV | this document | 1958 | 551 | LSP ID TLV | this document | 1959 | 552 | IPv4/6 Tunnel Head-end address TLV | this document | 1960 | 553 | IPv4/6 Tunnel Tail-end address TLV | this document | 1961 | 554 | SR Policy CP Descriptor TLV | this document | 1962 | 555 | MPLS Local Cross Connect TLV | this document | 1963 | 556 | MPLS Cross Connect Interface TLV | this document | 1964 | 557 | MPLS Cross Connect FEC TLV | this document | 1965 | 1200 | MPLS-TE Policy State TLV | this document | 1966 | 1201 | SR BSID TLV | this document | 1967 | 1202 | SR CP State TLV | this document | 1968 | 1203 | SR CP Name TLV | this document | 1969 | 1204 | SR CP Constraints TLV | this document | 1970 | 1205 | SR Segment List TLV | this document | 1971 | 1206 | SR Segment sub-TLV | this document | 1972 | 1207 | SR Segment List Metric sub-TLV | this document | 1973 | 1208 | SR Affinity Constraint sub-TLV | this document | 1974 | 1209 | SR SRLG Constraint sub-TLV | this document | 1975 | 1210 | SR Bandwidth Constraint sub-TLV | this document | 1976 | 1211 | SR Disjoint Group Constraint sub-TLV | this document | 1977 +----------+----------------------------------------+---------------+ 1979 9.4. BGP-LS SR Policy Protocol Origin 1981 This document requests IANA to maintain a new sub-registry under 1982 "Border Gateway Protocol - Link State (BGP-LS) Parameters". The new 1983 registry is called "SR Policy Protocol Origin" and contains the 1984 codepoints allocated to the "Protocol Origin" field defined in 1985 Section 4.5. The registry contains the following codepoints, with 1986 initial values, to be assigned by IANA: 1988 +------------+---------------------------------------------------------+ 1989 | Code Point | Protocol Origin | 1990 +------------+---------------------------------------------------------+ 1991 | 1 | PCEP | 1992 | 2 | BGP SR Policy | 1993 | 3 | Local (via CLI, Yang model through NETCONF, gRPC, etc.) | 1994 +------------+---------------------------------------------------------+ 1995 9.5. BGP-LS TE State Object Origin 1997 This document requests IANA to maintain a new sub-registry under 1998 "Border Gateway Protocol - Link State (BGP-LS) Parameters". The new 1999 registry is called "TE State Path Origin" and contains the codepoints 2000 allocated to the "Object Origin" field defined in Section 5. The 2001 registry contains the following codepoints, with initial values, to 2002 be assigned by IANA: 2004 +----------+------------------+ 2005 | Code | Object | 2006 | Point | Origin | 2007 +----------+------------------+ 2008 | 1 | RSVP-TE | 2009 | 2 | PCEP | 2010 | 3 | Local/Static | 2011 +----------+------------------+ 2013 9.6. BGP-LS TE State Address Family 2015 This document requests IANA to maintain a new sub-registry under 2016 "Border Gateway Protocol - Link State (BGP-LS) Parameters". The new 2017 registry is called "TE State Address Family" and contains the 2018 codepoints allocated to the "Address Family" field defined in 2019 Section 5. The registry contains the following codepoints, with 2020 initial values, to be assigned by IANA: 2022 +----------+------------------+ 2023 | Code | Address | 2024 | Point | Family | 2025 +----------+------------------+ 2026 | 1 | MPLS-IPv4 | 2027 | 2 | MPLS-IPv6 | 2028 +----------+------------------+ 2030 9.7. BGP-LS SR Segment Descriptors 2032 This document requests IANA to maintain a new sub-registry under 2033 "Border Gateway Protocol - Link State (BGP-LS) Parameters". The new 2034 registry is called "SR Segment Descriptor Types" and contains the 2035 codepoints allocated to the "Segment Type" field defined in 2036 Section 6.6 and described in Section 6.6.1. The registry contains 2037 the following codepoints, with initial values, to be assigned by 2038 IANA: 2040 +-------+--------------------------------------------------------------+ 2041 | Code | Segment Description | 2042 | Point | | 2043 +-------+--------------------------------------------------------------+ 2044 | 0 | Invalid | 2045 | 1 | SR-MPLS Label | 2046 | 2 | SRv6 SID as IPv6 address | 2047 | 3 | SR-MPLS Prefix SID as IPv4 Node Address | 2048 | 4 | SR-MPLS Prefix SID as IPv6 Node Global Address | 2049 | 5 | SR-MPLS Adjacency SID as IPv4 Node Address & Local | 2050 | | Interface ID | 2051 | 6 | SR-MPLS Adjacency SID as IPv4 Local & Remote Interface | 2052 | | Addresses | 2053 | 7 | SR-MPLS Adjacency SID as pair of IPv6 Global Address & | 2054 | | Interface ID for Local & Remote nodes | 2055 | 8 | SR-MPLS Adjacency SID as pair of IPv6 Global Addresses for | 2056 | | the Local & Remote Interface | 2057 | 9 | SRv6 END SID as IPv6 Node Global Address | 2058 | 10 | SRv6 END.X SID as pair of IPv6 Global Address & Interface ID | 2059 | | for Local & Remote nodes | 2060 | 11 | SRv6 END.X SID as pair of IPv6 Global Addresses for the | 2061 | | Local & Remote Interface | 2062 +-------+--------------------------------------------------------------+ 2064 9.8. BGP-LS Metric Type 2066 This document requests IANA to maintain a new sub-registry under 2067 "Border Gateway Protocol - Link State (BGP-LS) Parameters". The new 2068 registry is called "Metric Type" and contains the codepoints 2069 allocated to the "metric type" field defined in Section 6.7. The 2070 registry contains the following codepoints, with initial values, to 2071 be assigned by IANA: 2073 +------------+-----------------------------------------+ 2074 | Code Point | Metric Type | 2075 +------------+-----------------------------------------+ 2076 | 0 | IGP Metric | 2077 | 1 | Min Unidirectional Link Delay [RFC7471] | 2078 | 2 | TE Metric [RFC3630] | 2079 +------------+-----------------------------------------+ 2081 10. Security Considerations 2083 Procedures and protocol extensions defined in this document do not 2084 affect the BGP security model. See [RFC6952] for details. 2086 11. Contributors 2088 The following people have substantially contributed to the editing of 2089 this document: 2091 Clarence Filsfils 2092 Cisco Systems 2093 Email: cfilsfil@cisco.com 2095 12. Acknowledgements 2097 The authors would like to thank Dhruv Dhody, Mohammed Abdul Aziz 2098 Khalid, Lou Berger, Acee Lindem, Siva Sivabalan, Arjun Sreekantiah, 2099 and Dhanendra Jain for their review and valuable comments. 2101 13. References 2103 13.1. Normative References 2105 [I-D.ietf-idr-bgpls-segment-routing-epe] 2106 Previdi, S., Talaulikar, K., Filsfils, C., Patel, K., Ray, 2107 S., and J. Dong, "BGP-LS extensions for Segment Routing 2108 BGP Egress Peer Engineering", draft-ietf-idr-bgpls- 2109 segment-routing-epe-19 (work in progress), May 2019. 2111 [I-D.ietf-spring-segment-routing-policy] 2112 Filsfils, C., Talaulikar, K., Voyer, D., Bogdanov, A., and 2113 P. Mattes, "Segment Routing Policy Architecture", draft- 2114 ietf-spring-segment-routing-policy-08 (work in progress), 2115 July 2020. 2117 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2118 Requirement Levels", BCP 14, RFC 2119, 2119 DOI 10.17487/RFC2119, March 1997, 2120 . 2122 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 2123 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 2124 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 2125 September 1997, . 2127 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 2128 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 2129 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 2130 . 2132 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 2133 Switching (GMPLS) Signaling Resource ReserVation Protocol- 2134 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, 2135 DOI 10.17487/RFC3473, January 2003, 2136 . 2138 [RFC4090] Pan, P., Ed., Swallow, G., Ed., and A. Atlas, Ed., "Fast 2139 Reroute Extensions to RSVP-TE for LSP Tunnels", RFC 4090, 2140 DOI 10.17487/RFC4090, May 2005, 2141 . 2143 [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, 2144 "Multiprotocol Extensions for BGP-4", RFC 4760, 2145 DOI 10.17487/RFC4760, January 2007, 2146 . 2148 [RFC4872] Lang, J., Ed., Rekhter, Y., Ed., and D. Papadimitriou, 2149 Ed., "RSVP-TE Extensions in Support of End-to-End 2150 Generalized Multi-Protocol Label Switching (GMPLS) 2151 Recovery", RFC 4872, DOI 10.17487/RFC4872, May 2007, 2152 . 2154 [RFC4873] Berger, L., Bryskin, I., Papadimitriou, D., and A. Farrel, 2155 "GMPLS Segment Recovery", RFC 4873, DOI 10.17487/RFC4873, 2156 May 2007, . 2158 [RFC4874] Lee, CY., Farrel, A., and S. De Cnodder, "Exclude Routes - 2159 Extension to Resource ReserVation Protocol-Traffic 2160 Engineering (RSVP-TE)", RFC 4874, DOI 10.17487/RFC4874, 2161 April 2007, . 2163 [RFC5420] Farrel, A., Ed., Papadimitriou, D., Vasseur, JP., and A. 2164 Ayyangar, "Encoding of Attributes for MPLS LSP 2165 Establishment Using Resource Reservation Protocol Traffic 2166 Engineering (RSVP-TE)", RFC 5420, DOI 10.17487/RFC5420, 2167 February 2009, . 2169 [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation 2170 Element (PCE) Communication Protocol (PCEP)", RFC 5440, 2171 DOI 10.17487/RFC5440, March 2009, 2172 . 2174 [RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and 2175 S. Ray, "North-Bound Distribution of Link-State and 2176 Traffic Engineering (TE) Information Using BGP", RFC 7752, 2177 DOI 10.17487/RFC7752, March 2016, 2178 . 2180 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2181 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2182 May 2017, . 2184 13.2. Informative References 2186 [RFC2702] Awduche, D., Malcolm, J., Agogbua, J., O'Dell, M., and J. 2187 McManus, "Requirements for Traffic Engineering Over MPLS", 2188 RFC 2702, DOI 10.17487/RFC2702, September 1999, 2189 . 2191 [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering 2192 (TE) Extensions to OSPF Version 2", RFC 3630, 2193 DOI 10.17487/RFC3630, September 2003, 2194 . 2196 [RFC4202] Kompella, K., Ed. and Y. Rekhter, Ed., "Routing Extensions 2197 in Support of Generalized Multi-Protocol Label Switching 2198 (GMPLS)", RFC 4202, DOI 10.17487/RFC4202, October 2005, 2199 . 2201 [RFC4655] Farrel, A., Vasseur, J., and J. Ash, "A Path Computation 2202 Element (PCE)-Based Architecture", RFC 4655, 2203 DOI 10.17487/RFC4655, August 2006, 2204 . 2206 [RFC5065] Traina, P., McPherson, D., and J. Scudder, "Autonomous 2207 System Confederations for BGP", RFC 5065, 2208 DOI 10.17487/RFC5065, August 2007, 2209 . 2211 [RFC6952] Jethanandani, M., Patel, K., and L. Zheng, "Analysis of 2212 BGP, LDP, PCEP, and MSDP Issues According to the Keying 2213 and Authentication for Routing Protocols (KARP) Design 2214 Guide", RFC 6952, DOI 10.17487/RFC6952, May 2013, 2215 . 2217 [RFC7308] Osborne, E., "Extended Administrative Groups in MPLS 2218 Traffic Engineering (MPLS-TE)", RFC 7308, 2219 DOI 10.17487/RFC7308, July 2014, 2220 . 2222 [RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S. 2223 Previdi, "OSPF Traffic Engineering (TE) Metric 2224 Extensions", RFC 7471, DOI 10.17487/RFC7471, March 2015, 2225 . 2227 [RFC8231] Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path 2228 Computation Element Communication Protocol (PCEP) 2229 Extensions for Stateful PCE", RFC 8231, 2230 DOI 10.17487/RFC8231, September 2017, 2231 . 2233 Authors' Addresses 2235 Stefano Previdi 2237 Email: stefano@previdi.net 2239 Ketan Talaulikar (editor) 2240 Cisco Systems, Inc. 2241 India 2243 Email: ketant@cisco.com 2245 Jie Dong (editor) 2246 Huawei Technologies 2247 Huawei Campus, No. 156 Beiqing Rd. 2248 Beijing 100095 2249 China 2251 Email: jie.dong@huawei.com 2253 Mach(Guoyi) Chen 2254 Huawei Technologies 2255 Huawei Campus, No. 156 Beiqing Rd. 2256 Beijing 100095 2257 China 2259 Email: mach.chen@huawei.com 2261 Hannes Gredler 2262 RtBrick Inc. 2264 Email: hannes@rtbrick.com 2266 Jeff Tantsura 2267 Apstra 2269 Email: jefftant.ietf@gmail.com