idnits 2.17.1 draft-ietf-ospf-ospfv3-segment-routing-extensions-02.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 : ---------------------------------------------------------------------------- ** There is 1 instance of too long lines in the document, the longest one being 18 characters in excess of 72. == There are 2 instances of lines with non-RFC3849-compliant IPv6 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (February 18, 2015) is 3355 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) -- Looks like a reference, but probably isn't: '100' on line 277 -- Looks like a reference, but probably isn't: '199' on line 277 -- Looks like a reference, but probably isn't: '1000' on line 278 -- Looks like a reference, but probably isn't: '1099' on line 278 -- Looks like a reference, but probably isn't: '500' on line 279 -- Looks like a reference, but probably isn't: '599' on line 279 ** Obsolete normative reference: RFC 4970 (Obsoleted by RFC 7770) == Outdated reference: A later version (-03) exists of draft-filsfils-spring-segment-routing-ldp-interop-02 == Outdated reference: A later version (-23) exists of draft-ietf-ospf-ospfv3-lsa-extend-06 == Outdated reference: A later version (-15) exists of draft-ietf-spring-segment-routing-01 Summary: 2 errors (**), 0 flaws (~~), 5 warnings (==), 7 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Open Shortest Path First IGP P. Psenak, Ed. 3 Internet-Draft S. Previdi, Ed. 4 Intended status: Standards Track C. Filsfils 5 Expires: August 22, 2015 Cisco Systems, Inc. 6 H. Gredler 7 Juniper Networks, Inc. 8 R. Shakir 9 British Telecom 10 W. Henderickx 11 Alcatel-Lucent 12 J. Tantsura 13 Ericsson 14 February 18, 2015 16 OSPFv3 Extensions for Segment Routing 17 draft-ietf-ospf-ospfv3-segment-routing-extensions-02 19 Abstract 21 Segment Routing (SR) allows for a flexible definition of end-to-end 22 paths within IGP topologies by encoding paths as sequences of 23 topological sub-paths, called "segments". These segments are 24 advertised by the link-state routing protocols (IS-IS and OSPF). 26 This draft describes the OSPFv3 extensions that are required for 27 Segment Routing. 29 Requirements Language 31 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 32 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 33 document are to be interpreted as described in RFC 2119 [RFC2119]. 35 Status of This Memo 37 This Internet-Draft is submitted in full conformance with the 38 provisions of BCP 78 and BCP 79. 40 Internet-Drafts are working documents of the Internet Engineering 41 Task Force (IETF). Note that other groups may also distribute 42 working documents as Internet-Drafts. The list of current Internet- 43 Drafts is at http://datatracker.ietf.org/drafts/current/. 45 Internet-Drafts are draft documents valid for a maximum of six months 46 and may be updated, replaced, or obsoleted by other documents at any 47 time. It is inappropriate to use Internet-Drafts as reference 48 material or to cite them other than as "work in progress." 49 This Internet-Draft will expire on August 22, 2015. 51 Copyright Notice 53 Copyright (c) 2015 IETF Trust and the persons identified as the 54 document authors. All rights reserved. 56 This document is subject to BCP 78 and the IETF Trust's Legal 57 Provisions Relating to IETF Documents 58 (http://trustee.ietf.org/license-info) in effect on the date of 59 publication of this document. Please review these documents 60 carefully, as they describe your rights and restrictions with respect 61 to this document. Code Components extracted from this document must 62 include Simplified BSD License text as described in Section 4.e of 63 the Trust Legal Provisions and are provided without warranty as 64 described in the Simplified BSD License. 66 Table of Contents 68 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 69 2. Segment Routing Identifiers . . . . . . . . . . . . . . . . . 3 70 2.1. SID/Label Sub-TLV . . . . . . . . . . . . . . . . . . . . 3 71 3. Segment Routing Capabilities . . . . . . . . . . . . . . . . 4 72 3.1. SR-Algorithm TLV . . . . . . . . . . . . . . . . . . . . 4 73 3.2. SID/Label Range TLV . . . . . . . . . . . . . . . . . . . 5 74 4. OSPFv3 Extended Prefix Range TLV . . . . . . . . . . . . . . 7 75 5. Prefix SID Sub-TLV . . . . . . . . . . . . . . . . . . . . . 9 76 6. SID/Label Binding Sub-TLV . . . . . . . . . . . . . . . . . . 13 77 6.1. ERO Metric Sub-TLV . . . . . . . . . . . . . . . . . . . 15 78 6.2. ERO Sub-TLVs . . . . . . . . . . . . . . . . . . . . . . 15 79 6.2.1. IPv4 ERO Sub-TLV . . . . . . . . . . . . . . . . . . 16 80 6.2.2. IPv6 ERO Sub-TLV . . . . . . . . . . . . . . . . . . 16 81 6.2.3. Unnumbered Interface ID ERO Sub-TLV . . . . . . . . . 17 82 6.2.4. IPv4 Backup ERO Sub-TLV . . . . . . . . . . . . . . . 19 83 6.2.5. IPv6 Backup ERO Sub-TLV . . . . . . . . . . . . . . . 19 84 6.2.6. Unnumbered Interface ID Backup ERO Sub-TLV . . . . . 21 85 7. Adjacency Segment Identifier (Adj-SID) . . . . . . . . . . . 22 86 7.1. Adj-SID Sub-TLV . . . . . . . . . . . . . . . . . . . . . 22 87 7.2. LAN Adj-SID Sub-TLV . . . . . . . . . . . . . . . . . . . 24 88 8. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 25 89 8.1. Intra-area Segment routing in OSPFv3 . . . . . . . . . . 25 90 8.2. Inter-area Segment routing in OSPFv3 . . . . . . . . . . 26 91 8.3. SID for External Prefixes . . . . . . . . . . . . . . . . 27 92 8.4. Advertisement of Adj-SID . . . . . . . . . . . . . . . . 28 93 8.4.1. Advertisement of Adj-SID on Point-to-Point Links . . 28 94 8.4.2. Adjacency SID on Broadcast or NBMA Interfaces . . . . 28 95 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 96 9.1. OSPF Router Information (RI) TLVs Registry . . . . . . . 29 97 9.2. OSPFv3 Extend-LSA TLV Registry . . . . . . . . . . . . . 29 98 9.3. OSPFv3 Extend-LSA Sub-TLV registry . . . . . . . . . . . 29 99 10. Security Considerations . . . . . . . . . . . . . . . . . . . 29 100 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 30 101 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 102 12.1. Normative References . . . . . . . . . . . . . . . . . . 30 103 12.2. Informative References . . . . . . . . . . . . . . . . . 30 104 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 106 1. Introduction 108 Segment Routing (SR) allows for a flexible definition of end-to-end 109 paths within IGP topologies by encoding paths as sequences of 110 topological sub-paths, called "segments". These segments are 111 advertised by the link-state routing protocols (IS-IS and OSPF). 112 Prefix segments represent an ecmp-aware shortest-path to a prefix (or 113 a node), as per the state of the IGP topology. Adjacency segments 114 represent a hop over a specific adjacency between two nodes in the 115 IGP. A prefix segment is typically a multi-hop path while an 116 adjacency segment, in most of the cases, is a one-hop path. SR's 117 control-plane can be applied to both IPv6 and MPLS data-planes, and 118 does not require any additional signaling (other than the regular 119 IGP). For example, when used in MPLS networks, SR paths do not 120 require any LDP or RSVP-TE signaling. Still, SR can interoperate in 121 the presence of LSPs established with RSVP or LDP. 123 This draft describes the OSPFv3 extensions required for segment 124 routing. 126 Segment Routing architecture is described in 127 [I-D.ietf-spring-segment-routing]. 129 Segment Routing use cases are described in 130 [I-D.filsfils-spring-segment-routing-use-cases]. 132 2. Segment Routing Identifiers 134 Segment Routing defines various types of Segment Identifiers (SIDs): 135 Prefix-SID, Adjacency-SID, LAN Adjacency SID and Binding SID. 137 2.1. SID/Label Sub-TLV 139 The SID/Label Sub-TLV appears in multiple TLVs or Sub-TLVs defined 140 later in this document. It is used to advertise the SID or label 141 associated with a prefix or adjacency. The SID/Label TLV has 142 following format: 144 0 1 2 3 145 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 146 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 147 | Type | Length | 148 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 149 | SID/Label (variable) | 150 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 152 where: 154 Type: TBD, suggested value 3 156 Length: variable, 3 or 4 bytes 158 SID/Label: if length is set to 3, then the 20 rightmost bits 159 represent a label. If length is set to 4, then the value 160 represents a 32 bit SID. 162 The receiving router MUST ignore the SID/Label Sub-TLV if the 163 length is other then 3 or 4. 165 3. Segment Routing Capabilities 167 Segment Routing requires some additional capabilities of the router 168 to be advertised to other routers in the area. 170 These SR capabilities are advertised in OSPFv3 Router Information LSA 171 (defined in [RFC4970]). 173 3.1. SR-Algorithm TLV 175 The SR-Algorithm TLV is a TLV of the OSPFv3 Router Information LSA 176 (defined in [RFC4970]). 178 The SR-Algorithm TLV is optional. It MAY only be advertised once in 179 the OSPFv3 Router Information LSA. If the SID/Label Range TLV, as 180 defined in Section 3.2, is advertised, then the SR-Algorithm TLV MUST 181 also be advertised. 183 An OSPFv3 router may use various algorithms when calculating 184 reachability to other nodes in area or to prefixes attached to these 185 nodes. Examples of these algorithms are metric based Shortest Path 186 First (SPF), various sorts of Constrained SPF, etc. The SR-Algorithm 187 TLV allows a router to advertise the algorithms that the router is 188 currently using to other routers in an area. The SR-Algorithm TLV 189 has following structure: 191 0 1 2 3 192 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 193 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 194 | Type | Length | 195 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 196 | Algorithm 1 | Algorithm... | Algorithm n | | 197 +- -+ 198 | | 199 + + 201 where: 203 Type: TBD, suggested value 8 205 Length: variable 207 Algorithm: Single octet identifying the algorithm. The following 208 value has been defined: 210 0: IGP metric based SPT. 212 The RI LSA can be advertised at any of the defined flooding scopes 213 (link, area, or autonomous system (AS)). For the purpose of the SR- 214 Algorithm TLV propagation, area scope flooding is required. 216 3.2. SID/Label Range TLV 218 The SID/Label Range TLV is a TLV of the OSPFv3 Router Information LSA 219 (defined in [RFC4970]). 221 The SID/Label Sub-TLV MAY appear multiple times and has following 222 format: 224 0 1 2 3 225 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 226 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 227 | Type | Length | 228 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 229 | Range Size | Reserved | 230 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 231 | Sub-TLVs (variable) | 232 +- -+ 233 | | 234 + + 236 where: 238 Type: TBD, suggested value 9 239 Length: variable 241 Range Size: 3 octets of SID/label range 243 Initially, the only supported Sub-TLV is the SID/Label TLV as defined 244 in Section 2.1. The SID/Label advertised in the SID/Label TLV 245 represents the first SID/Label in the advertised range. 247 Multiple occurrence of the SID/Label Range TLV MAY be advertised, in 248 order to advertise multiple ranges. In such case: 250 o The originating router MUST encode each range into a different 251 SID/Label Range TLV. 253 o The originating router decides the order in which the set of SID/ 254 Label Range TLVs are advertised in the OSPFv3 Router Information 255 LSA. The originating router MUST ensure the order is same after a 256 graceful restart (using checkpointing, non-volatile storage or any 257 other mechanism) in order to assure the SID/label range and SID 258 index correspondence is preserved across graceful restarts. 260 o The receiving router must adhere to the order in which the ranges 261 are advertised when calculating a SID/label from the SID index. 263 o A router not supporting multiple occurrences of the SID/Label 264 Range TLV MUST use first advertised SID/Label Range TLV. 266 The following example illustrates the advertisement of multiple 267 ranges: 269 The originating router advertises the following ranges: 270 Range 1: [100, 199] 271 Range 2: [1000, 1099] 272 Range 3: [500, 599] 274 The receiving routers concatenate the ranges and build the Segment Routing Global Block 275 (SRGB) is as follows: 277 SRGB = [100, 199] 278 [1000, 1099] 279 [500, 599] 281 The indexes span multiple ranges: 283 index=0 means label 100 284 ... 285 index 99 means label 199 286 index 100 means label 1000 287 index 199 means label 1099 288 ... 289 index 200 means label 500 290 ... 292 The RI LSA can be advertised at any of the defined flooding scopes 293 (link, area, or autonomous system (AS)). For the purpose of the SR- 294 Capability TLV propagation, area scope flooding is required. 296 4. OSPFv3 Extended Prefix Range TLV 298 In some cases it is useful to advertise attributes for a range of 299 prefixes. Segment Routing Mapping Server, which is described in 300 [I-D.filsfils-spring-segment-routing-ldp-interop], is an example 301 where we need a single advertisement to advertise SIDs for multiple 302 prefixes from a contiguous address range. The OSPFv3 Extended Prefix 303 Range TLV is defined for this purpose. 305 The OSPFv3 Extended Prefix Range TLV is a new top level TLV of the 306 following LSAs defined in [I-D.ietf-ospf-ospfv3-lsa-extend]: 308 E-Intra-Area-Prefix-LSA 310 E-Inter-Area-Prefix-LSA 312 E-AS-External-LSA 314 E-Type-7-LSA 316 Multiple OSPFv3 Extended Prefix Range TLVs MAY be advertised in these 317 extended LSAs. The OSPFv3 Extended Prefix Range TLV has the 318 following format: 320 0 1 2 3 321 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 322 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 323 | Type | Length | 324 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 325 | Prefix Length | AF | Range Size | 326 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 327 | Flags | Reserved | 328 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 329 | Address Prefix (variable) | 330 | ... | 331 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 332 | Sub-TLVs (variable) | 333 +- -+ 334 | | 336 where: 338 Type: TBD, suggested value 9. 340 Length: variable 342 Prefix length: length of the prefix 344 AF: 0 - IPv6 unicast 346 Range size: represents the number of prefixes that are covered by 347 the advertisement. The Range Size MUST NOT exceed the number of 348 prefixes that could be satisfied by the prefix length without 349 including addresses from other than the IPv6 unicast address 350 class. 352 Flags: 1 octet field. The following flags are defined: 354 0 1 2 3 4 5 6 7 355 +--+--+--+--+--+--+--+--+ 356 |IA| | | | | | | | 357 +--+--+--+--+--+--+--+--+ 359 where: 361 IA-Flag: Inter-Area flag. If set, advertisement is of inter- 362 area type. ABR that is advertising the OSPF Extended Prefix 363 Range TLV between areas MUST set this bit. 365 This bit is used to prevent redundant flooding of Prefix Range 366 TLVs between areas as follows: 368 An ABR always prefers intra-area Prefix Range advertisement 369 over inter-area one. 371 An ABR does not consider inter-area Prefix Range 372 advertisements coming from non backbone area. 374 An ABR propagates inter-area Prefix Range advertisement from 375 backbone area to connected non backbone areas only if such 376 advertisement is considered to be the best one. 378 Address Prefix: the prefix, encoded as an even multiple of 32-bit 379 words, padded with zeroed bits as necessary. This encoding 380 consumes ((PrefixLength + 31) / 32) 32-bit words. The Address 381 Prefix represents the first prefix in the prefix range. 383 5. Prefix SID Sub-TLV 385 The Prefix SID Sub-TLV is a Sub-TLV of the following OSPFv3 TLVs as 386 defined in [I-D.ietf-ospf-ospfv3-lsa-extend] and in Section 4: 388 Intra-Area Prefix TLV 390 Inter-Area Prefix TLV 392 External Prefix TLV 394 OSPFv3 Extended Prefix Range TLV 396 It MAY appear more than once in the parent TLV and has the following 397 format: 399 0 1 2 3 400 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 401 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 402 | Type | Length | 403 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 404 | Flags | Algorithm | Reserved | 405 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 406 | SID/Index/Label (variable) | 407 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 409 where: 411 Type: TBD, suggested value 4. 413 Length: variable 415 Flags: 1 octet field. The following flags are defined: 417 0 1 2 3 4 5 6 7 418 +--+--+--+--+--+--+--+--+ 419 | |NP|M |E |V |L | | | 420 +--+--+--+--+--+--+--+--+ 422 where: 424 NP-Flag: No-PHP flag. If set, then the penultimate hop MUST 425 NOT pop the Prefix-SID before delivering the packet to the node 426 that advertised the Prefix-SID. 428 M-Flag: Mapping Server Flag. If set, the SID is advertised 429 from the Segment Routing Mapping Server functionality as 430 described in [I-D.filsfils-spring-segment-routing-ldp-interop]. 432 E-Flag: Explicit-Null Flag. If set, any upstream neighbor of 433 the Prefix-SID originator MUST replace the Prefix-SID with a 434 Prefix-SID having an Explicit-NULL value (0 for IPv4) before 435 forwarding the packet. 437 The V-Flag: Value/Index Flag. If set, then the Prefix-SID 438 carries an absolute value. If not set, then the Prefix-SID 439 carries an index. 441 The L-Flag: Local/Global Flag. If set, then the value/index 442 carried by the Prefix-SID has local significance. If not set, 443 then the value/index carried by this Sub-TLV has global 444 significance. 446 Other bits: Reserved. These MUST be zero when sent and are 447 ignored when received. 449 Algorithm: one octet identifying the algorithm the Prefix-SID is 450 associated with as defined in Section 3.1. 452 SID/Index/Label: label or index value depending on the V-bit 453 setting. 455 Examples: 457 A 32 bit global index defining the offset in the SID/Label 458 space advertised by this router - in this case the V and L 459 flags MUST NOT be set. 461 A 24 bit local label where the 20 rightmost bits are used 462 for encoding the label value - in this case the V and L 463 flags MUST be set. 465 If multiple Prefix-SIDs are advertised for the same prefix, the 466 receiving router MUST use the first encoded SID and MAY use the 467 subsequent SIDs. 469 When propagating Prefix-SIDs between areas, if multiple prefix-SIDs 470 are advertised for a prefix, an implementation SHOULD preserve the 471 original order when advertising prefix-SIDs to other areas. This 472 allows implementations that only support a single Prefix-SID to have 473 a consistent view across areas. 475 When calculating the outgoing label for the prefix, the router MUST 476 take into account E and P flags advertised by the next-hop router, if 477 next-hop router advertised the SID for the prefix. This MUST be done 478 regardless of whether the next-hop router contributes to the best 479 path to the prefix. 481 The NP-Flag (No-PHP) MUST be set for Prefix-SIDs allocated to inter- 482 area prefixes that are originated by the ABR based on intra-area or 483 inter-area reachability between areas. When the inter-area prefix is 484 generated based on a prefix which is directly attached to the ABR, 485 NP-Flag SHOULD NOT be set 487 The NP-Flag (No-PHP) MUST be set on the Prefix-SIDs allocated to 488 redistributed prefixes, unless the redistributed prefix is directly 489 attached to ASBR, in which case the NP-Flag SHOULD NOT be set. 491 If the NP-Flag is not set then any upstream neighbor of the Prefix- 492 SID originator MUST pop the Prefix-SID. This is equivalent to the 493 penultimate hop popping mechanism used in the MPLS dataplane. In 494 such case, MPLS EXP bits of the Prefix-SID are not preserved for the 495 final destination (the Prefix-SID being removed). If the NP-Flag is 496 clear then the received E-flag is ignored. 498 If the NP-Flag is set then: 500 If the E-flag is not set then any upstream neighbor of the Prefix- 501 SID originator MUST keep the Prefix-SID on top of the stack. This 502 is useful when the originator of the Prefix-SID must stitch the 503 incoming packet into a continuing MPLS LSP to the final 504 destination. This could occur at an inter-area border router 505 (prefix propagation from one area to another) or at an inter- 506 domain border router (prefix propagation from one domain to 507 another). 509 If the E-flag is set then any upstream neighbor of the Prefix-SID 510 originator MUST replace the Prefix-SID with a Prefix-SID having an 511 Explicit-NULL value. This is useful, e.g., when the originator of 512 the Prefix-SID is the final destination for the related prefix and 513 the originator wishes to receive the packet with the original EXP 514 bits. 516 When M-Flag is set, NP-Flag MUST be set and E-bit MUST NOT be set. 518 When a Prefix-SID is advertised in an Extended Prefix Range TLV, then 519 the value advertised in Prefix SID Sub-TLV is interpreted as a 520 starting SID value. 522 Example 1: if the following router addresses (loopback addresses) 523 need to be mapped into the corresponding Prefix SID indexes: 525 Router-A: 192::1/128, Prefix-SID: Index 1 526 Router-B: 192::2/128, Prefix-SID: Index 2 527 Router-C: 192::3/128, Prefix-SID: Index 3 528 Router-D: 192::4/128, Prefix-SID: Index 4 530 then the Address Prefix field in the OSPFv3 Extended Prefix Range TLV 531 is set to 192::1, Prefix Length would be set to 128, Range Size would 532 be set to 4 and the Index value in the Prefix-SID Sub-TLV would be 533 set to 1. 535 Example 2: If the following prefixes need to be mapped into the 536 corresponding Prefix-SID indexes: 538 10:1:1::0/120, Prefix-SID: Index 51 539 10:1:1::100/120, Prefix-SID: Index 52 540 10:1:1::200/120, Prefix-SID: Index 53 541 10:1:1::300/120, Prefix-SID: Index 54 542 10:1:1::400/120, Prefix-SID: Index 55 543 10:1:1::500/120, Prefix-SID: Index 56 544 10:1:1::600/120, Prefix-SID: Index 57 546 then the Address Prefix field in the OSPFv3 Extended Prefix Range TLV 547 is set to 10:1:1::0, Prefix Length would be set to 120, Range Size 548 would be set to 7 and the Index value in the Prefix-SID Sub-TLV would 549 be set to 51. 551 6. SID/Label Binding Sub-TLV 553 The SID/Label Binding Sub-TLV is used to advertise SID/Label mapping 554 for a path to the prefix. 556 The SID/Label Binding TLV MAY be originated by any router in an 557 OSPFv3 domain. The router may advertise a SID/Label binding to a FEC 558 along with at least a single 'nexthop style' anchor. The protocol 559 supports more than one 'nexthop style' anchor to be attached to a 560 SID/Label binding, which results into a simple path description 561 language. In analogy to RSVP the terminology for this is called an 562 'Explicit Route Object' (ERO). Since ERO style path notation allows 563 anchoring SID/label bindings to both link and node IP addresses, any 564 Label Switched Path (LSP) can be described. Furthermore, SID/Label 565 Bindings from external protocols can also be re-advertised. 567 The SID/Label Binding TLV may be used for advertising SID/Label 568 Bindings and their associated Primary and Backup paths. In one 569 single TLV, either a primary ERO Path, backup ERO Path, or both are 570 advertised. If a router wants to advertise multiple parallel paths, 571 then it can generate several TLVs for the same Prefix/FEC. Each 572 occurrence of a Binding TLV for a given FEC Prefix will add a new 573 path. 575 SID/Label Binding Sub-TLV is a Sub-TLV of the following OSPFv3 TLVs, 576 as defined in [I-D.ietf-ospf-ospfv3-lsa-extend] and in Section 4: 578 Intra-Area Prefix TLV 580 Inter-Area Prefix TLV 582 External Prefix TLV 584 OSPFv3 Extended Prefix Range TLV 586 Multiple SID/Label Binding Sub-TLVs can be present in these TLVs. 587 The SID/Label Binding Sub-TLV has following format: 589 0 1 2 3 590 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 591 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 592 | Type | Length | 593 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 594 | Flags | Weight | Reserved | 595 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 596 | Sub-TLVs (variable) | 597 +- -+ 598 | | 600 where: 602 Type: TBD, suggested value 7 604 Length: variable 606 Flags: 1 octet field of following flags: 608 0 1 2 3 4 5 6 7 609 +-+-+-+-+-+-+-+-+ 610 |M| | 611 +-+-+-+-+-+-+-+-+ 613 where: 615 M-bit - When the bit is set the binding represents the 616 mirroring context as defined in 617 [I-D.minto-rsvp-lsp-egress-fast-protection]. 619 Weight: weight used for load-balancing purposes. The use of the 620 weight is defined in section 3.5.1 of 621 [I-D.ietf-spring-segment-routing]. 623 SID/Label Binding Sub-TLV currently supports following Sub-TLVs: 625 SID/Label Sub-TLV as described in Section 2.1. This Sub-TLV MUST 626 appear in the SID/Label Binding Sub-TLV and it MUST only appear 627 once. 629 ERO Metric Sub-TLV as defined in Section 6.1. 631 ERO Sub-TLVs as defined in Section 6.2. 633 6.1. ERO Metric Sub-TLV 635 The ERO Metric Sub-TLV is a Sub-TLV of the SID/Label Binding TLV. 637 The ERO Metric Sub-TLV advertises the cost of an ERO path. It is 638 used to compare the cost of a given source/destination path. A 639 router SHOULD advertise the ERO Metric Sub-TLV in an advertised ERO 640 TLV. The cost of the ERO Metric Sub-TLV SHOULD be set to the 641 cumulative IGP or TE path cost of the advertised ERO. Since 642 manipulation of the Metric field may attract or repel traffic to and 643 from the advertised segment, it MAY be manually overridden. 645 0 1 2 3 646 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 647 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 648 | Type | Length | 649 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 650 | Metric (4 octets) | 651 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 653 ERO Metric Sub-TLV format 655 where: 657 Type: TBD, suggested value 8 659 Length: Always 4 661 Metric: A 4 octet metric representing the aggregate IGP or TE path 662 cost. 664 6.2. ERO Sub-TLVs 666 All 'ERO' information represents an ordered set which describes the 667 segments of a path. The first ERO Sub-TLV describes the first 668 segment of a path. Similiarly, the last ERO Sub-TLV describes the 669 segment closest to the egress point. If a router extends or stitches 670 a path, it MUST prepend the new segment's path information to the ERO 671 list. This applies equally to advertised backup EROs. 673 All ERO Sub-TLVs must immediately follow the (SID)/Label Sub-TLV. 675 All Backup ERO Sub-TLVs must immediately follow the last ERO Sub-TLV. 677 6.2.1. IPv4 ERO Sub-TLV 679 IPv4 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 681 The IPv4 ERO Sub-TLV describes a path segment using IPv4 Address 682 style of encoding. Its semantics have been borrowed from [RFC3209]. 684 0 1 2 3 685 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 686 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 687 | Type | Length | 688 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 689 | Flags | Reserved | 690 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 691 | IPv4 Address (4 octets) | 692 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 694 IPv4 ERO Sub-TLV format 696 where: 698 Type: TBD, suggested value 9 700 Length: 8 bytes 702 Flags: 1 octet field of following flags: 704 0 1 2 3 4 5 6 7 705 +-+-+-+-+-+-+-+-+ 706 |L| | 707 +-+-+-+-+-+-+-+-+ 709 where: 711 L-bit - If the L-bit is set, then the segment path is 712 designated as 'loose'. Otherwise, the segment path is 713 designated as 'strict'. 715 IPv4 Address - the address of the explicit route hop. 717 6.2.2. IPv6 ERO Sub-TLV 719 IPv6 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 721 The IPv6 ERO Sub-TLV (Type TBA) describes a path segment using IPv6 722 Address style of encoding. Its semantics have been borrowed from 723 [RFC3209]. 725 0 1 2 3 726 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 727 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 728 | Type | Length | 729 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 730 | Flags | Reserved | 731 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 732 | | 733 +- -+ 734 | | 735 +- IPv6 Address -+ 736 | | 737 +- -+ 738 | | 739 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 741 IPv6 ERO Sub-TLV format 743 where: 745 Type: TBD, suggested value 10 747 Length: 8 bytes 749 Flags: 1 octet field of following flags: 751 0 1 2 3 4 5 6 7 752 +-+-+-+-+-+-+-+-+ 753 |L| | 754 +-+-+-+-+-+-+-+-+ 756 where: 758 L-bit - If the L-bit is set, then the segment path is 759 designated as 'loose'. Otherwise, the segment path is 760 designated as 'strict'. 762 IPv6 Address - the address of the explicit route hop. 764 6.2.3. Unnumbered Interface ID ERO Sub-TLV 766 The Unnumbered Interface ID ERO Sub-TLV is a Sub-TLV of the SID/Label 767 Binding Sub-TLV. 769 The appearance and semantics of the 'Unnumbered Interface ID' have 770 been borrowed from [RFC3477]. 772 The Unnumbered Interface-ID ERO Sub-TLV describes a path segment that 773 spans over an unnumbered interface. Unnumbered interfaces are 774 referenced using the interface index. Interface indices are assigned 775 local to the router and therefore not unique within a domain. All 776 elements in an ERO path need to be unique within a domain and hence 777 need to be disambiguated using a domain unique Router-ID. 779 0 1 2 3 780 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 781 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 782 | Type | Length | 783 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 784 | Flags | Reserved | 785 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 786 | Router ID | 787 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 788 | Interface ID | 789 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 791 where: 793 Unnumbered Interface ID ERO Sub-TLV format 795 Type: TBD, suggested value 11 797 Length: 12 bytes 799 Flags: 1 octet field of following flags: 801 0 1 2 3 4 5 6 7 802 +-+-+-+-+-+-+-+-+ 803 |L| | 804 +-+-+-+-+-+-+-+-+ 806 where: 808 L-bit - If the L-bit is set, then the segment path is 809 designated as 'loose'. Otherwise, the segment path is 810 designated as 'strict'. 812 Router-ID: Router-ID of the next-hop. 814 Interface ID: is the identifier assigned to the link by the router 815 specified by the Router-ID. 817 6.2.4. IPv4 Backup ERO Sub-TLV 819 IPv4 Prefix Backup ERO Sub-TLV is a Sub-TLV of the SID/Label Binding 820 Sub-TLV. 822 The IPv4 Backup ERO Sub-TLV describes a path segment using IPv4 823 Address style of encoding. Its semantics have been borrowed from 824 [RFC3209]. 826 0 1 2 3 827 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 828 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 829 | Type | Length | 830 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 831 | Flags | Reserved | 832 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 833 | IPv4 Address (4 octets) | 834 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 836 IPv4 Backup ERO Sub-TLV format 838 where: 840 Type: TBD, suggested value 12 842 Length: 8 bytes 844 Flags: 1 octet field of following flags: 846 0 1 2 3 4 5 6 7 847 +-+-+-+-+-+-+-+-+ 848 |L| | 849 +-+-+-+-+-+-+-+-+ 851 where: 853 L-bit - If the L-bit is set, then the segment path is 854 designated as 'loose'. Otherwise, the segment path is 855 designated as 'strict'.' 857 IPv4 Address - the address of the explicit route hop. 859 6.2.5. IPv6 Backup ERO Sub-TLV 861 The IPv6 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 863 The IPv6 Backup ERO Sub-TLV describes a Backup path segment using 864 IPv6 Address style of encoding. Its appearance and semantics have 865 been borrowed from [RFC3209]. 867 The 'L' bit in the Flags is a one-bit attribute. If the L bit is 868 set, then the value of the attribute is 'loose.' Otherwise, the 869 value of the attribute is 'strict.' 871 0 1 2 3 872 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 873 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 874 | Type | Length | 875 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 876 | Flags | Reserved | 877 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 878 | | 879 +- -+ 880 | | 881 +- IPv6 Address -+ 882 | | 883 +- -+ 884 | | 885 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 887 IPv6 Backup ERO Sub-TLV format 889 where: 891 Type: TBD, suggested value 13 893 Length: 8 bytes 895 Flags: 1 octet field of following flags: 897 0 1 2 3 4 5 6 7 898 +-+-+-+-+-+-+-+-+ 899 |L| | 900 +-+-+-+-+-+-+-+-+ 902 where: 904 L-bit - If the L-bit is set, then the segment path is 905 designated as 'loose'. Otherwise, the segment path is 906 designated as 'strict'. 908 IPv6 Address - the address of the explicit route hop. 910 6.2.6. Unnumbered Interface ID Backup ERO Sub-TLV 912 The Unnumbered Interface ID Backup Sub-TLV is a Sub-TLV of the SID/ 913 Label Binding Sub-TLV. 915 The appearance and semantics of the 'Unnumbered Interface ID' have 916 been borrowed from [RFC3477]. 918 The Unnumbered Interface-ID Backup ERO Sub-TLV describes a path 919 segment that spans over an unnumbered interface. Unnumbered 920 interfaces are referenced using the interface index. Interface 921 indices are assigned local to the router and are therefore not unique 922 within a domain. All elements in an ERO path need to be unique 923 within a domain and hence need to be disambiguated with specification 924 of the unique Router-ID. 926 0 1 2 3 927 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 928 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 929 | Type | Length | 930 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 931 | Flags | Reserved | 932 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 933 | Router ID | 934 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 935 | Interface ID | 936 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 938 Unnumbered Interface ID Backup ERO Sub-TLV format 940 where: 942 Type: TBD, suggested value 14 944 Length: 12 bytes 946 Flags: 1 octet field of following flags: 948 0 1 2 3 4 5 6 7 949 +-+-+-+-+-+-+-+-+ 950 |L| | 951 +-+-+-+-+-+-+-+-+ 953 where: 955 L-bit - If the L-bit is set, then the segment path is 956 designated as 'loose'. Otherwise, the segment path is 957 designated as 'strict'. 959 Router-ID: Router-ID of the next-hop. 961 Interface ID: is the identifier assigned to the link by the router 962 specified by the Router-ID. 964 7. Adjacency Segment Identifier (Adj-SID) 966 An Adjacency Segment Identifier (Adj-SID) represents a router 967 adjacency in Segment Routing. 969 7.1. Adj-SID Sub-TLV 971 The extended OSPFv3 LSAs, as defined in 972 [I-D.ietf-ospf-ospfv3-lsa-extend], are used to advertise prefix SID 973 in OSPFv3 975 The Adj-SID Sub-TLV is an optional Sub-TLV of the Router-Link TLV as 976 defined in [I-D.ietf-ospf-ospfv3-lsa-extend]. It MAY appear multiple 977 times in Router-Link TLV. Examples where more than one Adj-SID may 978 be used per neighbor are described in section 4 of 979 [I-D.filsfils-spring-segment-routing-use-cases]. The Adj-SID Sub-TLV 980 has the following format: 982 0 1 2 3 983 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 984 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 985 | Type | Length | 986 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 987 | Flags | Weight | Reserved | 988 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 989 | SID/Label/Index (variable) | 990 +---------------------------------------------------------------+ 992 where: 994 Type: TBD, suggested value 5. 996 Length: variable. 998 Flags. 1 octet field of following flags: 1000 0 1 2 3 4 5 6 7 1001 +-+-+-+-+-+-+-+-+ 1002 |B|V|L|S| | 1003 +-+-+-+-+-+-+-+-+ 1005 where: 1007 B-Flag: Backup-flag. If set, the Adj-SID refers to an 1008 adjacency being protected (e.g.: using IPFRR or MPLS-FRR) as 1009 described in section 3.1 of 1010 [I-D.filsfils-spring-segment-routing-use-cases]. 1012 The V-Flag: Value/Index Flag. If set, then the Adj-SID carries 1013 an absolute value. If not set, then the Adj-SID carries an 1014 index. 1016 The L-Flag: Local/Global Flag. If set, then the value/index 1017 carried by the Adj-SID has local significance. If not set, 1018 then the value/index carried by this Sub-TLV has global 1019 significance. 1021 The S-Flag. Set Flag. When set, the S-Flag indicates that the 1022 Adj-SID refers to a set of adjacencies (and therefore MAY be 1023 assigned to other adjacencies as well). 1025 Other bits: Reserved. These MUST be zero when sent and are 1026 ignored when received. 1028 Weight: weight used for load-balancing purposes. The use of the 1029 weight is defined in section 3.5.1 of 1030 [I-D.ietf-spring-segment-routing]. 1032 SID/Index/Label: label or index value depending on the V-bit 1033 setting. 1035 Examples: 1037 A 32 bit global index defining the offset in the SID/Label 1038 space advertised by this router - in this case the V and L 1039 flags MUST NOT be set. 1041 A 24 bit local label where the 20 rightmost bits are used 1042 for encoding the label value - in this case the V and L 1043 flags MUST be set. 1045 16 octet IPv6 address - in this case the V-flag MUST be set. 1046 The L-flag MUST be set for link-local IPv6 address and MUST 1047 NOT be set for IPv6 global unicast address. 1049 An SR capable router MAY allocate an Adj-SID for each of its 1050 adjacencies and set the B-Flag when the adjacency is protected by a 1051 FRR mechanism (IP or MPLS) as described in section 3.1 of 1052 [I-D.filsfils-spring-segment-routing-use-cases]. 1054 7.2. LAN Adj-SID Sub-TLV 1056 The LAN Adj-SID is an optional Sub-TLV of the Router-Link TLV. It 1057 MAY appear multiple times in the Router-Link TLV. It is used to 1058 advertise a SID/Label for an adjacency to a non-DR neighbor on a 1059 broadcast or NBMA network. 1061 0 1 2 3 1062 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 1063 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1064 | Type | Length | 1065 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1066 | Flags | Weight | Reserved | 1067 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1068 | Neighbor ID | 1069 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1070 | SID/Label/Index (variable) | 1071 +---------------------------------------------------------------+ 1073 where: 1075 Type: TBD, suggested value 6. 1077 Length: variable. 1079 Flags. 1 octet field of following flags: 1081 0 1 2 3 4 5 6 7 1082 +-+-+-+-+-+-+-+-+ 1083 |B|V|L|S| | 1084 +-+-+-+-+-+-+-+-+ 1086 where: 1088 B-Flag: Backup-flag: set if the LAN-Adj-SID refer to an 1089 adjacency being protected (e.g.: using IPFRR or MPLS-FRR) as 1090 described in section 3.1 of 1091 [I-D.filsfils-spring-segment-routing-use-cases]. 1093 The V-Flag: Value/Index Flag. If set, then the LAN Adj-SID 1094 carries an absolute value. If not set, then the LAN Adj-SID 1095 carries an index. 1097 The L-Flag: Local/Global Flag. If set, then the value/index 1098 carried by the LAN Adj-SID has local significance. If not set, 1099 then the value/index carried by this subTLV has global 1100 significance. 1102 The S-Flag. Set Flag. When set, the S-Flag indicates that the 1103 LAN Adj-SID refers to a set of adjacencies (and therefore MAY 1104 be assigned to other adjacencies as well). 1106 Other bits: Reserved. These MUST be zero when sent and are 1107 ignored when received. 1109 Weight: weight used for load-balancing purposes. The use of the 1110 weight is defined in section 3.5.1 of 1111 [I-D.ietf-spring-segment-routing]. 1113 SID/Index/Label: label or index value depending on the V-bit 1114 setting. 1116 Examples: 1118 A 32 bit global index defining the offset in the SID/Label 1119 space advertised by this router - in this case the V and L 1120 flags MUST NOT be set. 1122 A 24 bit local label where the 20 rightmost bits are used 1123 for encoding the label value - in this case the V and L 1124 flags MUST be set. 1126 16 octet IPv6 address - in this case the V-flag MUST be set. 1127 The L-flag MUST be set for link-local IPv6 address and MUST 1128 NOT be set for IPv6 global unicast address. 1130 8. Elements of Procedure 1132 8.1. Intra-area Segment routing in OSPFv3 1134 An OSPFv3 router that supports segment routing MAY advertise Prefix- 1135 SIDs for any prefix that it is advertising reachability for (e.g., 1136 loopback IP address) as described in Section 5. 1138 If multiple routers advertise a Prefix-SID for the same prefix, then 1139 the Prefix-SID MUST be the same. This is required in order to allow 1140 traffic load-balancing when multiple equal cost paths to the 1141 destination exist in the network. 1143 The Prefix-SID can also be advertised by the SR Mapping Servers (as 1144 described in [I-D.filsfils-spring-segment-routing-ldp-interop]). The 1145 Mapping Server advertises Prefix-SID for remote prefixes that exist 1146 in the network. Multiple Mapping Servers can advertise Prefix-SID 1147 for the same prefix, in which case the same Prefix-SID MUST be 1148 advertised by all of them. The SR Mapping Server could use either 1149 area scope or autonomous system flooding scope when advertising 1150 Prefix SID for prefixes, based on the configuration of the SR Mapping 1151 Server. Depending on the flooding scope used, the SR Mapping Server 1152 chooses the LSA that will be used. If the area flooding scope is 1153 needed, E-Intra-Area-Prefix-LSA ([I-D.ietf-ospf-ospfv3-lsa-extend]) 1154 is used. If autonomous system flooding scope is needed, E-AS- 1155 External-LSA ([I-D.ietf-ospf-ospfv3-lsa-extend]) is used. 1157 When a Prefix-SID is advertised by the Mapping Server, which is 1158 indicated by the M-flag in the Prefix-SID Sub-TLV (Section 5), the 1159 route type as implied by the LSA type is ignored and the Prefix-SID 1160 is bound to the corresponding prefix independent of the route type. 1162 Advertisement of the Prefix-SID by the Mapping Server using Inter- 1163 Area Prefix TLV, External-Prefix TLV or Intra-Area-Prefix TLV 1164 ([I-D.ietf-ospf-ospfv3-lsa-extend]) does not itself contribute to the 1165 prefix reachability. The NU-bit MUST be set in the PrefixOptions 1166 field of the LSA which is used by the Mapping Server to advertise SID 1167 or SID range, which prevents the advertisement to contribute to 1168 prefix reachability. 1170 SR Mapping Server MUST use OSPF Extended Prefix Range TLV when 1171 advertising SIDs for prefixes. Prefixes of different route-types can 1172 be combined in a single OSPF Extended Prefix Range TLV advertised by 1173 the SR Mapping Server. 1175 Area scoped OSPF Extended Prefix Range TLV are propagated between 1176 areas. Similar to propagation of prefixes between areas, ABR only 1177 propagates the OSPF Extended Prefix Range TLV that it considers to be 1178 the best from the set it received. The rules used to pick the best 1179 OSPF Extended Prefix Range TLV is described in Section 4. 1181 When propagating OSPF Extended Prefix Range TLV between areas, ABR 1182 MUST set the IA-Flag, that is used to prevent redundant flooding of 1183 the OSPF Extended Prefix Range TLV between areas as described in 1184 Section 4. 1186 If the Prefix-SID that is advertised in Prefix SID Sub-TLV is also 1187 covered by the OSPF Extended Prefix Range TLV, the Prefix-SID 1188 advertised in Prefix SID Sub-TLV MUST be preferred. 1190 8.2. Inter-area Segment routing in OSPFv3 1192 In order to support SR in a multi-area environment, OSPFv3 must 1193 propagate Prefix-SID information between areas. The following 1194 procedure is used in order to propagate Prefix SIDs between areas. 1196 When an OSPFv3 ABR advertises a Inter-Area-Prefix-LSA from an intra- 1197 area prefix to all its connected areas, it will also include Prefix- 1198 SID Sub-TLV, as described in Section 5. The Prefix-SID value will be 1199 set as follows: 1201 The ABR will look at its best path to the prefix in the source 1202 area and find out the advertising router associated with the best 1203 path to that prefix. 1205 The ABR will then determine if such router advertised a Prefix-SID 1206 for the prefix and use it when advertising the Prefix-SID to other 1207 connected areas. 1209 If no Prefix-SID was advertised for the prefix in the source area 1210 by the router that contributes to the best path to the prefix, the 1211 originating ABR will use the Prefix-SID advertised by any other 1212 router (e.g.: a Prefix-SID coming from an SR Mapping Server as 1213 defined in [I-D.filsfils-spring-segment-routing-ldp-interop]) when 1214 propagating Prefix-SID for the prefix to other areas. 1216 When an OSPFv3 ABR advertises Inter-Area-Prefix-LSA LSAs from an 1217 inter-area route to all its connected areas it will also include 1218 Prefix-SID Sub-TLV, as described in Section 5. The Prefix-SID value 1219 will be set as follows: 1221 The ABR will look at its best path to the prefix in the source 1222 area and find out the advertising router associated with the best 1223 path to that prefix. 1225 The ABR will then look if such router advertised a Prefix-SID for 1226 the prefix and use it when advertising the Prefix-SID to other 1227 connected areas. 1229 If no Prefix-SID was advertised for the prefix in the source area 1230 by the ABR that contributes to the best path to the prefix, the 1231 originating ABR will use the Prefix-SID advertised by any other 1232 router (e.g.: a Prefix-SID coming from an SR Mapping Server as 1233 defined in [I-D.filsfils-spring-segment-routing-ldp-interop]) when 1234 propagating Prefix-SID for the prefix to other areas. 1236 8.3. SID for External Prefixes 1238 AS-External-LSAs are flooded domain wide. When an ASBR, which 1239 supports SR, generates E-AS-External-LSA, it should also include 1240 Prefix-SID Sub-TLV, as described in Section 5. The Prefix-SID value 1241 will be set to the SID that has been reserved for that prefix. 1243 When an NSSA ASBR translates an E-NSSA-LSA into an E-AS-External-LSA, 1244 it should also advertise the Prefix-SID for the prefix. The NSSA ABR 1245 determines its best path to the prefix advertised in the translated 1246 E-NSSA-LSA and finds the advertising router associated with that 1247 path. If the advertising router has advertised a Prefix-SID for the 1248 prefix, then the NSSA ABR uses it when advertising the Prefix-SID in 1249 the E-AS-External-LSA. Otherwise the Prefix-SID advertised by any 1250 other router will be used (e.g.: a Prefix-SID coming from an SR 1251 Mapping Server as defined in 1252 [I-D.filsfils-spring-segment-routing-ldp-interop]). 1254 8.4. Advertisement of Adj-SID 1256 The Adjacency Segment Routing Identifier (Adj-SID) is advertised 1257 using the Adj-SID Sub-TLV as described in Section 7. 1259 8.4.1. Advertisement of Adj-SID on Point-to-Point Links 1261 An Adj-SID MAY be advertised for any adjacency on p2p link that is in 1262 a state 2-Way or higher. If the adjacency on a p2p link transitions 1263 from the FULL state, then the Adj-SID for that adjacency MAY be 1264 removed from the area. If the adjacency transitions to a state lower 1265 then 2-Way, then the Adj-SID advertisement MUST be removed from the 1266 area. 1268 8.4.2. Adjacency SID on Broadcast or NBMA Interfaces 1270 Broadcast or NBMA networks in OSPFv3 are represented by a star 1271 topology where the Designated Router (DR) is the central point to 1272 which all other routers on the broadcast or NBMA network connect. As 1273 a result, routers on the broadcast or NBMA network advertise only 1274 their adjacency to the DR. Routers that do not act as DR do not form 1275 or advertise adjacencies with each other. They do, however, maintain 1276 a 2-Way adjacency state with each other and are directly reachable. 1278 When Segment Routing is used, each router on the broadcast or NBMA 1279 network MAY advertise the Adj-SID for its adjacency to the DR using 1280 Adj-SID Sub-TLV as described in Section 7.1. 1282 SR capable routers MAY also advertise an Adj-SID for other neighbors 1283 (e.g. BDR, DR-OTHER) on the broadcast or NBMA network using the LAN 1284 ADJ-SID Sub-TLV as described in Section 7.2. 1286 9. IANA Considerations 1288 This specification updates several existing OSPF registries. 1290 9.1. OSPF Router Information (RI) TLVs Registry 1292 o 8 (IANA Preallocated) - SR-Algorithm TLV 1294 o 9 (IANA Preallocated) - SID/Label Range TLV 1296 9.2. OSPFv3 Extend-LSA TLV Registry 1298 Following values are allocated: 1300 o suggested value 9 - OSPF Extended Prefix Range TLV 1302 9.3. OSPFv3 Extend-LSA Sub-TLV registry 1304 o suggested value 3 - SID/Label Sub-TLV 1306 o suggested value 4 - Prefix SID Sub-TLV 1308 o suggested value 5 - Adj-SID Sub-TLV 1310 o suggested value 6 - LAN Adj-SID Sub-TLV 1312 o suggested value 7 - SID/Label Binding Sub-TLV 1314 o suggested value 8 - ERO Metric Sub-TLV 1316 o suggested value 9 - IPv4 ERO Sub-TLV 1318 o suggested value 10 - IPv6 ERO Sub-TLV 1320 o suggested value 11 - Unnumbered Interface ID ERO Sub-TLV 1322 o suggested value 12 - IPv4 Backup ERO Sub-TLV 1324 o suggested value 13 - IPv6 Backup ERO Sub-TLV 1326 o suggested value 14 - Unnumbered Interface ID Backup ERO Sub-TLV 1328 10. Security Considerations 1330 Implementations must assure that malformed permutations of the newly 1331 defined sub-TLvs do not result in errors which cause hard OSPFv3 1332 failures. 1334 11. Acknowledgements 1336 Thanks to Acee Lindem for the detail review of the draft, 1337 corrections, as well as discussion about details of the encoding. 1339 We would like to thank Anton Smirnov for his contribution. 1341 Many thanks to Yakov Rekhter, John Drake and Shraddha Hedge for their 1342 contribution on earlier incarnations of the "Binding / MPLS Label 1343 TLV" in [I-D.gredler-ospf-label-advertisement]. 1345 12. References 1347 12.1. Normative References 1349 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1350 Requirement Levels", BCP 14, RFC 2119, March 1997. 1352 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1353 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1354 Tunnels", RFC 3209, December 2001. 1356 [RFC3477] Kompella, K. and Y. Rekhter, "Signalling Unnumbered Links 1357 in Resource ReSerVation Protocol - Traffic Engineering 1358 (RSVP-TE)", RFC 3477, January 2003. 1360 [RFC4970] Lindem, A., Shen, N., Vasseur, JP., Aggarwal, R., and S. 1361 Shaffer, "Extensions to OSPF for Advertising Optional 1362 Router Capabilities", RFC 4970, July 2007. 1364 12.2. Informative References 1366 [I-D.filsfils-spring-segment-routing-ldp-interop] 1367 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 1368 Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., 1369 Ytti, S., Henderickx, W., Tantsura, J., and E. Crabbe, 1370 "Segment Routing interoperability with LDP", draft- 1371 filsfils-spring-segment-routing-ldp-interop-02 (work in 1372 progress), September 2014. 1374 [I-D.filsfils-spring-segment-routing-use-cases] 1375 Filsfils, C., Francois, P., Previdi, S., Decraene, B., 1376 Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., 1377 Ytti, S., Henderickx, W., Tantsura, J., Kini, S., and E. 1378 Crabbe, "Segment Routing Use Cases", draft-filsfils- 1379 spring-segment-routing-use-cases-01 (work in progress), 1380 October 2014. 1382 [I-D.gredler-ospf-label-advertisement] 1383 Gredler, H., Amante, S., Scholl, T., and L. Jalil, 1384 "Advertising MPLS labels in OSPF", draft-gredler-ospf- 1385 label-advertisement-03 (work in progress), May 2013. 1387 [I-D.ietf-ospf-ospfv3-lsa-extend] 1388 Lindem, A., Mirtorabi, S., Roy, A., and F. Baker, "OSPFv3 1389 LSA Extendibility", draft-ietf-ospf-ospfv3-lsa-extend-06 1390 (work in progress), February 2015. 1392 [I-D.ietf-spring-segment-routing] 1393 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 1394 Litkowski, S., Horneffer, M., Shakir, R., Tantsura, J., 1395 and E. Crabbe, "Segment Routing Architecture", draft-ietf- 1396 spring-segment-routing-01 (work in progress), February 1397 2015. 1399 [I-D.minto-rsvp-lsp-egress-fast-protection] 1400 Jeganathan, J., Gredler, H., and Y. Shen, "RSVP-TE LSP 1401 egress fast-protection", draft-minto-rsvp-lsp-egress-fast- 1402 protection-03 (work in progress), November 2013. 1404 Authors' Addresses 1406 Peter Psenak (editor) 1407 Cisco Systems, Inc. 1408 Apollo Business Center 1409 Mlynske nivy 43 1410 Bratislava 821 09 1411 Slovakia 1413 Email: ppsenak@cisco.com 1415 Stefano Previdi (editor) 1416 Cisco Systems, Inc. 1417 Via Del Serafico, 200 1418 Rome 00142 1419 Italy 1421 Email: sprevidi@cisco.com 1422 Clarence Filsfils 1423 Cisco Systems, Inc. 1424 Brussels 1425 Belgium 1427 Email: cfilsfil@cisco.com 1429 Hannes Gredler 1430 Juniper Networks, Inc. 1431 1194 N. Mathilda Ave. 1432 Sunnyvale, CA 94089 1433 US 1435 Email: hannes@juniper.net 1437 Rob Shakir 1438 British Telecom 1439 London 1440 UK 1442 Email: rob.shakir@bt.com 1444 Wim Henderickx 1445 Alcatel-Lucent 1446 Copernicuslaan 50 1447 Antwerp 2018 1448 BE 1450 Email: wim.henderickx@alcatel-lucent.com 1452 Jeff Tantsura 1453 Ericsson 1454 300 Holger Way 1455 San Jose, CA 95134 1456 US 1458 Email: Jeff.Tantsura@ericsson.com