idnits 2.17.1 draft-cl-spring-generalized-srv6-for-cmpr-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 15 instances of too long lines in the document, the longest one being 17 characters in excess of 72. ** The abstract seems to contain references ([I-D.filsfilscheng-spring-srv6-srh-compression]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (24 April 2022) is 732 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 (-16) exists of draft-filsfils-spring-net-pgm-extension-srv6-usid-12 == Outdated reference: A later version (-03) exists of draft-ietf-spring-compression-requirement-01 == Outdated reference: A later version (-19) exists of draft-ietf-lsr-isis-srv6-extensions-18 Summary: 2 errors (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 SPRING Working Group W. Cheng 3 Internet-Draft China Mobile 4 Intended status: Standards Track Z. Li 5 Expires: 26 October 2022 C. Li 6 Huawei Technologies 7 F. Clad 8 Cisco Systems, Inc 9 A. Liu 10 ZTE Corporation 11 C. Xie 12 China Telecom 13 Y. Liu 14 China Mobile 15 S. Zadok 16 Broadcom 17 24 April 2022 19 Generalized SRv6 Network Programming for SRv6 Compression 20 draft-cl-spring-generalized-srv6-for-cmpr-05 22 Abstract 24 This document proposes Generalized Segment Routing over IPv6 (G-SRv6) 25 Networking Programming for SRv6 compression. 27 G-SRv6 can reduce the overhead of SRv6 by encoding the Generalized 28 SIDs(G-SID) in SID list, and it also supports to program SRv6 SIDs 29 and G-SIDs in a single SRH to support incremental deployment and 30 smooth upgrade. 32 G-SRv6 is fully compatible with SRv6 with no modification of SRH, no 33 new address consumption, no new route creation, and even no 34 modification of control plane. 36 G-SRv6 for Compression is designed based on the Compressed SRv6 37 Segment List Encoding in SRH 38 [I-D.filsfilscheng-spring-srv6-srh-compression] framework. 40 Status of This Memo 42 This Internet-Draft is submitted in full conformance with the 43 provisions of BCP 78 and BCP 79. 45 Internet-Drafts are working documents of the Internet Engineering 46 Task Force (IETF). Note that other groups may also distribute 47 working documents as Internet-Drafts. The list of current Internet- 48 Drafts is at https://datatracker.ietf.org/drafts/current/. 50 Internet-Drafts are draft documents valid for a maximum of six months 51 and may be updated, replaced, or obsoleted by other documents at any 52 time. It is inappropriate to use Internet-Drafts as reference 53 material or to cite them other than as "work in progress." 55 This Internet-Draft will expire on 26 October 2022. 57 Copyright Notice 59 Copyright (c) 2022 IETF Trust and the persons identified as the 60 document authors. All rights reserved. 62 This document is subject to BCP 78 and the IETF Trust's Legal 63 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 64 license-info) in effect on the date of publication of this document. 65 Please review these documents carefully, as they describe your rights 66 and restrictions with respect to this document. Code Components 67 extracted from this document must include Revised BSD License text as 68 described in Section 4.e of the Trust Legal Provisions and are 69 provided without warranty as described in the Revised BSD License. 71 Table of Contents 73 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 74 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 75 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 76 3. Concepts of G-SRv6 . . . . . . . . . . . . . . . . . . . . . 4 77 3.1. G-SID . . . . . . . . . . . . . . . . . . . . . . . . . . 4 78 3.2. G-SID Container . . . . . . . . . . . . . . . . . . . . . 5 79 3.3. G-SID Index . . . . . . . . . . . . . . . . . . . . . . . 6 80 3.4. COC Flavor . . . . . . . . . . . . . . . . . . . . . . . 6 81 4. G-SRH . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 82 5. Packet Processing . . . . . . . . . . . . . . . . . . . . . . 9 83 6. Illustration . . . . . . . . . . . . . . . . . . . . . . . . 10 84 7. Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . 12 85 8. Running Code . . . . . . . . . . . . . . . . . . . . . . . . 13 86 8.1. Interop-test Status . . . . . . . . . . . . . . . . . . . 13 87 8.2. Deployment Status . . . . . . . . . . . . . . . . . . . . 15 88 9. Protocol Extensions Requirements . . . . . . . . . . . . . . 15 89 9.1. Data Plane . . . . . . . . . . . . . . . . . . . . . . . 15 90 9.2. Control Plane . . . . . . . . . . . . . . . . . . . . . . 16 91 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 92 11. Security Considerations . . . . . . . . . . . . . . . . . . . 17 93 12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 17 94 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 17 95 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 96 14.1. Normative References . . . . . . . . . . . . . . . . . . 17 97 14.2. Informative References . . . . . . . . . . . . . . . . . 18 99 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 101 1. Introduction 103 Segment routing (SR) [RFC8402] is a source routing paradigm that 104 explicitly indicates the forwarding path for packets at the ingress 105 node by inserting an ordered list of instructions, called segments. 107 When segment routing is deployed on the IPv6 data plane, it is called 108 SRv6 [RFC8754]. For support of SR, a new routing header called 109 Segment Routing Header (SRH), which contains a list of SIDs and other 110 information, has been defined in [RFC8754]. In use cases like 111 Traffic Engineering, an ordered SID List with multiple SIDs is 112 inserted into the SRH to steer packets along an explicit path. 114 However, the size of SIDs (16 bytes per SID) in SRH proposes 115 challenges for packet processing and payload efficiency 116 [I-D.ietf-spring-compression-requirement]. In order to solve this 117 problem, this document proposes Generalized Segment Routing over IPv6 118 (G-SRv6) Networking Programming for SRv6 compression. 120 G-SRv6 supports to encode multiple types of Segments in an SRH, 121 called Generalized SRH (G-SRH). In SRv6 Compression, the G-SRH can 122 carry multiple SRv6 SID and G-SID(Generalized Segment Identifier) 123 containers in the SID list. A G-SID container may include an SRv6 124 SID or multiple G-SIDs and optional padding. A G-SID can be a 125 32-bits value of the original SRv6 SID, which contains the node ID 126 and function ID. By carrying G-SIDs instead of 128 bits SRv6 SID, 127 the problem of SRv6 header size can be solved, and the solution is 128 compatible with SRv6. 130 2. Terminology 132 This document makes use of the terms defined in [RFC8754], [RFC8402] 133 and [RFC8200], and the reader is assumed to be familiar with that 134 terminology. This document introduces the following terms: 136 Compressible SRv6 SID: It is the 128-bit SRv6 SID whose format can be 137 compressed. It is composed by Common Prefix and Generalized Segment 138 Identifier (G-SID) and optional arguments and padding. 140 Common Prefix: It is the same prefix shared by multiple SIDs. 142 G-SRv6: Generalized SRv6 Network Programming 144 G-SRH: Generalized Segment Routing Header. It keeps the same format 145 and code point with original SRH, which can carry multiple G-SIDs and 146 original SIDs. 148 G-SID: Generalized Segment Identifier.It is a Compressed SID(C-SID) 149 [I-D.filsfilscheng-spring-srv6-srh-compression]. 151 G-SID Container: Generalized Segment Identifier Container.It is a 152 C-SID container [I-D.filsfilscheng-spring-srv6-srh-compression]. 154 2.1. Requirements Language 156 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 157 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 158 "OPTIONAL" in this document are to be interpreted as described in BCP 159 14 [RFC2119] [RFC8174] when, and only when, they appear in all 160 capitals, as shown here. 162 3. Concepts of G-SRv6 164 This section describes the concepts of G-SRv6. 166 3.1. G-SID 168 In an SRv6 domain, the SIDs are allocated from an address block, 169 called SID space. Therefore, the SIDs allocated from the same SID 170 space share the common prefix. Also, if the length of the SID is 171 less than 128 bits, then padding is required. In an SID List, the 172 common prefix and padding are redundant. Reducing the redundant 173 information can reduce the overhead of SRv6. 175 This document defines a Generalized SID (G-SID) to carry the 176 different part of the original SRv6 SID in the SRH to reduce the size 177 of the SRH. The G-SID can be a 32-bits value following the common 178 prefix in the original SRv6 SID. An SRv6 SID with this format is 179 called compressible SRv6 SID. The format of a compressible SRv6 SID 180 with 32-bits G-SID is shown in Figure 1. 182 0 Variable Length 32 bits 128 bits 183 +--------------------------------------------------------------+ 184 | Common Prefix | G-SID | Args/padding | 185 +--------------------------------------------------------------+ 186 |<-------- Locator ----------------->| 188 Figure 1. 32 bits G-SID in SRv6 SID 190 In order to indicate the format of the SRv6 SID is compressible, 191 control plane extension may be considered. This is out of scope of 192 this document, and can be described in other documents. 194 3.2. G-SID Container 196 In order to align with 128 bits, a 128 bit G-SID Container is 197 defined. A G-SID Container is a 128 bits value, and it may contain 198 different type of SIDs: 200 * an SRv6 SID: A G-SID Container contains a single SRv6 SID. 202 * A Micro SID Carrier: A G-SID Container contains a Micro SID 203 carrier [I-D.filsfils-spring-net-pgm-extension-srv6-usid]. 205 * Multiple G-SIDs: A G-SID Container contains multiple G-SIDs and 206 optional padding. When G-SID is a 32-bits value, a G-SID 207 Container can consist of 4 G-SIDs. If the length of G-SIDs in a 208 G-SID Container is less than 128 bits, then padding is required. 210 0 1 2 3 211 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 212 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 213 | G-SID 0 | 214 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 215 | G-SID 1 | 216 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 217 | G-SID 2 | 218 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 219 | G-SID 3 | 220 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 221 (a) 223 0 1 2 3 224 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 225 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 226 | Padding | 227 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 228 | Padding | 229 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 230 | G-SID 0 | 231 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 232 | G-SID 1 | 233 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 234 (b) 236 Figure 2. G-SID Container for Compression 238 3.3. G-SID Index 240 In order to locate the G-SID within the G-SID Container, this section 241 defines Generalized SID Index (SI) to indicate the location of the 242 G-SID within the current G-SID Container. 244 SI is a location argument of the G-SID, which is the least bits in 245 the argument part. When G-SID is a 32 bits value, the SI is the 246 least 2 bits in Argument. 248 0 Variable Length 32 bits 128 bits 249 +--------------------------------------------------------------+ 250 | Common Prefix | G-SID |SI| Padding | 251 +--------------------------------------------------------------+ 253 Figure 4. SI in the IPv6 DA 255 3.4. COC Flavor 257 In order to indicate the SRv6 compression processing, updating the 258 next 32-bits G-SID to the IPv6 DA, this section defines COC(Continue 259 of Compression) Flavor. 261 When a node receives an SID with COC Flavor, it indicates to update 262 the G-SID part in IPv6 DA with the next 32 bits G-SID. 264 When a node receives an SID without COC Flavor, the node processes 265 the packet as a normal SRv6 packet [RFC8986], for example, update the 266 IPv6 DA with the next 128 bits SID if SL >0. 268 Therefore, if the behavior of the last G-SID in the G-SID list has no 269 COC Flavor, then the next 128 bits SID will be updated to the DA, so 270 it indicates the end of the compression sub-path. 272 When COC Flavor applies to END, END.X and END.T, the SIDs can be 273 advertised via the IS-IS [I-D.ietf-lsr-isis-srv6-extensions], and the 274 SRv6 SID Structure Sub-Sub-TLV MUST be carried to indicate the format 275 of the SRv6 SID. The Locator.Block length indicates the length of 276 the common prefix, and the G-SID is the following 32-bits value after 277 the Block, which contains the Node ID and Function ID. 279 4. G-SRH 281 G-SRH supports to encode different types of segment in a single SRH 282 without modifying the encapsulation format of SRH. 284 When an SRv6 path travels normal SRv6 nodes and compressed SRv6 285 nodes, the SRv6 SID and G-SIDs can be encoded in a single G-SRH. 287 For easier understanding, this document assumes that the Compressible 288 SRv6 SID consists of 64 bits common prefix and 32 bits G-SID. The 289 encoding can be shown as follows. 291 0 1 2 3 292 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 293 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 294 | Next Header | Hdr Ext Len | Routing Type | Segments Left| 295 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 296 | Last Entry | Flag | Tag | 297 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 298 | Other G-SID Container | 299 . ... . 300 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --- 301 | Optional Padding | 302 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 303 | G-SID 0 | G-SID Container 0 304 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 305 . ... . ... 306 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 307 | G-SID 3 | 308 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --- 309 | G-SID 0 | 310 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 311 | G-SID 1 | 312 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 313 | G-SID 2 | G-SID Container j 314 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 315 | G-SID 3 | 316 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --- 317 | Common Prefix | 318 | | 319 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ G-SID Container k 320 | G-SID 0 | 321 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 322 | Padding | 323 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --- 324 | ... | 325 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 326 | | 327 | Generalized Segment List[n] (128 bits SRv6 SID) | 328 | | 329 | | 330 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 331 // Optional Type Length Value objects (variable) // 332 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 334 Figure 3. G-SRH for SRv6 Compression 336 Where: 338 * Common Prefix: the common prefix shared by the Compressible SRv6 339 SIDs in the current compression sub-path. Usually, it is the 340 prefix of the SID space, called Locator Block in control plane 341 [RFC8986]. Operators are free to configure the length and the 342 value of the common prefix based on the address planning of their 343 networking. 345 * G-SID: 32-bits Generalized SID. 347 * Padding: Must be zero. When the length of G-SIDs within the G-SID 348 Container is less than 128 bits, then padding is needed. 350 5. Packet Processing 352 This section describes the pseudo code of COC Flavor, and it replaces 353 the S13 and S14 of End, End.X, and End.T's pseudo code [RFC8986]. 354 The pseudo code is shown below. 356 When N receives a packet whose IPv6 DA is S and S is a local SID with 357 COC Flavor, N does: 359 1. If (DA.SI != 0) { //ref1 360 2. Decrement DA.SI by 1. 361 3. } Else { 362 4. Decrement Segments Left by 1. 363 5. Set DA.SI to 3 in the IPv6 Destination Address 364 6. } 365 7. Copy Segment List[Segments Left][DA.SI] into the bits //ref2 366 [B..B+31] of the IPv6 Destination Address. 368 * Ref1: an SID with COC flavor indicates the SRv6 compression 369 processing that the node needs to update the next 32 bits G-SID to 370 the IPv6 DA. 372 - When the SI is greater than 0, the next G-SID is the next G-SID 373 in the current G-SID Container. 375 - Otherwise, the next G-SID is the first G-SID in the next G-SID 376 Container. 378 * Ref2: B is the length of the Locator Block [RFC8986]. 380 An SID without COC Flavor will be processed following the SRv6 381 processing. The node will update the next 128 bit SID to the IPv6 DA 382 if the SL > 0. 384 6. Illustration 386 This section describes a simple example of G-SRv6 for compression. 388 The reference topology is shown below. 390 *--------------------* 391 * SRv6 Domain * 392 * * 393 Tenant10 CE1--0-1-2-3-4-5-6-7-8-9-10--CE2 Tenant10 394 * * 395 *--------------------* 397 Figure 5. Reference topology 399 Nodes 0 - 10 are G-SRv6 enabled nodes within the SRv6 domain, and 400 node 0 is the ingress node of the G-SRv6 path while the node 10 is 401 the egress node. 403 Nodes CE1 and CE2 are tenants of VPN 10, and they are outside of the 404 SRv6 domain. 406 In order to ease the reading of the example, this section introduces 407 a simplified SID allocation schema. 409 * 2001:db8::/64 is dedicated to the internal SRv6 SID space, which 410 is the common prefix for the SIDs as well. 412 * Node k has 2001:db8:0:0:k::/80 for its local SID space. Its SIDs 413 will be explicitly allocated from that block. 415 * 2001:db8:0:0:k:1:: represents the End.X SID with COC allocated by 416 node K, and it is associated with interface N of node K. For 417 instance, 2001:db8:0:0:1:1:: represents the End.X with COC flavor 418 allocated by node 1. 420 * 2001:db8:0:0:k:2:: represents the End.X SID without COC allocated 421 by node K, and it is associated with interface N of node K. For 422 instance, 2001:db8:0:0:1:2:: represents the End.X without COC 423 flavor allocated by node 1. 425 * 2001:db8:0:0:10:10:: is an END.DT4 SID initiated by node 10, which 426 is associated with the VRF10. 428 Therefore, the SID 2001:db8:0:0:1:1::, 2001:db8:0:0:2:1::, 429 2001:db8:0:0:3:1::, 2001:db8:0:0:4:1::, 2001:db8:0:0:5:1::, 430 2001:db8:0:0:6:1::, 2001:db8:0:0:7:1::, 2001:db8:0:0:8:1:: are SRv6 431 End.X SIDs with COC Flavor, and 2001:db8:0:0:9:2:: is a Compressible 432 SRv6 End.X SID. 434 The SID list [2001:db8:0:0:1:1::, 2001:db8:0:0:2:1::, 435 2001:db8:0:0:3:1::, 2001:db8:0:0:4:1::, 2001:db8:0:0:5:1::, 436 2001:db8:0:0:6:1::, 2001:db8:0:0:7:1::, 2001:db8:0:0:8:1::, 437 2001:db8:0:0:9:2::, 2001:db8:0:0:10:10::] is calculated for a strict 438 TE path from Node 1 to Node 10 for the VPN traffic of tenant 10. 440 In G-SRv6, the SID list can be encoded as [2:1, 3:1, 4:1, 5:1, 6:1, 441 7:1, 8:1, 9:2, 2001:db8:0:0:10:10::] in reduced mode. The G-SID 442 Container encoding is shown below. 444 0 1 2 3 445 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 446 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---- 447 | | 448 | 2001:db8:0:0:10:10:: | G-SID Container 0 449 | | 450 | | 451 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---- 452 | 9:2 | 453 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 454 | 8:1 | 455 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ G-SID Container 1 456 | 7:1 | 457 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 458 | 6:1 | 459 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---- 460 | 5:1 | 461 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 462 | 4:1 | 463 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ G-SID Container 2 464 | 3:1 | 465 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 466 | 2:1 | 467 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---- 469 Figure 6. G-SID Container Encoding for G-SRv6 471 The packets forwarding procedures: 473 * Node 0 sends the SRv6 packet with G-SRH to the node 1.The SL is 3. 474 The Active SID in IPv6 DA is 2001:db8:0:0:1:1::. 476 * When node 1 receives the packet, the IPv6 DA is 477 2001:db8:0:0:1:1::, which is a Local End.X with COC Flavor SID. 478 The SRH.SL is 3, and DA.SI is 0. The node processes the packet: 479 SL = SL-1,DA.SI =3, pointing to the next G-SID 2:1, and updates 480 SRH[SL=2][DA.SI=3] to the IPv6 DA[CP:CP+31], where CP is the 481 length of the common prefix. The packet is forwarded with the new 482 IPv6 DA 2001:db8:0:0:2:1:C::, to the node 2. 484 * When node 2 receives the packet, the IPv6 DA is 485 2001:db8:0:0:2:1:C::, which is a Local End.X with COC Flavor SID. 486 The SRH.SL is 2, and DA.SI is 3. The node processes the packet: 487 DA.SI --, pointing to the next G-SID 3:1, and updates 488 SRH[SL=2][DA.SI=2] to the IPv6 DA[CP:CP+31]. The packet is 489 forwarded with the new IPv6 DA 2001:db8:0:0:3:1:8::, to the node 490 3. 492 * Similar to node 1 and 2, the node 3,4,5,6,7,8 process the packet 493 and forward with the new IPv6 DA. 495 * When node 9 receives the packet, the IPv6 DA is 496 2001:db8:0:0:9:2::, which is a Local End.X SID. The SRH.SL is 1. 497 The node updates the next SID 2001:db8:0:0:10:10:: to the IPv6 DA 498 and forwards the packet to the node 10. 500 * Node 10 receives the packet, and the IPv6 DA is an VPN SID 501 allocated by itself, the node processes the SRv6 VPN SID. 503 This illustration shows that 70 % overhead of SID list is removed in 504 G-SRv6(10 x 16 Bytes to 3 x 16 Bytes), also, it shows the 505 capabilities of encoding G-SIDs and SRv6 SIDs in a single G-SRH. 507 7. Benefits 509 * G-SRv6 is fully compatible with SRv6 511 - No SRH encapsulation modification. 513 - No new address consumption: Compressible SRv6 SIDs can be 514 allocated from the Locator allocated to the node. 516 - No new route advertisements: Compressible SRv6 SIDs can share 517 the same locator with the normal SRv6 SID. 519 - No security policy modification: when reusing the Locator with 520 SRv6 SIDs, no security policy need to be updated. 522 - No control plane modification: Controller can install the SR 523 policy with 128-bits G-SID Containers, and the ingress treats 524 the G-SID Container as an opaque 128-bits SID without 525 understanding the structure of it. G-SRv6 capable nodes 526 understand the COC flavor behaviors, while Compression disable 527 SRv6 nodes are unaware of Compression. 529 * G-SRv6 reduces the SRv6 encapsulation size. 531 - 128 bits to 32 bits, up to 75 % overhead is reduced. More 532 overhead is reduced when the G-SID is a 16-bits value. 534 * G-SRv6 has efficient address consumption and easy to deploy 536 - Operators are free to allocate an SID space from their address 537 space. 539 - No affect of networking(i.e. routes and ACL security policies) 540 by using the existing Locator to allocate compressible SRv6 541 SIDs. 543 * G-SRv6 is hardware friendly 545 - Same SRv6 processing flow with a new IPv6 DA update method 547 - Leverages the mature hardware capabilities (DA update, DA 548 longest match) 550 - Avoids extra lookup in indexed mapping table 552 * G-SRv6 supports incremental deployments, which can be deployed on 553 demand. 555 8. Running Code 557 8.1. Interop-test Status 559 The G-SRv6 mechanism has been implemented on the following 10+ 560 hardware devices, software implementations and SDN controllers. 562 They had also successfully participated in the series of joint 563 interoperability testing events hosted by China Mobile from June 2020 564 to November 2020. 566 The following hardware devices and software implementations had 567 successfully passed the series of G-SRv6 dataplane interoperability 568 testing (in alphabetical order). 570 * Chipsets 572 - Broadcom Jericho 2 BCM88690 574 - Centec CTC7132 576 - Intel Barefoot Tofino BFN-T10 578 - Marvell Falcon 98CX8580 580 * Devices 582 - Cisco ASR 9000 584 - Cisco IOS XRv9000 586 - Huawei NE40E 588 - Huawei NE5000E 590 - H3C CR16010H-FA 592 - H3C CR19000-8 594 - Ruijie F9300 Switch 596 - ZTE M6000-8S Plus 598 - ZTE M6000-3S 600 * Test Equipment 602 - IXIA XGS12 604 - Spirent TestCenter N4U 606 The following hardware devices and software implementations had 607 successfully passed the series of G-SRv6 with control plane 608 interoperability test (in alphabetical order). 610 * China Unitechs Unified Controller 612 * Huawei NE40E and NE5000E 614 * H3C CR16010H-FA and CR19000-8 616 * Spirent TestCenter N4U 617 * ZTE M6000-8S Plus and M6000-3S 619 Regarding open-source implementations, G-SRv6 has been implemented on 620 Linux Kernel. 622 8.2. Deployment Status 624 In addition, China Mobile had come up with China Unitechs, Huawei, 625 ZTE and H3C to successfully deploy trial of G-SRv6 (with control 626 plane) in their three province branch networks in November 2020, 627 respectively. 629 The details are listed below (in alphabetical order). 631 * Huawei devices with a China Unitechs Unified Controller, Guangdong 632 Province. L3VPN over G-SRv6 BGP TE policy. 634 * H3C devices with a China Unitechs Unified Controller, Zhejiang 635 Province. L3VPN over G-SRv6 BGP TE policy. 637 * ZTE devices with a China Unitechs Unified Controller, Henan 638 Province. L3VPN over G-SRv6 BGP TE policy. 640 More information of G-SRv6 interop-test and deployment status will be 641 updated as the work progresses. 643 9. Protocol Extensions Requirements 645 This section describes the protocol extension requirements. 647 9.1. Data Plane 649 REQ1-01: An SRv6 compression path can be represented as a G-SID 650 Container list consists of a compressible SRv6 SID and G-SID 651 Containers. 653 REQ1-02: A G-SID Container consists of at most 4 (32-bits) G-SIDs, if 654 the number of G-SID is less than 4, then padding is required to align 655 with 128 bits. 657 REQ1-03: If the first Compressible SRv6 SID is copied to the IPv6 DA, 658 then following G-SIDs should be updated to the IPv6 DA by the nodes 659 along the SRv6 compression sub-path accordingly. 661 REQ1-04: The last G-SID in the G-SID Container for the SRv6 662 compression sub-path is the a G-SID without COC flavor. 664 REQ1-05: When process the G-SID with COC flavor in the IPv6 DA, the 665 next G-SID is updated to the IPv6 DA. 667 9.2. Control Plane 669 REQ1-11: ISIS/OSPF/BGP-LS/PCEP extensions for advertising the 670 capabilities of supporting G-SRv6 for SRv6 compression. 672 REQ1-12: ISIS/OSPF/BGP-LS/BGP extensions for advertising Compressible 673 SRv6 SIDs. 675 REQ1-13: ISIS/OSPF/BGP-LS/BGP extensions for advertising the 676 Continue-of-compression(COC) flavor SID. 678 REQ1-21: BGP SR Policy extensions for programming a G-SRv6 path 679 combining with Compressible SRv6 SIDs and SRv6 SIDs. 681 REQ1-31: PCEP SR Policy extensions for programming a G-SRv6 path 682 combining with G-SIDs and SRv6 SIDs. 684 REQ1-32: PCEP extensions for programming a G-SRv6 path combining with 685 G-SIDs and SRv6 SIDs. 687 10. IANA Considerations 689 This document requests IANA to allocate the following codepoints for 690 COC flavor behaviors within the "SRv6 Endpoint Behaviors" sub- 691 registry under the top-level "Segment Routing Parameters" registry. 693 +-------+--------+----------------------------+-----------+ 694 | Value | Hex | Endpoint behavior | Reference | 695 +-------+--------+----------------------------+-----------+ 696 | 101 | 0x0065 | End with COC | [This.ID] | 697 | 102 | 0x0066 | End with PSP&COC | [This.ID] | 698 | 104 | 0x0068 | End with PSP&USP&COC | [This.ID] | 699 | 105 | 0x0069 | End.X with COC | [This.ID] | 700 | 106 | 0x006A | End.X with PSP&COC | [This.ID] | 701 | 108 | 0x006C | End.X with PSP&USP&COC | [This.ID] | 702 | 109 | 0x006D | End.T with COC | [This.ID] | 703 | 110 | 0x006E | End.T with PSP&COC | [This.ID] | 704 | 112 | 0x0070 | End.T with PSP&USP&COC | [This.ID] | 705 | 130 | 0x0082 | End with PSP&USD&COC | [This.ID] | 706 | 131 | 0x0083 | End with PSP&USP&USD&COC | [This.ID] | 707 | 133 | 0x0085 | End.X with PSP&USD&COC | [This.ID] | 708 | 135 | 0x0087 | End.X with PSP&USP&USD&COC | [This.ID] | 709 | 137 | 0x0089 | End.T with PSP&USD&COC | [This.ID] | 710 | 139 | 0x008B | End.T with PSP&USP&USD&COC | [This.ID] | 711 +-------+--------+----------------------------+-----------+ 712 Table 1: IETF - SRv6 Endpoint Behaviors 714 11. Security Considerations 716 The security considerations described in [RFC8754], and [RFC8402] are 717 applicable to this specification. No additional security measure is 718 required. 720 12. Contributors 722 TBD 724 13. Acknowledgements 726 TBD 728 14. References 730 14.1. Normative References 732 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 733 Requirement Levels", BCP 14, RFC 2119, 734 DOI 10.17487/RFC2119, March 1997, 735 . 737 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 738 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 739 May 2017, . 741 [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 742 (IPv6) Specification", STD 86, RFC 8200, 743 DOI 10.17487/RFC8200, July 2017, 744 . 746 [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., 747 Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header 748 (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, 749 . 751 [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., 752 Decraene, B., Litkowski, S., and R. Shakir, "Segment 753 Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, 754 July 2018, . 756 [RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, 757 D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 758 (SRv6) Network Programming", RFC 8986, 759 DOI 10.17487/RFC8986, February 2021, 760 . 762 [I-D.filsfilscheng-spring-srv6-srh-compression] 763 Cheng, W., Filsfils, C., Li, Z., Decraene, B., Cai, D., 764 Voyer, D., Clad, F., Zadok, S., Guichard, J. N., Aihua, 765 L., Raszuk, R., and C. Li, "Compressed SRv6 Segment List 766 Encoding in SRH", Work in Progress, Internet-Draft, draft- 767 filsfilscheng-spring-srv6-srh-compression-02, 28 July 768 2021, . 771 14.2. Informative References 773 [I-D.filsfils-spring-net-pgm-extension-srv6-usid] 774 Filsfils, C., Garvia, P. C., Cai, D., Voyer, D., Meilik, 775 I., Patel, K., Henderickx, W., Jonnalagadda, P., Melman, 776 D., Liu, Y., and J. Guichard, "Network Programming 777 extension: SRv6 uSID instruction", Work in Progress, 778 Internet-Draft, draft-filsfils-spring-net-pgm-extension- 779 srv6-usid-12, 13 December 2021, 780 . 783 [I-D.ietf-spring-compression-requirement] 784 Cheng, W., Xie, C., Bonica, R., Dukes, D., Li, C., Shaofu, 785 P., and W. Henderickx, "Compressed SRv6 SID List 786 Requirements", Work in Progress, Internet-Draft, draft- 787 ietf-spring-compression-requirement-01, 28 March 2022, 788 . 791 [I-D.ietf-lsr-isis-srv6-extensions] 792 Psenak, P., Filsfils, C., Bashandy, A., Decraene, B., and 793 Z. Hu, "IS-IS Extensions to Support Segment Routing over 794 IPv6 Dataplane", Work in Progress, Internet-Draft, draft- 795 ietf-lsr-isis-srv6-extensions-18, 20 October 2021, 796 . 799 Authors' Addresses 801 Weiqiang Cheng (editor) 802 China Mobile 803 No.32 Xuanwumen west street 804 Beijing 805 100053 806 China 807 Email: chengweiqiang@chinamobile.com 809 Zhenbin Li 810 Huawei Technologies 811 Huawei Campus, No. 156 Beiqing Rd. 812 Beijing 813 100095 814 China 815 Email: lizhenbin@huawei.com 817 Cheng Li (editor) 818 Huawei Technologies 819 Huawei Campus, No. 156 Beiqing Rd. 820 Beijing 821 100095 822 China 823 Email: c.l@huawei.com 825 Francois Clad 826 Cisco Systems, Inc 827 France 828 Email: fclad@cisco.com 830 Aihua Liu 831 ZTE Corporation 832 Shenzhen 833 China 834 Email: liu.aihua@zte.com.cn 836 Chongfeng Xie 837 China Telecom 838 Technology Innovation park, Changping District 839 Beijing 840 China 841 Email: xiechf@chinatelecom.cn 843 Yisong Liu 844 China Mobile 845 No.32 Xuanwumen west street 846 Beijing 847 Email: liuyisong@chinamobile.com 849 Shay Zadok 850 Broadcom 851 Israel 852 Email: shay.zadok@broadcom.com