IDR Working Group | Yao. Liu |
Internet-Draft | Shaofu. Peng |
Intended status: Standards Track | ZTE Corporation |
Expires: September 8, 2020 | March 7, 2020 |
BGP Extensions for Unified SID in TE Policy
draft-liu-idr-segment-routing-te-policy-complement-00
This document defines extensions to BGP in order to advertise Unified SIDs in SR-TE policies.
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 8, 2020.
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.
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 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 shortened 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.
Firstly, we focus on how to carry 32-bits IP address format U-SID, other type of U-SID will be considered in future version.
As discussed in [I-D.ietf-spring-srv6-network-programming], the node with the SRv6 capability will maintain its local SID table. A Local 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 announce 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 very intuitive method to reduce the size of SRH. That is , under the specific address planning(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 classic 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 are two 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 classical SID before truncaturing. The head node copies it directly to the DA of IPv6 Header, but the SRH carries the 32-bit truncatured SIDs.
2)For the transit node, it can obtain the SRv6 SID Locator Block information from the DA of the received IPv6 packet.
This document defines a new one-bit flag field in the segment-list sub-TLV [I-D.ietf-idr-segment-routing-te-policy] RESERVED field, where,
T: Truncatured-Flag, when set, it indicates the presence of 32-bits IP address format U-SID(s) in the SR path
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 |T| RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // sub-TLVs // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: T-Flag in Segment List sub-TLV
In this document, the Flags field of each segment sub-TLV(type B/I/J/K) [I-D.ietf-idr-segment-routing-te-policy] is extended to indicate the block length (BL) and non-block length (NBL) of a 128-bit SID.
Figure 2 uses the type B segment sub-TLV as an example to illustrate the extended LT field. Other types of segment sub-TLV are similar.
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 | LT | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 SID (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Length Type Field in Segment sub-TLV
LT: Length Type, 3-bit field with the following values:
000 unknown
001 BL=96bits, NBL=32bits,
010 BL=64bits, NBL=32bits,
011 BL=32bits, NBL=32bits,
Other values are reserved for future use.
It should be noted that NBL represents the length of the Node:Func that is immediately followed the block.
Take the length of the short SID as 32 bits as an example.
On the head-end node, if the SR-TE tunnel has enabled the SRv6 SID compression, and the compression mode is to use 32-bits IPv4 address U-SID , then it analyzes whether these SIDs are in the same block and whether the length of Node:Func does not exceed 32 bits based on the NBL length corresponding to each SID contained in the segment List received from the controller.
If the above conditions are met, the head-end node uses a 32-bit short SID optimization SID List for SRH encapsulation.
Note that it can also be the responsibility of the controller to check if there could use IPv4 address U-SID for the entire SID list, especially for the inter-domain case. In this case the headend can simply follow the decision of the controller.
Procedures and protocol extensions defined in this document do not affect the security considerations discussed in [I-D.ietf-idr-segment-routing-te-policy].
TBD
[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", Internet-Draft draft-ietf-idr-segment-routing-te-policy-08, 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", Internet-Draft draft-ietf-lsr-isis-srv6-extensions-05, February 2020. |
[I-D.ietf-spring-segment-routing-policy] | Filsfils, C., Sivabalan, S., Voyer, D., Bogdanov, A. and P. Mattes, "Segment Routing Policy Architecture", Internet-Draft draft-ietf-spring-segment-routing-policy-06, December 2019. |
[I-D.ietf-spring-srv6-network-programming] | Filsfils, C., Camarillo, P., Leddy, J., Voyer, D., Matsushima, S. and Z. Li, "SRv6 Network Programming", Internet-Draft draft-ietf-spring-srv6-network-programming-10, February 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", Internet-Draft draft-mirsky-6man-unified-id-sr-05, February 2020. |
[RFC8402] | Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., Litkowski, S. and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, July 2018. |
[I-D.ietf-bess-srv6-services] | Dawra, G., Filsfils, C., Raszuk, R., Decraene, B., Zhuang, S. and J. Rabadan, "SRv6 BGP based Overlay services", Internet-Draft draft-ietf-bess-srv6-services-01, November 2019. |