idnits 2.17.1 draft-ietf-ospf-ospfv3-segment-routing-extensions-05.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 (March 21, 2016) is 2957 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 292 -- Looks like a reference, but probably isn't: '199' on line 292 -- Looks like a reference, but probably isn't: '1000' on line 293 -- Looks like a reference, but probably isn't: '1099' on line 293 -- Looks like a reference, but probably isn't: '500' on line 294 -- Looks like a reference, but probably isn't: '599' on line 294 ** 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: September 22, 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 March 21, 2016 16 OSPFv3 Extensions for Segment Routing 17 draft-ietf-ospf-ospfv3-segment-routing-extensions-05 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 September 22, 2016. 51 Copyright Notice 53 Copyright (c) 2016 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. If 216 the SR-Algorithm Sub-TLV is advertised, Algorithm 0 MUST be 217 included. 219 1: Strict Shortest Path First (SPF) algorithm based on link 220 metric. The algorithm is identical to Algorithm 0 but 221 Algorithm 1 requires that all nodes along the path will honor 222 the SPF routing decision. Local policy at the node claiming 223 the support of Algorithm 1 MUST NOT alter the forwarding 224 decision computed by Algorithm 1. 226 The RI LSA can be advertised at any of the defined flooding scopes 227 (link, area, or autonomous system (AS)). For the purpose of the SR- 228 Algorithm TLV propagation, area scope flooding is required. 230 3.2. SID/Label Range TLV 232 The SID/Label Range TLV is a TLV of the OSPFv3 Router Information LSA 233 (defined in [RFC4970]). 235 The SID/Label Sub-TLV MAY appear multiple times and has following 236 format: 238 0 1 2 3 239 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 240 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 241 | Type | Length | 242 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 243 | Range Size | Reserved | 244 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 245 | Sub-TLVs (variable) | 246 +- -+ 247 | | 248 + + 250 where: 252 Type: TBD, suggested value 9 254 Length: variable 256 Range Size: 3 octets of SID/label range 258 Initially, the only supported Sub-TLV is the SID/Label TLV as defined 259 in Section 2.1. The SID/Label advertised in the SID/Label TLV 260 represents the first SID/Label in the advertised range. 262 Multiple occurrence of the SID/Label Range TLV MAY be advertised, in 263 order to advertise multiple ranges. In such case: 265 o The originating router MUST encode each range into a different 266 SID/Label Range TLV. 268 o The originating router decides the order in which the set of SID/ 269 Label Range TLVs are advertised in the OSPFv3 Router Information 270 LSA. The originating router MUST ensure the order is same after a 271 graceful restart (using checkpointing, non-volatile storage or any 272 other mechanism) in order to assure the SID/label range and SID 273 index correspondence is preserved across graceful restarts. 275 o The receiving router must adhere to the order in which the ranges 276 are advertised when calculating a SID/label from the SID index. 278 o A router not supporting multiple occurrences of the SID/Label 279 Range TLV MUST use first advertised SID/Label Range TLV. 281 The following example illustrates the advertisement of multiple 282 ranges: 284 The originating router advertises the following ranges: 285 Range 1: [100, 199] 286 Range 2: [1000, 1099] 287 Range 3: [500, 599] 289 The receiving routers concatenate the ranges and build the Segment Routing Global Block 290 (SRGB) is as follows: 292 SRGB = [100, 199] 293 [1000, 1099] 294 [500, 599] 296 The indexes span multiple ranges: 298 index=0 means label 100 299 ... 300 index 99 means label 199 301 index 100 means label 1000 302 index 199 means label 1099 303 ... 304 index 200 means label 500 305 ... 307 The RI LSA can be advertised at any of the defined flooding scopes 308 (link, area, or autonomous system (AS)). For the purpose of the SID/ 309 Label Range TLV propagation, area scope flooding is required. 311 3.3. SR-Forwarding Capabilities 313 OSPFv3 router supporting Segment Routing needs to advertise its SR 314 data-plane capabilities. Data-plane capabilities are advertised in 315 OSPF Router Informational Capabilities TLV, which is defined in 316 section 2.3 of RFC 4970 [RFC4970]. 318 Two new bits are allocated in the OSPF Router Informational 319 Capability Bits as follows: 321 Bit-6 - MPLS IPv6 flag. If set, then the router is capable of 322 processing SR MPLS encapsulated IPv6 packets on all interfaces. 324 Bit-7 - If set, then the router is capable of processing the IPv6 325 Segment Routing Header on all interfaces as defined in 326 [I-D.previdi-6man-segment-routing-header]. 328 For the purpose of the SR-Forwarding Capabilities propagation, area 329 scope flooding is required. 331 4. OSPFv3 Extended Prefix Range TLV 333 In some cases it is useful to advertise attributes for a range of 334 prefixes. Segment Routing Mapping Server, which is described in 335 [I-D.filsfils-spring-segment-routing-ldp-interop], is an example 336 where we need a single advertisement to advertise SIDs for multiple 337 prefixes from a contiguous address range. The OSPFv3 Extended Prefix 338 Range TLV is defined for this purpose. 340 The OSPFv3 Extended Prefix Range TLV is a new top level TLV of the 341 following LSAs defined in [I-D.ietf-ospf-ospfv3-lsa-extend]: 343 E-Intra-Area-Prefix-LSA 345 E-Inter-Area-Prefix-LSA 347 E-AS-External-LSA 349 E-Type-7-LSA 351 Multiple OSPFv3 Extended Prefix Range TLVs MAY be advertised in these 352 extended LSAs. The OSPFv3 Extended Prefix Range TLV has the 353 following format: 355 0 1 2 3 356 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 357 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 358 | Type | Length | 359 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 360 | Prefix Length | AF | Range Size | 361 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 362 | Flags | Reserved | 363 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 364 | Address Prefix (variable) | 365 | ... | 366 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 367 | Sub-TLVs (variable) | 368 +- -+ 369 | | 371 where: 373 Type: TBD, suggested value 9. 375 Length: variable 377 Prefix length: length of the prefix 378 AF: 0 - IPv6 unicast 380 Range size: represents the number of prefixes that are covered by 381 the advertisement. The Range Size MUST NOT exceed the number of 382 prefixes that could be satisfied by the prefix length without 383 including addresses from other than the IPv6 unicast address 384 class. 386 Flags: 1 octet field. The following flags are defined: 388 0 1 2 3 4 5 6 7 389 +--+--+--+--+--+--+--+--+ 390 |IA| | | | | | | | 391 +--+--+--+--+--+--+--+--+ 393 where: 395 IA-Flag: Inter-Area flag. If set, advertisement is of inter- 396 area type. ABR that is advertising the OSPF Extended Prefix 397 Range TLV between areas MUST set this bit. 399 This bit is used to prevent redundant flooding of Prefix Range 400 TLVs between areas as follows: 402 An ABR always prefers intra-area Prefix Range advertisement 403 over inter-area one. 405 An ABR does not consider inter-area Prefix Range 406 advertisements coming from non backbone area. 408 An ABR propagates inter-area Prefix Range advertisement from 409 backbone area to connected non backbone areas only if such 410 advertisement is considered to be the best one. 412 Address Prefix: the prefix, encoded as an even multiple of 32-bit 413 words, padded with zeroed bits as necessary. This encoding 414 consumes ((PrefixLength + 31) / 32) 32-bit words. The Address 415 Prefix represents the first prefix in the prefix range. 417 5. Prefix SID Sub-TLV 419 The Prefix SID Sub-TLV is a Sub-TLV of the following OSPFv3 TLVs as 420 defined in [I-D.ietf-ospf-ospfv3-lsa-extend] and in Section 4: 422 Intra-Area Prefix TLV 424 Inter-Area Prefix TLV 425 External Prefix TLV 427 OSPFv3 Extended Prefix Range TLV 429 It MAY appear more than once in the parent TLV and has the following 430 format: 432 0 1 2 3 433 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 434 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 435 | Type | Length | 436 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 437 | Flags | Algorithm | Reserved | 438 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 439 | SID/Index/Label (variable) | 440 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 442 where: 444 Type: TBD, suggested value 4. 446 Length: variable 448 Flags: 1 octet field. The following flags are defined: 450 0 1 2 3 4 5 6 7 451 +--+--+--+--+--+--+--+--+ 452 | |NP|M |E |V |L | | | 453 +--+--+--+--+--+--+--+--+ 455 where: 457 NP-Flag: No-PHP flag. If set, then the penultimate hop MUST 458 NOT pop the Prefix-SID before delivering the packet to the node 459 that advertised the Prefix-SID. 461 M-Flag: Mapping Server Flag. If set, the SID is advertised 462 from the Segment Routing Mapping Server functionality as 463 described in [I-D.filsfils-spring-segment-routing-ldp-interop]. 465 E-Flag: Explicit-Null Flag. If set, any upstream neighbor of 466 the Prefix-SID originator MUST replace the Prefix-SID with a 467 Prefix-SID having an Explicit-NULL value (0 for IPv4) before 468 forwarding the packet. 470 The V-Flag: Value/Index Flag. If set, then the Prefix-SID 471 carries an absolute value. If not set, then the Prefix-SID 472 carries an index. 474 The L-Flag: Local/Global Flag. If set, then the value/index 475 carried by the Prefix-SID has local significance. If not set, 476 then the value/index carried by this Sub-TLV has global 477 significance. 479 Other bits: Reserved. These MUST be zero when sent and are 480 ignored when received. 482 Algorithm: one octet identifying the algorithm the Prefix-SID is 483 associated with as defined in Section 3.1. 485 SID/Index/Label: label or index value depending on the V-bit 486 setting. 488 Examples: 490 A 32 bit global index defining the offset in the SID/Label 491 space advertised by this router - in this case the V and L 492 flags MUST NOT be set. 494 A 24 bit local label where the 20 rightmost bits are used 495 for encoding the label value - in this case the V and L 496 flags MUST be set. 498 If multiple Prefix-SIDs are advertised for the same prefix, the 499 receiving router MUST use the first encoded SID and MAY use the 500 subsequent SIDs. 502 When propagating Prefix-SIDs between areas, if multiple prefix-SIDs 503 are advertised for a prefix, an implementation SHOULD preserve the 504 original order when advertising prefix-SIDs to other areas. This 505 allows implementations that only support a single Prefix-SID to have 506 a consistent view across areas. 508 When calculating the outgoing label for the prefix, the router MUST 509 take into account E and P flags advertised by the next-hop router, if 510 next-hop router advertised the SID for the prefix. This MUST be done 511 regardless of whether the next-hop router contributes to the best 512 path to the prefix. 514 The NP-Flag (No-PHP) MUST be set for Prefix-SIDs allocated to inter- 515 area prefixes that are originated by the ABR based on intra-area or 516 inter-area reachability between areas. When the inter-area prefix is 517 generated based on a prefix which is directly attached to the ABR, 518 NP-Flag SHOULD NOT be set 520 The NP-Flag (No-PHP) MUST be set on the Prefix-SIDs allocated to 521 redistributed prefixes, unless the redistributed prefix is directly 522 attached to ASBR, in which case the NP-Flag SHOULD NOT be set. 524 If the NP-Flag is not set then any upstream neighbor of the Prefix- 525 SID originator MUST pop the Prefix-SID. This is equivalent to the 526 penultimate hop popping mechanism used in the MPLS dataplane. In 527 such case, MPLS EXP bits of the Prefix-SID are not preserved for the 528 final destination (the Prefix-SID being removed). If the NP-Flag is 529 clear then the received E-flag is ignored. 531 If the NP-Flag is set then: 533 If the E-flag is not set then any upstream neighbor of the Prefix- 534 SID originator MUST keep the Prefix-SID on top of the stack. This 535 is useful when the originator of the Prefix-SID must stitch the 536 incoming packet into a continuing MPLS LSP to the final 537 destination. This could occur at an inter-area border router 538 (prefix propagation from one area to another) or at an inter- 539 domain border router (prefix propagation from one domain to 540 another). 542 If the E-flag is set then any upstream neighbor of the Prefix-SID 543 originator MUST replace the Prefix-SID with a Prefix-SID having an 544 Explicit-NULL value. This is useful, e.g., when the originator of 545 the Prefix-SID is the final destination for the related prefix and 546 the originator wishes to receive the packet with the original EXP 547 bits. 549 When M-Flag is set, NP-flag and E-flag MUST be ignored at reception. 551 As the Mapping Server does not specify the originator of a prefix 552 advertisement it is not possible to determine PHP behavior solely 553 based on the Mapping Server advertisement. However, PHP behavior may 554 safely be done in following cases: 556 Prefix is of intra-area type and the downstream neighbor is the 557 originator of the prefix. 559 Prefix is of inter-area type and downstream neighbor is an ABR, 560 which is advertising the prefix reachability and is setting LA-bit 561 in the Prefix Options as described in section 3.1 of 562 [I-D.ietf-ospf-ospfv3-lsa-extend]. 564 Prefix is of external type and downstream neighbor is an ASBR, 565 which is advertising the prefix reachability and is setting LA-bit 566 in the Prefix Options as described in section 3.1 of 567 [I-D.ietf-ospf-ospfv3-lsa-extend]. 569 When a Prefix-SID is advertised in an Extended Prefix Range TLV, then 570 the value advertised in Prefix SID Sub-TLV is interpreted as a 571 starting SID value. 573 Example 1: if the following router addresses (loopback addresses) 574 need to be mapped into the corresponding Prefix SID indexes: 576 Router-A: 192::1/128, Prefix-SID: Index 1 577 Router-B: 192::2/128, Prefix-SID: Index 2 578 Router-C: 192::3/128, Prefix-SID: Index 3 579 Router-D: 192::4/128, Prefix-SID: Index 4 581 then the Address Prefix field in the OSPFv3 Extended Prefix Range TLV 582 is set to 192::1, Prefix Length would be set to 128, Range Size would 583 be set to 4 and the Index value in the Prefix-SID Sub-TLV would be 584 set to 1. 586 Example 2: If the following prefixes need to be mapped into the 587 corresponding Prefix-SID indexes: 589 10:1:1::0/120, Prefix-SID: Index 51 590 10:1:1::100/120, Prefix-SID: Index 52 591 10:1:1::200/120, Prefix-SID: Index 53 592 10:1:1::300/120, Prefix-SID: Index 54 593 10:1:1::400/120, Prefix-SID: Index 55 594 10:1:1::500/120, Prefix-SID: Index 56 595 10:1:1::600/120, Prefix-SID: Index 57 597 then the Address Prefix field in the OSPFv3 Extended Prefix Range TLV 598 is set to 10:1:1::0, Prefix Length would be set to 120, Range Size 599 would be set to 7 and the Index value in the Prefix-SID Sub-TLV would 600 be set to 51. 602 6. SID/Label Binding Sub-TLV 604 The SID/Label Binding Sub-TLV is used to advertise SID/Label mapping 605 for a path to the prefix. 607 The SID/Label Binding Sub-TLV MAY be originated by any router in an 608 OSPFv3 domain. The router may advertise a SID/Label binding to a FEC 609 along with at least a single 'nexthop style' anchor. The protocol 610 supports more than one 'nexthop style' anchor to be attached to a 611 SID/Label binding, which results into a simple path description 612 language. In analogy to RSVP the terminology for this is called an 613 'Explicit Route Object' (ERO). Since ERO style path notation allows 614 anchoring SID/label bindings to both link and node IP addresses, any 615 Label Switched Path (LSP) can be described. Furthermore, SID/Label 616 Bindings from external protocols can also be re-advertised. 618 The SID/Label Binding Sub-TLV may be used for advertising SID/Label 619 Bindings and their associated Primary and Backup paths. In one 620 single TLV, either a primary ERO Path, backup ERO Path, or both are 621 advertised. If a router wants to advertise multiple parallel paths, 622 then it can generate several TLVs for the same Prefix/FEC. Each 623 occurrence of a Binding TLV for a given FEC Prefix will add a new 624 path. 626 SID/Label Binding Sub-TLV is a Sub-TLV of the following OSPFv3 TLVs, 627 as defined in [I-D.ietf-ospf-ospfv3-lsa-extend] and in Section 4: 629 Intra-Area Prefix TLV 631 Inter-Area Prefix TLV 633 External Prefix TLV 635 OSPFv3 Extended Prefix Range TLV 637 Multiple SID/Label Binding Sub-TLVs can be present in these TLVs. 638 The SID/Label Binding Sub-TLV has following format: 640 0 1 2 3 641 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 642 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 643 | Type | Length | 644 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 645 | Flags | Weight | Reserved | 646 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 647 | Sub-TLVs (variable) | 648 +- -+ 649 | | 651 where: 653 Type: TBD, suggested value 7 655 Length: variable 657 Flags: 1 octet field of following flags: 659 0 1 2 3 4 5 6 7 660 +-+-+-+-+-+-+-+-+ 661 |M| | 662 +-+-+-+-+-+-+-+-+ 664 where: 666 M-bit - When the bit is set the binding represents the 667 mirroring context as defined in 668 [I-D.minto-rsvp-lsp-egress-fast-protection]. 670 Weight: weight used for load-balancing purposes. The use of the 671 weight is defined in section 3.5.1 of 672 [I-D.ietf-spring-segment-routing]. 674 SID/Label Binding Sub-TLV currently supports following Sub-TLVs: 676 SID/Label Sub-TLV as described in Section 2.1. This Sub-TLV MUST 677 appear in the SID/Label Binding Sub-TLV and it MUST only appear 678 once. 680 ERO Metric Sub-TLV as defined in Section 6.1. 682 ERO Sub-TLVs as defined in Section 6.2. 684 6.1. ERO Metric Sub-TLV 686 The ERO Metric Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 688 The ERO Metric Sub-TLV advertises the cost of an ERO path. It is 689 used to compare the cost of a given source/destination path. A 690 router SHOULD advertise the ERO Metric Sub-TLV in an advertised ERO 691 TLV. The cost of the ERO Metric Sub-TLV SHOULD be set to the 692 cumulative IGP or TE path cost of the advertised ERO. Since 693 manipulation of the Metric field may attract or repel traffic to and 694 from the advertised segment, it MAY be manually overridden. 696 0 1 2 3 697 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 698 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 699 | Type | Length | 700 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 701 | Metric (4 octets) | 702 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 704 ERO Metric Sub-TLV format 706 where: 708 Type: TBD, suggested value 8 710 Length: Always 4 712 Metric: A 4 octet metric representing the aggregate IGP or TE path 713 cost. 715 6.2. ERO Sub-TLVs 717 All 'ERO' information represents an ordered set which describes the 718 segments of a path. The first ERO Sub-TLV describes the first 719 segment of a path. Similiarly, the last ERO Sub-TLV describes the 720 segment closest to the egress point. If a router extends or stitches 721 a path, it MUST prepend the new segment's path information to the ERO 722 list. This applies equally to advertised backup EROs. 724 All ERO Sub-TLVs must immediately follow the (SID)/Label Sub-TLV. 726 All Backup ERO Sub-TLVs must immediately follow the last ERO Sub-TLV. 728 6.2.1. IPv4 ERO Sub-TLV 730 IPv4 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 732 The IPv4 ERO Sub-TLV describes a path segment using IPv4 Address 733 style of encoding. Its semantics have been borrowed from [RFC3209]. 735 0 1 2 3 736 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 737 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 738 | Type | Length | 739 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 740 | Flags | Reserved | 741 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 742 | IPv4 Address (4 octets) | 743 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 745 IPv4 ERO Sub-TLV format 747 where: 749 Type: TBD, suggested value 9 751 Length: 8 bytes 753 Flags: 1 octet field of following flags: 755 0 1 2 3 4 5 6 7 756 +-+-+-+-+-+-+-+-+ 757 |L| | 758 +-+-+-+-+-+-+-+-+ 760 where: 762 L-bit - If the L-bit is set, then the segment path is 763 designated as 'loose'. Otherwise, the segment path is 764 designated as 'strict'. 766 IPv4 Address - the address of the explicit route hop. 768 6.2.2. IPv6 ERO Sub-TLV 770 IPv6 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 772 The IPv6 ERO Sub-TLV (Type TBA) describes a path segment using IPv6 773 Address style of encoding. Its semantics have been borrowed from 774 [RFC3209]. 776 0 1 2 3 777 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 778 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 779 | Type | Length | 780 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 781 | Flags | Reserved | 782 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 783 | | 784 +- -+ 785 | | 786 +- IPv6 Address -+ 787 | | 788 +- -+ 789 | | 790 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 792 IPv6 ERO Sub-TLV format 794 where: 796 Type: TBD, suggested value 10 798 Length: 8 bytes 800 Flags: 1 octet field of following flags: 802 0 1 2 3 4 5 6 7 803 +-+-+-+-+-+-+-+-+ 804 |L| | 805 +-+-+-+-+-+-+-+-+ 807 where: 809 L-bit - If the L-bit is set, then the segment path is 810 designated as 'loose'. Otherwise, the segment path is 811 designated as 'strict'. 813 IPv6 Address - the address of the explicit route hop. 815 6.2.3. Unnumbered Interface ID ERO Sub-TLV 817 The Unnumbered Interface ID ERO Sub-TLV is a Sub-TLV of the SID/Label 818 Binding Sub-TLV. 820 The appearance and semantics of the 'Unnumbered Interface ID' have 821 been borrowed from [RFC3477]. 823 The Unnumbered Interface-ID ERO Sub-TLV describes a path segment that 824 spans over an unnumbered interface. Unnumbered interfaces are 825 referenced using the interface index. Interface indices are assigned 826 local to the router and therefore not unique within a domain. All 827 elements in an ERO path need to be unique within a domain and hence 828 need to be disambiguated using a domain unique Router-ID. 830 0 1 2 3 831 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 832 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 833 | Type | Length | 834 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 835 | Flags | Reserved | 836 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 837 | Router ID | 838 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 839 | Interface ID | 840 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 842 where: 844 Unnumbered Interface ID ERO Sub-TLV format 846 Type: TBD, suggested value 11 848 Length: 12 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 Router-ID: Router-ID of the next-hop. 864 Interface ID: is the identifier assigned to the link by the router 865 specified by the Router-ID. 867 6.2.4. IPv4 Backup ERO Sub-TLV 869 IPv4 Prefix Backup ERO Sub-TLV is a Sub-TLV of the SID/Label Binding 870 Sub-TLV. 872 The IPv4 Backup ERO Sub-TLV describes a path segment using IPv4 873 Address style of encoding. Its semantics have been borrowed from 874 [RFC3209]. 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 | IPv4 Address (4 octets) | 884 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 886 IPv4 Backup ERO Sub-TLV format 888 where: 890 Type: TBD, suggested value 12 892 Length: 8 bytes 894 Flags: 1 octet field of following flags: 896 0 1 2 3 4 5 6 7 897 +-+-+-+-+-+-+-+-+ 898 |L| | 899 +-+-+-+-+-+-+-+-+ 901 where: 903 L-bit - If the L-bit is set, then the segment path is 904 designated as 'loose'. Otherwise, the segment path is 905 designated as 'strict'.' 907 IPv4 Address - the address of the explicit route hop. 909 6.2.5. IPv6 Backup ERO Sub-TLV 911 The IPv6 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. 913 The IPv6 Backup ERO Sub-TLV describes a Backup path segment using 914 IPv6 Address style of encoding. Its appearance and semantics have 915 been borrowed from [RFC3209]. 917 The 'L' bit in the Flags is a one-bit attribute. If the L bit is 918 set, then the value of the attribute is 'loose.' Otherwise, the 919 value of the attribute is 'strict.' 921 0 1 2 3 922 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 923 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 924 | Type | Length | 925 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 926 | Flags | Reserved | 927 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 928 | | 929 +- -+ 930 | | 931 +- IPv6 Address -+ 932 | | 933 +- -+ 934 | | 935 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 937 IPv6 Backup ERO Sub-TLV format 939 where: 941 Type: TBD, suggested value 13 943 Length: 8 bytes 944 Flags: 1 octet field of following flags: 946 0 1 2 3 4 5 6 7 947 +-+-+-+-+-+-+-+-+ 948 |L| | 949 +-+-+-+-+-+-+-+-+ 951 where: 953 L-bit - If the L-bit is set, then the segment path is 954 designated as 'loose'. Otherwise, the segment path is 955 designated as 'strict'. 957 IPv6 Address - the address of the explicit route hop. 959 6.2.6. Unnumbered Interface ID Backup ERO Sub-TLV 961 The Unnumbered Interface ID Backup Sub-TLV is a Sub-TLV of the SID/ 962 Label Binding Sub-TLV. 964 The appearance and semantics of the 'Unnumbered Interface ID' have 965 been borrowed from [RFC3477]. 967 The Unnumbered Interface-ID Backup ERO Sub-TLV describes a path 968 segment that spans over an unnumbered interface. Unnumbered 969 interfaces are referenced using the interface index. Interface 970 indices are assigned local to the router and are therefore not unique 971 within a domain. All elements in an ERO path need to be unique 972 within a domain and hence need to be disambiguated with specification 973 of the unique Router-ID. 975 0 1 2 3 976 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 977 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 978 | Type | Length | 979 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 980 | Flags | Reserved | 981 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 982 | Router ID | 983 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 984 | Interface ID | 985 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 987 Unnumbered Interface ID Backup ERO Sub-TLV format 989 where: 991 Type: TBD, suggested value 14 992 Length: 12 bytes 994 Flags: 1 octet field of following flags: 996 0 1 2 3 4 5 6 7 997 +-+-+-+-+-+-+-+-+ 998 |L| | 999 +-+-+-+-+-+-+-+-+ 1001 where: 1003 L-bit - If the L-bit is set, then the segment path is 1004 designated as 'loose'. Otherwise, the segment path is 1005 designated as 'strict'. 1007 Router-ID: Router-ID of the next-hop. 1009 Interface ID: is the identifier assigned to the link by the router 1010 specified by the Router-ID. 1012 7. Adjacency Segment Identifier (Adj-SID) 1014 An Adjacency Segment Identifier (Adj-SID) represents a router 1015 adjacency in Segment Routing. 1017 7.1. Adj-SID Sub-TLV 1019 The extended OSPFv3 LSAs, as defined in 1020 [I-D.ietf-ospf-ospfv3-lsa-extend], are used to advertise prefix SID 1021 in OSPFv3 1023 The Adj-SID Sub-TLV is an optional Sub-TLV of the Router-Link TLV as 1024 defined in [I-D.ietf-ospf-ospfv3-lsa-extend]. It MAY appear multiple 1025 times in Router-Link TLV. Examples where more than one Adj-SID may 1026 be used per neighbor are described in section 4 of 1027 [I-D.filsfils-spring-segment-routing-use-cases]. The Adj-SID Sub-TLV 1028 has the following format: 1030 0 1 2 3 1031 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 1032 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1033 | Type | Length | 1034 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1035 | Flags | Weight | Reserved | 1036 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1037 | SID/Label/Index (variable) | 1038 +---------------------------------------------------------------+ 1040 where: 1042 Type: TBD, suggested value 5. 1044 Length: variable. 1046 Flags. 1 octet field of following flags: 1048 0 1 2 3 4 5 6 7 1049 +-+-+-+-+-+-+-+-+ 1050 |B|V|L|S| | 1051 +-+-+-+-+-+-+-+-+ 1053 where: 1055 B-Flag: Backup-flag. If set, the Adj-SID refers to an 1056 adjacency that is eligible for protection (e.g.: using IPFRR or 1057 MPLS-FRR) as described in section 3.5 of 1058 [I-D.ietf-spring-segment-routing]. 1060 The V-Flag: Value/Index Flag. If set, then the Adj-SID carries 1061 an absolute value. If not set, then the Adj-SID carries an 1062 index. 1064 The L-Flag: Local/Global Flag. If set, then the value/index 1065 carried by the Adj-SID has local significance. If not set, 1066 then the value/index carried by this Sub-TLV has global 1067 significance. 1069 The S-Flag. Set Flag. When set, the S-Flag indicates that the 1070 Adj-SID refers to a set of adjacencies (and therefore MAY be 1071 assigned to other adjacencies as well). 1073 Other bits: Reserved. These MUST be zero when sent and are 1074 ignored when received. 1076 Weight: weight used for load-balancing purposes. The use of the 1077 weight is defined in section 3.5.1 of 1078 [I-D.ietf-spring-segment-routing]. 1080 SID/Index/Label: label or index value depending on the V-bit 1081 setting. 1083 Examples: 1085 A 32 bit global index defining the offset in the SID/Label 1086 space advertised by this router - in this case the V and L 1087 flags MUST NOT be set. 1089 A 24 bit local label where the 20 rightmost bits are used 1090 for encoding the label value - in this case the V and L 1091 flags MUST be set. 1093 16 octet IPv6 address - in this case the V-flag MUST be set. 1094 The L-flag MUST be set for link-local IPv6 address and MUST 1095 NOT be set for IPv6 global unicast address. 1097 An SR capable router MAY allocate an Adj-SID for each of its 1098 adjacencies and set the B-Flag when the adjacency is eligible for 1099 protection by an FRR mechanism (IP or MPLS) as described in section 1100 3.5 of [I-D.ietf-spring-segment-routing]. 1102 7.2. LAN Adj-SID Sub-TLV 1104 The LAN Adj-SID is an optional Sub-TLV of the Router-Link TLV. It 1105 MAY appear multiple times in the Router-Link TLV. It is used to 1106 advertise a SID/Label for an adjacency to a non-DR neighbor on a 1107 broadcast or NBMA network. 1109 0 1 2 3 1110 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 1111 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1112 | Type | Length | 1113 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1114 | Flags | Weight | Reserved | 1115 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1116 | Neighbor ID | 1117 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1118 | SID/Label/Index (variable) | 1119 +---------------------------------------------------------------+ 1121 where: 1123 Type: TBD, suggested value 6. 1125 Length: variable. 1127 Flags. 1 octet field of following flags: 1129 0 1 2 3 4 5 6 7 1130 +-+-+-+-+-+-+-+-+ 1131 |B|V|L|S| | 1132 +-+-+-+-+-+-+-+-+ 1134 where: 1136 B-Flag: Backup-flag: set if the LAN-Adj-SID refer to an 1137 adjacency that is eligible for protection (e.g.: using IPFRR or 1138 MPLS-FRR) as described in section 3.1 of 1139 [I-D.filsfils-spring-segment-routing-use-cases]. 1141 The V-Flag: Value/Index Flag. If set, then the LAN Adj-SID 1142 carries an absolute value. If not set, then the LAN Adj-SID 1143 carries an index. 1145 The L-Flag: Local/Global Flag. If set, then the value/index 1146 carried by the LAN Adj-SID has local significance. If not set, 1147 then the value/index carried by this subTLV has global 1148 significance. 1150 The S-Flag. Set Flag. When set, the S-Flag indicates that the 1151 LAN Adj-SID refers to a set of adjacencies (and therefore MAY 1152 be assigned to other adjacencies as well). 1154 Other bits: Reserved. These MUST be zero when sent and are 1155 ignored when received. 1157 Weight: weight used for load-balancing purposes. The use of the 1158 weight is defined in section 3.5.1 of 1159 [I-D.ietf-spring-segment-routing]. 1161 Neighbor ID: The Router ID of the neighbor for which the Adj-SID 1162 is advertised. 1164 SID/Index/Label: label or index value depending on the V-bit 1165 setting. 1167 Examples: 1169 A 32 bit global index defining the offset in the SID/Label 1170 space advertised by this router - in this case the V and L 1171 flags MUST NOT be set. 1173 A 24 bit local label where the 20 rightmost bits are used 1174 for encoding the label value - in this case the V and L 1175 flags MUST be set. 1177 16 octet IPv6 address - in this case the V-flag MUST be set. 1178 The L-flag MUST be set for link-local IPv6 address and MUST 1179 NOT be set for IPv6 global unicast address. 1181 8. Elements of Procedure 1183 8.1. Intra-area Segment routing in OSPFv3 1185 An OSPFv3 router that supports segment routing MAY advertise Prefix- 1186 SIDs for any prefix that it is advertising reachability for (e.g., 1187 loopback IP address) as described in Section 5. 1189 If multiple routers advertise a Prefix-SID for the same prefix, then 1190 the Prefix-SID MUST be the same. This is required in order to allow 1191 traffic load-balancing when multiple equal cost paths to the 1192 destination exist in the network. 1194 The Prefix-SID can also be advertised by the SR Mapping Servers (as 1195 described in [I-D.filsfils-spring-segment-routing-ldp-interop]). The 1196 Mapping Server advertises Prefix-SID for remote prefixes that exist 1197 in the network. Multiple Mapping Servers can advertise Prefix-SID 1198 for the same prefix, in which case the same Prefix-SID MUST be 1199 advertised by all of them. The SR Mapping Server could use either 1200 area scope or autonomous system flooding scope when advertising 1201 Prefix SID for prefixes, based on the configuration of the SR Mapping 1202 Server. Depending on the flooding scope used, the SR Mapping Server 1203 chooses the LSA that will be used. If the area flooding scope is 1204 needed, E-Intra-Area-Prefix-LSA ([I-D.ietf-ospf-ospfv3-lsa-extend]) 1205 is used. If autonomous system flooding scope is needed, E-AS- 1206 External-LSA ([I-D.ietf-ospf-ospfv3-lsa-extend]) is used. 1208 When a Prefix-SID is advertised by the Mapping Server, which is 1209 indicated by the M-flag in the Prefix-SID Sub-TLV (Section 5), the 1210 route type as implied by the LSA type is ignored and the Prefix-SID 1211 is bound to the corresponding prefix independent of the route type. 1213 Advertisement of the Prefix-SID by the Mapping Server using Inter- 1214 Area Prefix TLV, External-Prefix TLV or Intra-Area-Prefix TLV 1215 ([I-D.ietf-ospf-ospfv3-lsa-extend]) does not itself contribute to the 1216 prefix reachability. The NU-bit MUST be set in the PrefixOptions 1217 field of the LSA which is used by the Mapping Server to advertise SID 1218 or SID range, which prevents the advertisement to contribute to 1219 prefix reachability. 1221 SR Mapping Server MUST use OSPF Extended Prefix Range TLV when 1222 advertising SIDs for prefixes. Prefixes of different route-types can 1223 be combined in a single OSPF Extended Prefix Range TLV advertised by 1224 the SR Mapping Server. 1226 Area scoped OSPF Extended Prefix Range TLV are propagated between 1227 areas. Similar to propagation of prefixes between areas, ABR only 1228 propagates the OSPF Extended Prefix Range TLV that it considers to be 1229 the best from the set it received. The rules used to pick the best 1230 OSPF Extended Prefix Range TLV is described in Section 4. 1232 When propagating OSPF Extended Prefix Range TLV between areas, ABR 1233 MUST set the IA-Flag, that is used to prevent redundant flooding of 1234 the OSPF Extended Prefix Range TLV between areas as described in 1235 Section 4. 1237 If the Prefix-SID that is advertised in Prefix SID Sub-TLV is also 1238 covered by the OSPF Extended Prefix Range TLV, the Prefix-SID 1239 advertised in Prefix SID Sub-TLV MUST be preferred. 1241 8.2. Inter-area Segment routing in OSPFv3 1243 In order to support SR in a multi-area environment, OSPFv3 must 1244 propagate Prefix-SID information between areas. The following 1245 procedure is used in order to propagate Prefix SIDs between areas. 1247 When an OSPFv3 ABR advertises a Inter-Area-Prefix-LSA from an intra- 1248 area prefix to all its connected areas, it will also include Prefix- 1249 SID Sub-TLV, as described in Section 5. The Prefix-SID value will be 1250 set as follows: 1252 The ABR will look at its best path to the prefix in the source 1253 area and find out the advertising router associated with the best 1254 path to that prefix. 1256 The ABR will then determine if such router advertised a Prefix-SID 1257 for the prefix and use it when advertising the Prefix-SID to other 1258 connected areas. 1260 If no Prefix-SID was advertised for the prefix in the source area 1261 by the router that contributes to the best path to the prefix, the 1262 originating ABR will use the Prefix-SID advertised by any other 1263 router when propagating Prefix-SID for the prefix to other areas. 1265 When an OSPFv3 ABR advertises Inter-Area-Prefix-LSA LSAs from an 1266 inter-area route to all its connected areas it will also include 1267 Prefix-SID Sub-TLV, as described in Section 5. The Prefix-SID value 1268 will be set as follows: 1270 The ABR will look at its best path to the prefix in the source 1271 area and find out the advertising router associated with the best 1272 path to that prefix. 1274 The ABR will then look if such router advertised a Prefix-SID for 1275 the prefix and use it when advertising the Prefix-SID to other 1276 connected areas. 1278 If no Prefix-SID was advertised for the prefix in the source area 1279 by the ABR that contributes to the best path to the prefix, the 1280 originating ABR will use the Prefix-SID advertised by any other 1281 router when propagating Prefix-SID for the prefix to other areas. 1283 8.3. SID for External Prefixes 1285 AS-External-LSAs are flooded domain wide. When an ASBR, which 1286 supports SR, generates E-AS-External-LSA, it should also include 1287 Prefix-SID Sub-TLV, as described in Section 5. The Prefix-SID value 1288 will be set to the SID that has been reserved for that prefix. 1290 When an NSSA ASBR translates an E-NSSA-LSA into an E-AS-External-LSA, 1291 it should also advertise the Prefix-SID for the prefix. The NSSA ABR 1292 determines its best path to the prefix advertised in the translated 1293 E-NSSA-LSA and finds the advertising router associated with that 1294 path. If the advertising router has advertised a Prefix-SID for the 1295 prefix, then the NSSA ABR uses it when advertising the Prefix-SID in 1296 the E-AS-External-LSA. Otherwise the Prefix-SID advertised by any 1297 other router will be used. 1299 8.4. Advertisement of Adj-SID 1301 The Adjacency Segment Routing Identifier (Adj-SID) is advertised 1302 using the Adj-SID Sub-TLV as described in Section 7. 1304 8.4.1. Advertisement of Adj-SID on Point-to-Point Links 1306 An Adj-SID MAY be advertised for any adjacency on p2p link that is in 1307 a state 2-Way or higher. If the adjacency on a p2p link transitions 1308 from the FULL state, then the Adj-SID for that adjacency MAY be 1309 removed from the area. If the adjacency transitions to a state lower 1310 then 2-Way, then the Adj-SID advertisement MUST be removed from the 1311 area. 1313 8.4.2. Adjacency SID on Broadcast or NBMA Interfaces 1315 Broadcast or NBMA networks in OSPFv3 are represented by a star 1316 topology where the Designated Router (DR) is the central point to 1317 which all other routers on the broadcast or NBMA network connect. As 1318 a result, routers on the broadcast or NBMA network advertise only 1319 their adjacency to the DR. Routers that do not act as DR do not form 1320 or advertise adjacencies with each other. They do, however, maintain 1321 a 2-Way adjacency state with each other and are directly reachable. 1323 When Segment Routing is used, each router on the broadcast or NBMA 1324 network MAY advertise the Adj-SID for its adjacency to the DR using 1325 Adj-SID Sub-TLV as described in Section 7.1. 1327 SR capable routers MAY also advertise an Adj-SID for other neighbors 1328 (e.g. BDR, DR-OTHER) on the broadcast or NBMA network using the LAN 1329 ADJ-SID Sub-TLV as described in Section 7.2. 1331 9. IANA Considerations 1333 This specification updates several existing OSPF registries. 1335 9.1. OSPF Router Information (RI) TLVs Registry 1337 o 8 (IANA Preallocated) - SR-Algorithm TLV 1339 o 9 (IANA Preallocated) - SID/Label Range TLV 1341 9.2. OSPFv3 Extend-LSA TLV Registry 1343 Following values are allocated: 1345 o suggested value 9 - OSPF Extended Prefix Range TLV 1347 9.3. OSPFv3 Extend-LSA Sub-TLV registry 1349 o suggested value 3 - SID/Label Sub-TLV 1351 o suggested value 4 - Prefix SID Sub-TLV 1353 o suggested value 5 - Adj-SID Sub-TLV 1355 o suggested value 6 - LAN Adj-SID Sub-TLV 1357 o suggested value 7 - SID/Label Binding Sub-TLV 1359 o suggested value 8 - ERO Metric Sub-TLV 1361 o suggested value 9 - IPv4 ERO Sub-TLV 1363 o suggested value 10 - IPv6 ERO Sub-TLV 1365 o suggested value 11 - Unnumbered Interface ID ERO Sub-TLV 1366 o suggested value 12 - IPv4 Backup ERO Sub-TLV 1368 o suggested value 13 - IPv6 Backup ERO Sub-TLV 1370 o suggested value 14 - Unnumbered Interface ID Backup ERO Sub-TLV 1372 10. Security Considerations 1374 Implementations must assure that malformed permutations of the newly 1375 defined sub-TLvs do not result in errors which cause hard OSPFv3 1376 failures. 1378 11. Acknowledgements 1380 Thanks to Acee Lindem for the detail review of the draft, 1381 corrections, as well as discussion about details of the encoding. 1383 We would like to thank Anton Smirnov for his contribution. 1385 Many thanks to Yakov Rekhter, John Drake and Shraddha Hedge for their 1386 contribution on earlier incarnations of the "Binding / MPLS Label 1387 TLV" in [I-D.gredler-ospf-label-advertisement]. 1389 12. References 1391 12.1. Normative References 1393 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1394 Requirement Levels", BCP 14, RFC 2119, 1395 DOI 10.17487/RFC2119, March 1997, 1396 . 1398 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1399 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1400 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1401 . 1403 [RFC3477] Kompella, K. and Y. Rekhter, "Signalling Unnumbered Links 1404 in Resource ReSerVation Protocol - Traffic Engineering 1405 (RSVP-TE)", RFC 3477, DOI 10.17487/RFC3477, January 2003, 1406 . 1408 [RFC4970] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and 1409 S. Shaffer, "Extensions to OSPF for Advertising Optional 1410 Router Capabilities", RFC 4970, DOI 10.17487/RFC4970, July 1411 2007, . 1413 12.2. Informative References 1415 [I-D.filsfils-spring-segment-routing-ldp-interop] 1416 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 1417 Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., 1418 Ytti, S., Henderickx, W., Tantsura, J., and E. Crabbe, 1419 "Segment Routing interoperability with LDP", draft- 1420 filsfils-spring-segment-routing-ldp-interop-02 (work in 1421 progress), September 2014. 1423 [I-D.filsfils-spring-segment-routing-use-cases] 1424 Filsfils, C., Francois, P., Previdi, S., Decraene, B., 1425 Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., 1426 Ytti, S., Henderickx, W., Tantsura, J., Kini, S., and E. 1427 Crabbe, "Segment Routing Use Cases", draft-filsfils- 1428 spring-segment-routing-use-cases-01 (work in progress), 1429 October 2014. 1431 [I-D.gredler-ospf-label-advertisement] 1432 Gredler, H., Amante, S., Scholl, T., and L. Jalil, 1433 "Advertising MPLS labels in OSPF", draft-gredler-ospf- 1434 label-advertisement-03 (work in progress), May 2013. 1436 [I-D.ietf-ospf-ospfv3-lsa-extend] 1437 Lindem, A., Mirtorabi, S., Roy, A., and F. Baker, "OSPFv3 1438 LSA Extendibility", draft-ietf-ospf-ospfv3-lsa-extend-09 1439 (work in progress), November 2015. 1441 [I-D.ietf-spring-segment-routing] 1442 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 1443 Litkowski, S., Horneffer, M., Shakir, R., Tantsura, J., 1444 and E. Crabbe, "Segment Routing Architecture", draft-ietf- 1445 spring-segment-routing-01 (work in progress), February 1446 2015. 1448 [I-D.minto-rsvp-lsp-egress-fast-protection] 1449 Jeganathan, J., Gredler, H., and Y. Shen, "RSVP-TE LSP 1450 egress fast-protection", draft-minto-rsvp-lsp-egress-fast- 1451 protection-03 (work in progress), November 2013. 1453 [I-D.previdi-6man-segment-routing-header] 1454 Previdi, S., Filsfils, C., Field, B., Leung, I., Linkova, 1455 J., Kosugi, T., Vyncke, E., and D. Lebrun, "IPv6 Segment 1456 Routing Header (SRH)", draft-previdi-6man-segment-routing- 1457 header-08 (work in progress), October 2015. 1459 Authors' Addresses 1461 Peter Psenak (editor) 1462 Cisco Systems, Inc. 1463 Apollo Business Center 1464 Mlynske nivy 43 1465 Bratislava 821 09 1466 Slovakia 1468 Email: ppsenak@cisco.com 1470 Stefano Previdi (editor) 1471 Cisco Systems, Inc. 1472 Via Del Serafico, 200 1473 Rome 00142 1474 Italy 1476 Email: sprevidi@cisco.com 1478 Clarence Filsfils 1479 Cisco Systems, Inc. 1480 Brussels 1481 Belgium 1483 Email: cfilsfil@cisco.com 1485 Hannes Gredler 1486 Individual 1487 Austria 1489 Email: hannes@gredler.at 1491 Rob Shakir 1492 Jive Communications, Inc. 1493 1275 West 1600 North, Suite 100 1494 Orem, UT 84057 1495 US 1497 Email: rrjs@rob.sh 1498 Wim Henderickx 1499 Alcatel-Lucent 1500 Copernicuslaan 50 1501 Antwerp 2018 1502 BE 1504 Email: wim.henderickx@alcatel-lucent.com 1506 Jeff Tantsura 1507 Ericsson 1508 300 Holger Way 1509 San Jose, CA 95134 1510 US 1512 Email: Jeff.Tantsura@ericsson.com