SPRING D. Dukes, Ed. Internet-Draft Cisco Systems Intended status: Informational June 27, 2020 Expires: December 29, 2020 SRv6 Network Programming Overhead Analysis draft-dukes-spring-srv6-overhead-analysis-00 Abstract SRv6 network programming provides the framework for the best compression of an IPv6 header within an SR domain. This document provides the analysis to illustrate this fact. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on December 29, 2020. Copyright Notice Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Dukes Expires December 29, 2020 [Page 1] Internet-Draft SRv6 Network Programming Overhead Analysis June 2020 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Reference Topology . . . . . . . . . . . . . . . . . . . . . 2 3. Reference Scenario . . . . . . . . . . . . . . . . . . . . . 3 4. Compression Analysis . . . . . . . . . . . . . . . . . . . . 4 4.1. SRv6 . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4.1.1. NEXT-C-SID . . . . . . . . . . . . . . . . . . . . . 4 4.1.2. REPLACE-C-SID . . . . . . . . . . . . . . . . . . . . 4 4.1.3. Encapsulation Size . . . . . . . . . . . . . . . . . 5 4.2. SRm6 . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4.2.1. SID list . . . . . . . . . . . . . . . . . . . . . . 6 4.2.2. Encapsulation size with CRH-16 . . . . . . . . . . . 6 4.2.3. Encapsulation size with CRH-32 . . . . . . . . . . . 6 4.3. Encapsulation size saving compared to uncompressed SRv6 . 6 4.4. Numerical Application . . . . . . . . . . . . . . . . . . 6 4.4.1. Evaluation parameters . . . . . . . . . . . . . . . . 7 4.4.2. Evaluation results . . . . . . . . . . . . . . . . . 7 5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . 8 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 6.1. Normative References . . . . . . . . . . . . . . . . . . 8 6.2. Informative References . . . . . . . . . . . . . . . . . 9 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 1. Introduction SRv6 Network Programming [I-D.ietf-spring-srv6-network-programming] defines a framework to build a network program with topological and service segments carried in a Segment Routing header (SRH) [RFC8754]. The SRv6 Network Programming framework natively allows for long segment lists to be encoded in the SRH in a compressed fashion, as described in [I-D.filsfilscheng-spring-srv6-srh-comp-sl-enc]. This document provides a detailed analysis of the efficiency of this compression in a realistic SRv6 deployment scenario. In particular, it evaluates the encapsulation size of a compressed segment lists against uncompressed segment lists. This document also shows that a mapping solution does not provide better compression than what can be achieved with the SRv6 mechanism. As such, analysis of the SRm6 proposal documented in [I-D.bonica-spring-sr-mapped-six] is provided for comparison. 2. Reference Topology The following topology is used throughout the remainder of this document. Dukes Expires December 29, 2020 [Page 2] Internet-Draft SRv6 Network Programming Overhead Analysis June 2020 + * * * * * * * * * * * * * * * * * * * * * * * * * * + * * * - - - - - - - - + - - - - - - - - + - - - - - - - - * * | | * * [M1_0] [5] [C_0] [7] [M2_0] * [1]---[3] | | [4]---[2] * [M1_i] [6] [C_j] [8] [M2_k] * * | | * * Metro 1 | Core | Metro 2 * *- - - - - - - - - - - - - - - - - - - - - - - - - - -* * * * SR domain * + * * * * * * * * * * * * * * * * * * * * * * * * * * + Figure 1: Reference topology o 1 and 2 are hosts outside the SR domain o 3 and 4 are SR domain edge routers o Metro 1, Core and Metro 2 are independent IGP instances in the SR domain o 5 and 6 are border routers between the Metro 1 and Core instances o 7 and 8 are border routers between the Metro 2 and Core instances o M1_1..M1_i, C_1..C_j, and M2_1..M2_k are all SR domain routers 3. Reference Scenario Consider a service provider offering a VPN service with underlay optimization. Hosts 1 and 2 are located in two different sites of a VPN customer. The service provider associates VRF 5 with this VPN customer. When host 1 sends a packet to host 2, the SR domain ingress router 3 steers it to the egress edge router 4 via an SR Policy that enforces a path through a number of underlay waypoints in Metro 1 (M1_1..M1_i), Core (C_1..C_j), and Metro 2 (M2_1..M2_k). The SR Policy ends with a SID that instructs the egress edge router 4 to decapsulate the packet and forward the inner packet within the appropriate VPN context towards host 2. Dukes Expires December 29, 2020 [Page 3] Internet-Draft SRv6 Network Programming Overhead Analysis June 2020 4. Compression Analysis Compression is analyzed by first defining the encapsulation size of the compressed SRv6 segment list encoding schemes described in [I-D.filsfilscheng-spring-srv6-srh-comp-sl-enc] called NEXT-C-SID and REPLACE-C-SID. Subsequently, the encapsulation size of the SRm6 proposal [I-D.bonica-spring-sr-mapped-six] is defined. The encapsulation savings is defined against the uncompressed SRv6 segment list for multiple reference scenarios. 4.1. SRv6 The formulae defining the length of a compressed SRv6 segment list, and an uncompressed one, along with the corresponding encapsulation size are defined in the subsequent sections. 4.1.1. NEXT-C-SID 4.1.1.1. Capacity of C-SID Container The capacity of a C-SID container is calculated for the NEXT-C-SID flavor as C_NEXT = floor((128 - B) / NF) B and NF are as defined in Section 4 of [I-D.filsfilscheng-spring-srv6-srh-comp-sl-enc] 4.1.1.2. Length of a C-SID Sequence Assuming that all SIDs in an uncompressed SID sequence S support a C-SID encoding, the length of the corresponding C-SID sequence is calculated for the NEXT-C-SID flavor as L_NEXT(S) = ceil(|S| / C_NEXT) 4.1.2. REPLACE-C-SID 4.1.2.1. Capacity of C-SID Container The capacity of a C-SID container is calculated for the REPLACE-C-SID flavor as C_REPLACE = floor(128 / NF) Dukes Expires December 29, 2020 [Page 4] Internet-Draft SRv6 Network Programming Overhead Analysis June 2020 4.1.2.2. Length of a C-SID Sequence Assuming that all SIDs in an uncompressed SID sequence S support a C-SID encoding, the length of the corresponding C-SID sequence is calculated for the REPLACE-C-SID flavor as L_REPLACE(S) = 1 + ceil((|S| - 1) / C_REPLACE) 4.1.3. Encapsulation Size The encapsulation size metric is defined in Section 2.4 of [I-D.filsfils-spring-analysis-fmwk-ext-srv6-encap] as follows. E(segment list): the number of bytes required to encapsulate a packet traversing the SR domain with segment list applied at an SR source node. Specifically, the number of bytes from the beginning of the encapsulating IPv6 header to the beginning of the packet traversing the SR domain, including any and all headers in between. The value of this metric is calculated for reduced SRv6 encapsulation as E(SL) = 40 if |SL| = 1 40 + 8 + (|SL| - 1) * 16 otherwise where o 40 octets is the length of the IPv6 header o 8 octets is the length of the fixed SRH fields o 16 octets is the length of each element in the SRH Segment List o the conditional represents the option described in Section 4.1 of [RFC8754] to omit the SRH when the Segment List contains a single segment The segment list SL may contain any combination of compressed and uncompressed SID sequences. 4.2. SRm6 The encapsulation size for SRm6 [I-D.bonica-spring-sr-mapped-six] includes a 40-octet IPv6 header, a CRH-16 or CRH-32 [I-D.bonica-6man-comp-rtg-hdr] routing header (when the segment list contains more than one element), and an 8-octet Destination Option header [I-D.bonica-6man-vpn-dest-opt]. Dukes Expires December 29, 2020 [Page 5] Internet-Draft SRv6 Network Programming Overhead Analysis June 2020 4.2.1. SID list The SID list for SRm6 does not include the VPN instruction. The VPN instruction is carried separately in a Destination Option header [I-D.bonica-6man-vpn-dest-opt]. Since SRm6 SID mappings are not redistributed across domains, an inter-domain SID list for SRm6 must include an intermediate SID on each border router between two domains. In the scenario described in Section 3, 2 additional SIDs are required. 4.2.2. Encapsulation size with CRH-16 E_CRH16(SL) = 40 + 8 if |SL| = 1 40 + ceil((4 + |SL| * 2) / 8) * 8 + 8 otherwise 4.2.3. Encapsulation size with CRH-32 E_CRH32(SL) = 40 + 8 if |SL| = 1 40 + ceil((4 + |SL| * 4) / 8) * 8 + 8 otherwise 4.3. Encapsulation size saving compared to uncompressed SRv6 The encapsulation size saving metric ES is defined as follows. ES(SL) = 1 - E_compressed(SL) / E_uncompressed(SL) where: o "E_compressed(SL)" is the encapsulation size metric with a particular compression scheme (e.g., NEXT-C-SID, REPLACE-C-SID, SRm6) o "E_uncompressed(SL)" is the encapsulation size metric for SRv6 without any compressed encoding. The uncompressed SRv6 encapsulation size is obtained by applying the formula in Section 4.1.3 to the uncompressed segment list. 4.4. Numerical Application Applying the formulae presented in the previous sections, the encapsulation size savings is computed for the scenario described in Section 3. Dukes Expires December 29, 2020 [Page 6] Internet-Draft SRv6 Network Programming Overhead Analysis June 2020 4.4.1. Evaluation parameters 4.4.1.1. SID format The NEXT-C-SID flavor is considered with a 32-bit SRv6 SID block and a 16-bit C-SID length. The REPLACE-C-SID flavor is considered with both 16-bit and 32-bit C-SID lenghts. These two variants are referred to as REPLACE-16 and REPLACE-32, respectively. The SRm6 proposal is considered with both the CRH-16 and CRH-32 routing headers. 4.4.1.2. Segment lists The following segment lists are considered with equal number of segments in each domain: o "3D(3T).V": A segment list across 3 domains (metro 1, core, metro 2), with 3 underlay waypoints in each domain and a VPN identifier. 10 instructions in total. o "3D(4T).V": A segment list across 3 domains, with 4 underlay waypoints in each domain and a VPN identifier. 13 instructions in total. o "3D(6T).V": A segment list across 3 domains, with 6 underlay waypoints in each domain and a VPN identifier. 19 instructions in total. 4.4.2. Evaluation results +-------------+-----------+-----------+-----------+--------+--------+ | Metric | NEXT-C- | REPLACE-1 | REPLACE-3 | CRH-16 | CRH-32 | | | SID | 6 | 2 | | | +-------------+-----------+-----------+-----------+--------+--------+ | ES(3D(3T).V | 58.33% | 33.33% | 33.33% | 58.33% | 45.83% | | ) | | | | | | | | | | | | | | ES(3D(4T).V | 66.67% | 46.67% | 46.67% | 63.33% | 53.33% | | ) | | | | | | | | | | | | | | ES(3D(6T).V | 71.43% | 61.90% | 47.62% | 71.43% | 59.52% | | ) | | | | | | +-------------+-----------+-----------+-----------+--------+--------+ Table 1: Encapsulation size saving for a multi-domain SR Policy Dukes Expires December 29, 2020 [Page 7] Internet-Draft SRv6 Network Programming Overhead Analysis June 2020 5. Conclusion The NEXT-C-SID, REPLACE-C-SID and SRm6 methods all provide significant encapsulation size saving compared to the base SRv6 SIDs. The mapping proposal, [I-D.bonica-spring-sr-mapped-six], does not bring any compression benefit compared to SRv6-native compression methods [I-D.filsfilscheng-spring-srv6-srh-comp-sl-enc]. The SRm6 proposal does have several deficiencies however, including: o A new data plane o A new control plane o A new ecosystem o Stateful NFV integration compared to SRv6 stateless NFV o Additional lookups at egress PE * CRH requires 3 lookups at an egress PE vs 2 for SRv6. * Additional lookups result in additional processing time in forwarding ASICs. Many modern ASIC architectures support 2 lookups per packet, additional lookups may require recirculation, effectively decreasing forwarding performance. These and other metrics proposed for analysis are described in [I-D.filsfils-spring-analysis-fmwk-ext-srv6-encap]. 6. References 6.1. Normative References [I-D.filsfilscheng-spring-srv6-srh-comp-sl-enc] Cheng, W., Filsfils, C., Li, Z., Cai, D., Voyer, D., Clad, F., Shay, S., Guichard, J., and L. Aihua, "Compressed SRv6 Segment List Encoding in SRH", draft-filsfilscheng-spring- srv6-srh-comp-sl-enc-01 (work in progress), May 2020. [I-D.ietf-spring-srv6-network-programming] Filsfils, C., Camarillo, P., Leddy, J., Voyer, D., Matsushima, S., and Z. Li, "SRv6 Network Programming", draft-ietf-spring-srv6-network-programming-15 (work in progress), March 2020. Dukes Expires December 29, 2020 [Page 8] Internet-Draft SRv6 Network Programming Overhead Analysis June 2020 [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, . 6.2. Informative References [I-D.bonica-6man-comp-rtg-hdr] Bonica, R., Kamite, Y., Niwa, T., Alston, A., and L. Jalil, "The IPv6 Compact Routing Header (CRH)", draft- bonica-6man-comp-rtg-hdr-22 (work in progress), May 2020. [I-D.bonica-6man-vpn-dest-opt] Bonica, R., Kamite, Y., Jalil, L., Zhou, Y., and G. Chen, "The IPv6 Tunnel Payload Forwarding (TPF) Option", draft- bonica-6man-vpn-dest-opt-12 (work in progress), March 2020. [I-D.bonica-spring-sr-mapped-six] Bonica, R., Hegde, S., Kamite, Y., Alston, A., Henriques, D., Jalil, L., Halpern, J., Linkova, J., and G. Chen, "Segment Routing Mapped To IPv6 (SRm6)", draft-bonica- spring-sr-mapped-six-01 (work in progress), April 2020. [I-D.filsfils-spring-analysis-fmwk-ext-srv6-encap] Filsfils, C., Dukes, D., and K. Patel, "Analysis Framework For Extensions of SRv6 Encapsulation", draft-filsfils- spring-analysis-fmwk-ext-srv6-encap-00 (work in progress), January 2020. Author's Address Darren Dukes (editor) Cisco Systems Canada Email: ddukes@cisco.com Dukes Expires December 29, 2020 [Page 9]