SPRING C. Weiqiang Internet-Draft China Mobile Intended status: Informational G. Mirsky Expires: September 7, 2020 ZTE Corp. L. Aihua P. Shaofu ZTE Corporation March 6, 2020 SRv6 network programming using Unified Identifier draft-mirsky-spring-unified-id-network-programming-00 Abstract This draft describes how Unified Segment Identifier can be used to achieve the goals of SRv6 network programming. 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 September 7, 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 Weiqiang, et al. Expires September 7, 2020 [Page 1] Internet-Draft Unified Identifier SRv6 programming March 2020 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Conventions used in this document . . . . . . . . . . . . 2 1.1.1. Terminology . . . . . . . . . . . . . . . . . . . . . 3 1.1.2. Requirements Language . . . . . . . . . . . . . . . . 3 2. SRv6 Network Programming using U-SID . . . . . . . . . . . . 3 2.1. SRv6 Network Programming . . . . . . . . . . . . . . . . 3 2.2. SRv6 Network Programming Using 32bit U-SID . . . . . . . 4 2.3. U-SID with MPLS Programming Process . . . . . . . . . . . 5 2.3.1. U-SID with MPLS Support Programming using Flavors . . 5 2.4. U-SID with SRv6 Programming process . . . . . . . . . . . 6 2.5. U-SID Complementary Method . . . . . . . . . . . . . . . 6 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 6. Normative References . . . . . . . . . . . . . . . . . . . . 7 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 1. Introduction Segment Routing architecture [RFC8402] leverages the paradigm of source routing. It can be realized in a network data plane by prepending the packet with a list of instructions, a.k.a. Segment Identifiers (SIDs). A segment can be encoded as a Multi-Protocol Label Switching (MPLS) label, IPv4 address, or IPv6 address. Segment Routing can be applied in MPLS data plane by encoding 20-bits SIDs in MPLS label stack [RFC8660]. It also can be applied to IPv6 data plane by encoding a list of 128-bits SIDs in IPv6 Segment Routing Extension Header (SRH) [I-D.ietf-6man-segment-routing-header]. Unified SID [I-D.mirsky-6man-unified-id-sr] defines an extension of SRH that enables the use of a shorter segment identifier, such as 32-bits Label format SID or 32-bits IP address format SID. SRv6 network programming is defined [I-D.ietf-spring-srv6-network-programming]. SRv6 network programming can be supported using Unified SID. 1.1. Conventions used in this document Weiqiang, et al. Expires September 7, 2020 [Page 2] Internet-Draft Unified Identifier SRv6 programming March 2020 1.1.1. Terminology SR: Segment Routing SRH: Segment Routing Extension Header MPLS: Multiprotocol Label Switching SR-MPLS: Segment Routing using MPLS data plane SID: Segment Identifier IGP: Interior Gateway Protocol DA: Destination Address SRv6: Segment Routing in IPv6 U-SID: Unified Segment Identifier 1.1.2. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. 2. SRv6 Network Programming using U-SID 2.1. SRv6 Network Programming [I-D.ietf-spring-srv6-network-programming] defines an SRv6 SID as consisting of LOC:FUNCT:ARG, where a locator (LOC) is encoded in the L most significant bits of the SID, followed by F bits of function (FUNCT) and A bits of arguments (ARG). L, the length of the locator, is flexible, and an operator is free to use the locator length of their choice. F and A may be any value as long as L + F + A <= 128. When L + F + A is less than 128, then the remainder of the SID MUST be zero. A locator may be represented as B:N where B is the SRv6 SID block (IPv6 subnet allocated for SRv6 SIDs by the operator) and N is the identifier of the parent node instantiating the SID. The FUNCT is an opaque identification of a local behavior bound to the SID. An SRv6 endpoint behavior MAY require additional information for its processing (e.g., related to the flow or service). This information MAY be encoded in the ARG bits of the SID. Weiqiang, et al. Expires September 7, 2020 [Page 3] Internet-Draft Unified Identifier SRv6 programming March 2020 2.2. SRv6 Network Programming Using 32bit U-SID [I-D.mirsky-6man-unified-id-sr] defines a 32 bits SID as an MPLS label or an IPv4 address or a complementary SID to a common IPv4/IPv6 prefix. If the U-SID represents an MPLS label, it could be mapped to the 128-bits SRv6 SID. And if this U-SID represents a complementary U-SID to a common IPv6 prefix, it could be associated with an SRv6 SID (a method to establish such association could use mapping, stitching, shifting, or translation). This SID can be compliant to the programming SID format as LOC:FUNCT:ARG, this means complementing the SRv6 SID of programming format to 32-bits U-SID. A U-SID with MPLS label format can support network programming, as illustrated in Figure 1: 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | U-LOC (20bit, Label) |P|U|D|R|U-FUNCT (U-ARG)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Context (12bit) | +-----------------------+ Figure 1: Example of U-SID supporting Network Programming with SR- MPLS The context field can be defined as follow: P-Flag: PSP (Penultimate Segment Pop of the SRH) Flag. If set, then the penultimate segment node MUST remove the SRH from the IPv6 extension header chain. U-Flag: USP (Ultimate Segment Pop of the SRH) Flag. If set, then the ultimate segment node MUST remove the SRH from the IPv6 extension header chain and proceed to process the next header in the packet. D-Flag: USD (Ultimate Segment Decapsulation) Flag. If set, then the ultimate segment node MUST skip the SRH processing and proceed to the next header. R-Flag: Reserved Flag. Function: 8-bits to store the short KEY for the specific table lookup. The MPLS label in the leftmost 20-bits will identify the context-specific table. For the context table that has a longer KEY than 8-bits, the next 32-bits SID could be used for this purpose. Weiqiang, et al. Expires September 7, 2020 [Page 4] Internet-Draft Unified Identifier SRv6 programming March 2020 A format of U-SID as 32-bits IP address can support network programming, as illustrated in Figure 2. 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | U-LOC | U-FUNCT (U-ARG) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 2: Example of U-SID supporting Network Programming with SRv6 In this case, U-SID is split to 16-bits locator (U-LOC) and 16-bits function (U-FUNCT, U-ARG is optional). The operator can use any method to compress the 128-bits SRv6 SID to 32-bits complementary U-SID, such as mapping, stitching, shifting or translation, etc. For example, an operator can simply compress the original locator to a shorter locator. If the original SRv6 locator consists of B:N, this case the N is 16-bits. So, only the N is the U-LOC of U-SID and the B can be advertised by IGP protocol in the domain. the length of U-LOC and U-FUNCT (U-ARG) is flexible, and an operator is free to use the length of their choice. The length of U-LOC and U-FUNCT (U-ARG) may be any value as long as its sum mo more than 32. The compressing and the advertising method are out of the scope of this draft. 2.3. U-SID with MPLS Programming Process 2.3.1. U-SID with MPLS Support Programming using Flavors [I-D.ietf-spring-srv6-network-programming] introduced the PSP, USP, and USD flavors for SRv6 SID. The U-FUNCT (U-ARG) and Flavors are combined to allocate different SRv6 SIDs, or someone can understand that each U-FUNCT (U-ARG) codepoint itself has a determined flavor. That is no problem for SRv6 SID allocation because IPv6 address resource is enough. For SR-MPLS over SRH in this document, a different MPLS label is used for each topology type of SID, such as node SID, adjacency SID, or service type of SID, etc. All these types of SIDs are equivalent to SIDs defined in SRv6. The label allocation is independent of flavors. For the use of the behavior flavor, an explicit standard Flavor codepoint could be set on the rightmost 12-bits of the SID entry (label) in SRH. The codepoint can be used as U-FUNCT (U-ARG) to support the network programming. In this case, a 20-bits MPLS label of U-SID is interpreted as the U-LOC. The U-FUNCT in the codepoint field of U-SID can be advertised by the control plane. Weiqiang, et al. Expires September 7, 2020 [Page 5] Internet-Draft Unified Identifier SRv6 programming March 2020 Note that the flavor codepoint is different from the PHP flag of prefix-SID in SR-MPLS. 2.4. U-SID with SRv6 Programming process Processing of SRH with elements carrying 32 bits-long SIDs closely follows SRH processing as defined in Section 4.3.1.1 [I-D.ietf-6man-segment-routing-header] and the "End" behavior is demonstrated in the pseudo-code below, but it equally applies to all SID behaviors. When N with U-SID receives a packet whose IPv6 DA is S and S is a local End SID. The lines S08 and S14 of the End processing which was, as per Section 4.1 of [I-D.ietf-spring-srv6-network-programming]: S08. max_LE = ( Hdr Ext Len * 8/ sizeof(SRH_element) ) - 1 [...] S14. Get 128-bits IPv6 DA by 32-bits U-SID from Segment List[Segments Left] Update IPv6 DA Note: S14. Obtaining 128-bits IPv6 DA from complementary U-SID can be done by mapping, stitching, shifting, translation, etc. 2.5. U-SID Complementary Method The 32-bits U-SID MAY be used as complementary to a common IPv6 prefix to construct an IPv6 address SID (SRv6 SID). Many methods can be used to achieve that, including mapping, stitching, shifting, translation, etc. Generally speaking, the relationship between 32-bits U-SID and 128-bits SRv6 SID can be established using any transformation function as long as the relationship unambiguous and reversible, i.e., there exists a transformation function that when being applied to the result produces the original value. We can use a function F as a method that produces 32-bits U-SID from 128-bits SRv6 SID. Then there must be a function F', used as the reversible method, to produce the original 128-bits SRv6 SID from the 32-bits U-SID. These functions are illustrated below: U-SID = F (SRv6 SID); SRv6 SID = F' (U-SID); The details of these functions will be demonstrated in the future. Weiqiang, et al. Expires September 7, 2020 [Page 6] Internet-Draft Unified Identifier SRv6 programming March 2020 3. IANA Considerations This draft has no requests for IANA actions. This section can be removed before the publication. 4. Security Considerations TBD 5. Acknowledgements TBD 6. Normative References [I-D.ietf-6man-segment-routing-header] Filsfils, C., Dukes, D., Previdi, S., Leddy, J., Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header (SRH)", draft-ietf-6man-segment-routing-header-26 (work in progress), October 2019. [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-12 (work in progress), March 2020. [I-D.mirsky-6man-unified-id-sr] Cheng, W., Mirsky, G., Peng, S., Aihua, L., Wan, X., Wei, C., and S. Shay, "Unified Identifier in IPv6 Segment Routing Networks", draft-mirsky-6man-unified-id-sr-05 (work in progress), February 2020. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, July 2018, . Weiqiang, et al. Expires September 7, 2020 [Page 7] Internet-Draft Unified Identifier SRv6 programming March 2020 [RFC8660] Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing with the MPLS Data Plane", RFC 8660, DOI 10.17487/RFC8660, December 2019, . Authors' Addresses Cheng Weiqiang China Mobile Beijing China Email: chengweiqiang@chinamobile.com Greg Mirsky ZTE Corp. Email: gregimirsky@gmail.com Liu Aihua ZTE Corporation Zhongxing Industrial Park, Nanshan District Shenzhen China Email: liu.aihua@zte.com.cn Peng Shaofu ZTE Corporation No.50 Software Avenue, Yuhuatai District Nanjing China Email: peng.shaofu@zte.com.cn Weiqiang, et al. Expires September 7, 2020 [Page 8]