idnits 2.17.1 draft-ietf-lsr-isis-srv6-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 are 24 instances of too long lines in the document, the longest one being 17 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (January 15, 2020) is 1560 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: '1' on line 1035 == Outdated reference: A later version (-13) exists of draft-ietf-6man-spring-srv6-oam-03 == Outdated reference: A later version (-28) exists of draft-ietf-spring-srv6-network-programming-08 -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10589' == Outdated reference: A later version (-26) exists of draft-ietf-lsr-flex-algo-05 Summary: 1 error (**), 0 flaws (~~), 4 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Networking Working Group P. Psenak, Ed. 3 Internet-Draft C. Filsfils 4 Intended status: Standards Track Cisco Systems 5 Expires: July 18, 2020 A. Bashandy 6 Arrcus 7 B. Decraene 8 Orange 9 Z. Hu 10 Huawei Technologies 11 January 15, 2020 13 IS-IS Extension to Support Segment Routing over IPv6 Dataplane 14 draft-ietf-lsr-isis-srv6-extensions-04.txt 16 Abstract 18 Segment Routing (SR) allows for a flexible definition of end-to-end 19 paths by encoding paths as sequences of topological sub-paths, called 20 "segments". Segment routing architecture can be implemented over an 21 MPLS data plane as well as an IPv6 data plane. This draft describes 22 the IS-IS extensions required to support Segment Routing over an IPv6 23 data plane. 25 Requirements Language 27 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 28 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 29 "OPTIONAL" in this document are to be interpreted as described in BCP 30 14 [RFC2119] [RFC8174] when, and only when, they appear in all 31 capitals, as shown here. 33 Status of This Memo 35 This Internet-Draft is submitted in full conformance with the 36 provisions of BCP 78 and BCP 79. 38 Internet-Drafts are working documents of the Internet Engineering 39 Task Force (IETF). Note that other groups may also distribute 40 working documents as Internet-Drafts. The list of current Internet- 41 Drafts is at https://datatracker.ietf.org/drafts/current/. 43 Internet-Drafts are draft documents valid for a maximum of six months 44 and may be updated, replaced, or obsoleted by other documents at any 45 time. It is inappropriate to use Internet-Drafts as reference 46 material or to cite them other than as "work in progress." 48 This Internet-Draft will expire on July 18, 2020. 50 Copyright Notice 52 Copyright (c) 2020 IETF Trust and the persons identified as the 53 document authors. All rights reserved. 55 This document is subject to BCP 78 and the IETF Trust's Legal 56 Provisions Relating to IETF Documents 57 (https://trustee.ietf.org/license-info) in effect on the date of 58 publication of this document. Please review these documents 59 carefully, as they describe your rights and restrictions with respect 60 to this document. Code Components extracted from this document must 61 include Simplified BSD License text as described in Section 4.e of 62 the Trust Legal Provisions and are provided without warranty as 63 described in the Simplified BSD License. 65 Table of Contents 67 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 68 2. SRv6 Capabilities sub-TLV . . . . . . . . . . . . . . . . . . 4 69 3. Advertising Supported Algorithms . . . . . . . . . . . . . . 4 70 4. Advertising Maximum SRv6 SID Depths . . . . . . . . . . . . . 5 71 4.1. Maximum Segments Left MSD Type . . . . . . . . . . . . . 5 72 4.2. Maximum End Pop MSD Type . . . . . . . . . . . . . . . . 5 73 4.3. Maximum H.Encaps MSD Type . . . . . . . . . . . . . . . . 5 74 4.4. Maximum End D MSD Type . . . . . . . . . . . . . . . . . 6 75 5. SRv6 SIDs and Reachability . . . . . . . . . . . . . . . . . 6 76 6. Advertising Anycast Property . . . . . . . . . . . . . . . . 7 77 7. Advertising Locators and End SIDs . . . . . . . . . . . . . . 8 78 7.1. SRv6 Locator TLV Format . . . . . . . . . . . . . . . . . 8 79 7.2. SRv6 End SID sub-TLV . . . . . . . . . . . . . . . . . . 10 80 8. Advertising SRv6 Adjacency SIDs . . . . . . . . . . . . . . . 12 81 8.1. SRv6 End.X SID sub-TLV . . . . . . . . . . . . . . . . . 12 82 8.2. SRv6 LAN End.X SID sub-TLV . . . . . . . . . . . . . . . 14 83 9. SRv6 SID Structure Sub-Sub-TLV . . . . . . . . . . . . . . . 15 84 10. Advertising Endpoint Behaviors . . . . . . . . . . . . . . . 16 85 11. Implementation Status . . . . . . . . . . . . . . . . . . . . 17 86 11.1. Cisco . . . . . . . . . . . . . . . . . . . . . . . . . 17 87 11.2. Huawei . . . . . . . . . . . . . . . . . . . . . . . . . 17 88 11.3. Juniper . . . . . . . . . . . . . . . . . . . . . . . . 18 89 11.4. Interoperability Testing. . . . . . . . . . . . . . . . 18 90 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 91 12.1. SRv6 Locator TLV . . . . . . . . . . . . . . . . . . . . 18 92 12.1.1. SRv6 End SID sub-TLV . . . . . . . . . . . . . . . . 18 93 12.1.2. Revised sub-TLV table . . . . . . . . . . . . . . . 19 94 12.2. SRv6 Capabilities sub-TLV . . . . . . . . . . . . . . . 19 95 12.3. SRv6 End.X SID and SRv6 LAN End.X SID sub-TLVs . . . . . 19 96 12.4. MSD Types . . . . . . . . . . . . . . . . . . . . . . . 20 97 12.5. Sub-Sub-TLVs for SID Sub-TLVs . . . . . . . . . . . . . 20 98 12.6. Prefix Attribute Flags Sub-TLV . . . . . . . . . . . . . 20 99 13. Security Considerations . . . . . . . . . . . . . . . . . . . 21 100 14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 21 101 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 102 15.1. Normative References . . . . . . . . . . . . . . . . . . 22 103 15.2. Informative References . . . . . . . . . . . . . . . . . 24 104 15.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 25 105 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 107 1. Introduction 109 With Segment Routing (SR) [I-D.ietf-spring-segment-routing], a node 110 steers a packet through an ordered list of instructions, called 111 segments. 113 Segments are identified through Segment Identifiers (SIDs). 115 Segment Routing can be directly instantiated on the IPv6 data plane 116 through the use of the Segment Routing Header defined in 117 [I-D.ietf-6man-segment-routing-header]. SRv6 refers to this SR 118 instantiation on the IPv6 dataplane. 120 The network programming paradigm 121 [I-D.ietf-spring-srv6-network-programming] is central to SRv6. It 122 describes how any behavior can be bound to a SID and how any network 123 program can be expressed as a combination of SID's. 125 This document specifies IS-IS extensions that allow the IS-IS 126 protocol to encode some of these SIDs and their behaviors. 128 Familiarity with the network programming paradigm 129 [I-D.ietf-spring-srv6-network-programming] is necessary to understand 130 the extensions specified in this document. 132 This document defines one new top level IS-IS TLV and several new IS- 133 IS sub-TLVs. 135 The SRv6 Capabilities sub-TLV announces the ability to support SRv6. 137 Several new sub-TLVs are defined to advertise various SRv6 Maximum 138 SID Depths. 140 The new SRv6 Locator top level TLV announces SRv6 locators - a form 141 of summary address for the set of topology/algorithm specific SIDs 142 instantiated at the node. 144 The SRv6 End SID sub-TLV, the SRv6 End.X SID sub-TLV, and the SRv6 145 LAN End.X SID sub-TLV are used to advertise which SIDs are 146 instantiated at a node and what Endpoint behavior is bound to each 147 instantiated SID. 149 2. SRv6 Capabilities sub-TLV 151 A node indicates that it has support for SRv6 by advertising a new 152 SRv6 Capabilities sub-TLV of the router capabilities TLV [RFC7981]. 154 The SRv6 Capabilities sub-TLV may contain optional sub-sub-TLVs. No 155 sub-sub-TLVs are currently defined. 157 The SRv6 Capabilities sub-TLV has the following format: 159 0 1 2 3 160 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 161 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 162 | Type | Length | Flags | 163 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 164 | optional sub-sub-TLVs... 166 Type: Suggested value 25, to be assigned by IANA 168 Length: 2 + length of sub-sub-TLVs 170 Flags: 2 octets The following flags are defined: 172 0 1 173 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 174 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 175 | |O| | 176 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 178 where: 180 O-flag: If set, the router supports use of the O-bit 181 in the Segment Routing Header(SRH) as defined in 182 [I-D.ietf-6man-spring-srv6-oam]. 184 3. Advertising Supported Algorithms 186 SRv6 capable router indicates supported algorithm(s) by advertising 187 the SR Algorithm TLV as defined in [RFC8667]. 189 4. Advertising Maximum SRv6 SID Depths 191 [RFC8491] defines the means to advertise node/link specific values 192 for Maximum SID Depths (MSD) of various types. Node MSDs are 193 advertised in a sub-TLV of the Router Capabilities TLV [RFC7981]. 194 Link MSDs are advertised in a sub-TLV of TLVs 22, 23, 141, 222, and 195 223. 197 This document defines the relevant SRv6 MSDs and requests MSD type 198 assignments in the MSD Types registry created by [RFC8491]. 200 4.1. Maximum Segments Left MSD Type 202 The Maximum Segments Left MSD Type specifies the maximum value of the 203 "SL" field [I-D.ietf-6man-segment-routing-header] in the SRH of a 204 received packet before applying the Endpoint behavior associated with 205 a SID. 207 SRH Max SL Type: 41 (Suggested value - to be assigned by IANA) 209 If no value is advertised the supported value is assumed to be 0. 211 4.2. Maximum End Pop MSD Type 213 The Maximum End Pop MSD Type specifies the maximum number of SIDs in 214 the top SRH in an SRH stack to which the router can apply "PSP" or 215 USP" as defined in [I-D.ietf-spring-srv6-network-programming] 216 flavors. 218 SRH Max End Pop Type: 42 (Suggested value - to be assigned by IANA) 220 If the advertised value is zero or no value is advertised 221 then it is assumed that the router cannot apply PSP or USP flavors. 223 4.3. Maximum H.Encaps MSD Type 225 The Maximum H.Encaps MSD Type specifies the maximum number of SIDs 226 that can be included as part of the "H.Encaps" behavior as defined in 227 [I-D.ietf-spring-srv6-network-programming] . 229 SRH Max H.encaps Type: 44 (Suggested value - to be assigned by IANA) 231 If the advertised value is zero then the router can apply H.Encaps 232 only by encapsulating the incoming packet in another 233 IPv6 header without SRH the same way IPinIP encapsulation is 234 performed. 236 If the advertised value is non-zero then the router supports both 237 IPinIP and SRH encapsulation subject to the SID limitation 238 specified by the advertised value. 240 4.4. Maximum End D MSD Type 242 The Maximum End D MSD Type specifies the maximum number of SIDs in an 243 SRH when performing decapsulation associated with "End.Dx" behaviors 244 (e.g., "End.DX6" and "End.DT6") as defined in 245 [I-D.ietf-spring-srv6-network-programming]. 247 SRH Max End D Type: 45 (Suggested value - to be assigned by IANA) 249 If the advertised value is zero or no value is advertised 250 then it is assumed that the router cannot apply 251 "End.DX6" or "End.DT6" behaviors if the extension 252 header right underneath the outer IPv6 header is an SRH. 254 5. SRv6 SIDs and Reachability 256 As discussed in [I-D.ietf-spring-srv6-network-programming], an SRv6 257 Segment Identifier (SID) is 128 bits and consists of Locator, 258 Function and Argument parts. 260 A node is provisioned with topology/algorithm specific locators for 261 each of the topology/algorithm pairs supported by that node. Each 262 locator is a covering prefix for all SIDs provisioned on that node 263 which have the matching topology/algorithm. 265 Locators MUST be advertised in the SRv6 Locator TLV (see 266 Section 6.1). Forwarding entries for the locators advertised in the 267 SRv6 Locator TLV MUST be installed in the forwarding plane of 268 receiving SRv6 capable routers when the associated topology/algorithm 269 is supported by the receiving node. 271 Locators are routable and MAY also be advertised in Prefix 272 Reachability TLVs (236 or 237). 274 Locators associated with Flexible Algorithms [I-D.ietf-lsr-flex-algo] 275 SHOULD NOT be advertised in Prefix Reachability TLVs (236 or 237). 277 Locators associated with algorithm 0 (for all supported topologies) 278 SHOULD be advertised in a Prefix Reachability TLV (236 or 237) so 279 that legacy routers (i.e., routers which do NOT support SRv6) will 280 install a forwarding entry for algorithm 0 SRv6 traffic. 282 In cases where a locator advertisement is received in both in a 283 Prefix Reachability TLV and an SRv6 Locator TLV, the Prefix 284 Reachability advertisement MUST be preferred when installing entries 285 in the forwarding plane. This is to prevent inconsistent forwarding 286 entries on SRv6 capable/SRv6 incapable routers. 288 SRv6 SIDs are advertised as sub-TLVs in the SRv6 Locator TLV except 289 for SRv6 End.X SIDs/LAN End.X SIDs which are associated with a 290 specific Neighbor/Link and are therefore advertised as sub-TLVs in 291 TLVs 22, 23, 222, 223, and 141. 293 SRv6 SIDs are not directly routable and MUST NOT be installed in the 294 forwarding plane. Reachability to SRv6 SIDs depends upon the 295 existence of a covering locator. 297 Adherence to the rules defined in this section will assure that SRv6 298 SIDs associated with a supported topology/algorithm pair will be 299 forwarded correctly, while SRv6 SIDs associated with an unsupported 300 topology/algorithm pair will be dropped. NOTE: The drop behavior 301 depends on the absence of a default/summary route covering a given 302 locator. 304 In order for forwarding to work correctly, the locator associated 305 with SRv6 SID advertisements MUST be the longest match prefix 306 installed in the forwarding plane for those SIDs. There are a number 307 of ways in which this requirement could be compromised 309 o Another locator associated with a different topology/algorithm is 310 the longest match 312 o A prefix advertisement (i.e., from TLV 236 or 237) is the longest 313 match 315 6. Advertising Anycast Property 317 Both prefixes and SRv6 Locators may be configured as anycast and as 318 such the same value can be advertised by multiple routers. It is 319 useful for other routers to know that the advertisement is for an 320 anycast identifier. 322 A new flag in "Bit Values for Prefix Attribute Flags Sub-TLV" 323 registry [RFC7794] is defined to advertise the anycast property: 325 Bit #: 4 (Suggested - to be assigned by IANA) 326 Name: Anycast Flag (A-flag) 328 When the prefix/SRv6 locator is configured as anycast, the A-flag 329 SHOULD be set. Otherwise, this flag MUST be clear. 331 The A-flag MUST be preserved when leaked between levels. 333 The A-flag and the N-flag MUST NOT both be set. 335 If both N-flag and A-flag are set in the prefix/SRv6 Locator 336 advertisement, the receiving routers MUST ignore the N-flag. 338 The same prefix/SRv6 Locator can be advertised by multiple routers. 339 If at least one of them sets the A-Flag in its advertisement, the 340 prefix/SRv6 Locator SHOULD be considered as anycast. 342 7. Advertising Locators and End SIDs 344 The SRv6 Locator TLV is introduced to advertise SRv6 Locators and End 345 SIDs associated with each locator. 347 This new TLV shares the sub-TLV space defined for TLVs 135, 235, 236 348 and 237. 350 7.1. SRv6 Locator TLV Format 352 The SRv6 Locator TLV has the following format: 354 0 1 2 3 355 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 356 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 357 | Type | Length |R|R|R|R| MTID | 358 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 360 Followed by one or more locator entries of the form: 362 0 1 2 3 363 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 364 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 365 | Metric | 366 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 367 | Flags | Algorithm | 368 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 369 | Loc Size | Locator (variable)... 370 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 371 | Sub-tlv-len | Sub-TLVs (variable) . . . | 372 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 374 Type: 27 (Suggested value to be assigned by IANA) 376 Length: variable. 378 MTID: Multitopology Identifier as defined in [RFC5120]. 379 Note that the value 0 is legal. 381 Locator entry: 383 Metric: 4 octets. As described in [RFC5305]. 385 Flags: 1 octet. The following flags are defined 387 0 388 0 1 2 3 4 5 6 7 389 +-+-+-+-+-+-+-+-+ 390 |D| Reserved | 391 +-+-+-+-+-+-+-+-+ 393 where: 394 D bit: When the Locator is leaked from level-2 to level-1, the D 395 bit MUST be set. Otherwise, this bit MUST be clear. Locators 396 with the D bit set MUST NOT be leaked from level-1 to level-2. 397 This is to prevent looping. 399 The remaining bits are reserved for future use. They SHOULD be 400 set to zero on transmission and MUST be ignored on receipt. 402 Algorithm: 1 octet. Associated algorithm. Algorithm values 403 are defined in the IGP Algorithm Type registry. 405 Loc-Size: 1 octet. Number of bits in the Locator field. 406 (1 - 128) 408 Locator: 1-16 octets. This field encodes the advertised SRv6 409 Locator. The Locator is encoded in the minimal number of 410 octets for the given number of bits. 412 Sub-TLV-length: 1 octet. Number of octets used by sub-TLVs 414 Optional sub-TLVs. 416 7.2. SRv6 End SID sub-TLV 418 The SRv6 End SID sub-TLV is introduced to advertise SRv6 Segment 419 Identifiers (SID) with Endpoint behaviors which do not require a 420 particular neighbor in order to be correctly applied 421 [I-D.ietf-spring-srv6-network-programming]. SRv6 SIDs associated 422 with a neighbor are advertised using the sub-TLVs defined in 423 Section 6. 425 This new sub-TLV is advertised in the SRv6 Locator TLV defined in the 426 previous section. SRv6 End SIDs inherit the topology/algorithm from 427 the parent locator. 429 The SRv6 End SID sub-TLV has the following format: 431 0 1 2 3 432 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 433 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 434 | Type | Length | 435 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 436 | Flags | Endpoint Behavior | 437 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 438 | SID (128 bits) . . . | 439 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 440 | SID (cont . . .) | 441 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 442 | SID (cont . . .) | 443 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 444 | SID (cont . . .) | 445 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 446 |Sub-sub-tlv-len| sub-sub-TLVs (variable) . . . | 447 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 449 Type: 5 (Suggested value to be assigned by IANA) 451 Length: variable. 453 Flags: 1 octet. No flags are currently defined. 455 Endpoint Behavior: 2 octets, as defined in [I-D.ietf-spring-srv6-network-programming]. 456 Legal behavior values for this sub-TLV are defined in Section 9 of this document. 458 SID: 16 octets. This field encodes the advertised SRv6 SID. 460 Sub-sub-TLV-length: 1 octet. Number of octets used by sub-sub-TLVs 462 Optional sub-sub-TLVs 464 The SRv6 End SID MUST be a subnet of the associated Locator. SRv6 465 End SIDs which are NOT a subnet of the associated locator MUST be 466 ignored. 468 Multiple SRv6 End SIDs MAY be associated with the same locator. In 469 cases where the number of SRv6 End SID sub-TLVs exceeds the capacity 470 of a single TLV, multiple Locator TLVs for the same locator MAY be 471 advertised. For a given MTID/Locator the algorithm MUST be the same 472 in all TLVs. If this restriction is not met all TLVs for that MTID/ 473 Locator MUST be ignored. 475 8. Advertising SRv6 Adjacency SIDs 477 Certain SRv6 Endpoint behaviors 478 [I-D.ietf-spring-srv6-network-programming] must be associated with a 479 particular neighbor, and in case of multiple links to the same 480 neighbor, with a particular link in order to be correctly applied. 482 This document defines two new sub-TLVs of TLV 22, 23, 222, 223, and 483 141 - namely "SRv6 End.X SID" and "SRv6 LAN End.X SID". 485 IS-IS Neighbor advertisements are topology specific - but not 486 algorithm specific. End.X SIDs therefore inherit the topology from 487 the associated neighbor advertisement, but the algorithm is specified 488 in the individual SID. 490 All End.X SIDs MUST be a subnet of a Locator with matching topology 491 and algorithm which is advertised by the same node in an SRv6 Locator 492 TLV. End.X SIDs which do not meet this requirement MUST be ignored. 494 8.1. SRv6 End.X SID sub-TLV 496 This sub-TLV is used to advertise an SRv6 SID associated with a point 497 to point adjacency. Multiple SRv6 End.X SID sub-TLVs MAY be 498 associated with the same adjacency. 500 The SRv6 End.X SID sub-TLV has the following format: 502 0 1 2 3 503 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 504 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 505 | Type | Length | 506 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 507 | Flags | Algorithm | Weight | 508 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 509 | Endpoint Behavior | 510 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 511 | SID (128 bits) . . . | 512 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 513 | SID (cont . . .) | 514 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 515 | SID (cont . . .) | 516 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 517 | SID (cont . . .) | 518 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 519 |Sub-sub-tlv-len| Sub-sub-TLVs (variable) . . . | 520 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 522 Type: 43 (Suggested value to be assigned by IANA) 523 Length: variable. 525 Flags: 1 octet. 527 0 1 2 3 4 5 6 7 528 +-+-+-+-+-+-+-+-+ 529 |B|S|P|Reserved | 530 +-+-+-+-+-+-+-+-+ 532 where: 534 B-Flag: Backup flag. If set, the End.X SID is eligible 535 for protection (e.g., using IPFRR) as described in [RFC8355]. 537 S-Flag. Set flag. When set, the S-Flag indicates that the 538 End.X SID refers to a set of adjacencies (and therefore 539 MAY be assigned to other adjacencies as well). 541 P-Flag. Persistent flag. When set, the P-Flag indicates that 542 the End.X SID is persistently allocated, i.e., the 543 End.X SID value remains consistent across router restart 544 and/or interface flap. 546 Other bits: MUST be zero when originated and ignored when 547 received. 549 Algorithm: 1 octet. Associated algorithm. Algorithm values 550 are defined in the IGP Algorithm Type registry. 552 Weight: 1 octet. The value represents the weight of the 553 End.X SID for the purpose of load balancing. The use 554 of the weight is defined in [I-D.ietf-spring-segment-routing]. 556 Endpoint Behavior: 2 octets. As defined in 557 [I-D.ietf-spring-srv6-network-programming] 558 Legal behavior values for this sub-TLV are defined in Section 9. 560 SID: 16 octets. This field encodes the advertised SRv6 SID. 562 Sub-sub-TLV-length: 1 octet. Number of octets used by sub-sub- 563 TLVs 565 Note that multiple TLVs for the same neighbor may be required in 566 order to advertise all of the SRv6 End.X SIDs associated with that 567 neighbor. 569 8.2. SRv6 LAN End.X SID sub-TLV 571 This sub-TLV is used to advertise an SRv6 SID associated with a LAN 572 adjacency. Since the parent TLV is advertising an adjacency to the 573 Designated Intermediate System(DIS) for the LAN, it is necessary to 574 include the System ID of the physical neighbor on the LAN with which 575 the SRv6 SID is associated. Given that a large number of neighbors 576 may exist on a given LAN a large number of SRv6 LAN END.X SID sub- 577 TLVs may be associated with the same LAN. Note that multiple TLVs 578 for the same DIS neighbor may be required in order to advertise all 579 of the SRv6 End.X SIDs associated with that neighbor. 581 The SRv6 LAN End.X SID sub-TLV has the following format: 583 0 1 2 3 584 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 585 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 586 | Type | Length | System ID (6 octets) | 587 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 588 | | 589 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 590 | Flags | Algorithm | Weight | 591 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 592 | Endpoint Behavior | 593 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 594 | SID (128 bits) . . . | 595 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 596 | SID (cont . . .) | 597 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 598 | SID (cont . . .) | 599 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 600 | SID (cont . . .) | 601 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 602 |Sub-sub-tlv-len| sub-sub-TLVs (variable) . . . | 603 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 605 Type: 44 (Suggested value to be assigned by IANA) 606 Length: variable. 608 System-ID: 6 octets of IS-IS System-ID of length "ID Length" as 609 defined in [ISO10589]. 611 Flags: 1 octet. 613 0 1 2 3 4 5 6 7 614 +-+-+-+-+-+-+-+-+ 615 |B|S|P|Reserved | 616 +-+-+-+-+-+-+-+-+ 618 where B,S, and P flags are as described in Section 8.1. 619 Other bits: MUST be zero when originated and ignored when 620 received. 622 Algorithm: 1 octet. Associated algorithm. Algorithm values 623 are defined in the IGP Algorithm Type registry. 625 Weight: 1 octet. The value represents the weight of the 626 End.X SID for the purpose of load balancing. The use 627 of the weight is defined in [I-D.ietf-spring-segment-routing]. 629 Endpoint Behavior: 2 octets. As defined in 630 [I-D.ietf-spring-srv6-network-programming] 631 Legal behavior values for this sub-TLV are defined in Section 9. 633 SID: 16 octets. This field encodes the advertised SRv6 SID. 635 Sub-sub-TLV-length: 1 octet. Number of octets used by sub-sub- 636 TLVs. 638 9. SRv6 SID Structure Sub-Sub-TLV 640 SRv6 SID Structure Sub-Sub-TLV is an optional Sub-Sub-TLV of: 642 SRv6 End SID Sub-TLV (Section 7.2) 644 SRv6 End.X SID Sub-TLV (Section 8.1) 646 SRv6 LAN End.X SID Sub-TLV (Section 8.2) 648 SRv6 SID Structure Sub-Sub-TLV is used to advertise the length of 649 each individual part of the SRv6 SID as defined in 650 [I-D.ietf-spring-srv6-network-programming]. It has the following 651 format: 653 0 1 2 3 654 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 655 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 656 | Type | Length | 657 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 658 | LB Length | LN Length | Fun. Length | Arg. Length | 659 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 661 where: 663 Type: 1 664 Length: 4 octets. 666 LB Length: 1 octet. SRv6 SID Locator Block length in bits. 668 LN Length: 1 octet. SRv6 SID Locator Node length in bits. 670 Fun. Length: 1 octet. SRv6 SID Function length in bits. 672 Arg. Length: 1 octet. SRv6 SID Arguments length in bits. 674 ISIS SRv6 SID Structure Sub-Sub-TLV MUST NOT appear more than once in 675 its parent sub-TLV. If it appears more than once in its parent TLV, 676 the parent TLV MUST be ignored by the receiver. 678 10. Advertising Endpoint Behaviors 680 Endpoint behaviors are defined in 681 [I-D.ietf-spring-srv6-network-programming] and 682 [I-D.ietf-6man-spring-srv6-oam]. The codepoints for the Endpoint 683 behaviors are defined in the "SRv6 Endpoint Behaviors" registry 684 defined in [I-D.ietf-spring-srv6-network-programming]. This section 685 lists the Endpoint behaviors and their codepoints, which MAY be 686 advertised by IS-IS and the SID sub-TLVs in which each type MAY 687 appear. 689 Endpoint |Endpoint | End | End.X | Lan End.X | 690 Behavior |Behavior Codepoint | SID | SID | SID | 691 -----------------------|--------------------|-------|-------|-----------| 692 End (PSP, USP, USD) | 1-4, 28-31 | Y | N | N | 693 -----------------------|--------------------|-------|-------|-----------| 694 End.X (PSP, USP, USD) | 5-8, 32-35 | N | Y | Y | 695 -----------------------|--------------------|-------|-------|-----------| 696 End.T (PSP, USP, USD) | 9-12, 36-39 | Y | N | N | 697 -----------------------|--------------------|-------|-------|-----------| 698 End.DX6 | 16 | N | Y | Y | 699 -----------------------|--------------------|-------|-------|-----------| 700 End.DX4 | 17 | N | Y | Y | 701 -----------------------|--------------------|-------|-------|-----------| 702 End.DT6 | 18 | Y | N | N | 703 -----------------------|--------------------|-------|-------|-----------| 704 End.DT4 | 19 | Y | N | N | 705 -----------------------|--------------------|-------|-------|-----------| 706 End.DT64 | 20 | Y | N | N | 707 -----------------------|--------------------|-------|-------|-----------| 708 End.OP | 40 | Y | N | N | 709 -----------------------|--------------------|-------|-------|-----------| 710 End.OTP | 41 | Y | N | N | 712 11. Implementation Status 714 This section describes the implementation status of the ISIS SRv6 715 extensions. 717 11.1. Cisco 719 Cisco's ISIS SRv6 implementation supports following functionalities: 721 Types of SID supported: End, End.X, LAN End.X, END.OP 723 Intra/Inter area/level support: Yes 725 Anycast SID support: Yes, including A-flag (Section 6) 727 SID Structure Sub-Sub-TLV: Yes 729 11.2. Huawei 731 Huawei ISIS SRv6 implementation supports following functionalities: 733 Types of SID supported: End, End.X 734 Intra/Inter area/level support: Yes 736 Anycast SID support: Yes, no A-flag support (Section 6) 738 SID Structure Sub-Sub-TLV: No 740 11.3. Juniper 742 Juniper's implementation is in beta stage and supports most of the 743 sections of the this draft. 745 11.4. Interoperability Testing. 747 EANTC interoperability testing has been performed in April 2019. 748 Results can be found at EANTC site [1]. 750 12. IANA Considerations 752 This document requests allocation for the following TLVs, sub- TLVs, 753 and sub-sub-TLVs as well updating the ISIS TLV registry and defining 754 a new registry. 756 12.1. SRv6 Locator TLV 758 This document adds one new TLV to the IS-IS TLV Codepoints registry. 760 Value: 27 (suggested - to be assigned by IANA) 762 Name: SRv6 Locator 764 This TLV shares sub-TLV space with existing "Sub-TLVs for TLVs 135, 765 235, 236 and 237 registry". The name of this registry needs to be 766 changed to "Sub-TLVs for TLVs 27, 135, 235, 236 and 237 registry". 768 12.1.1. SRv6 End SID sub-TLV 770 This document adds the following new sub-TLV to the (renamed) "Sub- 771 TLVs for TLVs 27, 135, 235, 236 and 237 registry". 773 Value: 5 (suggested - to be assigned by IANA) 775 Name: SRv6 End SID 777 This document requests the creation of a new IANA managed registry 778 for sub-sub-TLVs of the SRv6 End SID sub-TLV. The registration 779 procedure is "Expert Review" as defined in [RFC7370]. Suggested 780 registry name is "sub-sub-TLVs for SRv6 End SID sub-TLV". No sub- 781 sub-TLVs are defined by this document except for the reserved value. 783 0: Reserved 785 1-255: Unassigned 787 12.1.2. Revised sub-TLV table 789 The revised table of sub-TLVs for the (renamed) "Sub-TLVs for TLVs 790 27, 135, 235, 236 and 237 registry" is shown below: 792 Type 27 135 235 236 237 794 1 n y y y y 795 2 n y y y y 796 3 n y y y y 797 4 y y y y y 798 5 y n n n n 799 11 y y y y y 800 12 y y y y y 802 12.2. SRv6 Capabilities sub-TLV 804 This document adds the definition of a new sub-TLV in the "Sub- TLVs 805 for TLV 242 registry". 807 Type: 25 (Suggested - to be assigned by IANA) 809 Description: SRv6 Capabilities 811 This document requests the creation of a new IANA managed registry 812 for sub-sub-TLVs of the SRv6 Capability sub-TLV. The registration 813 procedure is "Expert Review" as defined in [RFC7370]. Suggested 814 registry name is "sub-sub-TLVs for SRv6 Capability sub-TLV". No sub- 815 sub-TLVs are defined by this document except for the reserved value. 817 0: Reserved 819 1-255: Unassigned 821 12.3. SRv6 End.X SID and SRv6 LAN End.X SID sub-TLVs 823 This document adds the definition of two new sub-TLVs in the "sub- 824 TLVs for TLV 22, 23, 25, 141, 222 and 223 registry". 826 Type: 43 (suggested - to be assigned by IANA) 828 Description: SRv6 End.X SID 830 Type: 44 (suggested - to be assigned by IANA) 831 Description: SRv6 LAN End.X SID 833 Type 22 23 25 141 222 223 835 43 y y y y y y 836 44 y y y y y y 838 12.4. MSD Types 840 This document defines the following new MSD types. These types are 841 to be defined in the IGP MSD Types registry defined in [RFC8491] . 843 All values are suggested values to be assigned by IANA. 845 Type Description 846 ------------------ 847 41 SRH Max SL 848 42 SRH Max End Pop 849 44 SRH Max H.encaps 850 45 SRH Max End D 852 12.5. Sub-Sub-TLVs for SID Sub-TLVs 854 This document creates the following Sub-Sub-TLV Registry within the 855 "IS-IS TLV Codepoints" registry: 857 Registry: Sub-Sub-TLVs for SID Sub-TLVs 859 Registration Procedure: Expert review 861 Reference: This document (Section 7.2, Section 8.1, Section 8.2). 863 This document defines the following Sub-Sub-TLV in the "Sub-Sub-TLVs 864 for SID Sub-TLVs" registry: 866 Type: 1 868 Description: SRv6 SID Structure Sub-Sub-TLV. 870 Reference: This document (Section 9). 872 12.6. Prefix Attribute Flags Sub-TLV 874 This document adds a new bit in the "Bit Values for Prefix Attribute 875 Flags Sub-TLV" registry: 877 Bit #: 4 878 Description: A bit 880 Reference: This document (Section 6). 882 13. Security Considerations 884 Security concerns for IS-IS are addressed in [ISO10589], [RFC5304], 885 and [RFC5310]. 887 14. Contributors 889 The following people gave a substantial contribution to the content 890 of this document and should be considered as co-authors: 892 Stefano Previdi 893 Huawei Technologies 894 Email: stefano@previdi.net 896 Paul Wells 897 Cisco Systems 898 Saint Paul, 899 Minnesota 900 United States 901 Email: pauwells@cisco.com 903 Daniel Voyer 904 Email: daniel.voyer@bell.ca 906 Satoru Matsushima 907 Email: satoru.matsushima@g.softbank.co.jp 909 Bart Peirens 910 Email: bart.peirens@proximus.com 912 Hani Elmalky 913 Email: hani.elmalky@ericsson.com 915 Prem Jonnalagadda 916 Email: prem@barefootnetworks.com 918 Milad Sharif 919 Email: msharif@barefootnetworks.com> 921 Robert Hanzl 922 Cisco Systems 923 Millenium Plaza Building, V Celnici 10, Prague 1, 924 Prague, Czech Republic 925 Email rhanzl@cisco.com 927 Ketan Talaulikar 928 Cisco Systems, Inc. 929 Email: ketant@cisco.com 931 15. References 933 15.1. Normative References 935 [I-D.ietf-6man-segment-routing-header] 936 Filsfils, C., Dukes, D., Previdi, S., Leddy, J., 937 Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header 938 (SRH)", draft-ietf-6man-segment-routing-header-26 (work in 939 progress), October 2019. 941 [I-D.ietf-6man-spring-srv6-oam] 942 Ali, Z., Filsfils, C., Matsushima, S., Voyer, D., and M. 943 Chen, "Operations, Administration, and Maintenance (OAM) 944 in Segment Routing Networks with IPv6 Data plane (SRv6)", 945 draft-ietf-6man-spring-srv6-oam-03 (work in progress), 946 December 2019. 948 [I-D.ietf-spring-srv6-network-programming] 949 Filsfils, C., Camarillo, P., Leddy, J., Voyer, D., 950 Matsushima, S., and Z. Li, "SRv6 Network Programming", 951 draft-ietf-spring-srv6-network-programming-08 (work in 952 progress), January 2020. 954 [ISO10589] 955 Standardization", I. ". O. F., "Intermediate system to 956 Intermediate system intra-domain routeing information 957 exchange protocol for use in conjunction with the protocol 958 for providing the connectionless-mode Network Service (ISO 959 8473), ISO/IEC 10589:2002, Second Edition.", Nov 2002. 961 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 962 Requirement Levels", BCP 14, RFC 2119, 963 DOI 10.17487/RFC2119, March 1997, 964 . 966 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi 967 Topology (MT) Routing in Intermediate System to 968 Intermediate Systems (IS-ISs)", RFC 5120, 969 DOI 10.17487/RFC5120, February 2008, 970 . 972 [RFC5304] Li, T. and R. Atkinson, "IS-IS Cryptographic 973 Authentication", RFC 5304, DOI 10.17487/RFC5304, October 974 2008, . 976 [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic 977 Engineering", RFC 5305, DOI 10.17487/RFC5305, October 978 2008, . 980 [RFC5310] Bhatia, M., Manral, V., Li, T., Atkinson, R., White, R., 981 and M. Fanto, "IS-IS Generic Cryptographic 982 Authentication", RFC 5310, DOI 10.17487/RFC5310, February 983 2009, . 985 [RFC7370] Ginsberg, L., "Updates to the IS-IS TLV Codepoints 986 Registry", RFC 7370, DOI 10.17487/RFC7370, September 2014, 987 . 989 [RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and 990 U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4 991 and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794, 992 March 2016, . 994 [RFC7981] Ginsberg, L., Previdi, S., and M. Chen, "IS-IS Extensions 995 for Advertising Router Information", RFC 7981, 996 DOI 10.17487/RFC7981, October 2016, 997 . 999 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1000 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1001 May 2017, . 1003 [RFC8491] Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, 1004 "Signaling Maximum SID Depth (MSD) Using IS-IS", RFC 8491, 1005 DOI 10.17487/RFC8491, November 2018, 1006 . 1008 [RFC8667] Previdi, S., Ed., Ginsberg, L., Ed., Filsfils, C., 1009 Bashandy, A., Gredler, H., and B. Decraene, "IS-IS 1010 Extensions for Segment Routing", RFC 8667, 1011 DOI 10.17487/RFC8667, December 2019, 1012 . 1014 15.2. Informative References 1016 [I-D.ietf-lsr-flex-algo] 1017 Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and 1018 A. Gulko, "IGP Flexible Algorithm", draft-ietf-lsr-flex- 1019 algo-05 (work in progress), November 2019. 1021 [I-D.ietf-spring-segment-routing] 1022 Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., 1023 Litkowski, S., and R. Shakir, "Segment Routing 1024 Architecture", draft-ietf-spring-segment-routing-15 (work 1025 in progress), January 2018. 1027 [RFC8355] Filsfils, C., Ed., Previdi, S., Ed., Decraene, B., and R. 1028 Shakir, "Resiliency Use Cases in Source Packet Routing in 1029 Networking (SPRING) Networks", RFC 8355, 1030 DOI 10.17487/RFC8355, March 2018, 1031 . 1033 15.3. URIs 1035 [1] http://www.eantc.de/fileadmin/eantc/downloads/events/2017- 1036 2020/MPLS2019/Segment_Routing_IPv6__SRv6_.pdf 1038 Authors' Addresses 1040 Peter Psenak (editor) 1041 Cisco Systems 1042 Pribinova Street 10 1043 Bratislava 81109 1044 Slovakia 1046 Email: ppsenak@cisco.com 1048 Clarence Filsfils 1049 Cisco Systems 1050 Brussels 1051 Belgium 1053 Email: cfilsfil@cisco.com 1055 Ahmed Bashandy 1056 Arrcus 1058 Email: abashandy.ietf@gmail.com 1060 Bruno Decraene 1061 Orange 1062 Issy-les-Moulineaux 1063 France 1065 Email: bruno.decraene@orange.com 1067 Zhibo Hu 1068 Huawei Technologies 1070 Email: huzhibo@huawei.com