idnits 2.17.1 draft-dukes-spring-srv6-overhead-analysis-00.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 a Security Considerations section. ** 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.) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (June 27, 2020) is 1399 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- -- Looks like a reference, but probably isn't: '5' on line 100 -- Looks like a reference, but probably isn't: '7' on line 100 -- Looks like a reference, but probably isn't: '6' on line 102 -- Looks like a reference, but probably isn't: '8' on line 102 == Outdated reference: A later version (-03) exists of draft-filsfilscheng-spring-srv6-srh-comp-sl-enc-01 == Outdated reference: A later version (-28) exists of draft-ietf-spring-srv6-network-programming-15 == Outdated reference: A later version (-31) exists of draft-bonica-6man-comp-rtg-hdr-22 == Outdated reference: A later version (-21) exists of draft-bonica-6man-vpn-dest-opt-12 == Outdated reference: A later version (-04) exists of draft-bonica-spring-sr-mapped-six-01 == Outdated reference: A later version (-01) exists of draft-filsfils-spring-analysis-fmwk-ext-srv6-encap-00 Summary: 2 errors (**), 0 flaws (~~), 7 warnings (==), 5 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 SPRING D. Dukes, Ed. 3 Internet-Draft Cisco Systems 4 Intended status: Informational June 27, 2020 5 Expires: December 29, 2020 7 SRv6 Network Programming Overhead Analysis 8 draft-dukes-spring-srv6-overhead-analysis-00 10 Abstract 12 SRv6 network programming provides the framework for the best 13 compression of an IPv6 header within an SR domain. This document 14 provides the analysis to illustrate this fact. 16 Status of This Memo 18 This Internet-Draft is submitted in full conformance with the 19 provisions of BCP 78 and BCP 79. 21 Internet-Drafts are working documents of the Internet Engineering 22 Task Force (IETF). Note that other groups may also distribute 23 working documents as Internet-Drafts. The list of current Internet- 24 Drafts is at https://datatracker.ietf.org/drafts/current/. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference 29 material or to cite them other than as "work in progress." 31 This Internet-Draft will expire on December 29, 2020. 33 Copyright Notice 35 Copyright (c) 2020 IETF Trust and the persons identified as the 36 document authors. All rights reserved. 38 This document is subject to BCP 78 and the IETF Trust's Legal 39 Provisions Relating to IETF Documents 40 (https://trustee.ietf.org/license-info) in effect on the date of 41 publication of this document. Please review these documents 42 carefully, as they describe your rights and restrictions with respect 43 to this document. Code Components extracted from this document must 44 include Simplified BSD License text as described in Section 4.e of 45 the Trust Legal Provisions and are provided without warranty as 46 described in the Simplified BSD License. 48 Table of Contents 50 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 51 2. Reference Topology . . . . . . . . . . . . . . . . . . . . . 2 52 3. Reference Scenario . . . . . . . . . . . . . . . . . . . . . 3 53 4. Compression Analysis . . . . . . . . . . . . . . . . . . . . 4 54 4.1. SRv6 . . . . . . . . . . . . . . . . . . . . . . . . . . 4 55 4.1.1. NEXT-C-SID . . . . . . . . . . . . . . . . . . . . . 4 56 4.1.2. REPLACE-C-SID . . . . . . . . . . . . . . . . . . . . 4 57 4.1.3. Encapsulation Size . . . . . . . . . . . . . . . . . 5 58 4.2. SRm6 . . . . . . . . . . . . . . . . . . . . . . . . . . 5 59 4.2.1. SID list . . . . . . . . . . . . . . . . . . . . . . 6 60 4.2.2. Encapsulation size with CRH-16 . . . . . . . . . . . 6 61 4.2.3. Encapsulation size with CRH-32 . . . . . . . . . . . 6 62 4.3. Encapsulation size saving compared to uncompressed SRv6 . 6 63 4.4. Numerical Application . . . . . . . . . . . . . . . . . . 6 64 4.4.1. Evaluation parameters . . . . . . . . . . . . . . . . 7 65 4.4.2. Evaluation results . . . . . . . . . . . . . . . . . 7 66 5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . 8 67 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 68 6.1. Normative References . . . . . . . . . . . . . . . . . . 8 69 6.2. Informative References . . . . . . . . . . . . . . . . . 9 70 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 72 1. Introduction 74 SRv6 Network Programming [I-D.ietf-spring-srv6-network-programming] 75 defines a framework to build a network program with topological and 76 service segments carried in a Segment Routing header (SRH) [RFC8754]. 77 The SRv6 Network Programming framework natively allows for long 78 segment lists to be encoded in the SRH in a compressed fashion, as 79 described in [I-D.filsfilscheng-spring-srv6-srh-comp-sl-enc]. 81 This document provides a detailed analysis of the efficiency of this 82 compression in a realistic SRv6 deployment scenario. In particular, 83 it evaluates the encapsulation size of a compressed segment lists 84 against uncompressed segment lists. 86 This document also shows that a mapping solution does not provide 87 better compression than what can be achieved with the SRv6 mechanism. 88 As such, analysis of the SRm6 proposal documented in 89 [I-D.bonica-spring-sr-mapped-six] is provided for comparison. 91 2. Reference Topology 93 The following topology is used throughout the remainder of this 94 document. 96 + * * * * * * * * * * * * * * * * * * * * * * * * * * + 97 * * 98 * - - - - - - - - + - - - - - - - - + - - - - - - - - * 99 * | | * 100 * [M1_0] [5] [C_0] [7] [M2_0] * 101 [1]---[3] | | [4]---[2] 102 * [M1_i] [6] [C_j] [8] [M2_k] * 103 * | | * 104 * Metro 1 | Core | Metro 2 * 105 *- - - - - - - - - - - - - - - - - - - - - - - - - - -* 106 * * 107 * SR domain * 108 + * * * * * * * * * * * * * * * * * * * * * * * * * * + 110 Figure 1: Reference topology 112 o 1 and 2 are hosts outside the SR domain 114 o 3 and 4 are SR domain edge routers 116 o Metro 1, Core and Metro 2 are independent IGP instances in the SR 117 domain 119 o 5 and 6 are border routers between the Metro 1 and Core instances 121 o 7 and 8 are border routers between the Metro 2 and Core instances 123 o M1_1..M1_i, C_1..C_j, and M2_1..M2_k are all SR domain routers 125 3. Reference Scenario 127 Consider a service provider offering a VPN service with underlay 128 optimization. 130 Hosts 1 and 2 are located in two different sites of a VPN customer. 131 The service provider associates VRF 5 with this VPN customer. 133 When host 1 sends a packet to host 2, the SR domain ingress router 3 134 steers it to the egress edge router 4 via an SR Policy that enforces 135 a path through a number of underlay waypoints in Metro 1 136 (M1_1..M1_i), Core (C_1..C_j), and Metro 2 (M2_1..M2_k). The SR 137 Policy ends with a SID that instructs the egress edge router 4 to 138 decapsulate the packet and forward the inner packet within the 139 appropriate VPN context towards host 2. 141 4. Compression Analysis 143 Compression is analyzed by first defining the encapsulation size of 144 the compressed SRv6 segment list encoding schemes described in 145 [I-D.filsfilscheng-spring-srv6-srh-comp-sl-enc] called NEXT-C-SID and 146 REPLACE-C-SID. 148 Subsequently, the encapsulation size of the SRm6 proposal 149 [I-D.bonica-spring-sr-mapped-six] is defined. 151 The encapsulation savings is defined against the uncompressed SRv6 152 segment list for multiple reference scenarios. 154 4.1. SRv6 156 The formulae defining the length of a compressed SRv6 segment list, 157 and an uncompressed one, along with the corresponding encapsulation 158 size are defined in the subsequent sections. 160 4.1.1. NEXT-C-SID 162 4.1.1.1. Capacity of C-SID Container 164 The capacity of a C-SID container is calculated for the NEXT-C-SID 165 flavor as 167 C_NEXT = floor((128 - B) / NF) 169 B and NF are as defined in Section 4 of 170 [I-D.filsfilscheng-spring-srv6-srh-comp-sl-enc] 172 4.1.1.2. Length of a C-SID Sequence 174 Assuming that all SIDs in an uncompressed SID sequence S support a 175 C-SID encoding, the length of the corresponding C-SID sequence is 176 calculated for the NEXT-C-SID flavor as 178 L_NEXT(S) = ceil(|S| / C_NEXT) 180 4.1.2. REPLACE-C-SID 182 4.1.2.1. Capacity of C-SID Container 184 The capacity of a C-SID container is calculated for the REPLACE-C-SID 185 flavor as 187 C_REPLACE = floor(128 / NF) 189 4.1.2.2. Length of a C-SID Sequence 191 Assuming that all SIDs in an uncompressed SID sequence S support a 192 C-SID encoding, the length of the corresponding C-SID sequence is 193 calculated for the REPLACE-C-SID flavor as 195 L_REPLACE(S) = 1 + ceil((|S| - 1) / C_REPLACE) 197 4.1.3. Encapsulation Size 199 The encapsulation size metric is defined in Section 2.4 of 200 [I-D.filsfils-spring-analysis-fmwk-ext-srv6-encap] as follows. 202 E(segment list): the number of bytes required to encapsulate a 203 packet traversing the SR domain with segment list applied at an SR 204 source node. Specifically, the number of bytes from the beginning 205 of the encapsulating IPv6 header to the beginning of the packet 206 traversing the SR domain, including any and all headers in 207 between. 209 The value of this metric is calculated for reduced SRv6 encapsulation 210 as 212 E(SL) = 40 if |SL| = 1 213 40 + 8 + (|SL| - 1) * 16 otherwise 215 where 217 o 40 octets is the length of the IPv6 header 219 o 8 octets is the length of the fixed SRH fields 221 o 16 octets is the length of each element in the SRH Segment List 223 o the conditional represents the option described in Section 4.1 of 224 [RFC8754] to omit the SRH when the Segment List contains a single 225 segment 227 The segment list SL may contain any combination of compressed and 228 uncompressed SID sequences. 230 4.2. SRm6 232 The encapsulation size for SRm6 [I-D.bonica-spring-sr-mapped-six] 233 includes a 40-octet IPv6 header, a CRH-16 or CRH-32 234 [I-D.bonica-6man-comp-rtg-hdr] routing header (when the segment list 235 contains more than one element), and an 8-octet Destination Option 236 header [I-D.bonica-6man-vpn-dest-opt]. 238 4.2.1. SID list 240 The SID list for SRm6 does not include the VPN instruction. The VPN 241 instruction is carried separately in a Destination Option header 242 [I-D.bonica-6man-vpn-dest-opt]. 244 Since SRm6 SID mappings are not redistributed across domains, an 245 inter-domain SID list for SRm6 must include an intermediate SID on 246 each border router between two domains. In the scenario described in 247 Section 3, 2 additional SIDs are required. 249 4.2.2. Encapsulation size with CRH-16 251 E_CRH16(SL) = 40 + 8 if |SL| = 1 252 40 + ceil((4 + |SL| * 2) / 8) * 8 + 8 otherwise 254 4.2.3. Encapsulation size with CRH-32 256 E_CRH32(SL) = 40 + 8 if |SL| = 1 257 40 + ceil((4 + |SL| * 4) / 8) * 8 + 8 otherwise 259 4.3. Encapsulation size saving compared to uncompressed SRv6 261 The encapsulation size saving metric ES is defined as follows. 263 ES(SL) = 1 - E_compressed(SL) / E_uncompressed(SL) 265 where: 267 o "E_compressed(SL)" is the encapsulation size metric with a 268 particular compression scheme (e.g., NEXT-C-SID, REPLACE-C-SID, 269 SRm6) 271 o "E_uncompressed(SL)" is the encapsulation size metric for SRv6 272 without any compressed encoding. The uncompressed SRv6 273 encapsulation size is obtained by applying the formula in 274 Section 4.1.3 to the uncompressed segment list. 276 4.4. Numerical Application 278 Applying the formulae presented in the previous sections, the 279 encapsulation size savings is computed for the scenario described in 280 Section 3. 282 4.4.1. Evaluation parameters 284 4.4.1.1. SID format 286 The NEXT-C-SID flavor is considered with a 32-bit SRv6 SID block and 287 a 16-bit C-SID length. 289 The REPLACE-C-SID flavor is considered with both 16-bit and 32-bit 290 C-SID lenghts. These two variants are referred to as REPLACE-16 and 291 REPLACE-32, respectively. 293 The SRm6 proposal is considered with both the CRH-16 and CRH-32 294 routing headers. 296 4.4.1.2. Segment lists 298 The following segment lists are considered with equal number of 299 segments in each domain: 301 o "3D(3T).V": A segment list across 3 domains (metro 1, core, metro 302 2), with 3 underlay waypoints in each domain and a VPN identifier. 303 10 instructions in total. 305 o "3D(4T).V": A segment list across 3 domains, with 4 underlay 306 waypoints in each domain and a VPN identifier. 13 instructions in 307 total. 309 o "3D(6T).V": A segment list across 3 domains, with 6 underlay 310 waypoints in each domain and a VPN identifier. 19 instructions in 311 total. 313 4.4.2. Evaluation results 315 +-------------+-----------+-----------+-----------+--------+--------+ 316 | Metric | NEXT-C- | REPLACE-1 | REPLACE-3 | CRH-16 | CRH-32 | 317 | | SID | 6 | 2 | | | 318 +-------------+-----------+-----------+-----------+--------+--------+ 319 | ES(3D(3T).V | 58.33% | 33.33% | 33.33% | 58.33% | 45.83% | 320 | ) | | | | | | 321 | | | | | | | 322 | ES(3D(4T).V | 66.67% | 46.67% | 46.67% | 63.33% | 53.33% | 323 | ) | | | | | | 324 | | | | | | | 325 | ES(3D(6T).V | 71.43% | 61.90% | 47.62% | 71.43% | 59.52% | 326 | ) | | | | | | 327 +-------------+-----------+-----------+-----------+--------+--------+ 329 Table 1: Encapsulation size saving for a multi-domain SR Policy 331 5. Conclusion 333 The NEXT-C-SID, REPLACE-C-SID and SRm6 methods all provide 334 significant encapsulation size saving compared to the base SRv6 SIDs. 336 The mapping proposal, [I-D.bonica-spring-sr-mapped-six], does not 337 bring any compression benefit compared to SRv6-native compression 338 methods [I-D.filsfilscheng-spring-srv6-srh-comp-sl-enc]. 340 The SRm6 proposal does have several deficiencies however, including: 342 o A new data plane 344 o A new control plane 346 o A new ecosystem 348 o Stateful NFV integration compared to SRv6 stateless NFV 350 o Additional lookups at egress PE 352 * CRH requires 3 lookups at an egress PE vs 2 for SRv6. 354 * Additional lookups result in additional processing time in 355 forwarding ASICs. Many modern ASIC architectures support 2 356 lookups per packet, additional lookups may require 357 recirculation, effectively decreasing forwarding performance. 359 These and other metrics proposed for analysis are described in 360 [I-D.filsfils-spring-analysis-fmwk-ext-srv6-encap]. 362 6. References 364 6.1. Normative References 366 [I-D.filsfilscheng-spring-srv6-srh-comp-sl-enc] 367 Cheng, W., Filsfils, C., Li, Z., Cai, D., Voyer, D., Clad, 368 F., Shay, S., Guichard, J., and L. Aihua, "Compressed SRv6 369 Segment List Encoding in SRH", draft-filsfilscheng-spring- 370 srv6-srh-comp-sl-enc-01 (work in progress), May 2020. 372 [I-D.ietf-spring-srv6-network-programming] 373 Filsfils, C., Camarillo, P., Leddy, J., Voyer, D., 374 Matsushima, S., and Z. Li, "SRv6 Network Programming", 375 draft-ietf-spring-srv6-network-programming-15 (work in 376 progress), March 2020. 378 [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., 379 Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header 380 (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, 381 . 383 6.2. Informative References 385 [I-D.bonica-6man-comp-rtg-hdr] 386 Bonica, R., Kamite, Y., Niwa, T., Alston, A., and L. 387 Jalil, "The IPv6 Compact Routing Header (CRH)", draft- 388 bonica-6man-comp-rtg-hdr-22 (work in progress), May 2020. 390 [I-D.bonica-6man-vpn-dest-opt] 391 Bonica, R., Kamite, Y., Jalil, L., Zhou, Y., and G. Chen, 392 "The IPv6 Tunnel Payload Forwarding (TPF) Option", draft- 393 bonica-6man-vpn-dest-opt-12 (work in progress), March 394 2020. 396 [I-D.bonica-spring-sr-mapped-six] 397 Bonica, R., Hegde, S., Kamite, Y., Alston, A., Henriques, 398 D., Jalil, L., Halpern, J., Linkova, J., and G. Chen, 399 "Segment Routing Mapped To IPv6 (SRm6)", draft-bonica- 400 spring-sr-mapped-six-01 (work in progress), April 2020. 402 [I-D.filsfils-spring-analysis-fmwk-ext-srv6-encap] 403 Filsfils, C., Dukes, D., and K. Patel, "Analysis Framework 404 For Extensions of SRv6 Encapsulation", draft-filsfils- 405 spring-analysis-fmwk-ext-srv6-encap-00 (work in progress), 406 January 2020. 408 Author's Address 410 Darren Dukes (editor) 411 Cisco Systems 412 Canada 414 Email: ddukes@cisco.com