idnits 2.17.1 draft-ietf-ospf-ospfv3-segment-routing-extensions-04.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 (December 22, 2015) is 3049 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 290 -- Looks like a reference, but probably isn't: '199' on line 290 -- Looks like a reference, but probably isn't: '1000' on line 291 -- Looks like a reference, but probably isn't: '1099' on line 291 -- Looks like a reference, but probably isn't: '500' on line 292 -- Looks like a reference, but probably isn't: '599' on line 292 ** 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-09 == 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: June 24, 2016 Cisco Systems, Inc. 6 H. Gredler 7 Individual 8 R. Shakir 9 Jive Communications, Inc. 10 W. Henderickx 11 Alcatel-Lucent 12 J. Tantsura 13 Ericsson 14 December 22, 2015 16 OSPFv3 Extensions for Segment Routing 17 draft-ietf-ospf-ospfv3-segment-routing-extensions-04 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 June 24, 2016. 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 3.3. SR-Forwarding Capabilities . . . . . . . . . . . . . . . 7 75 4. OSPFv3 Extended Prefix Range TLV . . . . . . . . . . . . . . 8 76 5. Prefix SID Sub-TLV . . . . . . . . . . . . . . . . . . . . . 9 77 6. SID/Label Binding Sub-TLV . . . . . . . . . . . . . . . . . . 13 78 6.1. ERO Metric Sub-TLV . . . . . . . . . . . . . . . . . . . 15 79 6.2. ERO Sub-TLVs . . . . . . . . . . . . . . . . . . . . . . 16 80 6.2.1. IPv4 ERO Sub-TLV . . . . . . . . . . . . . . . . . . 16 81 6.2.2. IPv6 ERO Sub-TLV . . . . . . . . . . . . . . . . . . 17 82 6.2.3. Unnumbered Interface ID ERO Sub-TLV . . . . . . . . . 18 83 6.2.4. IPv4 Backup ERO Sub-TLV . . . . . . . . . . . . . . . 19 84 6.2.5. IPv6 Backup ERO Sub-TLV . . . . . . . . . . . . . . . 20 85 6.2.6. Unnumbered Interface ID Backup ERO Sub-TLV . . . . . 21 86 7. Adjacency Segment Identifier (Adj-SID) . . . . . . . . . . . 22 87 7.1. Adj-SID Sub-TLV . . . . . . . . . . . . . . . . . . . . . 22 88 7.2. LAN Adj-SID Sub-TLV . . . . . . . . . . . . . . . . . . . 24 89 8. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 26 90 8.1. Intra-area Segment routing in OSPFv3 . . . . . . . . . . 26 91 8.2. Inter-area Segment routing in OSPFv3 . . . . . . . . . . 27 92 8.3. SID for External Prefixes . . . . . . . . . . . . . . . . 28 93 8.4. Advertisement of Adj-SID . . . . . . . . . . . . . . . . 28 94 8.4.1. Advertisement of Adj-SID on Point-to-Point Links . . 28 95 8.4.2. Adjacency SID on Broadcast or NBMA Interfaces . . . . 28 96 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 97 9.1. OSPF Router Information (RI) TLVs Registry . . . . . . . 29 98 9.2. OSPFv3 Extend-LSA TLV Registry . . . . . . . . . . . . . 29 99 9.3. OSPFv3 Extend-LSA Sub-TLV registry . . . . . . . . . . . 29 100 10. Security Considerations . . . . . . . . . . . . . . . . . . . 30 101 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 30 102 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 103 12.1. Normative References . . . . . . . . . . . . . . . . . . 30 104 12.2. Informative References . . . . . . . . . . . . . . . . . 31 105 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 32 107 1. Introduction 109 Segment Routing (SR) allows for a flexible definition of end-to-end 110 paths within IGP topologies by encoding paths as sequences of 111 topological sub-paths, called "segments". These segments are 112 advertised by the link-state routing protocols (IS-IS and OSPF). 113 Prefix segments represent an ecmp-aware shortest-path to a prefix (or 114 a node), as per the state of the IGP topology. Adjacency segments 115 represent a hop over a specific adjacency between two nodes in the 116 IGP. A prefix segment is typically a multi-hop path while an 117 adjacency segment, in most of the cases, is a one-hop path. SR's 118 control-plane can be applied to both IPv6 and MPLS data-planes, and 119 does not require any additional signaling (other than the regular 120 IGP). For example, when used in MPLS networks, SR paths do not 121 require any LDP or RSVP-TE signaling. Still, SR can interoperate in 122 the presence of LSPs established with RSVP or LDP. 124 This draft describes the OSPFv3 extensions required for segment 125 routing. 127 Segment Routing architecture is described in 128 [I-D.ietf-spring-segment-routing]. 130 Segment Routing use cases are described in 131 [I-D.filsfils-spring-segment-routing-use-cases]. 133 2. Segment Routing Identifiers 135 Segment Routing defines various types of Segment Identifiers (SIDs): 136 Prefix-SID, Adjacency-SID, LAN Adjacency SID and Binding SID. 138 2.1. SID/Label Sub-TLV 140 The SID/Label Sub-TLV appears in multiple TLVs or Sub-TLVs defined 141 later in this document. It is used to advertise the SID or label 142 associated with a prefix or adjacency. The SID/Label TLV has 143 following format: 145 0 1 2 3 146 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 147 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 148 | Type | Length | 149 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 150 | SID/Label (variable) | 151 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 153 where: 155 Type: TBD, suggested value 3 157 Length: variable, 3 or 4 bytes 159 SID/Label: if length is set to 3, then the 20 rightmost bits 160 represent a label. If length is set to 4, then the value 161 represents a 32 bit SID. 163 The receiving router MUST ignore the SID/Label Sub-TLV if the 164 length is other then 3 or 4. 166 3. Segment Routing Capabilities 168 Segment Routing requires some additional capabilities of the router 169 to be advertised to other routers in the area. 171 These SR capabilities are advertised in OSPFv3 Router Information LSA 172 (defined in [RFC4970]). 174 3.1. SR-Algorithm TLV 176 The SR-Algorithm TLV is a TLV of the OSPFv3 Router Information LSA 177 (defined in [RFC4970]). 179 The SR-Algorithm TLV is optional. It MAY only be advertised once in 180 the OSPFv3 Router Information LSA. If the SID/Label Range TLV, as 181 defined in Section 3.2, is advertised, then the SR-Algorithm TLV MUST 182 also be advertised. 184 An OSPFv3 router may use various algorithms when calculating 185 reachability to other nodes in area or to prefixes attached to these 186 nodes. Examples of these algorithms are metric based Shortest Path 187 First (SPF), various sorts of Constrained SPF, etc. The SR-Algorithm 188 TLV allows a router to advertise the algorithms that the router is 189 currently using to other routers in an area. The SR-Algorithm TLV 190 has following structure: 192 0 1 2 3 193 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 194 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 195 | Type | Length | 196 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 197 | Algorithm 1 | Algorithm... | Algorithm n | | 198 +- -+ 199 | | 200 + + 202 where: 204 Type: TBD, suggested value 8 206 Length: variable 208 Algorithm: Single octet identifying the algorithm. The following 209 value has been defined: 211 0: Shortest Path First (SPF) algorithm based on link metric. 212 This is the standard shortest path algorithm as computed by the 213 OSPF protocol. Consistent with the deployed practice for link- 214 state protocols, Algorithm 0 permits any node to overwrite the 215 SPF path with a different path based on its local policy. 217 1: Strict Shortest Path First (SPF) algorithm based on link 218 metric. The algorithm is identical to Algorithm 0 but 219 Algorithm 1 requires that all nodes along the path will honor 220 the SPF routing decision. Local policy at the node claiming 221 the support of Algorithm 1 MUST NOT alter the forwarding 222 decision computed by Algorithm 1. 224 The RI LSA can be advertised at any of the defined flooding scopes 225 (link, area, or autonomous system (AS)). For the purpose of the SR- 226 Algorithm TLV propagation, area scope flooding is required. 228 3.2. SID/Label Range TLV 230 The SID/Label Range TLV is a TLV of the OSPFv3 Router Information LSA 231 (defined in [RFC4970]). 233 The SID/Label Sub-TLV MAY appear multiple times and has following 234 format: 236 0 1 2 3 237 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 238 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 239 | Type | Length | 240 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 241 | Range Size | Reserved | 242 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 243 | Sub-TLVs (variable) | 244 +- -+ 245 | | 246 + + 248 where: 250 Type: TBD, suggested value 9 252 Length: variable 254 Range Size: 3 octets of SID/label range 256 Initially, the only supported Sub-TLV is the SID/Label TLV as defined 257 in Section 2.1. The SID/Label advertised in the SID/Label TLV 258 represents the first SID/Label in the advertised range. 260 Multiple occurrence of the SID/Label Range TLV MAY be advertised, in 261 order to advertise multiple ranges. In such case: 263 o The originating router MUST encode each range into a different 264 SID/Label Range TLV. 266 o The originating router decides the order in which the set of SID/ 267 Label Range TLVs are advertised in the OSPFv3 Router Information 268 LSA. The originating router MUST ensure the order is same after a 269 graceful restart (using checkpointing, non-volatile storage or any 270 other mechanism) in order to assure the SID/label range and SID 271 index correspondence is preserved across graceful restarts. 273 o The receiving router must adhere to the order in which the ranges 274 are advertised when calculating a SID/label from the SID index. 276 o A router not supporting multiple occurrences of the SID/Label 277 Range TLV MUST use first advertised SID/Label Range TLV. 279 The following example illustrates the advertisement of multiple 280 ranges: 282 The originating router advertises the following ranges: 283 Range 1: [100, 199] 284 Range 2: [1000, 1099] 285 Range 3: [500, 599] 287 The receiving routers concatenate the ranges and build the Segment Routing Global Block 288 (SRGB) is as follows: 290 SRGB = [100, 199] 291 [1000, 1099] 292 [500, 599] 294 The indexes span multiple ranges: 296 index=0 means label 100 297 ... 298 index 99 means label 199 299 index 100 means label 1000 300 index 199 means label 1099 301 ... 302 index 200 means label 500 303 ... 305 The RI LSA can be advertised at any of the defined flooding scopes 306 (link, area, or autonomous system (AS)). For the purpose of the SID/ 307 Label Range TLV propagation, area scope flooding is required. 309 3.3. SR-Forwarding Capabilities 311 OSPFv3 router supporting Segment Routing needs to advertise its SR 312 data-plane capabilities. Data-plane capabilities are advertised in 313 OSPF Router Informational Capabilities TLV, which is defined in 314 section 2.3 of RFC 4970 [RFC4970]. 316 Two new bits are allocated in the OSPF Router Informational 317 Capability Bits as follows: 319 Bit-6 - MPLS IPv6 flag. If set, then the router is capable of 320 processing SR MPLS encapsulated IPv6 packets on all interfaces. 322 Bit-7 - If set, then the router is capable of processing the IPv6 323 Segment Routing Header on all interfaces as defined in 324 [I-D.previdi-6man-segment-routing-header]. 326 For the purpose of the SR-Forwarding Capabilities propagation, area 327 scope flooding is required. 329 4. OSPFv3 Extended Prefix Range TLV 331 In some cases it is useful to advertise attributes for a range of 332 prefixes. Segment Routing Mapping Server, which is described in 333 [I-D.filsfils-spring-segment-routing-ldp-interop], is an example 334 where we need a single advertisement to advertise SIDs for multiple 335 prefixes from a contiguous address range. The OSPFv3 Extended Prefix 336 Range TLV is defined for this purpose. 338 The OSPFv3 Extended Prefix Range TLV is a new top level TLV of the 339 following LSAs defined in [I-D.ietf-ospf-ospfv3-lsa-extend]: 341 E-Intra-Area-Prefix-LSA 343 E-Inter-Area-Prefix-LSA 345 E-AS-External-LSA 347 E-Type-7-LSA 349 Multiple OSPFv3 Extended Prefix Range TLVs MAY be advertised in these 350 extended LSAs. The OSPFv3 Extended Prefix Range TLV has the 351 following format: 353 0 1 2 3 354 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 355 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 356 | Type | Length | 357 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 358 | Prefix Length | AF | Range Size | 359 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 360 | Flags | Reserved | 361 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 362 | Address Prefix (variable) | 363 | ... | 364 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 365 | Sub-TLVs (variable) | 366 +- -+ 367 | | 369 where: 371 Type: TBD, suggested value 9. 373 Length: variable 375 Prefix length: length of the prefix 376 AF: 0 - IPv6 unicast 378 Range size: represents the number of prefixes that are covered by 379 the advertisement. The Range Size MUST NOT exceed the number of 380 prefixes that could be satisfied by the prefix length without 381 including addresses from other than the IPv6 unicast address 382 class. 384 Flags: 1 octet field. The following flags are defined: 386 0 1 2 3 4 5 6 7 387 +--+--+--+--+--+--+--+--+ 388 |IA| | | | | | | | 389 +--+--+--+--+--+--+--+--+ 391 where: 393 IA-Flag: Inter-Area flag. If set, advertisement is of inter- 394 area type. ABR that is advertising the OSPF Extended Prefix 395 Range TLV between areas MUST set this bit. 397 This bit is used to prevent redundant flooding of Prefix Range 398 TLVs between areas as follows: 400 An ABR always prefers intra-area Prefix Range advertisement 401 over inter-area one. 403 An ABR does not consider inter-area Prefix Range 404 advertisements coming from non backbone area. 406 An ABR propagates inter-area Prefix Range advertisement from 407 backbone area to connected non backbone areas only if such 408 advertisement is considered to be the best one. 410 Address Prefix: the prefix, encoded as an even multiple of 32-bit 411 words, padded with zeroed bits as necessary. This encoding 412 consumes ((PrefixLength + 31) / 32) 32-bit words. The Address 413 Prefix represents the first prefix in the prefix range. 415 5. Prefix SID Sub-TLV 417 The Prefix SID Sub-TLV is a Sub-TLV of the following OSPFv3 TLVs as 418 defined in [I-D.ietf-ospf-ospfv3-lsa-extend] and in Section 4: 420 Intra-Area Prefix TLV 422 Inter-Area Prefix TLV 423 External Prefix TLV 425 OSPFv3 Extended Prefix Range TLV 427 It MAY appear more than once in the parent TLV and has the following 428 format: 430 0 1 2 3 431 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 432 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 433 | Type | Length | 434 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 435 | Flags | Algorithm | Reserved | 436 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 437 | SID/Index/Label (variable) | 438 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 440 where: 442 Type: TBD, suggested value 4. 444 Length: variable 446 Flags: 1 octet field. The following flags are defined: 448 0 1 2 3 4 5 6 7 449 +--+--+--+--+--+--+--+--+ 450 | |NP|M |E |V |L | | | 451 +--+--+--+--+--+--+--+--+ 453 where: 455 NP-Flag: No-PHP flag. If set, then the penultimate hop MUST 456 NOT pop the Prefix-SID before delivering the packet to the node 457 that advertised the Prefix-SID. 459 M-Flag: Mapping Server Flag. If set, the SID is advertised 460 from the Segment Routing Mapping Server functionality as 461 described in [I-D.filsfils-spring-segment-routing-ldp-interop]. 463 E-Flag: Explicit-Null Flag. If set, any upstream neighbor of 464 the Prefix-SID originator MUST replace the Prefix-SID with a 465 Prefix-SID having an Explicit-NULL value (0 for IPv4) before 466 forwarding the packet. 468 The V-Flag: Value/Index Flag. If set, then the Prefix-SID 469 carries an absolute value. If not set, then the Prefix-SID 470 carries an index. 472 The L-Flag: Local/Global Flag. If set, then the value/index 473 carried by the Prefix-SID has local significance. If not set, 474 then the value/index carried by this Sub-TLV has global 475 significance. 477 Other bits: Reserved. These MUST be zero when sent and are 478 ignored when received. 480 Algorithm: one octet identifying the algorithm the Prefix-SID is 481 associated with as defined in Section 3.1. 483 SID/Index/Label: label or index value depending on the V-bit 484 setting. 486 Examples: 488 A 32 bit global index defining the offset in the SID/Label 489 space advertised by this router - in this case the V and L 490 flags MUST NOT be set. 492 A 24 bit local label where the 20 rightmost bits are used 493 for encoding the label value - in this case the V and L 494 flags MUST be set. 496 If multiple Prefix-SIDs are advertised for the same prefix, the 497 receiving router MUST use the first encoded SID and MAY use the 498 subsequent SIDs. 500 When propagating Prefix-SIDs between areas, if multiple prefix-SIDs 501 are advertised for a prefix, an implementation SHOULD preserve the 502 original order when advertising prefix-SIDs to other areas. This 503 allows implementations that only support a single Prefix-SID to have 504 a consistent view across areas. 506 When calculating the outgoing label for the prefix, the router MUST 507 take into account E and P flags advertised by the next-hop router, if 508 next-hop router advertised the SID for the prefix. This MUST be done 509 regardless of whether the next-hop router contributes to the best 510 path to the prefix. 512 The NP-Flag (No-PHP) MUST be set for Prefix-SIDs allocated to inter- 513 area prefixes that are originated by the ABR based on intra-area or 514 inter-area reachability between areas. When the inter-area prefix is 515 generated based on a prefix which is directly attached to the ABR, 516 NP-Flag SHOULD NOT be set 518 The NP-Flag (No-PHP) MUST be set on the Prefix-SIDs allocated to 519 redistributed prefixes, unless the redistributed prefix is directly 520 attached to ASBR, in which case the NP-Flag SHOULD NOT be set. 522 If the NP-Flag is not set then any upstream neighbor of the Prefix- 523 SID originator MUST pop the Prefix-SID. This is equivalent to the 524 penultimate hop popping mechanism used in the MPLS dataplane. In 525 such case, MPLS EXP bits of the Prefix-SID are not preserved for the 526 final destination (the Prefix-SID being removed). If the NP-Flag is 527 clear then the received E-flag is ignored. 529 If the NP-Flag is set then: 531 If the E-flag is not set then any upstream neighbor of the Prefix- 532 SID originator MUST keep the Prefix-SID on top of the stack. This 533 is useful when the originator of the Prefix-SID must stitch the 534 incoming packet into a continuing MPLS LSP to the final 535 destination. This could occur at an inter-area border router 536 (prefix propagation from one area to another) or at an inter- 537 domain border router (prefix propagation from one domain to 538 another). 540 If the E-flag is set then any upstream neighbor of the Prefix-SID 541 originator MUST replace the Prefix-SID with a Prefix-SID having an 542 Explicit-NULL value. This is useful, e.g., when the originator of 543 the Prefix-SID is the final destination for the related prefix and 544 the originator wishes to receive the packet with the original EXP 545 bits. 547 When M-Flag is set, NP-flag and E-flag MUST be ignored at reception. 549 As the Mapping Server does not specify the originator of a prefix 550 advertisement it is not possible to determine PHP behavior solely 551 based on the Mapping Server advertisement. However, PHP behavior may 552 safely be done in following cases: 554 Prefix is of intra-area type and the downstream neighbor is the 555 originator of the prefix. 557 Prefix is of inter-area type and downstream neighbor is an ABR, 558 which is advertising the prefix reachability and is setting LA-bit 559 in the Prefix Options as described in section 3.1 of 560 [I-D.ietf-ospf-ospfv3-lsa-extend]. 562 Prefix is of external type and downstream neighbor is an ASBR, 563 which is advertising the prefix reachability and is setting LA-bit 564 in the Prefix Options as described in section 3.1 of 565 [I-D.ietf-ospf-ospfv3-lsa-extend]. 567 When a Prefix-SID is advertised in an Extended Prefix Range TLV, then 568 the value advertised in Prefix SID Sub-TLV is interpreted as a 569 starting SID value. 571 Example 1: if the following router addresses (loopback addresses) 572 need to be mapped into the corresponding Prefix SID indexes: 574 Router-A: 192::1/128, Prefix-SID: Index 1 575 Router-B: 192::2/128, Prefix-SID: Index 2 576 Router-C: 192::3/128, Prefix-SID: Index 3 577 Router-D: 192::4/128, Prefix-SID: Index 4 579 then the Address Prefix field in the OSPFv3 Extended Prefix Range TLV 580 is set to 192::1, Prefix Length would be set to 128, Range Size would 581 be set to 4 and the Index value in the Prefix-SID Sub-TLV would be 582 set to 1. 584 Example 2: If the following prefixes need to be mapped into the 585 corresponding Prefix-SID indexes: 587 10:1:1::0/120, Prefix-SID: Index 51 588 10:1:1::100/120, Prefix-SID: Index 52 589 10:1:1::200/120, Prefix-SID: Index 53 590 10:1:1::300/120, Prefix-SID: Index 54 591 10:1:1::400/120, Prefix-SID: Index 55 592 10:1:1::500/120, Prefix-SID: Index 56 593 10:1:1::600/120, Prefix-SID: Index 57 595 then the Address Prefix field in the OSPFv3 Extended Prefix Range TLV 596 is set to 10:1:1::0, Prefix Length would be set to 120, Range Size 597 would be set to 7 and the Index value in the Prefix-SID Sub-TLV would 598 be set to 51. 600 6. SID/Label Binding Sub-TLV 602 The SID/Label Binding Sub-TLV is used to advertise SID/Label mapping 603 for a path to the prefix. 605 The SID/Label Binding Sub-TLV MAY be originated by any router in an 606 OSPFv3 domain. The router may advertise a SID/Label binding to a FEC 607 along with at least a single 'nexthop style' anchor. The protocol 608 supports more than one 'nexthop style' anchor to be attached to a 609 SID/Label binding, which results into a simple path description 610 language. In analogy to RSVP the terminology for this is called an 611 'Explicit Route Object' (ERO). Since ERO style path notation allows 612 anchoring SID/label bindings to both link and node IP addresses, any 613 Label Switched Path (LSP) can be described. Furthermore, SID/Label 614 Bindings from external protocols can also be re-advertised. 616 The SID/Label Binding Sub-TLV may be used for advertising SID/Label 617 Bindings and their associated Primary and Backup paths. In one 618 single TLV, either a primary ERO Path, backup ERO Path, or both are 619 advertised. If a router wants to advertise multiple parallel paths, 620 then it can generate several TLVs for the same Prefix/FEC. Each 621 occurrence of a Binding TLV for a given FEC Prefix will add a new 622 path. 624 SID/Label Binding Sub-TLV is a Sub-TLV of the following OSPFv3 TLVs, 625 as defined in [I-D.ietf-ospf-ospfv3-lsa-extend] and in Section 4: 627 Intra-Area Prefix TLV 629 Inter-Area Prefix TLV 631 External Prefix TLV 633 OSPFv3 Extended Prefix Range TLV 635 Multiple SID/Label Binding Sub-TLVs can be present in these TLVs. 636 The SID/Label Binding Sub-TLV has following format: 638 0 1 2 3 639 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 640 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 641 | Type | Length | 642 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 643 | Flags | Weight | Reserved | 644 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 645 | Sub-TLVs (variable) | 646 +- -+ 647 | | 649 where: 651 Type: TBD, suggested value 7 653 Length: variable 655 Flags: 1 octet field of following flags: 657 0 1 2 3 4 5 6 7 658 +-+-+-+-+-+-+-+-+ 659 |M| | 660 +-+-+-+-+-+-+-+-+ 662 where: 664 M-bit - When the bit is set the binding represents the 665 mirroring context as defined in 666 [I-D.minto-rsvp-lsp-egress-fast-protection]. 668 Weight: weight used for load-balancing purposes. The use of the 669 weight is defined in section 3.5.1 of 670 [I-D.ietf-spring-segment-routing]. 672 SID/Label Binding Sub-TLV currently supports following Sub-TLVs: 674 SID/Label Sub-TLV as described in Section 2.1. This Sub-TLV MUST 675 appear in the SID/Label Binding Sub-TLV and it MUST only appear 676 once. 678 ERO Metric Sub-TLV as defined in Section 6.1. 680 ERO Sub-TLVs as defined in Section 6.2. 682 6.1. ERO Metric Sub-TLV 684 The ERO Metric Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 686 The ERO Metric Sub-TLV advertises the cost of an ERO path. It is 687 used to compare the cost of a given source/destination path. A 688 router SHOULD advertise the ERO Metric Sub-TLV in an advertised ERO 689 TLV. The cost of the ERO Metric Sub-TLV SHOULD be set to the 690 cumulative IGP or TE path cost of the advertised ERO. Since 691 manipulation of the Metric field may attract or repel traffic to and 692 from the advertised segment, it MAY be manually overridden. 694 0 1 2 3 695 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 696 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 697 | Type | Length | 698 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 699 | Metric (4 octets) | 700 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 702 ERO Metric Sub-TLV format 704 where: 706 Type: TBD, suggested value 8 708 Length: Always 4 710 Metric: A 4 octet metric representing the aggregate IGP or TE path 711 cost. 713 6.2. ERO Sub-TLVs 715 All 'ERO' information represents an ordered set which describes the 716 segments of a path. The first ERO Sub-TLV describes the first 717 segment of a path. Similiarly, the last ERO Sub-TLV describes the 718 segment closest to the egress point. If a router extends or stitches 719 a path, it MUST prepend the new segment's path information to the ERO 720 list. This applies equally to advertised backup EROs. 722 All ERO Sub-TLVs must immediately follow the (SID)/Label Sub-TLV. 724 All Backup ERO Sub-TLVs must immediately follow the last ERO Sub-TLV. 726 6.2.1. IPv4 ERO Sub-TLV 728 IPv4 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 730 The IPv4 ERO Sub-TLV describes a path segment using IPv4 Address 731 style of encoding. Its semantics have been borrowed from [RFC3209]. 733 0 1 2 3 734 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 735 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 736 | Type | Length | 737 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 738 | Flags | Reserved | 739 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 740 | IPv4 Address (4 octets) | 741 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 743 IPv4 ERO Sub-TLV format 745 where: 747 Type: TBD, suggested value 9 749 Length: 8 bytes 751 Flags: 1 octet field of following flags: 753 0 1 2 3 4 5 6 7 754 +-+-+-+-+-+-+-+-+ 755 |L| | 756 +-+-+-+-+-+-+-+-+ 758 where: 760 L-bit - If the L-bit is set, then the segment path is 761 designated as 'loose'. Otherwise, the segment path is 762 designated as 'strict'. 764 IPv4 Address - the address of the explicit route hop. 766 6.2.2. IPv6 ERO Sub-TLV 768 IPv6 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 770 The IPv6 ERO Sub-TLV (Type TBA) describes a path segment using IPv6 771 Address style of encoding. Its semantics have been borrowed from 772 [RFC3209]. 774 0 1 2 3 775 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 776 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 777 | Type | Length | 778 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 779 | Flags | Reserved | 780 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 781 | | 782 +- -+ 783 | | 784 +- IPv6 Address -+ 785 | | 786 +- -+ 787 | | 788 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 790 IPv6 ERO Sub-TLV format 792 where: 794 Type: TBD, suggested value 10 796 Length: 8 bytes 798 Flags: 1 octet field of following flags: 800 0 1 2 3 4 5 6 7 801 +-+-+-+-+-+-+-+-+ 802 |L| | 803 +-+-+-+-+-+-+-+-+ 805 where: 807 L-bit - If the L-bit is set, then the segment path is 808 designated as 'loose'. Otherwise, the segment path is 809 designated as 'strict'. 811 IPv6 Address - the address of the explicit route hop. 813 6.2.3. Unnumbered Interface ID ERO Sub-TLV 815 The Unnumbered Interface ID ERO Sub-TLV is a Sub-TLV of the SID/Label 816 Binding Sub-TLV. 818 The appearance and semantics of the 'Unnumbered Interface ID' have 819 been borrowed from [RFC3477]. 821 The Unnumbered Interface-ID ERO Sub-TLV describes a path segment that 822 spans over an unnumbered interface. Unnumbered interfaces are 823 referenced using the interface index. Interface indices are assigned 824 local to the router and therefore not unique within a domain. All 825 elements in an ERO path need to be unique within a domain and hence 826 need to be disambiguated using a domain unique Router-ID. 828 0 1 2 3 829 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 830 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 831 | Type | Length | 832 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 833 | Flags | Reserved | 834 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 835 | Router ID | 836 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 837 | Interface ID | 838 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 840 where: 842 Unnumbered Interface ID ERO Sub-TLV format 844 Type: TBD, suggested value 11 846 Length: 12 bytes 847 Flags: 1 octet field of following flags: 849 0 1 2 3 4 5 6 7 850 +-+-+-+-+-+-+-+-+ 851 |L| | 852 +-+-+-+-+-+-+-+-+ 854 where: 856 L-bit - If the L-bit is set, then the segment path is 857 designated as 'loose'. Otherwise, the segment path is 858 designated as 'strict'. 860 Router-ID: Router-ID of the next-hop. 862 Interface ID: is the identifier assigned to the link by the router 863 specified by the Router-ID. 865 6.2.4. IPv4 Backup ERO Sub-TLV 867 IPv4 Prefix Backup ERO Sub-TLV is a Sub-TLV of the SID/Label Binding 868 Sub-TLV. 870 The IPv4 Backup ERO Sub-TLV describes a path segment using IPv4 871 Address style of encoding. Its semantics have been borrowed from 872 [RFC3209]. 874 0 1 2 3 875 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 876 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 877 | Type | Length | 878 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 879 | Flags | Reserved | 880 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 881 | IPv4 Address (4 octets) | 882 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 884 IPv4 Backup ERO Sub-TLV format 886 where: 888 Type: TBD, suggested value 12 890 Length: 8 bytes 892 Flags: 1 octet field of following flags: 894 0 1 2 3 4 5 6 7 895 +-+-+-+-+-+-+-+-+ 896 |L| | 897 +-+-+-+-+-+-+-+-+ 899 where: 901 L-bit - If the L-bit is set, then the segment path is 902 designated as 'loose'. Otherwise, the segment path is 903 designated as 'strict'.' 905 IPv4 Address - the address of the explicit route hop. 907 6.2.5. IPv6 Backup ERO Sub-TLV 909 The IPv6 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 911 The IPv6 Backup ERO Sub-TLV describes a Backup path segment using 912 IPv6 Address style of encoding. Its appearance and semantics have 913 been borrowed from [RFC3209]. 915 The 'L' bit in the Flags is a one-bit attribute. If the L bit is 916 set, then the value of the attribute is 'loose.' Otherwise, the 917 value of the attribute is 'strict.' 919 0 1 2 3 920 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 921 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 922 | Type | Length | 923 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 924 | Flags | Reserved | 925 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 926 | | 927 +- -+ 928 | | 929 +- IPv6 Address -+ 930 | | 931 +- -+ 932 | | 933 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 935 IPv6 Backup ERO Sub-TLV format 937 where: 939 Type: TBD, suggested value 13 941 Length: 8 bytes 942 Flags: 1 octet field of following flags: 944 0 1 2 3 4 5 6 7 945 +-+-+-+-+-+-+-+-+ 946 |L| | 947 +-+-+-+-+-+-+-+-+ 949 where: 951 L-bit - If the L-bit is set, then the segment path is 952 designated as 'loose'. Otherwise, the segment path is 953 designated as 'strict'. 955 IPv6 Address - the address of the explicit route hop. 957 6.2.6. Unnumbered Interface ID Backup ERO Sub-TLV 959 The Unnumbered Interface ID Backup Sub-TLV is a Sub-TLV of the SID/ 960 Label Binding Sub-TLV. 962 The appearance and semantics of the 'Unnumbered Interface ID' have 963 been borrowed from [RFC3477]. 965 The Unnumbered Interface-ID Backup ERO Sub-TLV describes a path 966 segment that spans over an unnumbered interface. Unnumbered 967 interfaces are referenced using the interface index. Interface 968 indices are assigned local to the router and are therefore not unique 969 within a domain. All elements in an ERO path need to be unique 970 within a domain and hence need to be disambiguated with specification 971 of the unique Router-ID. 973 0 1 2 3 974 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 975 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 976 | Type | Length | 977 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 978 | Flags | Reserved | 979 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 980 | Router ID | 981 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 982 | Interface ID | 983 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 985 Unnumbered Interface ID Backup ERO Sub-TLV format 987 where: 989 Type: TBD, suggested value 14 990 Length: 12 bytes 992 Flags: 1 octet field of following flags: 994 0 1 2 3 4 5 6 7 995 +-+-+-+-+-+-+-+-+ 996 |L| | 997 +-+-+-+-+-+-+-+-+ 999 where: 1001 L-bit - If the L-bit is set, then the segment path is 1002 designated as 'loose'. Otherwise, the segment path is 1003 designated as 'strict'. 1005 Router-ID: Router-ID of the next-hop. 1007 Interface ID: is the identifier assigned to the link by the router 1008 specified by the Router-ID. 1010 7. Adjacency Segment Identifier (Adj-SID) 1012 An Adjacency Segment Identifier (Adj-SID) represents a router 1013 adjacency in Segment Routing. 1015 7.1. Adj-SID Sub-TLV 1017 The extended OSPFv3 LSAs, as defined in 1018 [I-D.ietf-ospf-ospfv3-lsa-extend], are used to advertise prefix SID 1019 in OSPFv3 1021 The Adj-SID Sub-TLV is an optional Sub-TLV of the Router-Link TLV as 1022 defined in [I-D.ietf-ospf-ospfv3-lsa-extend]. It MAY appear multiple 1023 times in Router-Link TLV. Examples where more than one Adj-SID may 1024 be used per neighbor are described in section 4 of 1025 [I-D.filsfils-spring-segment-routing-use-cases]. The Adj-SID Sub-TLV 1026 has the following format: 1028 0 1 2 3 1029 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 1030 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1031 | Type | Length | 1032 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1033 | Flags | Weight | Reserved | 1034 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1035 | SID/Label/Index (variable) | 1036 +---------------------------------------------------------------+ 1038 where: 1040 Type: TBD, suggested value 5. 1042 Length: variable. 1044 Flags. 1 octet field of following flags: 1046 0 1 2 3 4 5 6 7 1047 +-+-+-+-+-+-+-+-+ 1048 |B|V|L|S| | 1049 +-+-+-+-+-+-+-+-+ 1051 where: 1053 B-Flag: Backup-flag. If set, the Adj-SID refers to an 1054 adjacency that is eligible for protection (e.g.: using IPFRR or 1055 MPLS-FRR) as described in section 3.5 of 1056 [I-D.ietf-spring-segment-routing]. 1058 The V-Flag: Value/Index Flag. If set, then the Adj-SID carries 1059 an absolute value. If not set, then the Adj-SID carries an 1060 index. 1062 The L-Flag: Local/Global Flag. If set, then the value/index 1063 carried by the Adj-SID has local significance. If not set, 1064 then the value/index carried by this Sub-TLV has global 1065 significance. 1067 The S-Flag. Set Flag. When set, the S-Flag indicates that the 1068 Adj-SID refers to a set of adjacencies (and therefore MAY be 1069 assigned to other adjacencies as well). 1071 Other bits: Reserved. These MUST be zero when sent and are 1072 ignored when received. 1074 Weight: weight used for load-balancing purposes. The use of the 1075 weight is defined in section 3.5.1 of 1076 [I-D.ietf-spring-segment-routing]. 1078 SID/Index/Label: label or index value depending on the V-bit 1079 setting. 1081 Examples: 1083 A 32 bit global index defining the offset in the SID/Label 1084 space advertised by this router - in this case the V and L 1085 flags MUST NOT be set. 1087 A 24 bit local label where the 20 rightmost bits are used 1088 for encoding the label value - in this case the V and L 1089 flags MUST be set. 1091 16 octet IPv6 address - in this case the V-flag MUST be set. 1092 The L-flag MUST be set for link-local IPv6 address and MUST 1093 NOT be set for IPv6 global unicast address. 1095 An SR capable router MAY allocate an Adj-SID for each of its 1096 adjacencies and set the B-Flag when the adjacency is eligible for 1097 protection by an FRR mechanism (IP or MPLS) as described in section 1098 3.5 of [I-D.ietf-spring-segment-routing]. 1100 7.2. LAN Adj-SID Sub-TLV 1102 The LAN Adj-SID is an optional Sub-TLV of the Router-Link TLV. It 1103 MAY appear multiple times in the Router-Link TLV. It is used to 1104 advertise a SID/Label for an adjacency to a non-DR neighbor on a 1105 broadcast or NBMA network. 1107 0 1 2 3 1108 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 1109 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1110 | Type | Length | 1111 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1112 | Flags | Weight | Reserved | 1113 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1114 | Neighbor ID | 1115 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1116 | SID/Label/Index (variable) | 1117 +---------------------------------------------------------------+ 1119 where: 1121 Type: TBD, suggested value 6. 1123 Length: variable. 1125 Flags. 1 octet field of following flags: 1127 0 1 2 3 4 5 6 7 1128 +-+-+-+-+-+-+-+-+ 1129 |B|V|L|S| | 1130 +-+-+-+-+-+-+-+-+ 1132 where: 1134 B-Flag: Backup-flag: set if the LAN-Adj-SID refer to an 1135 adjacency that is eligible for protection (e.g.: using IPFRR or 1136 MPLS-FRR) as described in section 3.1 of 1137 [I-D.filsfils-spring-segment-routing-use-cases]. 1139 The V-Flag: Value/Index Flag. If set, then the LAN Adj-SID 1140 carries an absolute value. If not set, then the LAN Adj-SID 1141 carries an index. 1143 The L-Flag: Local/Global Flag. If set, then the value/index 1144 carried by the LAN Adj-SID has local significance. If not set, 1145 then the value/index carried by this subTLV has global 1146 significance. 1148 The S-Flag. Set Flag. When set, the S-Flag indicates that the 1149 LAN Adj-SID refers to a set of adjacencies (and therefore MAY 1150 be assigned to other adjacencies as well). 1152 Other bits: Reserved. These MUST be zero when sent and are 1153 ignored when received. 1155 Weight: weight used for load-balancing purposes. The use of the 1156 weight is defined in section 3.5.1 of 1157 [I-D.ietf-spring-segment-routing]. 1159 SID/Index/Label: label or index value depending on the V-bit 1160 setting. 1162 Examples: 1164 A 32 bit global index defining the offset in the SID/Label 1165 space advertised by this router - in this case the V and L 1166 flags MUST NOT be set. 1168 A 24 bit local label where the 20 rightmost bits are used 1169 for encoding the label value - in this case the V and L 1170 flags MUST be set. 1172 16 octet IPv6 address - in this case the V-flag MUST be set. 1173 The L-flag MUST be set for link-local IPv6 address and MUST 1174 NOT be set for IPv6 global unicast address. 1176 8. Elements of Procedure 1178 8.1. Intra-area Segment routing in OSPFv3 1180 An OSPFv3 router that supports segment routing MAY advertise Prefix- 1181 SIDs for any prefix that it is advertising reachability for (e.g., 1182 loopback IP address) as described in Section 5. 1184 If multiple routers advertise a Prefix-SID for the same prefix, then 1185 the Prefix-SID MUST be the same. This is required in order to allow 1186 traffic load-balancing when multiple equal cost paths to the 1187 destination exist in the network. 1189 The Prefix-SID can also be advertised by the SR Mapping Servers (as 1190 described in [I-D.filsfils-spring-segment-routing-ldp-interop]). The 1191 Mapping Server advertises Prefix-SID for remote prefixes that exist 1192 in the network. Multiple Mapping Servers can advertise Prefix-SID 1193 for the same prefix, in which case the same Prefix-SID MUST be 1194 advertised by all of them. The SR Mapping Server could use either 1195 area scope or autonomous system flooding scope when advertising 1196 Prefix SID for prefixes, based on the configuration of the SR Mapping 1197 Server. Depending on the flooding scope used, the SR Mapping Server 1198 chooses the LSA that will be used. If the area flooding scope is 1199 needed, E-Intra-Area-Prefix-LSA ([I-D.ietf-ospf-ospfv3-lsa-extend]) 1200 is used. If autonomous system flooding scope is needed, E-AS- 1201 External-LSA ([I-D.ietf-ospf-ospfv3-lsa-extend]) is used. 1203 When a Prefix-SID is advertised by the Mapping Server, which is 1204 indicated by the M-flag in the Prefix-SID Sub-TLV (Section 5), the 1205 route type as implied by the LSA type is ignored and the Prefix-SID 1206 is bound to the corresponding prefix independent of the route type. 1208 Advertisement of the Prefix-SID by the Mapping Server using Inter- 1209 Area Prefix TLV, External-Prefix TLV or Intra-Area-Prefix TLV 1210 ([I-D.ietf-ospf-ospfv3-lsa-extend]) does not itself contribute to the 1211 prefix reachability. The NU-bit MUST be set in the PrefixOptions 1212 field of the LSA which is used by the Mapping Server to advertise SID 1213 or SID range, which prevents the advertisement to contribute to 1214 prefix reachability. 1216 SR Mapping Server MUST use OSPF Extended Prefix Range TLV when 1217 advertising SIDs for prefixes. Prefixes of different route-types can 1218 be combined in a single OSPF Extended Prefix Range TLV advertised by 1219 the SR Mapping Server. 1221 Area scoped OSPF Extended Prefix Range TLV are propagated between 1222 areas. Similar to propagation of prefixes between areas, ABR only 1223 propagates the OSPF Extended Prefix Range TLV that it considers to be 1224 the best from the set it received. The rules used to pick the best 1225 OSPF Extended Prefix Range TLV is described in Section 4. 1227 When propagating OSPF Extended Prefix Range TLV between areas, ABR 1228 MUST set the IA-Flag, that is used to prevent redundant flooding of 1229 the OSPF Extended Prefix Range TLV between areas as described in 1230 Section 4. 1232 If the Prefix-SID that is advertised in Prefix SID Sub-TLV is also 1233 covered by the OSPF Extended Prefix Range TLV, the Prefix-SID 1234 advertised in Prefix SID Sub-TLV MUST be preferred. 1236 8.2. Inter-area Segment routing in OSPFv3 1238 In order to support SR in a multi-area environment, OSPFv3 must 1239 propagate Prefix-SID information between areas. The following 1240 procedure is used in order to propagate Prefix SIDs between areas. 1242 When an OSPFv3 ABR advertises a Inter-Area-Prefix-LSA from an intra- 1243 area prefix to all its connected areas, it will also include Prefix- 1244 SID Sub-TLV, as described in Section 5. The Prefix-SID value will be 1245 set as follows: 1247 The ABR will look at its best path to the prefix in the source 1248 area and find out the advertising router associated with the best 1249 path to that prefix. 1251 The ABR will then determine if such router advertised a Prefix-SID 1252 for the prefix and use it when advertising the Prefix-SID to other 1253 connected areas. 1255 If no Prefix-SID was advertised for the prefix in the source area 1256 by the router that contributes to the best path to the prefix, the 1257 originating ABR will use the Prefix-SID advertised by any other 1258 router (e.g.: a Prefix-SID coming from an SR Mapping Server as 1259 defined in [I-D.filsfils-spring-segment-routing-ldp-interop]) when 1260 propagating Prefix-SID for the prefix to other areas. 1262 When an OSPFv3 ABR advertises Inter-Area-Prefix-LSA LSAs from an 1263 inter-area route to all its connected areas it will also include 1264 Prefix-SID Sub-TLV, as described in Section 5. The Prefix-SID value 1265 will be set as follows: 1267 The ABR will look at its best path to the prefix in the source 1268 area and find out the advertising router associated with the best 1269 path to that prefix. 1271 The ABR will then look if such router advertised a Prefix-SID for 1272 the prefix and use it when advertising the Prefix-SID to other 1273 connected areas. 1275 If no Prefix-SID was advertised for the prefix in the source area 1276 by the ABR that contributes to the best path to the prefix, the 1277 originating ABR will use the Prefix-SID advertised by any other 1278 router when propagating Prefix-SID for the prefix to other areas. 1280 8.3. SID for External Prefixes 1282 AS-External-LSAs are flooded domain wide. When an ASBR, which 1283 supports SR, generates E-AS-External-LSA, it should also include 1284 Prefix-SID Sub-TLV, as described in Section 5. The Prefix-SID value 1285 will be set to the SID that has been reserved for that prefix. 1287 When an NSSA ASBR translates an E-NSSA-LSA into an E-AS-External-LSA, 1288 it should also advertise the Prefix-SID for the prefix. The NSSA ABR 1289 determines its best path to the prefix advertised in the translated 1290 E-NSSA-LSA and finds the advertising router associated with that 1291 path. If the advertising router has advertised a Prefix-SID for the 1292 prefix, then the NSSA ABR uses it when advertising the Prefix-SID in 1293 the E-AS-External-LSA. Otherwise the Prefix-SID advertised by any 1294 other router will be used. 1296 8.4. Advertisement of Adj-SID 1298 The Adjacency Segment Routing Identifier (Adj-SID) is advertised 1299 using the Adj-SID Sub-TLV as described in Section 7. 1301 8.4.1. Advertisement of Adj-SID on Point-to-Point Links 1303 An Adj-SID MAY be advertised for any adjacency on p2p link that is in 1304 a state 2-Way or higher. If the adjacency on a p2p link transitions 1305 from the FULL state, then the Adj-SID for that adjacency MAY be 1306 removed from the area. If the adjacency transitions to a state lower 1307 then 2-Way, then the Adj-SID advertisement MUST be removed from the 1308 area. 1310 8.4.2. Adjacency SID on Broadcast or NBMA Interfaces 1312 Broadcast or NBMA networks in OSPFv3 are represented by a star 1313 topology where the Designated Router (DR) is the central point to 1314 which all other routers on the broadcast or NBMA network connect. As 1315 a result, routers on the broadcast or NBMA network advertise only 1316 their adjacency to the DR. Routers that do not act as DR do not form 1317 or advertise adjacencies with each other. They do, however, maintain 1318 a 2-Way adjacency state with each other and are directly reachable. 1320 When Segment Routing is used, each router on the broadcast or NBMA 1321 network MAY advertise the Adj-SID for its adjacency to the DR using 1322 Adj-SID Sub-TLV as described in Section 7.1. 1324 SR capable routers MAY also advertise an Adj-SID for other neighbors 1325 (e.g. BDR, DR-OTHER) on the broadcast or NBMA network using the LAN 1326 ADJ-SID Sub-TLV as described in Section 7.2. 1328 9. IANA Considerations 1330 This specification updates several existing OSPF registries. 1332 9.1. OSPF Router Information (RI) TLVs Registry 1334 o 8 (IANA Preallocated) - SR-Algorithm TLV 1336 o 9 (IANA Preallocated) - SID/Label Range TLV 1338 9.2. OSPFv3 Extend-LSA TLV Registry 1340 Following values are allocated: 1342 o suggested value 9 - OSPF Extended Prefix Range TLV 1344 9.3. OSPFv3 Extend-LSA Sub-TLV registry 1346 o suggested value 3 - SID/Label Sub-TLV 1348 o suggested value 4 - Prefix SID Sub-TLV 1350 o suggested value 5 - Adj-SID Sub-TLV 1352 o suggested value 6 - LAN Adj-SID Sub-TLV 1354 o suggested value 7 - SID/Label Binding Sub-TLV 1356 o suggested value 8 - ERO Metric Sub-TLV 1358 o suggested value 9 - IPv4 ERO Sub-TLV 1360 o suggested value 10 - IPv6 ERO Sub-TLV 1362 o suggested value 11 - Unnumbered Interface ID ERO Sub-TLV 1363 o suggested value 12 - IPv4 Backup ERO Sub-TLV 1365 o suggested value 13 - IPv6 Backup ERO Sub-TLV 1367 o suggested value 14 - Unnumbered Interface ID Backup ERO Sub-TLV 1369 10. Security Considerations 1371 Implementations must assure that malformed permutations of the newly 1372 defined sub-TLvs do not result in errors which cause hard OSPFv3 1373 failures. 1375 11. Acknowledgements 1377 Thanks to Acee Lindem for the detail review of the draft, 1378 corrections, as well as discussion about details of the encoding. 1380 We would like to thank Anton Smirnov for his contribution. 1382 Many thanks to Yakov Rekhter, John Drake and Shraddha Hedge for their 1383 contribution on earlier incarnations of the "Binding / MPLS Label 1384 TLV" in [I-D.gredler-ospf-label-advertisement]. 1386 12. References 1388 12.1. Normative References 1390 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1391 Requirement Levels", BCP 14, RFC 2119, 1392 DOI 10.17487/RFC2119, March 1997, 1393 . 1395 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1396 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1397 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1398 . 1400 [RFC3477] Kompella, K. and Y. Rekhter, "Signalling Unnumbered Links 1401 in Resource ReSerVation Protocol - Traffic Engineering 1402 (RSVP-TE)", RFC 3477, DOI 10.17487/RFC3477, January 2003, 1403 . 1405 [RFC4970] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and 1406 S. Shaffer, "Extensions to OSPF for Advertising Optional 1407 Router Capabilities", RFC 4970, DOI 10.17487/RFC4970, July 1408 2007, . 1410 12.2. Informative References 1412 [I-D.filsfils-spring-segment-routing-ldp-interop] 1413 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 1414 Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., 1415 Ytti, S., Henderickx, W., Tantsura, J., and E. Crabbe, 1416 "Segment Routing interoperability with LDP", draft- 1417 filsfils-spring-segment-routing-ldp-interop-02 (work in 1418 progress), September 2014. 1420 [I-D.filsfils-spring-segment-routing-use-cases] 1421 Filsfils, C., Francois, P., Previdi, S., Decraene, B., 1422 Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., 1423 Ytti, S., Henderickx, W., Tantsura, J., Kini, S., and E. 1424 Crabbe, "Segment Routing Use Cases", draft-filsfils- 1425 spring-segment-routing-use-cases-01 (work in progress), 1426 October 2014. 1428 [I-D.gredler-ospf-label-advertisement] 1429 Gredler, H., Amante, S., Scholl, T., and L. Jalil, 1430 "Advertising MPLS labels in OSPF", draft-gredler-ospf- 1431 label-advertisement-03 (work in progress), May 2013. 1433 [I-D.ietf-ospf-ospfv3-lsa-extend] 1434 Lindem, A., Mirtorabi, S., Roy, A., and F. Baker, "OSPFv3 1435 LSA Extendibility", draft-ietf-ospf-ospfv3-lsa-extend-09 1436 (work in progress), November 2015. 1438 [I-D.ietf-spring-segment-routing] 1439 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 1440 Litkowski, S., Horneffer, M., Shakir, R., Tantsura, J., 1441 and E. Crabbe, "Segment Routing Architecture", draft-ietf- 1442 spring-segment-routing-01 (work in progress), February 1443 2015. 1445 [I-D.minto-rsvp-lsp-egress-fast-protection] 1446 Jeganathan, J., Gredler, H., and Y. Shen, "RSVP-TE LSP 1447 egress fast-protection", draft-minto-rsvp-lsp-egress-fast- 1448 protection-03 (work in progress), November 2013. 1450 [I-D.previdi-6man-segment-routing-header] 1451 Previdi, S., Filsfils, C., Field, B., Leung, I., Linkova, 1452 J., Kosugi, T., Vyncke, E., and D. Lebrun, "IPv6 Segment 1453 Routing Header (SRH)", draft-previdi-6man-segment-routing- 1454 header-08 (work in progress), October 2015. 1456 Authors' Addresses 1458 Peter Psenak (editor) 1459 Cisco Systems, Inc. 1460 Apollo Business Center 1461 Mlynske nivy 43 1462 Bratislava 821 09 1463 Slovakia 1465 Email: ppsenak@cisco.com 1467 Stefano Previdi (editor) 1468 Cisco Systems, Inc. 1469 Via Del Serafico, 200 1470 Rome 00142 1471 Italy 1473 Email: sprevidi@cisco.com 1475 Clarence Filsfils 1476 Cisco Systems, Inc. 1477 Brussels 1478 Belgium 1480 Email: cfilsfil@cisco.com 1482 Hannes Gredler 1483 Individual 1484 Austria 1486 Email: hannes@gredler.at 1488 Rob Shakir 1489 Jive Communications, Inc. 1490 1275 West 1600 North, Suite 100 1491 Orem, UT 84057 1492 US 1494 Email: rrjs@rob.sh 1495 Wim Henderickx 1496 Alcatel-Lucent 1497 Copernicuslaan 50 1498 Antwerp 2018 1499 BE 1501 Email: wim.henderickx@alcatel-lucent.com 1503 Jeff Tantsura 1504 Ericsson 1505 300 Holger Way 1506 San Jose, CA 95134 1507 US 1509 Email: Jeff.Tantsura@ericsson.com