idnits 2.17.00 (12 Aug 2021) /tmp/idnits28799/draft-ietf-spring-srv6-srh-compression-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) == There are 3 instances of lines with non-RFC2606-compliant FQDNs in the document. Miscellaneous warnings: ---------------------------------------------------------------------------- -- The document date (21 March 2022) is 54 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: '0' on line 468 == Outdated reference: A later version (-01) exists of draft-clad-spring-srv6-srh-compression-illus-00 == Outdated reference: A later version (-15) exists of draft-ietf-bess-srv6-services-13 Summary: 1 error (**), 0 flaws (~~), 3 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 SPRING W. Cheng, Ed. 3 Internet-Draft China Mobile 4 Intended status: Standards Track C. Filsfils 5 Expires: 22 September 2022 Cisco Systems, Inc. 6 Z. Li 7 Huawei Technologies 8 B. Decraene 9 Orange 10 D. Cai 11 Alibaba 12 D. Voyer 13 Bell Canada 14 F. Clad, Ed. 15 Cisco Systems, Inc. 16 S. Zadok 17 Broadcom 18 J. Guichard 19 Futurewei Technologies Ltd. 20 L. Aihua 21 ZTE Corporation 22 R. Raszuk 23 NTT Network Innovations 24 C. Li 25 Huawei Technologies 26 21 March 2022 28 Compressed SRv6 Segment List Encoding in SRH 29 draft-ietf-spring-srv6-srh-compression-01 31 Abstract 33 This document specifies new flavors for the SR endpoint behaviors 34 defined in RFC 8986, which enable a compressed SRv6 Segment-List 35 encoding in the Segment Routing Header (SRH). 37 Status of This Memo 39 This Internet-Draft is submitted in full conformance with the 40 provisions of BCP 78 and BCP 79. 42 Internet-Drafts are working documents of the Internet Engineering 43 Task Force (IETF). Note that other groups may also distribute 44 working documents as Internet-Drafts. The list of current Internet- 45 Drafts is at https://datatracker.ietf.org/drafts/current/. 47 Internet-Drafts are draft documents valid for a maximum of six months 48 and may be updated, replaced, or obsoleted by other documents at any 49 time. It is inappropriate to use Internet-Drafts as reference 50 material or to cite them other than as "work in progress." 52 This Internet-Draft will expire on 22 September 2022. 54 Copyright Notice 56 Copyright (c) 2022 IETF Trust and the persons identified as the 57 document authors. All rights reserved. 59 This document is subject to BCP 78 and the IETF Trust's Legal 60 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 61 license-info) in effect on the date of publication of this document. 62 Please review these documents carefully, as they describe your rights 63 and restrictions with respect to this document. Code Components 64 extracted from this document must include Revised BSD License text as 65 described in Section 4.e of the Trust Legal Provisions and are 66 provided without warranty as described in the Revised BSD License. 68 Table of Contents 70 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 71 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 72 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 73 3. Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . 4 74 4. SR Endpoint Flavors . . . . . . . . . . . . . . . . . . . . . 5 75 4.1. NEXT-C-SID Flavor . . . . . . . . . . . . . . . . . . . . 5 76 4.1.1. End with NEXT-C-SID . . . . . . . . . . . . . . . . . 6 77 4.1.2. End.X with NEXT-C-SID . . . . . . . . . . . . . . . . 7 78 4.1.3. Combination with PSP, USP and USD flavors . . . . . . 7 79 4.2. REPLACE-C-SID Flavor . . . . . . . . . . . . . . . . . . 7 80 4.2.1. End with REPLACE-C-SID . . . . . . . . . . . . . . . 8 81 4.2.2. End.X with REPLACE-C-SID . . . . . . . . . . . . . . 9 82 4.2.3. Combination with PSP, USP and USD flavors . . . . . . 9 83 4.3. Combined NEXT-and-REPLACE-C-SID Flavor . . . . . . . . . 9 84 5. GIB, LIB, global C-SID and local C-SID . . . . . . . . . . . 11 85 5.1. Global C-SID . . . . . . . . . . . . . . . . . . . . . . 11 86 5.2. Local C-SID . . . . . . . . . . . . . . . . . . . . . . . 12 87 6. C-SID and Block Length . . . . . . . . . . . . . . . . . . . 12 88 6.1. C-SID Length . . . . . . . . . . . . . . . . . . . . . . 12 89 6.2. Block Length . . . . . . . . . . . . . . . . . . . . . . 12 90 6.3. GIB/LIB Usage . . . . . . . . . . . . . . . . . . . . . . 13 91 7. Efficient SID-list Encoding . . . . . . . . . . . . . . . . . 13 92 8. Inter Routing Domains with the End.XPS behavior . . . . . . . 13 93 9. Control Plane . . . . . . . . . . . . . . . . . . . . . . . . 15 94 10. Illustrations . . . . . . . . . . . . . . . . . . . . . . . . 15 95 11. Interoperability Status . . . . . . . . . . . . . . . . . . . 15 96 12. Deployment Model . . . . . . . . . . . . . . . . . . . . . . 16 97 13. Security Considerations . . . . . . . . . . . . . . . . . . . 16 98 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 16 99 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 100 15.1. Normative References . . . . . . . . . . . . . . . . . . 16 101 15.2. Informative References . . . . . . . . . . . . . . . . . 17 102 Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 18 103 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 105 1. Introduction 107 The Segment Routing architecture is defined in [RFC8402]. 109 SRv6 Network Programming [RFC8986] defines a framework to build a 110 network program with topological and service segments carried in a 111 Segment Routing header (SRH) [RFC8754]. 113 This document specifies new flavors to the SR endpoint behaviors 114 defined in Section 4 of [RFC8986]. These flavors enable a compressed 115 encoding of the SRv6 Segment-List in the SRH and therefore address 116 the requirements described in 117 [I-D.srcompdt-spring-compression-requirement]. 119 The flavors defined in this document leverage the SRv6 data plane 120 defined in [RFC8754] and [RFC8986], and are compatible with the SRv6 121 control plane extensions for IS-IS 122 [I-D.ietf-lsr-isis-srv6-extensions], OSPF 123 [I-D.ietf-lsr-ospfv3-srv6-extensions], and BGP 124 [I-D.ietf-bess-srv6-services]. 126 2. Terminology 128 This document leverages the terms defined in [RFC8402], [RFC8754] and 129 [RFC8986]. The reader is assumed to be familiar with this 130 terminology. 132 This document introduces the following new terms: 134 * Compressed-SID (C-SID): A C-SID is a short encoding of a SID in 135 SRv6 packet that does not include the SID block bits (locator 136 block). 138 * Compressed-SID container (C-SID container): An entry of the SRH 139 Segment-List field (128 bits) that contains a sequence of C-SIDs. 141 * Compressed-SID sequence (C-SID sequence): A group of one or more 142 C-SID containers in a segment list that share the same SRv6 SID 143 block. 145 * Uncompressed SID sequence: A group of one or more uncompressed 146 SIDs in a segment list. 148 * Compressed Segment List encoding: A segment list encoding that 149 reduces the packet header length thanks to one or more C-SID 150 sequences. A compressed Segment List encoding may also contain 151 any number of uncompressed SID sequences. 153 2.1. Requirements Language 155 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 156 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 157 "OPTIONAL" in this document are to be interpreted as described in BCP 158 14 [RFC2119] [RFC8174] when, and only when, they appear in all 159 capitals, as shown here. 161 3. Basic Concepts 163 In an SRv6 domain, the SIDs are allocated from a particular IPv6 164 prefix: the SRv6 SID block. Therefore, all SRv6 SIDs instantiated 165 from the same SRv6 SID block share the same most significant bits. 166 These common bits are named Locator-Block in [RFC8986]. Furthermore, 167 when the combined length of the SRv6 SID Locator, Function and 168 Argument is smaller than 128 bits, the trailing bits are set to zero. 170 When a sequence of consecutive SIDs in a Segment List shares a common 171 Locator-Block, a compressed SRv6 Segment-List encoding can optimize 172 the packet header length by avoiding the repetition of the Locator- 173 Block and trailing bits with each individual SID. 175 The compressed Segment List encoding is fully compliant with the 176 specifications in [RFC8402], [RFC8754] and [RFC8986]. Efficient 177 encoding is achieved by combining a compressed Segment List encoding 178 logic on the SR policy headend with new flavors of the base SRv6 179 endpoint behaviors that decode this compressed encoding. 181 A Segment List can be encoded in the packet header using any 182 combination of compressed and uncompressed sequences. The C-SID 183 sequences leverage the flavors defined in this document, while the 184 uncompressed sequences use behaviors and flavors defined in other 185 documents, such as [RFC8986]. An SR Policy headend constructs and 186 compresses the SID-list depending on the capabilities of each SR 187 endpoint node that the packet should traverse, as well as its own 188 compression capabilities. 190 It is expected that compressed encoding flavors be available on 191 devices with limited packet manipulation capabilities, such as legacy 192 ASICs. 194 The compressed Segment List encoding supports any SRv6 SID Block 195 allocation. While other options are supported and may provide higher 196 efficiency, each routing domain can be allocated a /48 prefix from a 197 global IPv6 block (see Section 6.2). 199 4. SR Endpoint Flavors 201 This section defines several options to achieve compressed Segment 202 List encoding, in the form of two new flavors for the END, END.X and 203 END.T behaviors of [RFC8986]. These flavors could also be combined 204 with behaviors defined in other documents. 206 The compressed encoding can be achieved by leveraging any of these SR 207 endpoint flavors. The NEXT-C-SID flavor and the REPLACE-C-SID flavor 208 expose the same high-level behavior in their use of the SID argument 209 to determine the next segment to be processed, but they have 210 different low-level characteristics that can make one more or less 211 efficient than the other for a particular SRv6 deployment. The NEXT- 212 and-REPLACE-C-SID flavor is the combination of the NEXT-C-SID flavor 213 and the REPLACE-C-SID flavor. It provides the best efficiency in 214 terms of encapsulation size at the cost of increased complexity. 216 It is recommended for ease of operation that a single compressed 217 encoding flavor be used in a given SRv6 domain. However, in a multi- 218 domain deployment, different flavors can be used in different 219 domains. 221 All three flavors leverage the following variables: 223 * Variable B is the Locator Block length of the SID. 225 * Variable NF is the sum of the Locator Node and the Function 226 lengths of the SID. It is also referred to as C-SID length. 228 * Variable A is the Argument length of the SID. 230 4.1. NEXT-C-SID Flavor 232 A SID instantiated with the NEXT-C-SID flavor takes an argument that 233 carries the remaining C-SIDs in the current C-SID container. 235 The length A of the argument is equal to 128-B-NF and should be a 236 multiple of NF. 238 +------------------------------------------------------------------+ 239 | Locator-Block |Loc-Node| Argument | 240 | |Function| | 241 +------------------------------------------------------------------+ 242 <--------- B ----------> <- NF -> <------------- A --------------> 244 Figure 1: Example of a NEXT-C-SID flavored SID structure using a 245 48-bit block, 16-bit combined locator and function, and 64-bit 246 argument 248 4.1.1. End with NEXT-C-SID 250 When processing an IPv6 packet that matches a FIB entry locally 251 instantiated as an End SID with the NEXT-C-SID flavor, the procedure 252 described in Section 4.1 of [RFC8986] is executed with the following 253 modifications. 255 The below pseudocode is inserted between lines S01 and S02 of the SRH 256 processing in Section 4.1 of [RFC8986], and a second time before line 257 S01 of the upper-layer header processing in Section 4.1.1 of 258 [RFC8986]. 260 S01. If (DA.Argument != 0) { 261 S02. If (IPv6 Hop Limit <= 1) { 262 S03. Send an ICMP Time Exceeded message to the Source Address, 263 Code 0 (Hop limit exceeded in transit), 264 interrupt packet processing and discard the packet. 265 S04. } 266 S05. Copy the value of DA.Argument into the bits [B..(B+A-1)] 267 of the Destination Address. 268 S06. Set the bits [(B+A)..127] of the Destination Address to 269 zero. 270 S07. Decrement Hop Limit by 1. 271 S08. Submit the packet to the egress IPv6 FIB lookup for 272 transmission to the next destination. 273 S09. } 275 Notes: 277 * DA.Argument identifies the bits [(B+NF)..127] in the Destination 278 Address of the IPv6 header. 280 * The value in the Segments Left field of the SRH is not modified 281 when DA.Argument in the received packet has a non-zero value. 283 4.1.2. End.X with NEXT-C-SID 285 When processing an IPv6 packet that matches a FIB entry locally 286 instantiated as an End.X SID with the NEXT-C-SID flavor, the 287 procedure described in Section 4.2 of [RFC8986] is executed with the 288 same modifications as in Section 4.1.1 of this document, except for 289 line S08 that is replaced as follows. 291 S08. Submit the packet to the IPv6 module for transmission to the 292 new destination via a member of J. 294 4.1.3. Combination with PSP, USP and USD flavors 296 PSP: The PSP flavor defined in Section 4.16.1 of [RFC8986] is 297 unchanged when combined with the NEXT-C-SID flavor. 299 USP: The USP flavor defined in Section 4.16.2 of [RFC8986] is 300 unchanged when combined with the NEXT-C-SID flavor. 302 USD: The USD flavor is unchanged when combined with the NEXT-C-SID 303 flavor. The pseudocodes defined in Section 4.1.1 and Section 4.1.2 304 of this document are inserted at the beginning of the modified upper- 305 layer header processing defined in Section 4.16.3 of [RFC8986] for 306 End and End.X, respectively. 308 4.2. REPLACE-C-SID Flavor 310 A SID instantiated with the REPLACE-C-SID flavor takes an argument 311 that indicates the index of the next C-SID in the appropriate 312 container. 314 The length A of the argument should be at least ceil(log_2(128/NF)). 316 All SIDs that are part of a C-SID sequence using the REPLACE-C-SID 317 flavor have the same C-SID length NF. 319 +-------------------------------------------------------------------+ 320 | Locator-Block | Locator-Node |Argument| 0 | 321 | | + Function | | | 322 +-------------------------------------------------------------------+ 323 <--------- B ----------> <----- NF -----> <- A --> 325 Figure 2: Example of a REPLACE-C-SID flavored SID structure using 326 a 48-bit block, 32-bit combined locator and function, and 16-bit 327 argument 329 4.2.1. End with REPLACE-C-SID 331 When processing an IPv6 packet that matches a FIB entry locally 332 instantiated as an End SID with the REPLACE-C-SID flavor, the SRH 333 processing described in Section 4.1 of [RFC8986] is replaced as 334 follows. 336 S01. When an SRH is processed { 337 S02. If (Segments Left == 0 and DA.Argument == 0) { 338 S03. Stop processing the SRH, and proceed to process the next 339 header in the packet, whose type is identified by 340 the Next Header field in the routing header. 341 S04. } 342 S05. If (IPv6 Hop Limit <= 1) { 343 S06. Send an ICMP Time Exceeded message to the Source Address, 344 Code 0 (Hop limit exceeded in transit), 345 interrupt packet processing and discard the packet. 346 S07. } 347 S08. max_LE = (Hdr Ext Len / 2) - 1 348 S09. If (DA.Argument != 0) { 349 S10. If ((Last Entry > max_LE) or (Segments Left > Last Entry)) { 350 S11. Send an ICMP Parameter Problem to the Source Address, 351 Code 0 (Erroneous header field encountered), 352 Pointer set to the Segments Left field, 353 interrupt packet processing and discard the packet. 354 S11. } 355 S12. Decrement DA.Argument by 1. 356 S13. } Else { 357 S14. If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){ 358 S15. Send an ICMP Parameter Problem to the Source Address, 359 Code 0 (Erroneous header field encountered), 360 Pointer set to the Segments Left field, 361 interrupt packet processing and discard the packet. 362 S11. } 363 S12. Decrement Segments Left by 1. 364 S13. Set DA.Argument to (128/NF - 1). 365 S14. } 366 S15. Decrement IPv6 Hop Limit by 1 367 S16. Write Segment List[Segments Left][DA.Argument] into the bits 368 [B..B+NF-1] of the Destination Address of the IPv6 header. 369 S17. Write DA.Argument into the bits [B+NF..B+NF+A-1] of the 370 Destination Address of the IPv6 header. 371 S18. Submit the packet to the egress IPv6 FIB lookup for 372 transmission to the new destination. 373 S19. } 375 Notes: 377 * DA.Argument identifies the bits [(B+NF)..(B+NF+A-1)] in the 378 Destination Address of the IPv6 header. 380 * Segment List[Segments Left][DA.Argument] identifies the bits 381 [DA.Argument*NF..(DA.Argument+1)*NF-1] in the SRH Segment List 382 entry at index Segments Left. 384 The upper-layer header processing described in Section 4.1.1 of 385 [RFC8986] is unchanged. 387 4.2.2. End.X with REPLACE-C-SID 389 When processing an IPv6 packet that matches a FIB entry locally 390 instantiated as an End.X SID with the REPLACE-C-SID flavor, the 391 procedure described in Section 4.2 of [RFC8986] is executed with the 392 same modifications as in Section 4.2.1 of this document, except for 393 line S18 that is replaced as follows. 395 S18. Submit the packet to the IPv6 module for transmission to the 396 new destination via a member of J. 398 4.2.3. Combination with PSP, USP and USD flavors 400 PSP: When combined with the REPLACE-C-SID flavor, the additional PSP 401 flavor instructions defined in Section 4.16.1.2 of [RFC8986] are 402 inserted after line S17 of the pseudocode in Section 4.2.1, and the 403 first line of the inserted instructions is modified as follows. 405 S17.1. If (Segments Left == 0 and DA.Argument == 0) { 407 USP: When combined with the REPLACE-C-SID flavor, the lines S02-S04 408 of the pseudocode in Section 4.2.1 are substituted by the USP flavor 409 instructions defined in Section 4.16.2 of [RFC8986], with the 410 following modification. 412 S02. If (Segments Left == 0 and DA.Argument == 0) { 414 USD: The USD flavor defined in Section 4.16.3 of [RFC8986] is 415 unchanged when combined with the REPLACE-C-SID flavor. 417 4.3. Combined NEXT-and-REPLACE-C-SID Flavor 419 A SID instantiated with the NEXT-and-REPLACE-C-SID flavor takes a 420 two-parts argument comprising, Arg.Next and Arg.Index, and encoded in 421 the SID in this order. 423 The length A_I of Arg.Index should be at least ceil(log_2(128/NF)). 425 The length A_N of Arg.Next is equal to 128-B-NF-A_I and must be a 426 multiple of NF. 428 The total SID argument length A is the sum of A_I and A_N. 430 The NEXT-and-REPLACE-C-SID flavor also leverages an additional 431 variable, C_DA, that is equal to (1 + (A_N/NF)) and represents the 432 number of C-SID's that can be encoded in the IPv6 Destination 433 Address. 435 All SIDs that are part of a C-SID sequence using the NEXT-and- 436 REPLACE-C-SID flavor must have the same C-SID length NF. 437 Furthermore, this NF must be a divisor of 128. 439 +-------------------------------------------------------------------+ 440 | Locator-Block |Loc-Node| Arg.Next | Arg. | 441 | |Function| | Index | 442 +-------------------------------------------------------------------+ 443 <--------- B ----------> <- NF -> <-------- A_N ---------> <- A_I -> 445 Figure 3: Example of a NEXT-and-REPLACE-C-SID flavored SID 446 structure using a 48-bit block, 16-bit combined locator and 447 function, 48-bit Arg.Next and 16-bit Arg.Index 449 Pseudo-code: 451 1. If (DA.Arg.Next != 0) { 452 2. Copy DA.Arg.Next into the bits [B..(B+A_N-1)] of the 453 Destination Address of the IPv6 header. 454 3. Set the bits [(B+A_N)..(B+NF+A_N-1)] of the Destination Address 455 of the IPv6 header to zero. 456 4. } Else If (DA.Arg.Index >= C_DA) { 457 5. Decrement DA.Arg.Index by C_DA. 458 6. Copy C_DA*NF bits from Segment List[Segments Left][DA.Arg.Index] 459 into the bits [B..B+C_DA*NF-1] of the Destination Address of 460 the IPv6 header. 461 7. } Else If (Segments Left != 0) { 462 8. Decrement Segments Left by 1. 463 9. Set DA.Arg.Index to ((DA.Arg.Index - C_DA) % (128/NF)). 464 10. Copy C_DA*NF bits from Segment List[Segments Left][DA.Arg.Index] 465 into the bits [B..B+C_DA*NF-1] of the Destination Address of 466 the IPv6 header. 467 11. } Else { 468 12. Copy DA.Arg.Index*NF bits from Segment List[0][0] into the bits 469 [B..B+DA.Arg.Index*NF-1] of the Destination Address of the 470 IPv6 header. 471 13. Set the bits [B+DA.Arg.Index*NF..B+NF+A_N-1] of the Destination 472 Address of the IPv6 header to zero. 473 14. Set DA.Arg.Index to 0. 474 15. } 476 Notes: 478 * DA.Arg.Next identifies the bits [(B+NF)..(B+NF+A_N-1)] in the 479 Destination Address of the IPv6 header. 481 * DA.Arg.Index identifies the bits [(B+NF+A_N)..(B+NF+A_N+A_I-1)] in 482 the Destination Address of the IPv6 header. 484 * Segment List[Segments Left][DA.Arg.Index] identifies the bits 485 [DA.Arg.Index*NF..(DA.Arg.Index+1)*NF-1] in the SRH Segment List 486 entry at index Segments Left. 488 5. GIB, LIB, global C-SID and local C-SID 490 GIB: The set of IDs available for global C-SID allocation. 492 LIB: The set of IDs available for local C-SID allocation. 494 5.1. Global C-SID 496 A C-SID from the GIB. 498 A Global C-SID typically identifies a shortest-path to a node in the 499 SRv6 domain. An IP route is advertised by the parent node to each of 500 its global C-SID's, under the associated C-SID block. The parent 501 node executes a variant of the END behavior. 503 A node can have multiple global C-SID's under the same C-SID blocks 504 (e.g. one per IGP flexible algorithm). Multiple nodes may share the 505 same global C-SID (anycast). 507 5.2. Local C-SID 509 A C-SID from the LIB. 511 A local C-SID may identify a cross-connect to a direct neighbor over 512 a specific interface or a VPN context. 514 No IP route is advertised by a parent node for its local C-SID's. 516 If N1 and N2 are two different physical nodes of the SRv6 domain and 517 I is a local C-SID value, then N1 and N2 may bind two different 518 behaviors to I. 520 The concept of LIB is applicable to SRv6 and specifically to its 521 NEXT-C-SID and REPLACE-C-SID flavors. The shorter the SID/C-SID, the 522 more benefit the LIB brings. 524 The allocation of C-SID's from the GIB and LIB depends on the C-SID 525 length (see Section 6.3). 527 6. C-SID and Block Length 529 6.1. C-SID Length 531 The NEXT-C-SID flavor supports both 16- and 32-bit C-SID lengths. A 532 C-SID length of 16-bit is recommended. 534 The REPLACE-C-SID flavor supports both 16- and 32-bit C-SID lengths. 535 A C-SID length of 32-bit is recommended. 537 6.2. Block Length 539 The recommended SRv6 SID block sizes for the NEXT-C-SID flavor are 540 16, 32 or 48 bits. The smaller the block, the higher the compression 541 efficiency. 543 The recommended SRv6 SID block size for the REPLACE-C-SID flavor can 544 be 48, 56, 64, 72 or 80 bits, depending on the needs of the operator. 546 6.3. GIB/LIB Usage 548 The previous block and C-SID length recommendations, call for the 549 following GIB/LIB usage: 551 * NEXT-C-SID: 553 - GIB: END.NEXT-C-SID 555 - LIB: END.X.NEXT-C-SID, END.DX.NEXT-C-SID, END.DT.NEXT-C-SID 557 - LIB: END.DX.NEXT-C-SID for large-scale PW support 559 * REPLACE-C-SID: 561 - GIB: END.REPLACE-C-SID, END.X.REPLACE-C-SID, END.DX.REPLACE- 562 C-SID, END.DT.REPLACE-C-SID 564 - LIB: END.DX.REPLACE-C-SID for large-scale PW support 566 7. Efficient SID-list Encoding 568 The compressed SID-list encoding logic is a local behavior of the SR 569 Policy headend node and hence out of the scope of this document. 571 8. Inter Routing Domains with the End.XPS behavior 573 The End.XPS behavior described in this section is OPTIONAL. 575 Some SRv6 traffic may need to cross multiple routing domains, such as 576 different Autonomous Systems (ASes) or different routing areas. 577 Different routing domains may use different addressing schema and 578 SRv6 SID blocks. 580 This section defines an optional solution and SID behavior allowing 581 for the use of different SRv6 SID blocks between routing domains. 583 The solution requires a new SID behavior, called "Endpoint with 584 cross-connect to an array of layer-3 adjacencies and SRv6 Prefix 585 Swap" (End.XPS for short) allowing for this transition of SRv6 SID 586 block between two routing domains. 588 End.XPS is a variant of End.X, performing both "End.X Layer-3 Cross- 589 Connect" and the translation of the SRv6 SID block between the two 590 routing domains. 592 The processing takes as an additional parameter the prefix B2/m 593 corresponding the SRv6 SID block in the second domain. This 594 parameter is a property of the (received) SID and is given as a 595 result of the lookup on the IPv6 destination address which identifies 596 the SRv6 SID and its properties. 598 The End.XPS behavior is compatible with the NEXT-C-SID, REPLACE- 599 C-SID, and NEXT-and-REPLACE-C-SID flavors described in this document. 601 When a router R receives a packet whose IPv6 DA matches a local 602 End.XPS SID with the NEXT-C-SID flavor, that is associated with a set 603 J of one or more Layer-3 adjacencies and the SRv6 SID block B2/m of 604 the neighbor routing domain, R processes the packet as follows. 606 1. If (DA.Argument != 0) { 607 2. Write B2 into the most significant bits of the Destination 608 Address of the IPv6 header. 609 3. Write DA.Argument into the bits [m..(m+A-1)] of the 610 Destination Address of the IPv6 header. 611 4. Set the bits [(m+A)..127] of the Destination Address 612 of the IPv6 header to zero. 613 5. } Else { 614 6. Decrement Segments Left by 1. 615 7. Copy Segment List[Segments Left] from the SRH to the 616 Destination Address of the IPv6 header. 617 8. } 618 9. Submit the packet to the IPv6 module for transmission to the 619 new destination via a member of J. 621 When a router R receives a packet whose IPv6 DA matches a local 622 End.XPS SID with the REPLACE-C-SID flavor, that is associated with a 623 set J of one or more Layer-3 adjacencies and the SRv6 SID block B2/m 624 of the neighbor routing domain, R processes the packet as follows. 626 1. If (DA.Argument != 0) { 627 2. Decrement DA.Argument by 1. 628 3. } Else { 629 4. Decrement Segments Left by 1. 630 5. Set DA.Argument to (128/NF - 1). 631 6. } 632 7. Write B2 into the most significant bits of the Destination 633 Address of the IPv6 header. 634 8. Write Segment List[Segments Left][DA.Argument] into the bits 635 [m..m+NF-1] of the Destination Address of the IPv6 header. 636 9. Write DA.Argument into the bits [m+NF..m+NF+A-1] of the 637 Destination Address of the IPv6 header. 638 10. Set the bits [(m+NF+A)..127] of the Destination Address 639 of the IPv6 header to zero. 640 11. Submit the packet to the IPv6 module for transmission to the 641 new destination via a member of J. 643 Note: the way the SRv6 SID Block B2 of the next routing domain is 644 known is out of scope of this document. As examples, it could be 645 learnt via configuration, or using a signaling protocol either with 646 the peer domain or with a central controller (e.g. PCE). 648 When End.XPS SID behavior is used, the restriction on the C-SID 649 length for the REPLACE-C-SID and the NEXT-and-REPLACE-C-SID flavors 650 is relaxed and becomes: all SID the are part of a C-SID sequence 651 *within a domain* MUST have the same SID length NF. 653 9. Control Plane 655 This document does not require any control plane modification. 657 10. Illustrations 659 Illustrations for the functionalities defined in this document are 660 provided in [I-D.clad-spring-srv6-srh-compression-illus]. 662 11. Interoperability Status 664 In November 2020, China Mobile successfully validated multiple 665 interoperable implementations of the NEXT-C-SID and REPLACE-C-SID 666 flavors defined in this document. 668 This testing covered two different implementations of the SRv6 669 endpoint flavors defined in this document: 671 * Hardware implementation in Cisco ASR 9000 running IOS XR 673 * Software implementation in Cisco IOS XRv9000 virtual appliance 674 * Hardware implementation in Huawei NE40E and NE5000E running VRP 676 The interoperability was validated for the following scenario: 678 * Packet forwarding through a traffic engineering segment list 679 combining, in the same SRH ([RFC8754]), SRv6 SIDs bound to an 680 endpoint behavior with the NEXT-C-SID flavor and SRv6 SIDs bound 681 to an endpoint behavior with the REPLACE-C-SID flavor. 683 Further interoperability testing is ongoing and will be reported in 684 this document as the work progresses. 686 12. Deployment Model 688 Section 5 of [RFC8754] defines the intra-SR-domain deployment model 689 and associated security procedures. 691 The same deployment model apply to the SIDs defined in this document. 693 13. Security Considerations 695 The security requirements and mechanisms described in [RFC8402] and 696 [RFC8754] also apply to this document. 698 This document does not introduce any new security consideration. 700 14. Acknowledgements 702 The authors would like to thank Kamran Raza, Xing Jiang, YuanChao Su, 703 Han Li and Yisong Liu. 705 15. References 707 15.1. Normative References 709 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 710 Requirement Levels", BCP 14, RFC 2119, 711 DOI 10.17487/RFC2119, March 1997, 712 . 714 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 715 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 716 May 2017, . 718 [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., 719 Decraene, B., Litkowski, S., and R. Shakir, "Segment 720 Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, 721 July 2018, . 723 [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., 724 Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header 725 (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, 726 . 728 [RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, 729 D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 730 (SRv6) Network Programming", RFC 8986, 731 DOI 10.17487/RFC8986, February 2021, 732 . 734 15.2. Informative References 736 [EMAIL1] "SPRING chairs email on the adoption of draft- 737 filsfilscheng-spring-srv6-srh-compression-02", October 738 2021, . 741 [EMAIL2] "SPRING chairs email on working group process", February 742 2022, . 745 [I-D.clad-spring-srv6-srh-compression-illus] 746 Clad, F. and D. Dukes, "Illustrations for Compressed SRv6 747 Segment List Encoding in SRH", Work in Progress, Internet- 748 Draft, draft-clad-spring-srv6-srh-compression-illus-00, 15 749 October 2021, . 752 [I-D.ietf-bess-srv6-services] 753 Dawra, G., Filsfils, C., Talaulikar, K., Raszuk, R., 754 Decraene, B., Zhuang, S., and J. Rabadan, "SRv6 BGP based 755 Overlay Services", Work in Progress, Internet-Draft, 756 draft-ietf-bess-srv6-services-13, 19 March 2022, 757 . 760 [I-D.ietf-lsr-isis-srv6-extensions] 761 Psenak, P., Filsfils, C., Bashandy, A., Decraene, B., and 762 Z. Hu, "IS-IS Extensions to Support Segment Routing over 763 IPv6 Dataplane", Work in Progress, Internet-Draft, draft- 764 ietf-lsr-isis-srv6-extensions-18, 20 October 2021, 765 . 768 [I-D.ietf-lsr-ospfv3-srv6-extensions] 769 Li, Z., Hu, Z., Cheng, D., Talaulikar, K., and P. Psenak, 770 "OSPFv3 Extensions for SRv6", Work in Progress, Internet- 771 Draft, draft-ietf-lsr-ospfv3-srv6-extensions-03, 19 772 November 2021, . 775 [I-D.srcompdt-spring-compression-requirement] 776 Cheng, W., Xie, C., Bonica, R., Dukes, D., Li, C., Shaofu, 777 P., and W. Henderickx, "Compressed SRv6 SID List 778 Requirements", Work in Progress, Internet-Draft, draft- 779 srcompdt-spring-compression-requirement-07, 11 July 2021, 780 . 783 Appendix A. Open Issues 785 This section was added as requested by the SPRING chair in [EMAIL1]. 787 Issues raised during and after the adoption call for this draft are 788 tracked in an issue tracker. The remainder of this section 789 identifies the most significant open issues, from the adoption call, 790 for the working group to keep track of. 792 As a reminder to those reading this section, this document is a work 793 in progress, and subject to change by the working group. As noted at 794 the front of this document, "It is inappropriate to use Internet- 795 Drafts as reference material" 797 * Given that the working group has said that it wants to standardize 798 one data plane solution, and given that the document contains 799 multiple SRv6 EndPoint behaviors that some WG members have stated 800 are multiple data plane solutions, the working group will address 801 whether this is valid and coherent with its one data plane 802 solution objective. 804 * As reminded in the conclusion of the adoption call, this document 805 is subject to the policy announced by the SPRING chairs in 806 [EMAIL2]. In particular, this means that this document can not go 807 to WG last call until 6man completes handling of an Internet Draft 808 that deals with the relationship of C-SIDs to RFC 4291. It is 809 hoped and expected that said resolution will be a WG last call and 810 document approval in 6man of a document providing for the way that 811 C-SIDs use the IPv6 destination address field. 813 Authors' Addresses 815 Weiqiang Cheng (editor) 816 China Mobile 817 China 818 Email: chengweiqiang@chinamobile.com 819 Clarence Filsfils 820 Cisco Systems, Inc. 821 Belgium 822 Email: cf@cisco.com 824 Zhenbin Li 825 Huawei Technologies 826 China 827 Email: lizhenbin@huawei.com 829 Bruno Decraene 830 Orange 831 France 832 Email: bruno.decraene@orange.com 834 Dennis Cai 835 Alibaba 836 United States of America 837 Email: d.cai@alibaba-inc.com 839 Daniel Voyer 840 Bell Canada 841 Canada 842 Email: daniel.voyer@bell.ca 844 Francois Clad (editor) 845 Cisco Systems, Inc. 846 France 847 Email: fclad@cisco.com 849 Shay Zadok 850 Broadcom 851 Israel 852 Email: shay.zadok@broadcom.com 854 James N Guichard 855 Futurewei Technologies Ltd. 856 United States of America 857 Email: james.n.guichard@futurewei.com 858 Liu Aihua 859 ZTE Corporation 860 China 861 Email: liu.aihua@zte.com.cn 863 Robert Raszuk 864 NTT Network Innovations 865 United States of America 866 Email: robert@raszuk.net 868 Cheng Li 869 Huawei Technologies 870 China 871 Email: chengli13@huawei.com