IDR Working Group Yao. Liu Internet-Draft Shaofu. Peng Intended status: Standards Track ZTE Corporation Expires: November 12, 2020 May 11, 2020 BGP Extensions for Unified SID in TE Policy draft-liu-idr-segment-routing-te-policy-complement-03 Abstract This document defines extensions to BGP in order to advertise Unified SIDs in SR-TE policies. 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 November 12, 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. Liu & Peng Expires November 12, 2020 [Page 1] Internet-Draft BGP for Unified SID May 2020 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. SR policy with Unified SID . . . . . . . . . . . . . . . . . 2 3. SR policy with U-SID Information Encoding . . . . . . . . . . 4 3.1. Option 1: Advertising SID Attribute within existing Segment List sub-TLV . . . . . . . . . . . . . . . . . . 4 3.1.1. Indicating the UET Flavor of the First SID . . . . . 5 3.1.2. Indicating the UET Flavor of the Other SIDs . . . . . 6 3.1.3. Indicating the SID Structure and Truncated Information . . . . . . . . . . . . . . . . . . . . . 7 3.2. Option 2: Introducing a new U-Segment List sub-TLV . . . 8 4. Controller Processing . . . . . . . . . . . . . . . . . . . . 9 5. Head-end Processing . . . . . . . . . . . . . . . . . . . . . 10 6. Security Considerations . . . . . . . . . . . . . . . . . . . 10 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 8.1. Normative References . . . . . . . . . . . . . . . . . . 11 8.2. Informative References . . . . . . . . . . . . . . . . . 12 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 1. Introduction Segment Routing [RFC8402] leverages the source routing paradigm. An ingress node steers a packet through an ordered list of instructions, called segments. [I-D.ietf-spring-segment-routing-policy] details the concepts of SR Policy and steering flow into an SR Policy. [I-D.ietf-idr-segment-routing-te-policy] specifies the way to use BGP to distribute one or more of the candidate paths of an SR Policy to the headend of that policy. With increasing requirements for a shorter identifier in a segment routing network with the IPv6 data plane, [I-D.mirsky-6man-unified-id-sr] proposed 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. This document defines extensions to BGP in order to advertise Unified SIDs in SR-TE policies. 2. SR policy with Unified SID As discussed in [I-D.ietf-spring-srv6-network-programming], the node with the SRv6 capability will maintain its local SID table. A Local Liu & Peng Expires November 12, 2020 [Page 2] Internet-Draft BGP for Unified SID May 2020 SID is generally composed of two parts, that is, LOC:FUNCT, or may carry arguments at the same time, that is, LOC:FUNCT:ARGS. FUNCT indicates the local function of the packet on the node that generates the LOC. ARGS may contain information related to traffic and services, or any other information required for executing the function. LOC indicates locator. In most cases, other nodes in the network can forward packets to the node that generates this LOC according to the corresponding routing table entries. The controller plane protocol can also use B:N to represent an LOC, where B is SRv6 SID Locator Block and N to represent node N. In other words, the structure of a complete SID is B:N:FUNCT:ARGS. [I-D.ietf-lsr-isis-srv6-extensions] defines the extension of ISIS to support SRv6, and each node can advertise the SID assigned by itself. In particular, SRv6 SID Structure Sub-Sub-TLV is defined and the specific structure of the corresponding SID is provided, including the length of SRv6 SID Locator Block, the length of SRv6 SID Locator Node, the length of SRv6 SID Function, and the length of SRv6 SID Arguments. Similarly, [I-D.ietf-bess-srv6-services] also provide the SID structure information for L3VPN or EVPN service related SID. Thus, it can be seen that the existing control plane protocol reveals a straightforward method to reduce the size of SRH. That is, under the specific address planning, i.e., the SIDs allocated by all SRv6 nodes are in the same SRv6 SID Locator Block, SRH only needs to store the difference between SIDs (N:FUNCT:ARGS), and does not need to contain the SRv6 SID Locator Block information. In a 128-bit classical SRv6 SID, the highest part is SRv6 SID Locator Block, and the following 32 bits are composed of SRv6 SID Locator Node, SRv6 SID Function and SRv6 SID Arguments, and the rest bits are zeros. As for how to obtain the SRv6 SID Locator Block information during packet forwarding, there maybe three cases: 1) For the head-end node, when the node sends a packet along the segment list to the first segment, it already knows the 128-bit classicalal SID before truncating. The headend copies it directly to the DA of IPv6 Header, but the SRH carries the 32-bit truncatured SIDs. 2) For the normal transit node, it can obtain the SRv6 SID Locator Block information from the DA or current active SID of the received IPv6 packet. Liu & Peng Expires November 12, 2020 [Page 3] Internet-Draft BGP for Unified SID May 2020 3) For the inter-domain border node, it can obtain the new SRv6 SID Locator Block information from the local SID entry, which is installed for a SID with explicit Block Switch configuration. 3. SR policy with U-SID Information Encoding The U-SID solution defined in [I-D.mirsky-6man-unified-id-sr] depend on two attributes of SID, they are: SID structure attribute and Endpoint Behavior attribute. However, [I-D.ietf-idr-segment-routing-te-policy] does not provide these information now. This document discusses two options to supplement these information. 3.1. Option 1: Advertising SID Attribute within existing Segment List sub-TLV In this option, new flags are introduced in each Segment Sub-TLV(type B/I/J/K) [I-D.ietf-idr-segment-routing-te-policy] to provide UET flavor information, and new flags and sub-TLVs are introduced in the existing Segment List sub-TLV to provide SID structure and truncated information. Since the above new compressed information is included in Segment List sub-TLV, the meaning of the whole segment list will be changed, that is, the headend cannot regard this segment list as a classical segment list to process and encapsulate the classical 128 bit SIDs in SRH. Therefore, the controller must know the SRv6 SRH compression capability supported by the headend before advertising an SR policy to the headend. There are two ways for the controller to get the SRv6 SRH compression capability of headend: o Method 1: negotiation of SRv6 SRH compression capability during BGP session. The controller only sends the Segment List sub-TLV including U-SID compression information to the BGP speakers who have SRv6 SRH compression capability. However, it is necessary to consider the scenario with a route reflector, in this case, the BGP session is not directly established between the controller and the headend. One or more RT Extended Community can be carried in the SR policy UPDATE message to contain the specific headend Router-ID information. If the controller learns that the headend has the SRv6 SRH compression capability by other means (such as collecting through BGP-LS), but the RR has not, the controller can still choose to send the UPDATE message including U-SID compression information to the RR Liu & Peng Expires November 12, 2020 [Page 4] Internet-Draft BGP for Unified SID May 2020 according to the actual destination headend included in UPDATE message. If the reflector does not recognize the new added sub-TLV / sub-sub- TLV compression information introduced in Tunnel Encapsulation Attribute, it can simply transmit to the headend according to the tranmit bit set in Tunnel Encapsulation Attribute. If the reflector recognizes the new added sub-TLV / sub-sub-TLV, it is necessary to check whether the headend has SRv6 SRH compression capability. If not, RR will not reflect the Segment List sub-TLV containing compressed information to the headend. o Method 2: the controller collects the SRv6 SRH compression capability of the headend through BGP-LS. If the headend has the SRv6 SRH compression capability, the controller can advertise a Segment List sub-TLV containing U-SID compression information to the headend. Otherwise, only a Segment List sub-TLV containing classicalal 128-bit SIDs can be advertised. [I-D.chen-lsr-igp-shorter-srv6-extensions] has defined U-capability of an SRv6 node, the U-capability is just the he SRv6 SRH compression capability. An SRv6 node with U-capability indicates that it supports the encapsulate and decapsulate the U-SID, that is to say, the SID list composed of multiple classical 128 bit SIDs can be compressed into an U-SID list containing multiple shorter U-SIDs, which is encapsulated in SRH, or the shorter U-SID can be obtained from SRH and restored to the classical 128 bit SID. The first method will introduce more complex processing to BGP, this docoment suggest the seccond one. The U-capability is independent with SBI which is selected to advertise SR policy, such as PCEP, BGP, etc. 3.1.1. Indicating the UET Flavor of the First SID A new flag is introduced in the RESERVED field of Segment List sub- TLV [I-D.ietf-idr-segment-routing-te-policy] to indicate the UET Flavor of the first SID, as presented in Figure 1. Liu & Peng Expires November 12, 2020 [Page 5] Internet-Draft BGP for Unified SID May 2020 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length |FSU| RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // sub-TLVs // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 1: FSU Flag in Segment List sub-TLV FSU-Flag: First SID UET flag, two bits, it indicates how to compress the first SID. It could be the following values: 0: the first SID does not need compression and remains 128 bits. 1: the first SID needs to be compressed to a 32-bit IP address. 2: the first SID needs to be compressed to a 32-bit MPLS Label. 3: the first SID needs to be compressed to a 16-bit IP address. The value set in FSU-Flag field need consider two factors: the UET domain constructed by the headend and the first segment node, and whether the structure information of the first SID support to be compressed according the FSU-Flag. Optionally, no matter how FSU-Flag field is set, the headend can use reduced SRH that exclude the first SID, to further reduce the cost of SRH. 3.1.2. Indicating the UET Flavor of the Other SIDs A new flag is introduced in the Flag field of Segment Sub-TLV [I-D.ietf-idr-segment-routing-te-policy] to indicate the UET Flavor of each SID (except the first one), as presented 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length |V|A| |UET| RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 SID (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 2: UET Flag in Segment sub-TLV Liu & Peng Expires November 12, 2020 [Page 6] Internet-Draft BGP for Unified SID May 2020 UET: U-SID Encapsulation Type Flag, 2-bit field, it indicates the UET type of the next SID, in other words, indicates the UET domain constructed by the current segment node and the next segment node. It could be the following values: 0: the UET domain following the current segment node is UET-128 domain, that means the next SID does not need compression and remains 128 bits. 1: the UET domain following the current segment node is UET-32 domain, that means the next SID needs to be compressed to a 32-bit IP address. 2: the UET domain following the current segment node is UET- 32-MPLS domain, that means the next SID needs to be compressed to a 32-bit MPLS Label. 3: the UET domain following the current segment node is UET-16 domain, that means the next SID needs to be compressed to a 16-bit IP address. The value set in UET-Flag field need consider two factors: the UET domain constructed by the current segment node and the next segment node, and whether the structure information of the next SID support to be compressed according the UET-Flag. 3.1.3. Indicating the SID Structure and Truncated Information A new SRv6 Segment Truncated sub-TLV is introduced in Segment List sub-TLV to provide each SRv6 SID structure and truncated information, as presented in Figure 3. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |sub-Type=STRUCT| Length | Count | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BL of SID 1 | TL of SID 1 | BL of SID 2 | TL of SID 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... ... | BL of SID N | TL of SID N | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 3: SRv6 Segment Truncated sub-TLV format where, Liu & Peng Expires November 12, 2020 [Page 7] Internet-Draft BGP for Unified SID May 2020 Count: 1 octet, the count of segments. The value of count MUST be consistent with the number of Segment Sub-TLV contained in Segment List sub-TLV; otherwise, the whole Segment List sub-TLV MUST be ignored. BL: block length of classicalal 128 bit SID in bits, value: 1~ 128. If the corresponding SID is an MPLS label, BL is 0. TL: truncated length of the compressed SID in bits, value: 1~ 128. For example, for a 128 bit SID which is compressed to 32 bits, TL is 32; for a 128 bit SID which is not compressed, TL is 128; for a 32-bit MPLS label SID, TL is 32. If TL is less than 128, BL plus TL must also be less than or equal to 128. If the headend does not recognize the Segment Truncated sub-TLV, the entire Segment List sub-TLV MUST be ignored. 3.2. Option 2: Introducing a new U-Segment List sub-TLV For more easy compatibility with older headend devices, a new U-Segment List sub-TLV could be defined, which can contain SRv6 SID compressed information as defined in Option 1. The controller can send U-Segment List sub-TLV with SRv6 SID compression information to the headend if the headend has U-capability, or Segment List sub-TLV without compression information to the headend if the headend has not U-capability. The U-Segment List sub-TLV has the same format as Segment List sub- TLV, but of different type values. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type =TBD | Length |FSU| RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // sub-TLVs // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 4: U-Segment List sub-TLV format Other extensions are same as Option 1: Introduce FSU Flag in U-Segment List sub-TLV to indicate the UET Flavor of the first SID. Introduce UET Flag in Segment Sub-TLV to indicate the UET Flavor of other SIDs. Liu & Peng Expires November 12, 2020 [Page 8] Internet-Draft BGP for Unified SID May 2020 Introduce SRv6 Segment Truncated sub-TLV in U-Segment List sub-TLV to indicate the structure and truncated information of each SID. 4. Controller Processing Controller can collect UET capability information of all nodes, see [I-D.mirsky-6man-unified-id-sr], each node can support one or more than one UET capabilities. In general, a border node that belongs to multiple UET domain will support multiple UET capabilities, while other nodes can only support a single UET capability. Controller can also collect SID per UET of all nodes. If a node support an UET capability, it SHOULD also allocate related SIDs for this UET Flavor. When controller computed an SR path, it can check the UET capability of each segment node within the segment list, to outline which UET domains the SR path crosses. For example, from Headend H to endpoint E, a segment list may cross two UET domains, the node H, X1, X2, X3, B all support UET-1, and the node B, Y1, Y2, Y3, E all support UET-2. In this case, the FSU-flag will be set to UET-1, it indicates the UET domian which the first SID X1 belongs to. At the same time, the controller will select UET related SID for each segment according to the UET domain which the segment node belongs to, i.e., the UET Flag of SID X1, X2, X3 will be set to UET-1, and the UET Flag of SID B, Y1, Y2, Y3, E will be se to UET-2. Note that in this case, SID B with UET-2 Flavor, but not UET-1 Flavor, is inserted in ths list for the purpose of seamless splicing. Then, controller need to check the structure information of each selected SID, to ensure they can safely construct an SID list with UET information. For example, the structure information of SID X1 (with UET-1 Flavor), SID X2 (with UET-1 Flavor), SID X3 (with UET-1 Flavor), SID B (with UET-2 Flavor), MUST support to get UET-1 (because the UET of prev SID is UET-1) related truncated piece information (Node:Func:ARGS) from the original IPv6 SID. Similarly, the structure information of SID Y1 (with UET-2 Flavor), SID Y2 (with UET-2 Flavor), SID Y3 (with UET-2 Flavor), SID E (with UET-2 Flavor), MUST support to get UET-2 (because the UET of prev SID is UET-2) related truncated piece information from the original IPv6 SID. There maybe another segment list example, also cross two UET domains, that is, the node H, B all support UET-1, and the node B, Y1, Y2, Y3, E all support UET-2. In this case, the FSU- flag will be also set to UET-1, it indicates the UET domian which the first SID B belongs to. At the same time, the controller will select UET related SID for each segment according to the UET domain which the segment node belongs to, i.e., the UET Flag of SID B, Y1, Y2, Y3, Liu & Peng Expires November 12, 2020 [Page 9] Internet-Draft BGP for Unified SID May 2020 E will be se to UET-2. Note that in this case, SID B with UET-2 Flavor, but not UET-1 Flavor, is inserted in ths list for the purpose of seamless splicing. Then, the controller check the structure information of each selected SID to ensure they can safely construct an SID list with UET information. That is, the structure information of SID B (with UET-2 Flavor), MUST support to get UET-1 (because the UET of prev SID is UET-1) related truncated piece information from the original IPv6 SID. Similarly, the structure information of SID Y1 (with UET-2 Flavor), SID Y2 (with UET-2 Flavor), SID Y3 (with UET-2 Flavor), SID E (with UET-2 Flavor), MUST support to get UET-2 (because the UET of prev SID is UET-2) related truncated piece information from the original IPv6 SID. If a SID can not support to get UET related truncated piece according to the UET of prev SID, the controller MUST select another prev SID with UET-0 flavor. 5. Head-end Processing When the headend receives the SR policy, it obtains the compressed information of each SID according to the TL field in the Segment Truncated sub-TLV. The headend SHOULD verify if the compression result is correct, that is, the UET-Flavor of a certain SID must be consistent with the compression result, i.e., TL, of the next SID, otherwise the entire Segment List sub-TLV must be ignored. Especialy, TL of the first SID could be verified by FSU. In particular, the UET-Flavor of the last SID can be used as a clear indication to decide which compression type should be adopted for the overlay SID, such as the VPN service. Optionally, the headend can use reduced SRH that exclude the first SID, to further reduce the cost of SRH. 6. Security Considerations Procedures and protocol extensions defined in this document do not affect the security considerations discussed in [I-D.ietf-idr-segment-routing-te-policy]. 7. IANA Considerations TBD Liu & Peng Expires November 12, 2020 [Page 10] Internet-Draft BGP for Unified SID May 2020 8. References 8.1. Normative References [I-D.chen-lsr-igp-shorter-srv6-extensions] Chen, R. and S. Peng, "IGP Extensions for Shorter SRv6 SID", draft-chen-lsr-igp-shorter-srv6-extensions-02 (work in progress), May 2020. [I-D.ietf-idr-segment-routing-te-policy] Previdi, S., Filsfils, C., Talaulikar, K., Mattes, P., Rosen, E., Jain, D., and S. Lin, "Advertising Segment Routing Policies in BGP", draft-ietf-idr-segment-routing- te-policy-08 (work in progress), November 2019. [I-D.ietf-lsr-isis-srv6-extensions] Psenak, P., Filsfils, C., Bashandy, A., Decraene, B., and Z. Hu, "IS-IS Extension to Support Segment Routing over IPv6 Dataplane", draft-ietf-lsr-isis-srv6-extensions-08 (work in progress), April 2020. [I-D.ietf-spring-segment-routing-policy] Filsfils, C., Sivabalan, S., Voyer, D., Bogdanov, A., and P. Mattes, "Segment Routing Policy Architecture", draft- ietf-spring-segment-routing-policy-07 (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. [I-D.mirsky-6man-unified-id-sr] Cheng, W., Mirsky, G., Peng, S., Aihua, L., Wan, X., and C. Wei, "Unified Identifier in IPv6 Segment Routing Networks", draft-mirsky-6man-unified-id-sr-06 (work in progress), March 2020. [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, . Liu & Peng Expires November 12, 2020 [Page 11] Internet-Draft BGP for Unified SID May 2020 8.2. Informative References [I-D.ietf-bess-srv6-services] Dawra, G., Filsfils, C., Raszuk, R., Decraene, B., Zhuang, S., and J. Rabadan, "SRv6 BGP based Overlay services", draft-ietf-bess-srv6-services-02 (work in progress), February 2020. Authors' Addresses Liu Yao ZTE Corporation No. 50 Software Ave, Yuhuatai Distinct Nanjing China Email: liu.yao71@zte.com.cn Peng Shaofu ZTE Corporation No. 50 Software Ave, Yuhuatai Distinct Nanjing China Email: peng.shaofu@zte.com.cn Liu & Peng Expires November 12, 2020 [Page 12]