idnits 2.17.1 draft-li-ospf-ospfv3-srv6-extensions-03.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (March 6, 2019) is 1849 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) == Outdated reference: A later version (-26) exists of draft-ietf-6man-segment-routing-header-16 Summary: 0 errors (**), 0 flaws (~~), 2 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group Z. Li 3 Internet-Draft Z. Hu 4 Intended status: Standards Track D. Cheng 5 Expires: September 7, 2019 Huawei Technologies 6 K. Talaulikar 7 P. Psenak 8 Cisco Systems 9 March 6, 2019 11 OSPFv3 Extensions for SRv6 12 draft-li-ospf-ospfv3-srv6-extensions-03 14 Abstract 16 Segment Routing (SR) allows for a flexible definition of end-to-end 17 paths by encoding paths as sequences of topological sub-paths, called 18 "segments". Segment routing architecture can be implemented over an 19 MPLS data plane as well as an IPv6 data plane. This draft describes 20 the OSPFv3 extensions required to support Segment Routing over an 21 IPv6 data plane (SRv6). 23 Requirements Language 25 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 26 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 27 document are to be interpreted as described in RFC 2119 [RFC2119]. 29 Status of This Memo 31 This Internet-Draft is submitted in full conformance with the 32 provisions of BCP 78 and BCP 79. 34 Internet-Drafts are working documents of the Internet Engineering 35 Task Force (IETF). Note that other groups may also distribute 36 working documents as Internet-Drafts. The list of current Internet- 37 Drafts is at https://datatracker.ietf.org/drafts/current/. 39 Internet-Drafts are draft documents valid for a maximum of six months 40 and may be updated, replaced, or obsoleted by other documents at any 41 time. It is inappropriate to use Internet-Drafts as reference 42 material or to cite them other than as "work in progress." 44 This Internet-Draft will expire on September 7, 2019. 46 Copyright Notice 48 Copyright (c) 2019 IETF Trust and the persons identified as the 49 document authors. All rights reserved. 51 This document is subject to BCP 78 and the IETF Trust's Legal 52 Provisions Relating to IETF Documents 53 (https://trustee.ietf.org/license-info) in effect on the date of 54 publication of this document. Please review these documents 55 carefully, as they describe your rights and restrictions with respect 56 to this document. Code Components extracted from this document must 57 include Simplified BSD License text as described in Section 4.e of 58 the Trust Legal Provisions and are provided without warranty as 59 described in the Simplified BSD License. 61 Table of Contents 63 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 64 2. OSPFv3 Extensions for SRv6 . . . . . . . . . . . . . . . . . 3 65 2.1. SRv6-Capabilities TLV . . . . . . . . . . . . . . . . . . 3 66 2.1.1. Maximum SL Sub-TLV . . . . . . . . . . . . . . . . . 5 67 2.1.2. Maximum End Pop SRH Sub-TLV . . . . . . . . . . . . . 5 68 2.1.3. Maximum T.Insert SRH Sub-TLV . . . . . . . . . . . . 6 69 2.1.4. Maximum T.Encap SRH Sub-TLV . . . . . . . . . . . . . 6 70 2.1.5. Maximum End D SRH Sub-TLV . . . . . . . . . . . . . . 7 71 2.2. SRv6 Node SID TLV . . . . . . . . . . . . . . . . . . . . 8 72 2.3. SRv6 SIDs Associated with Adjacencies . . . . . . . . . . 10 73 2.3.1. SRv6 SID Link Attribute Sub-TLV . . . . . . . . . . . 11 74 2.3.2. SRv6 SID LAN Link Attribute Sub-TLV . . . . . . . . . 12 75 3. Security Considerations . . . . . . . . . . . . . . . . . . . 14 76 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 77 4.1. OSPF Parameters . . . . . . . . . . . . . . . . . . . . . 14 78 4.2. OSPFv3 Parameters . . . . . . . . . . . . . . . . . . . . 14 79 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15 80 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 81 6.1. Normative References . . . . . . . . . . . . . . . . . . 15 82 6.2. Informative References . . . . . . . . . . . . . . . . . 16 83 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 85 1. Introduction 87 Segment Routing (SR) architecture [I-D.ietf-spring-segment-routing] 88 specifies how a node can steer a packet through an ordered list of 89 instructions, called segments. These segments are identified through 90 Segment Identifiers (SIDs). 92 Segment Routing can be instantiated on the IPv6 data plane through 93 the use of the Segment Routing Header (SRH) defined in 95 [I-D.ietf-6man-segment-routing-header]. SRv6 refers to this SR 96 instantiation on the IPv6 dataplane. The network programming 97 paradigm for SRv6 is specified in 98 [I-D.filsfils-spring-srv6-network-programming] which describes 99 several well-known functions that can be bound to SRv6 SIDs. 101 This document proposes extensions to OSPFv3 in order to support SRv6 102 as defined in [I-D.filsfils-spring-srv6-network-programming] by 103 signaling the SRv6 capabilities of the node and certain functions 104 (e.g. END, END.X, etc.) that are instantiated on the SRv6 capable 105 router. 107 At a high level, the extensions to OSPFv3 comprise of a SRv6 108 Capabilities TLV to advertise the support for SRv6 features supported 109 by the router. A new LSA type Also included are extensions in the 110 form of TLVs and sub-TLVs for advertising the SRv6 SIDs corresponding 111 the to functions related to the node (e.g. END) and those related to 112 the adjacencies (e.g. END.X) for the SRv6 enabled OSPFv3 router. 114 2. OSPFv3 Extensions for SRv6 116 2.1. SRv6-Capabilities TLV 118 When Segment Routing (SR) is instantiated using the IPv6 data plane 119 (SRv6), the list of segments is expressed using the segment routing 120 header (SRH) as defined in [I-D.ietf-6man-segment-routing-header]. 122 A router that supports SRv6 MUST be able to process the SRH as 123 described in [I-D.ietf-6man-segment-routing-header], as well as apply 124 function behaviors and flavors as described in 125 [I-D.filsfils-spring-srv6-network-programming]. A SRv6 enabled 126 router may have different capabilities and limits when it comes to 127 SRH processing and this needs to be advertised to other routers in 128 the SRv6 domain. 130 The SRv6 Capabilities TLV is designed for an OSPFv3 router to 131 advertise its SRv6 support along with its related capabilities for 132 SRv6 functionality. This is a new optional top level TLV of OSPFv3 133 Router Information LSA TLV LSA ([RFC7770]) which MUST be advertised 134 by a SRv6 enabled router. 136 This TLV SHOULD be advertised only once in the OSPFv3 Router 137 Information LSA. When multiple SRv6 Capabilities TLVs are received 138 from a given router, the receiver MUST use the first occurrence of 139 the TLV in the OSPFV3 Router Information Opaque LSA. If the SRv6 140 Capabilities TLV appears in multiple OSPFv3 Router Information Opaque 141 LSAs that have different flooding scopes, the TLV in the OSPFv3 142 Router Information Opaque LSA with the area-scoped flooding scope 143 MUST be used. If the SRv6 Capabilities TLV appears in multiple 144 OSPFv3 Router Information Opaque LSAs that have the same flooding 145 scope, the TLV in the OSPFv3 Router Information Opaque LSA with the 146 numerically smallest Instance ID MUST be used and subsequent 147 instances of the TLV MUST be ignored. 149 The OSPFv3 Router Information Opaque LSA can be advertised at any of 150 the defined opaque flooding scopes (link, area, or Autonomous System 151 (AS)). For the purpose of SRv6 Capabilities TLV advertisement, area- 152 scoped flooding is REQUIRED. 154 The format of OSPFv3-SRv6-Capabilities TLV is shown below 156 0 1 2 3 157 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 158 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 159 | Type | Length | 160 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 161 | Flags | Reserved | 162 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 163 | Sub-TLVs... 164 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 166 Where: 168 o Type: 16 bit field. TBD 170 o Length: 16 bit field. Length of Capability TLV + length of Sub- 171 TLVs 173 o Reserved : 16 bit field. SHOULD be set to 0 and MUST be ignored 174 by receiver. 176 o Flags: 16 bit field. The following flags are defined: 178 0 1 179 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 180 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 181 |E|O| | 182 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 184 where: 186 * E-flag: If set, then router is able to apply "T.Encap" 187 operation as specified in 188 [I-D.filsfils-spring-srv6-network-programming] 190 * O-flag: If set, then router is capable of supporting SRH O-bit 191 Flags, as specified in [I-D.ietf-6man-segment-routing-header]. 193 The following sections define the supported sub-TLVs. 195 2.1.1. Maximum SL Sub-TLV 197 The Maximum Segments Left Sub-TLV of the SRv6 Capabilities TLV 198 specifies the maximum value of the "SL" field (refer to 199 [I-D.ietf-6man-segment-routing-header]) in the SRH of a received 200 packet before applying the function associated with a SID. 202 0 1 2 3 203 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 204 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 205 | Type | Length | 206 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 207 | Max SL | 208 +-+-+-+-+-+-+-+-+ 210 o Type: 1 212 o Length: 4 (including padding to 32 bit aligned boundary for OSPF 213 TLVs) 215 o SL Value: 1 octet 217 o An 8 bit unsigned integer. 219 If the sub-TLV is not advertised by an SRv6 capable router, then the 220 value MUST be considered to be 0. 222 2.1.2. Maximum End Pop SRH Sub-TLV 224 The Maximum End Pop SRH Sub-Sub-TLV specifies the maximum number of 225 SIDs in the top SRH in an SRH stack to which the router can apply 226 "PSP" or USP" flavors 227 ([I-D.filsfils-spring-srv6-network-programming]). 229 0 1 2 3 230 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 231 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 232 | Type | Length | 233 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 234 |Max-End-Pop-SRH| 235 +-+-+-+-+-+-+-+-+ 237 o Type: 2 239 o Length: 4 (including padding to 32 bit aligned boundary for OSPF 240 TLVs) 242 o Max-End-Pop-SRH Value: 1 octet 244 o An 8 bit unsigned integer. 246 If the value is 0 or the sub-TLV is not advertised by an SRv6 capable 247 router, then it MUST be considered that the router cannot apply PSP 248 or USP flavors. 250 2.1.3. Maximum T.Insert SRH Sub-TLV 252 The Maximum T.Insert SRH Sub-Sub-TLV specifies the maximum number of 253 SIDs that can be inserted as part of the "T.insert" 254 behavior([I-D.filsfils-spring-srv6-network-programming]). 256 0 1 2 3 257 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 258 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 259 | Type | Length | 260 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 261 | Max-T.Insert | 262 +-+-+-+-+-+-+-+-+ 264 o Type: 3 266 o Length: 4 (including padding to 32 bit aligned boundary for OSPF 267 TLVs) 269 o Max-T.Insert Value: 1 octet 271 o An 8 bit unsigned integer. 273 If the value is 0 or the sub-TLV is not advertised by an SRv6 capable 274 router, then it MUST be considered that the router does not support 275 any variation of the "T.insert" behavior. 277 2.1.4. Maximum T.Encap SRH Sub-TLV 279 The Maximum T.Encap SRH Sub-Sub-TLV specifies the maximum number of 280 SIDs that can be included as part of the "T.Encap" behavior 281 ([I-D.filsfils-spring-srv6-network-programming]). 283 0 1 2 3 284 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 285 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 286 | Type | Length | 287 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 288 | Max-T.Encap | 289 +-+-+-+-+-+-+-+-+ 291 o Type: 4 293 o Length: 4 (including padding to 32 bit aligned boundary for OSPF 294 TLVs) 296 o Max-T.Encap Value: 1 octet 298 o An 8 bit unsigned integer. 300 If this value is 0 or the sub-TLV is not advertised by an SRv6 301 capable router and the "E" flag is set in the associated SRv6 302 Capabilities sub-TLV, then it MUST be considered that the router can 303 apply T.Encap by encapsulating the incoming packet in another IPv6 304 header without SRH the same way as IP-in-IP encapsulation is 305 performed. If the "E" flag is clear, then this sub-TLV SHOULD NOT be 306 advertised and MUST be ignored on receipt. 308 2.1.5. Maximum End D SRH Sub-TLV 310 The Maximum End D SRH sub-sub-TLV specifies the maximum number of 311 SIDs in an SRH when applying "End.DX6" and "End.DT6" functions. 313 0 1 2 3 314 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 315 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 316 | Type | Length | 317 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 318 | Max-End-D | 319 +-+-+-+-+-+-+-+-+ 321 o Type: 5 323 o Length: 4 (including padding to 32 bit aligned boundary for OSPF 324 TLVs) 326 o Max End D Value: 1 octet 328 o An 8 bit unsigned integer. 330 If this value is zero or the sub-TLV is not advertised by an SRv6 331 capable router, then it MUST be considered that the router cannot 332 apply "End.DX6" or "End.DT6" functions if the extension header right 333 underneath the outer IPv6 header is an SRH. 335 2.2. SRv6 Node SID TLV 337 An OSPFv3 SRv6 enabled router may have multiple SRv6 SIDs 338 instantiated in its "My Local SID Table" (refer 339 [I-D.filsfils-spring-srv6-network-programming]). OSPFv3 needs to 340 advertise the SRv6 SIDs associated with the node and its functions 341 (e.g. END, END.T, etc.) as specified in 342 [I-D.filsfils-spring-srv6-network-programming] so that other routers 343 in the area learn the SRv6 SIDs that can be used to program SRv6 344 paths through this node. 346 SRv6 Node SID TLV is a new optional top-level TLV of OSPFv3 Router 347 Information LSA ([RFC7770]) and is used to advertise the SRv6 SIDs 348 belonging to the node along with their associated functions. Every 349 SRv6 enabled OSPFv3 router SHOULD advertise at least one SRv6 SID 350 associated with END function for its node as specified in 351 [I-D.filsfils-spring-srv6-network-programming]. 353 The router MAY advertise multiple instances of the SRv6 Node SID TLV 354 in its OSPFv3 Router Information LSA - one for each of the SRv6 SIDs 355 to be advertised. It is RECOMMENDED that the TLVs are ordered by 356 increasing values of the SRv6 SIDs within a single instance of the 357 OSPFv3 Router LSA. When multiple instances of the OSPFv3 Router 358 Information LSA are necessary to accomodate a large number of SRv6 359 SIDs, it is RECOMMENDED that the SRv6 Node SID TLVs are ordered by 360 increasing values of the SRv6 SIDs across increasing instance numbers 361 of the OSPFv3 Router Information LSA. 363 When multiple SRv6 Node SID TLVs are received from a given router for 364 the same SRv6 SID value, the receiver MUST use the first occurrence 365 of the TLV in the OSPFV3 Router Information Opaque LSA. If the SRv6 366 Node SID TLV for the same SRv6 SID value appears in multiple OSPFv3 367 Router Information Opaque LSAs that have different flooding scopes, 368 the TLV in the OSPFv3 Router Information Opaque LSA with the area- 369 scoped flooding scope MUST be used. If the SRv6 Node SID TLV for the 370 same SRv6 SID value appears in multiple OSPFv3 Router Information 371 Opaque LSAs that have the same flooding scope, the TLV in the OSPFv3 372 Router Information Opaque LSA with the numerically smallest Instance 373 ID MUST be used and subsequent instances of the TLV MUST be ignored. 375 The OSPFv3 Router Information Opaque LSA can be advertised at any of 376 the defined opaque flooding scopes (link, area, or Autonomous System 377 (AS)). For the purpose of SRv6 Node SID TLV advertisement, area- 378 scoped flooding is REQUIRED. 380 The format of OSPFv3 SRv6 Node SID TLV is shown below 382 0 1 2 3 383 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 384 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 385 | Type | Length | 386 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 387 | Reserved | Function-Flags| Function Code | 388 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 389 | Reserved | SID Flags | SID-size | 390 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 391 | SID (variable - 32 bit aligned) ... 392 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 393 | Sub-TLVs (variable) . . . 394 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 396 Figure 1: SRv6 SID Node TLV 398 Where: 400 Type: 16 bit field. TBD 402 Length: 16 bit field. The total length of the value portion of 403 the TLV. 405 Reserved : 8 bit field. Should be set to 0 and MUST be ignored on 406 receipt. 408 Function Flags: 8 bit field which define the flags associated with 409 the function. No flags are currently defined and SHOULD be set to 410 0 and MUST be ignored on receipt. 412 Function Code: 16 bit field. The function code point for this 413 SRv6 SID as defined in 414 [I-D.filsfils-spring-srv6-network-programming]. 416 Reserved : 16 bit field. Should be set to 0 and MUST be ignored 417 on receipt. 419 SID Flags: 8 bit field which define the flags associated with the 420 SID 421 0 1 2 3 4 5 6 7 422 +-+-|-+-+-+-+-+-+ 423 |D| Reserved | 424 +-+-+-+-+-+-+-+-+ 426 Figure 2 428 * D bit (0x1) : When the SID is leaked from OSPFv3 backbone area 429 to other areas, the D bit MUST be set. Otherwise, this bit 430 MUST be clear. SIDs with the D bit set MUST NOT be leaked to 431 OSPFv3 backbone area from others. This is to prevent looping. 433 * Other flags are not defined and SHOULD be set to 0 and MUST be 434 ignored on receipt. 436 SID Size : 8 bit field. Number of bits in the SID field. 438 SID : 1-16 octets. This field encodes the advertised SRv6 SID. 439 The "SID-size" field can have the values 1-128 and indicates the 440 number of bits in the SID. The SRv6 SID is encoded in the minimal 441 number of 32-bit aligned space for the given number of bits. 443 Sub-TLVs : currently none defined. Used to advertise sub-TLVs 444 that provide additional attributes for the given SRv6 SID. 446 2.3. SRv6 SIDs Associated with Adjacencies 448 The SRv6 functions are defined in 449 [I-D.filsfils-spring-srv6-network-programming] include certain 450 functions which are specific to links or adjacencies. The most basic 451 of this which is critical for link state routing protocols like 452 OSPFv3 is the END.X function that is an instruction to forward to a 453 specific neighbor on a specific link. These END.X SRv6 SIDs are 454 instantiated by SRv6 enabled OSPFv3 router for all its adjacencies 455 and installed in the local node's "My Local SID Table". These SRv6 456 SIDs along with others that are defined in 457 [I-D.filsfils-spring-srv6-network-programming] which are specific to 458 links or adjacencies need to be advertised by OSPFv3 so that this 459 information is available with all routers in the domain to influence 460 the packet path via these specific functions over the specified 461 adjacencies. 463 The advertising of SRv6 SIDs and their functions that are specific to 464 a particular neighbor are done via two different optional sub-TLVs of 465 the Router-Link TLV as defined in [I-D.ietf-ospf-ospfv3-lsa-extend] 466 as follows: 468 o SRv6 SID Link Attribute Sub-TLV: for OSPFv3 adjacency over point- 469 to-point or point-to-multipoint links and the adjacecny to the 470 Designated Router (DR) over broadcast and non-broadcast-multi- 471 access (NBMA) links. 473 o SRv6 SID LAN Link Attribute Sub-TLV: for OSPFv3 adjacency on 474 broadcast and NBMA links to the Backup DR and DR-Other neighbors. 475 This sub-TLV includes the OSPFv3 router-id of the neighbor and 476 thus allows for multiple instances of this TLV for each neighbor 477 to be explicitly advertised under the Router-Link TLV for the same 478 link. 480 Every SRv6 enabled OSPFv3 router SHOULD instantiate at least one 481 END.X function with a unique SRv6 SID corresponding to each of its 482 neighbor. A router MAY instantiate more than one SRv6 SID for the 483 END.X function for a single neighbor. The same SRv6 SID MAY be 484 advertised for the END.X function corresponding to more than one 485 neighbor. Thus multiple instances of the SRv6 SID Link Attribute and 486 SRv6 SID LAN Link Attribute sub-TLVs MAY be advertised within the 487 Router Link TLV for a single link. 489 2.3.1. SRv6 SID Link Attribute Sub-TLV 491 The format of the SRv6 SID Link Attribute Sub-TLV is shown below 493 0 1 2 3 494 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 495 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 496 | Type | Length | 497 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 498 | Reserved | Function-Flags| Function Code | 499 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 500 | Reserved | SID Flags | SID-size | 501 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 502 | SID (variable - 32 bit aligned) ... 503 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 504 | Sub-TLVs (variable) . . . 505 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 507 Where: 509 Type is TBD 511 Length: 16 bit field. The total length of the value portion of 512 the TLV. 514 Reserved : 8 bit field. Should be set to 0 and MUST be ignored on 515 receipt. 517 Function Flags: 8 bit field which define the flags associated with 518 the function. No flags are currently defined and SHOULD be set to 519 0 and MUST be ignored on receipt. 521 Function Code: 16 bit field. The function code point for this 522 SRv6 SID as defined in 523 [I-D.filsfils-spring-srv6-network-programming]. 525 Reserved : 16 bit field. Should be set to 0 and MUST be ignored 526 on receipt. 528 SID Flags: 8 bit field which define the flags associated with the 529 SID. No flags are currently defined and SHOULD be set to 0 and 530 MUST be ignored on receipt. 532 SID-size: Number of bits in the SID field. 534 SID: 1-16 octets. This field encodes the advertised SRv6 SID. 535 The "SID-size" field can have the values 1-128 and indicates the 536 number of bits in the SID. The SRv6 SID is encoded in the minimal 537 number of 32-bit aligned space for the given number of bits. 539 Sub-TLVs : currently none defined. Used to advertise sub-TLVs 540 that provide additional attributes for the given SRv6 END.X SID. 542 2.3.2. SRv6 SID LAN Link Attribute Sub-TLV 544 The format of the SRv6 SID LAN Link Attribute Sub-TLV is as shown 545 below 546 0 1 2 3 547 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 548 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 549 | Type | Length | 550 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 551 | Reserved | Function-Flags| Function Code | 552 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 553 | Reserved | SID Flags | SID-size | 554 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 555 | SID (variable - 32 bit aligned) ... 556 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 557 | OSPFv3 Router-ID of neighbor | 558 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 559 | Sub-TLVs (variable) . . . 560 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 562 Where 564 o Type: TBD 566 o Length: 16 bit value. Variable 568 o Reserved : 8 bit field. Should be set to 0 and MUST be ignored on 569 receipt. 571 o Function Flags: 8 bit field which define the flags associated with 572 the function. No flags are currently defined and SHOULD be set to 573 0 and MUST be ignored on receipt. 575 o Function Code: 16 bit field. The function code point for this 576 SRv6 SID as defined in 577 [I-D.filsfils-spring-srv6-network-programming]. 579 o Reserved : 16 bit field. Should be set to 0 and MUST be ignored 580 on receipt. 582 o SID Flags: 8 bit field which define the flags associated with the 583 SID. No flags are currently defined and SHOULD be set to 0 and 584 MUST be ignored on receipt. 586 o SID Size : 8 bit field. Number of bits in the SID field. 588 o SID : 1-16 octets. This field encodes the advertised SRv6 SID. 589 The "SID-size" field can have the values 1-128 and indicates the 590 number of bits in the SID. The SRv6 SID is encoded in the minimal 591 number of 32-bit aligned space for the given number of bits. 593 o Neighbor ID : 4 octets of OSPFv3 Router-id of the neighbor 595 o Sub-TLVs : currently none defined. Used to advertise sub-TLVs 596 that provide additional attributes for the given SRv6 SID. 598 3. Security Considerations 600 Existing security extensions as described in [RFC5340] and 601 [I-D.ietf-ospf-ospfv3-lsa-extend] apply to these SRv6 extensions. 602 While OSPFv3 is under a single administrative domain, there can be 603 deployments where potential attackers have access to one or more 604 networks in the OSPFv3 routing domain. In these deployments, 605 stronger authentication mechanisms such as those specified in 606 [RFC4552] SHOULD be used. 608 Implementations MUST assure that malformed TLV and Sub-TLV defined in 609 this document are detected and do not provide a vulnerability for 610 attackers to crash the OSPFv3 router or routing process. Reception 611 of malformed TLV or Sub-TLV SHOULD be counted and/or logged for 612 further analysis. Logging of malformed TLVs and Sub-TLVs SHOULD be 613 rate-limited to prevent a Denial of Service (DoS) attack (distributed 614 or otherwise) from overloading the OSPFv3 control plane. 616 4. IANA Considerations 618 This document specifies updates to multiple OSPFv3 related IANA 619 registries as follows. 621 4.1. OSPF Parameters 623 This document proposes the following new code points in the OSPF 624 Router Information (RI) TLVs registry for OSPFv3 Extensions in order 625 to support SRv6: 627 1. Type TBD: SRv6-Capabilities TLV: Refer to Section 2.1. 629 2. Type TBD: SRv6 Node SID TLV : Refer to Section 2.2. 631 4.2. OSPFv3 Parameters 633 This document proposes the following new code points in the OSPFv3 634 Extend-LSA Sub-TLV registry for OSPFv3 Extensions in order to support 635 SRv6: 637 1. Type TBD: SRv6 SID Link Attribute Sub-TLV : Refer to 638 Section 2.3.1. 640 2. Type TBD: SRv6 SID LAN Link Attribute Sub-TLV : Refer to 641 Section 2.3.2. 643 5. Acknowledgements 645 TBD 647 6. References 649 6.1. Normative References 651 [I-D.filsfils-spring-srv6-network-programming] 652 Filsfils, C., Camarillo, P., Leddy, J., 653 daniel.voyer@bell.ca, d., Matsushima, S., and Z. Li, "SRv6 654 Network Programming", draft-filsfils-spring-srv6-network- 655 programming-07 (work in progress), February 2019. 657 [I-D.ietf-ospf-ospfv3-lsa-extend] 658 Lindem, A., Roy, A., Goethals, D., Vallem, V., and F. 659 Baker, "OSPFv3 LSA Extendibility", draft-ietf-ospf-ospfv3- 660 lsa-extend-23 (work in progress), January 2018. 662 [I-D.ietf-spring-segment-routing] 663 Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., 664 Litkowski, S., and R. Shakir, "Segment Routing 665 Architecture", draft-ietf-spring-segment-routing-15 (work 666 in progress), January 2018. 668 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 669 Requirement Levels", BCP 14, RFC 2119, 670 DOI 10.17487/RFC2119, March 1997, 671 . 673 [RFC4552] Gupta, M. and N. Melam, "Authentication/Confidentiality 674 for OSPFv3", RFC 4552, DOI 10.17487/RFC4552, June 2006, 675 . 677 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 678 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 679 . 681 [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and 682 S. Shaffer, "Extensions to OSPF for Advertising Optional 683 Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, 684 February 2016, . 686 6.2. Informative References 688 [I-D.ietf-6man-segment-routing-header] 689 Filsfils, C., Previdi, S., Leddy, J., Matsushima, S., and 690 d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header 691 (SRH)", draft-ietf-6man-segment-routing-header-16 (work in 692 progress), February 2019. 694 Authors' Addresses 696 Zhenbin Li 697 Huawei Technologies 699 Email: lizhenbin@huawei.com 701 Zhibo Hu 702 Huawei Technologies 704 Email: huzhibo@huawei.com 706 Dean Cheng 707 Huawei Technologies 709 Email: dean.cheng@huawei.com 711 Ketan Talaulikar 712 Cisco Systems 713 India 715 Email: ketant@cisco.com 717 Peter Psenak 718 Cisco Systems 719 Slovakia 721 Email: ppsenak@cisco.com