idnits 2.17.1 draft-filsfilscheng-spring-srv6-srh-comp-sl-enc-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 : ---------------------------------------------------------------------------- ** 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 copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (May 20, 2021) is 1072 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 326 == Outdated reference: A later version (-07) exists of draft-cl-spring-generalized-srv6-for-cmpr-03 == Outdated reference: A later version (-16) exists of draft-filsfils-spring-net-pgm-extension-srv6-usid-10 Summary: 1 error (**), 0 flaws (~~), 4 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: November 21, 2021 Cisco Systems, Inc. 6 Z. Li 7 Huawei Technologies 8 D. Cai 9 Alibaba 10 D. Voyer 11 Bell Canada 12 F. Clad, Ed. 13 Cisco Systems, Inc. 14 S. Zadok 15 Broadcom 16 J. Guichard 17 Futurewei Technologies Ltd. 18 L. Aihua 19 ZTE Corporation 20 May 20, 2021 22 Compressed SRv6 Segment List Encoding in SRH 23 draft-filsfilscheng-spring-srv6-srh-comp-sl-enc-03 25 Abstract 27 This document defines a compressed SRv6 Segment List Encoding in the 28 SRH. This solution does not require any SRH data plane change nor 29 any SRv6 control plane change. This solution leverages the SRv6 30 Network Programming model. 32 Status of This Memo 34 This Internet-Draft is submitted in full conformance with the 35 provisions of BCP 78 and BCP 79. 37 Internet-Drafts are working documents of the Internet Engineering 38 Task Force (IETF). Note that other groups may also distribute 39 working documents as Internet-Drafts. The list of current Internet- 40 Drafts is at https://datatracker.ietf.org/drafts/current/. 42 Internet-Drafts are draft documents valid for a maximum of six months 43 and may be updated, replaced, or obsoleted by other documents at any 44 time. It is inappropriate to use Internet-Drafts as reference 45 material or to cite them other than as "work in progress." 47 This Internet-Draft will expire on November 21, 2021. 49 Copyright Notice 51 Copyright (c) 2021 IETF Trust and the persons identified as the 52 document authors. All rights reserved. 54 This document is subject to BCP 78 and the IETF Trust's Legal 55 Provisions Relating to IETF Documents 56 (https://trustee.ietf.org/license-info) in effect on the date of 57 publication of this document. Please review these documents 58 carefully, as they describe your rights and restrictions with respect 59 to this document. Code Components extracted from this document must 60 include Simplified BSD License text as described in Section 4.e of 61 the Trust Legal Provisions and are provided without warranty as 62 described in the Simplified BSD License. 64 Table of Contents 66 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 67 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 68 3. Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . 3 69 4. SR Endpoint Flavors . . . . . . . . . . . . . . . . . . . . . 4 70 4.1. NEXT-C-SID Flavor . . . . . . . . . . . . . . . . . . . . 5 71 4.2. REPLACE-C-SID Flavor . . . . . . . . . . . . . . . . . . 6 72 4.3. Combined NEXT-and-REPLACE-C-SID Flavor . . . . . . . . . 6 73 5. GIB, LIB, global C-SID and local C-SID . . . . . . . . . . . 8 74 5.1. Global C-SID . . . . . . . . . . . . . . . . . . . . . . 8 75 5.2. Local C-SID . . . . . . . . . . . . . . . . . . . . . . . 8 76 6. C-SID and Block Length . . . . . . . . . . . . . . . . . . . 9 77 6.1. C-SID Length . . . . . . . . . . . . . . . . . . . . . . 9 78 6.2. Block Length . . . . . . . . . . . . . . . . . . . . . . 9 79 6.3. GIB/LIB Usage . . . . . . . . . . . . . . . . . . . . . . 9 80 7. Efficient SID-list Encoding . . . . . . . . . . . . . . . . . 10 81 8. Control Plane . . . . . . . . . . . . . . . . . . . . . . . . 10 82 9. Illustrations . . . . . . . . . . . . . . . . . . . . . . . . 10 83 10. Interoperability Status . . . . . . . . . . . . . . . . . . . 10 84 11. Security Considerations . . . . . . . . . . . . . . . . . . . 10 85 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 86 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 87 13.1. Normative References . . . . . . . . . . . . . . . . . . 11 88 13.2. Informative References . . . . . . . . . . . . . . . . . 11 89 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 91 1. Introduction 93 The Segment Routing architecture is defined in [RFC8402]. 95 SRv6 Network Programming [RFC8986] defines a framework to build a 96 network program with topological and service segments carried in a 97 Segment Routing header (SRH) [RFC8754]. 99 This document adds new flavors to the SR endpoint behaviors defined 100 in [RFC8986]. These flavors enable a compressed encoding of the SRv6 101 Segment-List in the SRH and therefore address the requirements 102 described in [I-D.cheng-spring-shorter-srv6-sid-requirement]. 104 The flavors defined in this document leverage the SRH data plane 105 without any change and do not require any SRv6 control plane change. 107 2. Terminology 109 This document leverages the terms defined in [RFC8402], [RFC8754] and 110 [RFC8986]. The reader is assumed to be familiar with this 111 terminology. 113 This document introduces the following new terms: 115 o Compressed-SID (C-SID): A C-SID is a short encoding of a SID in 116 SRv6 packet that does not include the SID block bits (locator 117 block). 119 o Compressed-SID container (C-SID container): An entry of the SRH 120 Segment-List field (128 bits) that contains a sequence of C-SIDs. 122 o Compressed-SID sequence (C-SID sequence): A group of one or more 123 C-SID containers in a segment list that share the same SRv6 SID 124 block. 126 o Uncompressed SID sequence: A group of one or more uncompressed 127 SIDs in a segment list. 129 o Compressed Segment List encoding: A segment list encoding that 130 reduces the packet header length thanks to one or more C-SID 131 sequences. A compressed Segment List encoding may also contain 132 any number of uncompressed SID sequences. 134 3. Basic Concepts 136 In an SRv6 domain, the SIDs are allocated from a particular IPv6 137 prefix: the SRv6 SID block. Therefore, all SRv6 SIDs instantiated 138 from the same SRv6 SID block share the same most significant bits. 139 These common bits are named Locator-Block in [RFC8986]. Furthermore, 140 when the combined length of the SRv6 SID Locator, Function and 141 Argument is smaller than 128 bits, the trailing bits are set to zero. 143 When a sequence of consecutive SIDs in a Segment List shares a common 144 Locator-Block, a compressed SRv6 Segment-List encoding can optimize 145 the packet header length by avoiding the repetition of the Locator- 146 Block and trailing bits with each individual SID. 148 The compressed Segment List encoding is fully compliant with the 149 specifications in [RFC8402], [RFC8754] and [RFC8986]. Efficient 150 encoding is achieved by combining a compressed Segment List encoding 151 logic on the SR policy headend with new flavors of the base SRv6 152 endpoint behaviors that decode this compressed encoding. No SRv6 SRH 153 data plane change nor control plane extension is required. 155 A Segment List can be encoded in the packet header using any 156 combination of compressed and uncompressed sequences. The C-SID 157 sequences leverage the flavors defined in this document, while the 158 uncompressed sequences use behaviors and flavors defined in other 159 documents, such as [RFC8986]. An SR Policy headend constructs and 160 compresses the SID-list depending on the capabilities of each SR 161 endpoint node that the packet should traverse, as well as its own 162 compression capabilities. 164 It is expected that compressed encoding flavors be available on 165 devices with limited packet manipulation capabilities, such as legacy 166 ASICs. 168 The compressed Segment List encoding supports any SRv6 SID Block 169 allocation. While other options are supported and may provide higher 170 efficiency, each routing domain can be allocated a /48 prefix from a 171 global IPv6 block (see Section 6.2). 173 4. SR Endpoint Flavors 175 This section defines several options to achieve compressed Segment 176 List encoding, in the form of two new flavors for the END, END.X and 177 END.T behaviors of [RFC8986]. These flavors could also be combined 178 with behaviors defined in other documents. 180 The compressed encoding can be achieved by leveraging any of these SR 181 endpoint flavors. The NEXT-C-SID flavor and the REPLACE-C-SID flavor 182 expose the same high-level behavior in their use of the SID argument 183 to determine the next segment to be processed, but they have 184 different low-level characteristics that can make one more or less 185 efficient that the other for a particular SRv6 deployment. The NEXT- 186 and-REPLACE-C-SID flavor is the combination of the NEXT-C-SID flavor 187 and the REPLACE-C-SID flavor. It provides the best efficiency in 188 terms of encapsulation size at the cost of increased complexity. 190 It is recommended for ease of operation that a single compressed 191 encoding flavor be used in a given SRv6 domain. However, in a multi- 192 domain deployment, different flavors can be used in different 193 domains. 195 All three flavors leverage the following variables: 197 o Variable B is the Locator Block length of the SID. 199 o Variable NF is the sum of the Locator Node and the Function 200 lengths of the SID. It is also referred to as C-SID length. 202 o Variable A is the Argument length of the SID. 204 4.1. NEXT-C-SID Flavor 206 A SID instantiated with the NEXT-C-SID flavor takes an argument that 207 carries the remaining C-SIDs in the current C-SID container. 209 The length A of the argument is equal to 128-B-NF and should be a 210 multiple of NF. 212 +----------------------------------------------------+ 213 | Locator-Block | Locator-Node | Function | Argument | 214 +----------------------------------------------------+ 215 <----- B -----> <--------- NF ----------> <-- A ---> 217 Pseudo-code: 219 1. If (DA.Argument != 0) { 220 2. Copy DA.Argument into the bits [B..(B+A-1)] of the 221 Destination Address of the IPv6 header. 222 3. Set the bits [(B+A)..127] of the Destination Address 223 of the IPv6 header to zero. 224 4. } Else { 225 5. Decrement Segments Left by 1. 226 6. Copy Segment List[Segments Left] from the SRH to the 227 Destination Address of the IPv6 header. 228 7. } 230 Note: "DA.Argument" identifies the bits "[(B+NF)..127]" in the 231 Destination Address of the IPv6 header. 233 The NEXT-C-SID flavor has been previously documented in 234 [I-D.filsfils-spring-net-pgm-extension-srv6-usid] under the name 235 "SHIFT" flavor. In that context, a C-SID and a C-SID-sequence are 236 respectively named a Micro-Segment (uSID) and a Micro-Program. 238 4.2. REPLACE-C-SID Flavor 240 A SID instantiated with the REPLACE-C-SID flavor takes an argument, 241 which is used to determine the index of the next C-SID in the 242 appropriate container. 244 All SIDs that are part of a C-SID sequence using the REPLACE-C-SID 245 flavor have the same C-SID length NF. 247 The length A of the argument should be at least ceil(log_2(128/NF)). 249 +----------------------------------------------------+ 250 | Locator-Block | Locator-Node | Function | Argument | 251 +----------------------------------------------------+ 252 <----- B -----> <--------- NF ----------> <-- A ---> 254 Pseudo-code: 256 1. If (DA.Argument != 0) { 257 2. Decrement DA.Argument by 1. 258 3. } Else { 259 4. Decrement Segments Left by 1. 260 5. Set DA.Argument to (128/NF - 1). 261 6. } 262 7. Copy Segment List[Segments Left][DA.Argument] into the bits 263 [B..B+NF-1] of the Destination Address of the IPv6 header. 265 Notes: 267 o "DA.Argument" identifies the bits "[(B+NF)..(B+NF+A-1)]" in the 268 Destination Address of the IPv6 header. 270 o "Segment List[Segments Left][DA.Argument]" identifies the bits 271 "[DA.Argument*NF..(DA.Argument+1)*NF-1]" in the SRH Segment List 272 entry at index Segments Left. 274 The REPLACE-C-SID flavor has been previously documented in 275 [I-D.cl-spring-generalized-srv6-for-cmpr] under the name 276 "COC(Continue of Compression)" flavor. In that context, a C-SID and 277 a C-SID-sequence are respectively named a G-SID and G-SRv6 278 compression sub-path. 280 4.3. Combined NEXT-and-REPLACE-C-SID Flavor 282 A SID instantiated with the NEXT-and-REPLACE-C-SID flavor takes a 283 two-parts argument comprising, Arg.Next and Arg.Index, and encoded in 284 the SID in this order. 286 The length A_I of Arg.Index is equal to ceil(log_2(128/NF)). 288 The length A_N of Arg.Next is equal to 128-B-NF-A_I and must be a 289 multiple of NF. 291 The total SID argument length A is the sum of A_I and A_N. 293 The NEXT-and-REPLACE-C-SID flavor also leverages an additional 294 variable, C_DA, that is equal to (1 + (A_N/NF)) and represents the 295 number of C-SID's that can be encoded in the IPv6 Destination 296 Address. 298 All SIDs that are part of a C-SID sequence using the NEXT-and- 299 REPLACE-C-SID flavor must have the same C-SID length NF. 300 Furthermore, this NF must be a divisor of 128. 302 +----------------------------------------------------------------+ 303 | Locator-Block | Locator-Node | Function | Arg.Next | Arg.Index | 304 +----------------------------------------------------------------+ 305 <----- B -----> <--------- NF ----------> <- A_N --> <-- A_I --> 307 Pseudo-code: 309 1. If (DA.Arg.Next != 0) { 310 2. Copy DA.Arg.Next into the bits [B..(B+A_N-1)] of the 311 Destination Address of the IPv6 header. 312 3. Set the bits [(B+A_N)..(B+NF+A_N-1)] of the Destination Address 313 of the IPv6 header to zero. 314 4. } Else If (DA.Arg.Index >= C_DA) { 315 5. Decrement DA.Arg.Index by C_DA. 316 6. Copy C_DA*NF bits from Segment List[Segments Left][DA.Arg.Index] 317 into the bits [B..B+C_DA*NF-1] of the Destination Address of 318 the IPv6 header. 319 7. } Else If (Segments Left != 0) { 320 8. Decrement Segments Left by 1. 321 9. Set DA.Arg.Index to ((DA.Arg.Index - C_DA) % (128/NF)). 322 10. Copy C_DA*NF bits from Segment List[Segments Left][DA.Arg.Index] 323 into the bits [B..B+C_DA*NF-1] of the Destination Address of 324 the IPv6 header. 325 11. } Else { 326 12. Copy DA.Arg.Index*NF bits from Segment List[0][0] into the bits 327 [B..B+DA.Arg.Index*NF-1] of the Destination Address of the 328 IPv6 header. 329 13. Set the bits [B+DA.Arg.Index*NF..B+NF+A_N-1] of the Destination 330 Address of the IPv6 header to zero. 331 14. Set DA.Arg.Index to 0. 332 15. } 333 Notes: 335 o "DA.Arg.Next" identifies the bits "[(B+NF)..(B+NF+A_N-1)]" in the 336 Destination Address of the IPv6 header. 338 o "DA.Arg.Index" identifies the bits "[(B+NF+A_N)..(B+NF+A_N+A_I- 339 1)]" in the Destination Address of the IPv6 header. 341 o "Segment List[Segments Left][DA.Arg.Index]" identifies the bits 342 "[DA.Arg.Index*NF..(DA.Arg.Index+1)*NF-1]" in the SRH Segment List 343 entry at index Segments Left. 345 5. GIB, LIB, global C-SID and local C-SID 347 GIB: The set of IDs available for global C-SID allocation. 349 LIB: The set of IDs available for local C-SID allocation. 351 5.1. Global C-SID 353 A C-SID from the GIB. 355 A Global C-SID typically identifies a shortest-path to a node in the 356 SRv6 domain. An IP route is advertised by the parent node to each of 357 its global C-SID's, under the associated C-SID block. The parent 358 node executes a variant of the END behavior. 360 A node can have multiple global C-SID's under the same C-SID blocks 361 (e.g. one per IGP flexible algorithm). Multiple nodes may share the 362 same global C-SID (anycast). 364 5.2. Local C-SID 366 A C-SID from the LIB. 368 A local C-SID may identify a cross-connect to a direct neighbor over 369 a specific interface or a VPN context. 371 No IP route is advertised by a parent node for its local C-SID's. 373 If N1 and N2 are two different physical nodes of the SRv6 domain and 374 I is a local C-SID value, then N1 and N2 may bind two different 375 behaviors to I. 377 The concept of LIB is applicable to SRv6 and specifically to its 378 NEXT-C-SID and REPLACE-C-SID flavors. The shorter the SID/C-SID, the 379 more benefit the LIB brings. 381 The allocation of C-SID's from the GIB and LIB depends on the C-SID 382 length (see Section 6.3). 384 6. C-SID and Block Length 386 6.1. C-SID Length 388 The NEXT-C-SID flavor supports both 16- and 32-bit C-SID lengths. A 389 C-SID length of 16-bit is recommended. 391 The REPLACE-C-SID flavor supports both 16- and 32-bit C-SID lengths. 392 A C-SID length of 32-bit is recommended. 394 6.2. Block Length 396 The compressed Segment List encoding supports any SRv6 SID Block 397 allocation either from GUA or LUA space. 399 The recommended SRv6 SID block sizes for the NEXT-C-SID flavor are 400 16, 32 or 48 bits. The smaller the block, the higher the compression 401 efficiency. 403 The recommended SRv6 SID block size for the REPLACE-C-SID flavor can 404 be 48, 56, 64, 72 or 80 bits, depending on the needs of the operator. 406 6.3. GIB/LIB Usage 408 The previous block and C-SID length recommendations, call for the 409 following GIB/LIB usage: 411 o NEXT-C-SID: 413 * GIB: END.NEXT-C-SID 415 * LIB: END.X.NEXT-C-SID, END.DX.NEXT-C-SID, END.DT.NEXT-C-SID 417 * LIB: END.DX.NEXT-C-SID for large-scale PW support 419 o REPLACE-C-SID: 421 * GIB: END.REPLACE-C-SID, END.X.REPLACE-C-SID, END.DX.REPLACE- 422 C-SID, END.DT.REPLACE-C-SID 424 * LIB: END.DX.REPLACE-C-SID for large-scale PW support 426 7. Efficient SID-list Encoding 428 The compressed SID-list encoding logic is a local behavior of the SR 429 Policy headend node and hence out of the scope of this document. 431 8. Control Plane 433 This document does not require any control plane modification. 435 9. Illustrations 437 Illustrations will be provided in a separate document. 439 10. Interoperability Status 441 In November 2020, China Mobile successfully validated multiple 442 interoperable implementations of the NEXT-C-SID and REPLACE-C-SID 443 flavors defined in this document. 445 This testing covered two different implementations of the SRv6 446 endpoint flavors defined in this document: 448 o Hardware implementation in Cisco ASR 9000 running IOS XR 450 o Software implementation in Cisco IOS XRv9000 virtual appliance 452 o Hardware implementation in Huawei NE40E and NE5000E running VRP 454 The interoperability was validated for the following scenario: 456 o Packet forwarding through a traffic engineering segment list 457 combining, in the same SRH ([RFC8754]), SRv6 SIDs bound to an 458 endpoint behavior with the NEXT-C-SID flavor and SRv6 SIDs bound 459 to an endpoint behavior with the REPLACE-C-SID flavor. 461 Further interoperability testing is ongoing and will be reported in 462 this document as the work progresses. 464 11. Security Considerations 466 TBD 468 12. Acknowledgements 470 The authors would like to thank Bruno Decraene, Cheng Li, Kamran 471 Raza, Xing Jiang and YuanChao Su. 473 13. References 475 13.1. Normative References 477 [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., 478 Decraene, B., Litkowski, S., and R. Shakir, "Segment 479 Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, 480 July 2018, . 482 [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., 483 Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header 484 (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, 485 . 487 [RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, 488 D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 489 (SRv6) Network Programming", RFC 8986, 490 DOI 10.17487/RFC8986, February 2021, 491 . 493 13.2. Informative References 495 [I-D.cheng-spring-shorter-srv6-sid-requirement] 496 Cheng, W., Chongfeng, Pang, R., Li, Z., Chen, R., Lijun, 497 Duan, X., Mirsk, G., Dukes, D., and S. Zadok, "Shorter 498 SRv6 SID Requirements", draft-cheng-spring-shorter-srv6- 499 sid-requirement-02 (work in progress), July 2020. 501 [I-D.cl-spring-generalized-srv6-for-cmpr] 502 Cheng, W., Li, Z., Li, C., Clad, F., Liu, A., Xie, C., 503 Liu, Y., and S. Zadok, "Generalized SRv6 Network 504 Programming for SRv6 Compression", draft-cl-spring- 505 generalized-srv6-for-cmpr-03 (work in progress), April 506 2021. 508 [I-D.filsfils-spring-net-pgm-extension-srv6-usid] 509 Filsfils, C., Garvia, P. C., Cai, D., Voyer, D., Meilik, 510 I., Patel, K., Henderickx, W., Jonnalagadda, P., Melman, 511 D., Liu, Y., and J. Guichard, "Network Programming 512 extension: SRv6 uSID instruction", draft-filsfils-spring- 513 net-pgm-extension-srv6-usid-10 (work in progress), March 514 2021. 516 Authors' Addresses 517 Weiqiang Cheng (editor) 518 China Mobile 519 China 521 Email: chengweiqiang@chinamobile.com 523 Clarence Filsfils 524 Cisco Systems, Inc. 525 Belgium 527 Email: cf@cisco.com 529 Zhenbin Li 530 Huawei Technologies 531 China 533 Email: lizhenbin@huawei.com 535 Dennis Cai 536 Alibaba 537 USA 539 Email: d.cai@alibaba-inc.com 541 Daniel Voyer 542 Bell Canada 543 Canada 545 Email: daniel.voyer@bell.ca 547 Francois Clad (editor) 548 Cisco Systems, Inc. 549 France 551 Email: fclad@cisco.com 553 Shay Zadok 554 Broadcom 555 Israel 557 Email: shay.zadok@broadcom.com 558 James N Guichard 559 Futurewei Technologies Ltd. 560 USA 562 Email: james.n.guichard@futurewei.com 564 Liu Aihua 565 ZTE Corporation 566 China 568 Email: liu.aihua@zte.com.cn