Internet DRAFT - draft-mirsky-spring-unified-id-network-programming
draft-mirsky-spring-unified-id-network-programming
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,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[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, <https://www.rfc-editor.org/info/rfc8402>.
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,
<https://www.rfc-editor.org/info/rfc8660>.
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]