idnits 2.17.1 draft-ietf-ospf-ospfv3-segment-routing-extensions-01.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 13, 2015) is 3359 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-05 == 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 17, 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 13, 2015 16 OSPFv3 Extensions for Segment Routing 17 draft-ietf-ospf-ospfv3-segment-routing-extensions-01 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 17, 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 418 0 1 2 3 4 5 6 7 419 +-+-+-+-+-+-+-+-+ 420 |N|P|M|E|V|L| | 421 +-+-+-+-+-+-+-+-+ 423 where: 425 N-Flag: Node-SID flag. If set, then the Prefix-SID refers to 426 the router identified by the prefix. Typically, the N-Flag is 427 set to Prefix-SIDs corresponding to a router loopback address. 428 The N-Flag is set when the Prefix-SID is a Node-SID as 429 described in section 2 of [I-D.ietf-spring-segment-routing]. 431 NP-Flag: No-PHP flag. If set, then the penultimate hop MUST 432 NOT pop the Prefix-SID before delivering the packet to the node 433 that advertised the Prefix-SID. 435 M-Flag: Mapping Server Flag. If set, the SID is advertised 436 from the Segment Routing Mapping Server functionality as 437 described in [I-D.filsfils-spring-segment-routing-ldp-interop]. 439 E-Flag: Explicit-Null Flag. If set, any upstream neighbor of 440 the Prefix-SID originator MUST replace the Prefix-SID with a 441 Prefix-SID having an Explicit-NULL value (0 for IPv4) before 442 forwarding the packet. 444 The V-Flag: Value/Index Flag. If set, then the Prefix-SID 445 carries an absolute value. If not set, then the Prefix-SID 446 carries an index. 448 The L-Flag: Local/Global Flag. If set, then the value/index 449 carried by the Prefix-SID has local significance. If not set, 450 then the value/index carried by this Sub-TLV has global 451 significance. 453 Other bits: Reserved. These MUST be zero when sent and are 454 ignored when received. 456 Algorithm: one octet identifying the algorithm the Prefix-SID is 457 associated with as defined in Section 3.1. 459 SID/Index/Label: label or index value depending on the V-bit 460 setting. 462 Examples: 464 A 32 bit global index defining the offset in the SID/Label 465 space advertised by this router - in this case the V and L 466 flags MUST NOT be set. 468 A 24 bit local label where the 20 rightmost bits are used 469 for encoding the label value - in this case the V and L 470 flags MUST be set. 472 If multiple Prefix-SIDs are advertised for the same prefix, the 473 receiving router MUST use the first encoded SID and MAY use the 474 subsequent SIDs. 476 When propagating Prefix-SIDs between areas, if multiple prefix-SIDs 477 are advertised for a prefix, an implementation SHOULD preserve the 478 original order when advertising prefix-SIDs to other areas. This 479 allows implementations that only support a single Prefix-SID to have 480 a consistent view across areas. 482 When calculating the outgoing label for the prefix, the router MUST 483 take into account E and P flags advertised by the next-hop router, if 484 next-hop router advertised the SID for the prefix. This MUST be done 485 regardless of whether the next-hop router contributes to the best 486 path to the prefix. 488 The NP-Flag (No-PHP) MUST be set for Prefix-SIDs allocated to inter- 489 area prefixes that are originated by the ABR based on intra-area or 490 inter-area reachability between areas. When the inter-area prefix is 491 generated based on a prefix which is directly attached to the ABR, 492 NP-Flag SHOULD NOT be set 493 The NP-Flag (No-PHP) MUST be set on the Prefix-SIDs allocated to 494 redistributed prefixes, unless the redistributed prefix is directly 495 attached to ASBR, in which case the NP-Flag SHOULD NOT be set. 497 If the NP-Flag is not set then any upstream neighbor of the Prefix- 498 SID originator MUST pop the Prefix-SID. This is equivalent to the 499 penultimate hop popping mechanism used in the MPLS dataplane. In 500 such case, MPLS EXP bits of the Prefix-SID are not preserved for the 501 final destination (the Prefix-SID being removed). If the NP-Flag is 502 clear then the received E-flag is ignored. 504 If the NP-Flag is set then: 506 If the E-flag is not set then any upstream neighbor of the Prefix- 507 SID originator MUST keep the Prefix-SID on top of the stack. This 508 is useful when the originator of the Prefix-SID must stitch the 509 incoming packet into a continuing MPLS LSP to the final 510 destination. This could occur at an inter-area border router 511 (prefix propagation from one area to another) or at an inter- 512 domain border router (prefix propagation from one domain to 513 another). 515 If the E-flag is set then any upstream neighbor of the Prefix-SID 516 originator MUST replace the Prefix-SID with a Prefix-SID having an 517 Explicit-NULL value. This is useful, e.g., when the originator of 518 the Prefix-SID is the final destination for the related prefix and 519 the originator wishes to receive the packet with the original EXP 520 bits. 522 When M-Flag is set, NP-Flag MUST be set and E-bit MUST NOT be set. 524 When a Prefix-SID is advertised in an Extended Prefix Range TLV, then 525 the value advertised in Prefix SID Sub-TLV is interpreted as a 526 starting SID value. 528 Example 1: if the following router addresses (loopback addresses) 529 need to be mapped into the corresponding Prefix SID indexes: 531 Router-A: 192::1/128, Prefix-SID: Index 1 532 Router-B: 192::2/128, Prefix-SID: Index 2 533 Router-C: 192::3/128, Prefix-SID: Index 3 534 Router-D: 192::4/128, Prefix-SID: Index 4 536 then the Address Prefix field in the OSPFv3 Extended Prefix Range TLV 537 is set to 192::1, Prefix Length would be set to 128, Range Size would 538 be set to 4 and the Index value in the Prefix-SID Sub-TLV would be 539 set to 1. 541 Example 2: If the following prefixes need to be mapped into the 542 corresponding Prefix-SID indexes: 544 10:1:1::0/120, Prefix-SID: Index 51 545 10:1:1::100/120, Prefix-SID: Index 52 546 10:1:1::200/120, Prefix-SID: Index 53 547 10:1:1::300/120, Prefix-SID: Index 54 548 10:1:1::400/120, Prefix-SID: Index 55 549 10:1:1::500/120, Prefix-SID: Index 56 550 10:1:1::600/120, Prefix-SID: Index 57 552 then the Address Prefix field in the OSPFv3 Extended Prefix Range TLV 553 is set to 10:1:1::0, Prefix Length would be set to 120, Range Size 554 would be set to 7 and the Index value in the Prefix-SID Sub-TLV would 555 be set to 51. 557 6. SID/Label Binding Sub-TLV 559 The SID/Label Binding Sub-TLV is used to advertise SID/Label mapping 560 for a path to the prefix. 562 The SID/Label Binding TLV MAY be originated by any router in an 563 OSPFv3 domain. The router may advertise a SID/Label binding to a FEC 564 along with at least a single 'nexthop style' anchor. The protocol 565 supports more than one 'nexthop style' anchor to be attached to a 566 SID/Label binding, which results into a simple path description 567 language. In analogy to RSVP the terminology for this is called an 568 'Explicit Route Object' (ERO). Since ERO style path notation allows 569 anchoring SID/label bindings to both link and node IP addresses, any 570 Label Switched Path (LSP) can be described. Furthermore, SID/Label 571 Bindings from external protocols can also be re-advertised. 573 The SID/Label Binding TLV may be used for advertising SID/Label 574 Bindings and their associated Primary and Backup paths. In one 575 single TLV, either a primary ERO Path, backup ERO Path, or both are 576 advertised. If a router wants to advertise multiple parallel paths, 577 then it can generate several TLVs for the same Prefix/FEC. Each 578 occurrence of a Binding TLV for a given FEC Prefix will add a new 579 path. 581 SID/Label Binding Sub-TLV is a Sub-TLV of the following OSPFv3 TLVs, 582 as defined in [I-D.ietf-ospf-ospfv3-lsa-extend] and in Section 4: 584 Intra-Area Prefix TLV 586 Inter-Area Prefix TLV 588 External Prefix TLV 589 OSPFv3 Extended Prefix Range TLV 591 Multiple SID/Label Binding Sub-TLVs can be present in these TLVs. 592 The SID/Label Binding Sub-TLV has following format: 594 0 1 2 3 595 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 596 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 597 | Type | Length | 598 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 599 | Flags | Weight | Reserved | 600 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 601 | Sub-TLVs (variable) | 602 +- -+ 603 | | 605 where: 607 Type: TBD, suggested value 7 609 Length: variable 611 Flags: 1 octet field of following flags: 613 0 1 2 3 4 5 6 7 614 +-+-+-+-+-+-+-+-+ 615 |M| | 616 +-+-+-+-+-+-+-+-+ 618 where: 620 M-bit - When the bit is set the binding represents the 621 mirroring context as defined in 622 [I-D.minto-rsvp-lsp-egress-fast-protection]. 624 Weight: weight used for load-balancing purposes. The use of the 625 weight is defined in section 3.5.1 of 626 [I-D.ietf-spring-segment-routing]. 628 SID/Label Binding Sub-TLV currently supports following Sub-TLVs: 630 SID/Label Sub-TLV as described in Section 2.1. This Sub-TLV MUST 631 appear in the SID/Label Binding Sub-TLV and it MUST only appear 632 once. 634 ERO Metric Sub-TLV as defined in Section 6.1. 636 ERO Sub-TLVs as defined in Section 6.2. 638 6.1. ERO Metric Sub-TLV 640 The ERO Metric Sub-TLV is a Sub-TLV of the SID/Label Binding TLV. 642 The ERO Metric Sub-TLV advertises the cost of an ERO path. It is 643 used to compare the cost of a given source/destination path. A 644 router SHOULD advertise the ERO Metric Sub-TLV in an advertised ERO 645 TLV. The cost of the ERO Metric Sub-TLV SHOULD be set to the 646 cumulative IGP or TE path cost of the advertised ERO. Since 647 manipulation of the Metric field may attract or repel traffic to and 648 from the advertised segment, it MAY be manually overridden. 650 0 1 2 3 651 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 652 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 653 | Type | Length | 654 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 655 | Metric (4 octets) | 656 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 658 ERO Metric Sub-TLV format 660 where: 662 Type: TBD, suggested value 8 664 Length: Always 4 666 Metric: A 4 octet metric representing the aggregate IGP or TE path 667 cost. 669 6.2. ERO Sub-TLVs 671 All 'ERO' information represents an ordered set which describes the 672 segments of a path. The first ERO Sub-TLV describes the first 673 segment of a path. Similiarly, the last ERO Sub-TLV describes the 674 segment closest to the egress point. If a router extends or stitches 675 a path, it MUST prepend the new segment's path information to the ERO 676 list. This applies equally to advertised backup EROs. 678 All ERO Sub-TLVs must immediately follow the (SID)/Label Sub-TLV. 680 All Backup ERO Sub-TLVs must immediately follow the last ERO Sub-TLV. 682 6.2.1. IPv4 ERO Sub-TLV 684 IPv4 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 686 The IPv4 ERO Sub-TLV describes a path segment using IPv4 Address 687 style of encoding. Its semantics have been borrowed from [RFC3209]. 689 0 1 2 3 690 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 691 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 692 | Type | Length | 693 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 694 | Flags | Reserved | 695 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 696 | IPv4 Address (4 octets) | 697 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 699 IPv4 ERO Sub-TLV format 701 where: 703 Type: TBD, suggested value 9 705 Length: 8 bytes 707 Flags: 1 octet field of following flags: 709 0 1 2 3 4 5 6 7 710 +-+-+-+-+-+-+-+-+ 711 |L| | 712 +-+-+-+-+-+-+-+-+ 714 where: 716 L-bit - If the L-bit is set, then the segment path is 717 designated as 'loose'. Otherwise, the segment path is 718 designated as 'strict'. 720 IPv4 Address - the address of the explicit route hop. 722 6.2.2. IPv6 ERO Sub-TLV 724 IPv6 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 726 The IPv6 ERO Sub-TLV (Type TBA) describes a path segment using IPv6 727 Address style of encoding. Its semantics have been borrowed from 728 [RFC3209]. 730 0 1 2 3 731 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 732 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 733 | Type | Length | 734 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 735 | Flags | Reserved | 736 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 737 | | 738 +- -+ 739 | | 740 +- IPv6 Address -+ 741 | | 742 +- -+ 743 | | 744 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 746 IPv6 ERO Sub-TLV format 748 where: 750 Type: TBD, suggested value 10 752 Length: 8 bytes 754 Flags: 1 octet field of following flags: 756 0 1 2 3 4 5 6 7 757 +-+-+-+-+-+-+-+-+ 758 |L| | 759 +-+-+-+-+-+-+-+-+ 761 where: 763 L-bit - If the L-bit is set, then the segment path is 764 designated as 'loose'. Otherwise, the segment path is 765 designated as 'strict'. 767 IPv6 Address - the address of the explicit route hop. 769 6.2.3. Unnumbered Interface ID ERO Sub-TLV 771 The Unnumbered Interface ID ERO Sub-TLV is a Sub-TLV of the SID/Label 772 Binding Sub-TLV. 774 The appearance and semantics of the 'Unnumbered Interface ID' have 775 been borrowed from [RFC3477]. 777 The Unnumbered Interface-ID ERO Sub-TLV describes a path segment that 778 spans over an unnumbered interface. Unnumbered interfaces are 779 referenced using the interface index. Interface indices are assigned 780 local to the router and therefore not unique within a domain. All 781 elements in an ERO path need to be unique within a domain and hence 782 need to be disambiguated using a domain unique Router-ID. 784 0 1 2 3 785 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 786 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 787 | Type | Length | 788 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 789 | Flags | Reserved | 790 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 791 | Router ID | 792 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 793 | Interface ID | 794 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 796 where: 798 Unnumbered Interface ID ERO Sub-TLV format 800 Type: TBD, suggested value 11 802 Length: 12 bytes 804 Flags: 1 octet field of following flags: 806 0 1 2 3 4 5 6 7 807 +-+-+-+-+-+-+-+-+ 808 |L| | 809 +-+-+-+-+-+-+-+-+ 811 where: 813 L-bit - If the L-bit is set, then the segment path is 814 designated as 'loose'. Otherwise, the segment path is 815 designated as 'strict'. 817 Router-ID: Router-ID of the next-hop. 819 Interface ID: is the identifier assigned to the link by the router 820 specified by the Router-ID. 822 6.2.4. IPv4 Backup ERO Sub-TLV 824 IPv4 Prefix Backup ERO Sub-TLV is a Sub-TLV of the SID/Label Binding 825 Sub-TLV. 827 The IPv4 Backup ERO Sub-TLV describes a path segment using IPv4 828 Address style of encoding. Its semantics have been borrowed from 829 [RFC3209]. 831 0 1 2 3 832 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 833 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 834 | Type | Length | 835 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 836 | Flags | Reserved | 837 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 838 | IPv4 Address (4 octets) | 839 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 841 IPv4 Backup ERO Sub-TLV format 843 where: 845 Type: TBD, suggested value 12 847 Length: 8 bytes 849 Flags: 1 octet field of following flags: 851 0 1 2 3 4 5 6 7 852 +-+-+-+-+-+-+-+-+ 853 |L| | 854 +-+-+-+-+-+-+-+-+ 856 where: 858 L-bit - If the L-bit is set, then the segment path is 859 designated as 'loose'. Otherwise, the segment path is 860 designated as 'strict'.' 862 IPv4 Address - the address of the explicit route hop. 864 6.2.5. IPv6 Backup ERO Sub-TLV 866 The IPv6 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 868 The IPv6 Backup ERO Sub-TLV describes a Backup path segment using 869 IPv6 Address style of encoding. Its appearance and semantics have 870 been borrowed from [RFC3209]. 872 The 'L' bit in the Flags is a one-bit attribute. If the L bit is 873 set, then the value of the attribute is 'loose.' Otherwise, the 874 value of the attribute is 'strict.' 876 0 1 2 3 877 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 878 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 879 | Type | Length | 880 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 881 | Flags | Reserved | 882 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 883 | | 884 +- -+ 885 | | 886 +- IPv6 Address -+ 887 | | 888 +- -+ 889 | | 890 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 892 IPv6 Backup ERO Sub-TLV format 894 where: 896 Type: TBD, suggested value 13 898 Length: 8 bytes 900 Flags: 1 octet field of following flags: 902 0 1 2 3 4 5 6 7 903 +-+-+-+-+-+-+-+-+ 904 |L| | 905 +-+-+-+-+-+-+-+-+ 907 where: 909 L-bit - If the L-bit is set, then the segment path is 910 designated as 'loose'. Otherwise, the segment path is 911 designated as 'strict'. 913 IPv6 Address - the address of the explicit route hop. 915 6.2.6. Unnumbered Interface ID Backup ERO Sub-TLV 917 The Unnumbered Interface ID Backup Sub-TLV is a Sub-TLV of the SID/ 918 Label Binding Sub-TLV. 920 The appearance and semantics of the 'Unnumbered Interface ID' have 921 been borrowed from [RFC3477]. 923 The Unnumbered Interface-ID Backup ERO Sub-TLV describes a path 924 segment that spans over an unnumbered interface. Unnumbered 925 interfaces are referenced using the interface index. Interface 926 indices are assigned local to the router and are therefore not unique 927 within a domain. All elements in an ERO path need to be unique 928 within a domain and hence need to be disambiguated with specification 929 of the unique Router-ID. 931 0 1 2 3 932 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 933 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 934 | Type | Length | 935 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 936 | Flags | Reserved | 937 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 938 | Router ID | 939 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 940 | Interface ID | 941 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 943 Unnumbered Interface ID Backup ERO Sub-TLV format 945 where: 947 Type: TBD, suggested value 14 949 Length: 12 bytes 951 Flags: 1 octet field of following flags: 953 0 1 2 3 4 5 6 7 954 +-+-+-+-+-+-+-+-+ 955 |L| | 956 +-+-+-+-+-+-+-+-+ 958 where: 960 L-bit - If the L-bit is set, then the segment path is 961 designated as 'loose'. Otherwise, the segment path is 962 designated as 'strict'. 964 Router-ID: Router-ID of the next-hop. 966 Interface ID: is the identifier assigned to the link by the router 967 specified by the Router-ID. 969 7. Adjacency Segment Identifier (Adj-SID) 971 An Adjacency Segment Identifier (Adj-SID) represents a router 972 adjacency in Segment Routing. 974 7.1. Adj-SID Sub-TLV 976 The extended OSPFv3 LSAs, as defined in 977 [I-D.ietf-ospf-ospfv3-lsa-extend], are used to advertise prefix SID 978 in OSPFv3 980 The Adj-SID Sub-TLV is an optional Sub-TLV of the Router-Link TLV as 981 defined in [I-D.ietf-ospf-ospfv3-lsa-extend]. It MAY appear multiple 982 times in Router-Link TLV. Examples where more than one Adj-SID may 983 be used per neighbor are described in section 4 of 984 [I-D.filsfils-spring-segment-routing-use-cases]. The Adj-SID Sub-TLV 985 has the following format: 987 0 1 2 3 988 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 989 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 990 | Type | Length | 991 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 992 | Flags | Weight | Reserved | 993 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 994 | SID/Label/Index (variable) | 995 +---------------------------------------------------------------+ 997 where: 999 Type: TBD, suggested value 5. 1001 Length: variable. 1003 Flags. 1 octet field of following flags: 1005 0 1 2 3 4 5 6 7 1006 +-+-+-+-+-+-+-+-+ 1007 |B|V|L|S| | 1008 +-+-+-+-+-+-+-+-+ 1010 where: 1012 B-Flag: Backup-flag. If set, the Adj-SID refers to an 1013 adjacency being protected (e.g.: using IPFRR or MPLS-FRR) as 1014 described in section 3.1 of 1015 [I-D.filsfils-spring-segment-routing-use-cases]. 1017 The V-Flag: Value/Index Flag. If set, then the Adj-SID carries 1018 an absolute value. If not set, then the Adj-SID carries an 1019 index. 1021 The L-Flag: Local/Global Flag. If set, then the value/index 1022 carried by the Adj-SID has local significance. If not set, 1023 then the value/index carried by this Sub-TLV has global 1024 significance. 1026 The S-Flag. Set Flag. When set, the S-Flag indicates that the 1027 Adj-SID refers to a set of adjacencies (and therefore MAY be 1028 assigned to other adjacencies as well). 1030 Other bits: Reserved. These MUST be zero when sent and are 1031 ignored when received. 1033 Weight: weight used for load-balancing purposes. The use of the 1034 weight is defined in section 3.5.1 of 1035 [I-D.ietf-spring-segment-routing]. 1037 SID/Index/Label: label or index value depending on the V-bit 1038 setting. 1040 Examples: 1042 A 32 bit global index defining the offset in the SID/Label 1043 space advertised by this router - in this case the V and L 1044 flags MUST NOT be set. 1046 A 24 bit local label where the 20 rightmost bits are used 1047 for encoding the label value - in this case the V and L 1048 flags MUST be set. 1050 16 octet IPv6 address - in this case the V-flag MUST be set. 1051 The L-flag MUST be set for link-local IPv6 address and MUST 1052 NOT be set for IPv6 global unicast address. 1054 An SR capable router MAY allocate an Adj-SID for each of its 1055 adjacencies and set the B-Flag when the adjacency is protected by a 1056 FRR mechanism (IP or MPLS) as described in section 3.1 of 1057 [I-D.filsfils-spring-segment-routing-use-cases]. 1059 7.2. LAN Adj-SID Sub-TLV 1061 The LAN Adj-SID is an optional Sub-TLV of the Router-Link TLV. It 1062 MAY appear multiple times in the Router-Link TLV. It is used to 1063 advertise a SID/Label for an adjacency to a non-DR neighbor on a 1064 broadcast or NBMA network. 1066 0 1 2 3 1067 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 1068 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1069 | Type | Length | 1070 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1071 | Flags | Weight | Reserved | 1072 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1073 | Neighbor ID | 1074 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1075 | SID/Label/Index (variable) | 1076 +---------------------------------------------------------------+ 1078 where: 1080 Type: TBD, suggested value 6. 1082 Length: variable. 1084 Flags. 1 octet field of following flags: 1086 0 1 2 3 4 5 6 7 1087 +-+-+-+-+-+-+-+-+ 1088 |B|V|L|S| | 1089 +-+-+-+-+-+-+-+-+ 1091 where: 1093 B-Flag: Backup-flag: set if the LAN-Adj-SID refer to an 1094 adjacency being protected (e.g.: using IPFRR or MPLS-FRR) as 1095 described in section 3.1 of 1096 [I-D.filsfils-spring-segment-routing-use-cases]. 1098 The V-Flag: Value/Index Flag. If set, then the LAN Adj-SID 1099 carries an absolute value. If not set, then the LAN Adj-SID 1100 carries an index. 1102 The L-Flag: Local/Global Flag. If set, then the value/index 1103 carried by the LAN Adj-SID has local significance. If not set, 1104 then the value/index carried by this subTLV has global 1105 significance. 1107 The S-Flag. Set Flag. When set, the S-Flag indicates that the 1108 LAN Adj-SID refers to a set of adjacencies (and therefore MAY 1109 be assigned to other adjacencies as well). 1111 Other bits: Reserved. These MUST be zero when sent and are 1112 ignored when received. 1114 Weight: weight used for load-balancing purposes. The use of the 1115 weight is defined in section 3.5.1 of 1116 [I-D.ietf-spring-segment-routing]. 1118 SID/Index/Label: label or index value depending on the V-bit 1119 setting. 1121 Examples: 1123 A 32 bit global index defining the offset in the SID/Label 1124 space advertised by this router - in this case the V and L 1125 flags MUST NOT be set. 1127 A 24 bit local label where the 20 rightmost bits are used 1128 for encoding the label value - in this case the V and L 1129 flags MUST be set. 1131 16 octet IPv6 address - in this case the V-flag MUST be set. 1132 The L-flag MUST be set for link-local IPv6 address and MUST 1133 NOT be set for IPv6 global unicast address. 1135 8. Elements of Procedure 1137 8.1. Intra-area Segment routing in OSPFv3 1139 An OSPFv3 router that supports segment routing MAY advertise Prefix- 1140 SIDs for any prefix that it is advertising reachability for (e.g., 1141 loopback IP address) as described in Section 5. 1143 If multiple routers advertise a Prefix-SID for the same prefix, then 1144 the Prefix-SID MUST be the same. This is required in order to allow 1145 traffic load-balancing when multiple equal cost paths to the 1146 destination exist in the network. 1148 The Prefix-SID can also be advertised by the SR Mapping Servers (as 1149 described in [I-D.filsfils-spring-segment-routing-ldp-interop]). The 1150 Mapping Server advertises Prefix-SID for remote prefixes that exist 1151 in the network. Multiple Mapping Servers can advertise Prefix-SID 1152 for the same prefix, in which case the same Prefix-SID MUST be 1153 advertised by all of them. The SR Mapping Server could use either 1154 area scope or autonomous system flooding scope when advertising 1155 Prefix SID for prefixes, based on the configuration of the SR Mapping 1156 Server. Depending on the flooding scope used, the SR Mapping Server 1157 chooses the LSA that will be used. If the area flooding scope is 1158 needed, E-Intra-Area-Prefix-LSA ([I-D.ietf-ospf-ospfv3-lsa-extend]) 1159 is used. If autonomous system flooding scope is needed, E-AS- 1160 External-LSA ([I-D.ietf-ospf-ospfv3-lsa-extend]) is used. 1162 When a Prefix-SID is advertised by the Mapping Server, which is 1163 indicated by the M-flag in the Prefix-SID Sub-TLV (Section 5), the 1164 route type as implied by the LSA type is ignored and the Prefix-SID 1165 is bound to the corresponding prefix independent of the route type. 1167 Advertisement of the Prefix-SID by the Mapping Server using Inter- 1168 Area Prefix TLV, External-Prefix TLV or Intra-Area-Prefix TLV 1169 ([I-D.ietf-ospf-ospfv3-lsa-extend]) does not itself contribute to the 1170 prefix reachability. The NU-bit MUST be set in the PrefixOptions 1171 field of the LSA which is used by the Mapping Server to advertise SID 1172 or SID range, which prevents the advertisement to contribute to 1173 prefix reachability. 1175 SR Mapping Server MUST use OSPF Extended Prefix Range TLV when 1176 advertising SIDs for prefixes. Prefixes of different route-types can 1177 be combined in a single OSPF Extended Prefix Range TLV advertised by 1178 the SR Mapping Server. 1180 Area scoped OSPF Extended Prefix Range TLV are propagated between 1181 areas. Similar to propagation of prefixes between areas, ABR only 1182 propagates the OSPF Extended Prefix Range TLV that it considers to be 1183 the best from the set it received. The rules used to pick the best 1184 OSPF Extended Prefix Range TLV is described in Section 4. 1186 When propagating OSPF Extended Prefix Range TLV between areas, ABR 1187 MUST set the IA-Flag, that is used to prevent redundant flooding of 1188 the OSPF Extended Prefix Range TLV between areas as described in 1189 Section 4. 1191 If the Prefix-SID that is advertised in Prefix SID Sub-TLV is also 1192 covered by the OSPF Extended Prefix Range TLV, the Prefix-SID 1193 advertised in Prefix SID Sub-TLV MUST be preferred. 1195 8.2. Inter-area Segment routing in OSPFv3 1197 In order to support SR in a multi-area environment, OSPFv3 must 1198 propagate Prefix-SID information between areas. The following 1199 procedure is used in order to propagate Prefix SIDs between areas. 1201 When an OSPFv3 ABR advertises a Inter-Area-Prefix-LSA from an intra- 1202 area prefix to all its connected areas, it will also include Prefix- 1203 SID Sub-TLV, as described in Section 5. The Prefix-SID value will be 1204 set as follows: 1206 The ABR will look at its best path to the prefix in the source 1207 area and find out the advertising router associated with the best 1208 path to that prefix. 1210 The ABR will then determine if such router advertised a Prefix-SID 1211 for the prefix and use it when advertising the Prefix-SID to other 1212 connected areas. 1214 If no Prefix-SID was advertised for the prefix in the source area 1215 by the router that contributes to the best path to the prefix, the 1216 originating ABR will use the Prefix-SID advertised by any other 1217 router (e.g.: a Prefix-SID coming from an SR Mapping Server as 1218 defined in [I-D.filsfils-spring-segment-routing-ldp-interop]) when 1219 propagating Prefix-SID for the prefix to other areas. 1221 When an OSPFv3 ABR advertises Inter-Area-Prefix-LSA LSAs from an 1222 inter-area route to all its connected areas it will also include 1223 Prefix-SID Sub-TLV, as described in Section 5. The Prefix-SID value 1224 will be set as follows: 1226 The ABR will look at its best path to the prefix in the source 1227 area and find out the advertising router associated with the best 1228 path to that prefix. 1230 The ABR will then look if such router advertised a Prefix-SID for 1231 the prefix and use it when advertising the Prefix-SID to other 1232 connected areas. 1234 If no Prefix-SID was advertised for the prefix in the source area 1235 by the ABR that contributes to the best path to the prefix, the 1236 originating ABR will use the Prefix-SID advertised by any other 1237 router (e.g.: a Prefix-SID coming from an SR Mapping Server as 1238 defined in [I-D.filsfils-spring-segment-routing-ldp-interop]) when 1239 propagating Prefix-SID for the prefix to other areas. 1241 8.3. SID for External Prefixes 1243 AS-External-LSAs are flooded domain wide. When an ASBR, which 1244 supports SR, generates E-AS-External-LSA, it should also include 1245 Prefix-SID Sub-TLV, as described in Section 5. The Prefix-SID value 1246 will be set to the SID that has been reserved for that prefix. 1248 When an NSSA ASBR translates an E-NSSA-LSA into an E-AS-External-LSA, 1249 it should also advertise the Prefix-SID for the prefix. The NSSA ABR 1250 determines its best path to the prefix advertised in the translated 1251 E-NSSA-LSA and finds the advertising router associated with that 1252 path. If the advertising router has advertised a Prefix-SID for the 1253 prefix, then the NSSA ABR uses it when advertising the Prefix-SID in 1254 the E-AS-External-LSA. Otherwise the Prefix-SID advertised by any 1255 other router will be used (e.g.: a Prefix-SID coming from an SR 1256 Mapping Server as defined in 1257 [I-D.filsfils-spring-segment-routing-ldp-interop]). 1259 8.4. Advertisement of Adj-SID 1261 The Adjacency Segment Routing Identifier (Adj-SID) is advertised 1262 using the Adj-SID Sub-TLV as described in Section 7. 1264 8.4.1. Advertisement of Adj-SID on Point-to-Point Links 1266 An Adj-SID MAY be advertised for any adjacency on p2p link that is in 1267 a state 2-Way or higher. If the adjacency on a p2p link transitions 1268 from the FULL state, then the Adj-SID for that adjacency MAY be 1269 removed from the area. If the adjacency transitions to a state lower 1270 then 2-Way, then the Adj-SID advertisement MUST be removed from the 1271 area. 1273 8.4.2. Adjacency SID on Broadcast or NBMA Interfaces 1275 Broadcast or NBMA networks in OSPFv3 are represented by a star 1276 topology where the Designated Router (DR) is the central point to 1277 which all other routers on the broadcast or NBMA network connect. As 1278 a result, routers on the broadcast or NBMA network advertise only 1279 their adjacency to the DR. Routers that do not act as DR do not form 1280 or advertise adjacencies with each other. They do, however, maintain 1281 a 2-Way adjacency state with each other and are directly reachable. 1283 When Segment Routing is used, each router on the broadcast or NBMA 1284 network MAY advertise the Adj-SID for its adjacency to the DR using 1285 Adj-SID Sub-TLV as described in Section 7.1. 1287 SR capable routers MAY also advertise an Adj-SID for other neighbors 1288 (e.g. BDR, DR-OTHER) on the broadcast or NBMA network using the LAN 1289 ADJ-SID Sub-TLV as described in Section 7.2. 1291 9. IANA Considerations 1293 This specification updates several existing OSPF registries. 1295 9.1. OSPF Router Information (RI) TLVs Registry 1297 o 8 (IANA Preallocated) - SR-Algorithm TLV 1299 o 9 (IANA Preallocated) - SID/Label Range TLV 1301 9.2. OSPFv3 Extend-LSA TLV Registry 1303 Following values are allocated: 1305 o suggested value 9 - OSPF Extended Prefix Range TLV 1307 9.3. OSPFv3 Extend-LSA Sub-TLV registry 1309 o suggested value 3 - SID/Label Sub-TLV 1311 o suggested value 4 - Prefix SID Sub-TLV 1313 o suggested value 5 - Adj-SID Sub-TLV 1315 o suggested value 6 - LAN Adj-SID Sub-TLV 1317 o suggested value 7 - SID/Label Binding Sub-TLV 1319 o suggested value 8 - ERO Metric Sub-TLV 1321 o suggested value 9 - IPv4 ERO Sub-TLV 1323 o suggested value 10 - IPv6 ERO Sub-TLV 1325 o suggested value 11 - Unnumbered Interface ID ERO Sub-TLV 1327 o suggested value 12 - IPv4 Backup ERO Sub-TLV 1329 o suggested value 13 - IPv6 Backup ERO Sub-TLV 1331 o suggested value 14 - Unnumbered Interface ID Backup ERO Sub-TLV 1333 10. Security Considerations 1335 Implementations must assure that malformed permutations of the newly 1336 defined sub-TLvs do not result in errors which cause hard OSPFv3 1337 failures. 1339 11. Acknowledgements 1341 Thanks to Acee Lindem for the detail review of the draft, 1342 corrections, as well as discussion about details of the encoding. 1344 We would like to thank Anton Smirnov for his contribution. 1346 Many thanks to Yakov Rekhter, John Drake and Shraddha Hedge for their 1347 contribution on earlier incarnations of the "Binding / MPLS Label 1348 TLV" in [I-D.gredler-ospf-label-advertisement]. 1350 12. References 1352 12.1. Normative References 1354 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1355 Requirement Levels", BCP 14, RFC 2119, March 1997. 1357 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1358 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1359 Tunnels", RFC 3209, December 2001. 1361 [RFC3477] Kompella, K. and Y. Rekhter, "Signalling Unnumbered Links 1362 in Resource ReSerVation Protocol - Traffic Engineering 1363 (RSVP-TE)", RFC 3477, January 2003. 1365 [RFC4970] Lindem, A., Shen, N., Vasseur, JP., Aggarwal, R., and S. 1366 Shaffer, "Extensions to OSPF for Advertising Optional 1367 Router Capabilities", RFC 4970, July 2007. 1369 12.2. Informative References 1371 [I-D.filsfils-spring-segment-routing-ldp-interop] 1372 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 1373 Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., 1374 Ytti, S., Henderickx, W., Tantsura, J., and E. Crabbe, 1375 "Segment Routing interoperability with LDP", draft- 1376 filsfils-spring-segment-routing-ldp-interop-02 (work in 1377 progress), September 2014. 1379 [I-D.filsfils-spring-segment-routing-use-cases] 1380 Filsfils, C., Francois, P., Previdi, S., Decraene, B., 1381 Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., 1382 Ytti, S., Henderickx, W., Tantsura, J., Kini, S., and E. 1383 Crabbe, "Segment Routing Use Cases", draft-filsfils- 1384 spring-segment-routing-use-cases-01 (work in progress), 1385 October 2014. 1387 [I-D.gredler-ospf-label-advertisement] 1388 Gredler, H., Amante, S., Scholl, T., and L. Jalil, 1389 "Advertising MPLS labels in OSPF", draft-gredler-ospf- 1390 label-advertisement-03 (work in progress), May 2013. 1392 [I-D.ietf-ospf-ospfv3-lsa-extend] 1393 Lindem, A., Mirtorabi, S., Roy, A., and F. Baker, "OSPFv3 1394 LSA Extendibility", draft-ietf-ospf-ospfv3-lsa-extend-05 1395 (work in progress), November 2014. 1397 [I-D.ietf-spring-segment-routing] 1398 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 1399 Litkowski, S., Horneffer, M., Shakir, R., Tantsura, J., 1400 and E. Crabbe, "Segment Routing Architecture", draft-ietf- 1401 spring-segment-routing-01 (work in progress), February 1402 2015. 1404 [I-D.minto-rsvp-lsp-egress-fast-protection] 1405 Jeganathan, J., Gredler, H., and Y. Shen, "RSVP-TE LSP 1406 egress fast-protection", draft-minto-rsvp-lsp-egress-fast- 1407 protection-03 (work in progress), November 2013. 1409 Authors' Addresses 1411 Peter Psenak (editor) 1412 Cisco Systems, Inc. 1413 Apollo Business Center 1414 Mlynske nivy 43 1415 Bratislava 821 09 1416 Slovakia 1418 Email: ppsenak@cisco.com 1420 Stefano Previdi (editor) 1421 Cisco Systems, Inc. 1422 Via Del Serafico, 200 1423 Rome 00142 1424 Italy 1426 Email: sprevidi@cisco.com 1427 Clarence Filsfils 1428 Cisco Systems, Inc. 1429 Brussels 1430 Belgium 1432 Email: cfilsfil@cisco.com 1434 Hannes Gredler 1435 Juniper Networks, Inc. 1436 1194 N. Mathilda Ave. 1437 Sunnyvale, CA 94089 1438 US 1440 Email: hannes@juniper.net 1442 Rob Shakir 1443 British Telecom 1444 London 1445 UK 1447 Email: rob.shakir@bt.com 1449 Wim Henderickx 1450 Alcatel-Lucent 1451 Copernicuslaan 50 1452 Antwerp 2018 1453 BE 1455 Email: wim.henderickx@alcatel-lucent.com 1457 Jeff Tantsura 1458 Ericsson 1459 300 Holger Way 1460 San Jose, CA 95134 1461 US 1463 Email: Jeff.Tantsura@ericsson.com