Networking Working Group | L. Ginsberg |
Internet-Draft | A. Bashandy |
Intended status: Standards Track | C. Filsfils |
Expires: April 2, 2018 | Cisco Systems |
B. Decraene | |
Orange | |
September 29, 2017 |
IS-IS Extensions to Support Routing over IPv6 Dataplane
draft-bashandy-isis-srv6-extensions-01.txt
Segment Routing (SR) allows for a flexible definition of end-to-end paths by encoding paths as sequences of topological sub-paths, called "segments". Segment routing architecture can be implemented over an MPLS data plane as well as an IPv6 data plane. This draft describes the IS-IS extensions required to support Segment Routing over an IPv6 data plane.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].
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 April 2, 2018.
Copyright (c) 2017 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.
With Segment Routing (SR)[SRARCH], a node steers a packet through an ordered list of instructions, called segments.
Segments are identified through Segment Identifiers (SIDs).
Segment Routing can be directly instantiated on the IPv6 data plane through the use of the Segment Routing Header defined in [SRH]. SRv6 refers to this SR instantiation on the IPv6 dataplane.
The network programming paradigm [NP] is central to SRv6.
It describes how any function can be bound to a SID and how any network program can be expressed as a combination of SID's.
It defines several well-known functions such as End, End.X, T.Insert, T.Encaps, etc.
This document specifies IS-IS extensions that allow IS-IS protocol to encode some of these functions.
Familiarity with the network programming paradigm [NP] is necessary to understand the extensions specified in this document.
This document defines one new top level IS-IS_TLV and three new IS- IS sub-TLVs.
The SRv6 Capabilities sub-TLV announces the ability to support SRv6 and some functions defined in [NP] as well as advertising limitations when applying such functions.
The SRv6 SID top level TLV, the P2P SRv6 X-SID sub-TLV, and the LAN SRv6 X-SID sub-TLV are used to advertise which SIDs are instantiated at a node and what function is bound to each instantiated SID.
Only ISIS-related functions such as End and its variants D and X [NP] are defined in this document.
As described in [SRH] and [NP], the list of Segments is stored in the segment routing header referred hereafter as "SRH".
A router that supports SRv6 MUST be able to process the segment routing header as described in [SRH] and [NP] up to the limitations set by the advertised SRv6-capabilities sub-TLV.
To announce this ability, a router uses the newly defined SRv6- capabilities sub-TLV of the router capabilities TLV [RFC7981]. The SRv6- capabilities sub-TLV may contain optional sub-sub-TLVs.
The SRv6 Capabilities sub-TLV has the following format:
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 | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | sub-sub-TLVs... Type: Suggested value 22, to be assigned by IANA Length: 2 + length of sub-sub-TLVs Flags: 2 octets The following flags are defined: 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |E| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ where: E-flag: If set, then router is able to apply "T.Encap" operation
The following sections define the supported sub-sub-TLVs.
The Maximum Segments Left sub-sub-TLV specifies the maximum value of the "SL" field [SRH] in the SRH of a received packet before applying the function associated with a SID.
0 1 2 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Max SL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type: 1 Length: 1 SL Value: 1 octet An 8 bit unsigned integer. If the sub-sub-TLV is NOT advertised the value is assumed to be 0.
The Maximum End Pop SRH sub-sub-TLV specifies the maximum number of SIDs in the top SRH in an SRH stack to which the router can apply "PSP" or USP" [NP] flavors.
0 1 2 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length |Max-End-Pop-SRH| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type: 2 Length: 1 Max-End-Pop-SRH Value: 1 octet An 8 bit unsigned integer. If the value is zero or the sub-sub-TLV is NOT advertised, then it is assumed that the router cannot apply PSP or USP flavors.
The Maximum T.Insert SRH sub-sub-TLV specifies the maximum number of SIDs that can be inserted as part of the "T.insert" behavior [NP].
0 1 2 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Max-T.Insert | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type: 3 Length: 1 Max-T.Insert Value: 1 octet An 8 bit unsigned integer. If the value is zero or the sub-sub-TLV is omitted, then the router is assumed not to support any variation of the "T.insert" behavior.
The Maximum T.Encap SRH sub-sub-TLV specifies the maximum number of SIDs that can be included as part of the "T.Encap" behavior [NP].
0 1 2 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Max-T.Encap | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type: 4 Length: 1 Max-T.Encap Value: 1 octet An 8 bit unsigned integer. If this value is zero or the sub-sub-TLV is omitted and the "E" flag is set in the associated SRv6 Capabilities sub-TLV, then it is assumed that the router can apply T.Encap by encapsulating the incoming packet in another IPv6 header without SRH the same way IPinIP encapsulation is performed. If the "E" flag is clear, then this sub-sub-TLV SHOULD NOT be transmitted and MUST be ignored on receipt.
The Maximum End D SRH sub-sub-TLV specifies the maximum number of SIDs in an SRH when applying "End.DX6" and "End.DT6" functions.
0 1 2 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Max End D | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type: 5 Length: 1 Max End D Value: 1 octet An 8 bit unsigned integer. If this value is zero or the sub-sub-TLV is omitted, then it is assumed that the router cannot apply "End.DX6" or "End.DT6" functions if the extension header right underneath the outer IPv6 header is an SRH.
The SRv6 SID TLV defined in Section 4, P2P SRv6 X-SID sub-TLV specified in Section 6.1, and LAN SRv6 X-SID sub-TLV specified in section 6.2 MUST include one SRv6 function Descriptor.
When included in the SRv6 SID TLV, the descriptor is encoded as a sub-TLV. When included in a P2P/LAN SRv6 X-SID sub-TLV, the descriptor is encoded as a sub-sub-TLV.
The SRv6-function Descriptor encodes the function (and its flavors) bound to the SRv6 SID advertised in the SRv6 SID TLV [NP].
The SRv6 SID function Descriptor has the following format:
0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+ | Type | +-+-+-+-+-+-+-+-+ | Length | +-+-+-+-+-+-+-+-+ | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Function (2 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type: See IANA considerations in Section 7. Length: 3 Flags: 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |P|U| Reserved | +-+-+-+-+-+-+-+-+ This document defines two flags to specify the flavor(s) [NP] associated with the SRv6 function specified in the "Function" field: P bit: If set, then the PSP flavor [NP] is associated with the function encoded in the "function" field U bit: If set, then the USP flavor [NP] is associated with the function encoded in the "function" field Reserved Bits SHOULD be transmitted as 0 and MUST be ignored on receipt. The second two octets encode the function. Function code points are defined in Section 5. For a given SRv6 SID function encoded in the "Function" field, the "P" and "U" bits are set/cleared according to the rules of enabling/disabling the PSP and USP flavors, respectively, for that function as specified in [NP].
A new top level TLV is introduced to advertise SRv6 Segment Identifiers (SID) and their attributes.
The new TLV is used to advertise SRv6 SIDs with any of the functions defined in [NP] whose code point is defined in this document except those SIDs which must be associated with a particular neighbor in order to be correctly applied [NP]. SRv6 SIDs associated with a neighbor are advertised in the sub-TLVs defined in Section 6.
This new TLV shares the sub-TLV space defined for TLVs 135, 235, 236 and 237. The SRv6 SID TLV has the following format:
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 | flags | SID-size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SID (variable) . . . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | sub-tlv-len | Sub-TLVs (variable) . . . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type: 27 (Suggested value to be assigned by IANA) Length: variable. One or more SID entries, each of which has the following format: Flags: 1 octet. The following flags are defined 0 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |D| Reserved | +-+-+-+-+-+-+-+-+ where: D bit: When the SID is leaked from level-2 to level-1, the D bit MUST be set. Otherwise, this bit MUST be clear. SIDs with the D bit set MUST NOT be leaked from level-1 to level-2. This is to prevent looping. The remaining bits are reserved for future use. They SHOULD be set to zero on transmission and MUST be ignored on receipt. SID-Size: 1 octet. Number of bits in the SID field. SID: 1-16 octets. This field encodes the advertised SRv6 SID. The "SID-size" field can have the values 1-128 and indicates the number of bits in the SID. The SRv6 SID is encoded in the minimal number of octets for the given number of bits. The owning router may associate one or more functions as specified in [NP], in other documents, or as locally configured. Sub-TLV-length: 1 octet. Number of octets used by sub-TLVs The function associated with the advertised SID is specified by the SRv6-Function Descriptor sub-TLV specified in Section 3.
This section defines the code points for supported functions associated with SRv6 SIDs. Functions are defined in [NP].
Certain SRv6 functions [NP] must be associated with a particular neighbor, and in case of multiple layer 3 links to the same neighbor, with a particular link in order to be correctly applied.
This document specifies how to advertise two such functions in IS- IS, namely End.X and End.DX6 [NP].
SIDs associated with End.X and End.DX6 functions are advertised within neighbor reachability TLVs.
This document defines two new sub-TLVs of TLV 22, 23, 222, 223, and 141 - namely "P2P SRv6 X-SID" and "LAN SRv6 X- SID".
This sub-TLV is used to advertise one or more SRv6 SIDs associated with End.X and End.DX6 [NP] functions over a point to point adjacency.
The "P2P SRv6 X-SID" sub-TLV has the following format:
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 | Flags | SID-size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SID (variable) . . . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |sub-sub-tlv-len| Sub-sub-TLVs (variable) . . . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type: 40 (Suggested value to be assigned by IANA) Length: variable. One or more SIDs each of which has the following format: Flags: 1 octet. No flags defined in this document SID-Size: 1 octet. Number of bits in the SID field. SID: 1-16 octets. This field encodes the advertised SRv6 SID. The "SID-size" field can have the values 1-128 and indicates the number of bits in the SID. The SRv6 SID is encoded in the minimal number of octets for the given number of bits. The owning router may associate one or more functions as specified in [NP], in other documents, or as locally configured. Sub-sub-TLV-length: 1 octet. Number of octets used by sub-sub- TLVs
This sub-TLV is used to advertise one or more SRv6 SIDs associated with End.X and End.DX6 [NP] functions over a LAN adjacency. The "LAN SRv6 X-SID" sub-TLV has the following format:
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 | System ID (6 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | SID-size | SID (variable) . . . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |sub-sub-tlv-len| sub-sub-TLVs (variable) . . . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type: 41 (Suggested value to be assigned by IANA) Length: variable. System-ID: 6 octets of IS-IS System-ID of length "ID Length" as defined in [ISO10589]. One or more SIDs each of which has the following format: Flags 1 Octet. No flags are defined in this document SID-Size: 1 octet. Number of bits in the SID field. SID: 1-16 octets. This field encodes the advertised SRv6 SID. The "SID-size" field can have the values 1-128 and indicates the number of bits in the SID. The SRv6 SID is encoded in the minimal number of octets for the given number of bits. The owning router may associate one or more functions as specified in [NP], in other documents, or as locally configured. Sub-sub-TLV-length: 1 octet. Number of octets used by sub-sub- TLVs.
This documents request allocation for the following TLVs, sub- TLVs, and sub-sub-TLVs as well updating the ISIS TLV registry and defining a new registry.
This document adds the following new TLV to the IS-IS TLV Codepoints registry.
Value: 27 (suggested - to be assigned by IANA)
Name: SRv6 SID
The name of the "Sub-TLVs for TLVs 135, 235, 236 and 237 registry" needs to be changed to "Sub-TLVs for TLVs 27, 135, 235, 236 and 237 registry".
This document adds a new sub-TLV to the (renamed) "Sub-TLVs for TLVs 27, 135, 235, 236 and 237 registry".
Value: 5 (Suggested - to be assigned by IANA)
Name: SRv6-function Descriptor
The revised table of sub-TLVs in the registry should be:
Type 27 135 235 236 237 1 n y y y y 2 n y y y y 3 y y y y y 4 y y y y y 5(new)y n n n n 11 y y y y y 12 y y y y y
This document requests the creation of a new IANA managed registry to identify SRv6 SID functions. The registration procedure is "Expert Review" as defined in [RFC7370]. Suggested registry name is "SRv6 SID Function Types". A function identifier is an unsigned 8 bit value. The following values are defined by this document:
0 Reserved
1 End function.
2 End.X function
3 End.DX6 function.
4 End.DT6 function.
This document adds the definition of a new sub-TLV in the "Sub- TLVs for TLV 242 registry".
Type: 22 (Suggested - to be assigned by IANA)
Description: SRv6 Capabilities
Thuis document requests the creation of a new IANA managed registry for sub-sub-TLVs of the SRv6 Capability sub-TLV. The registration procedure is "Expert Review" as defined in [RFC7370]. Suggested registry name is "sub-sub-TLVs for SRv6 Capability sub-TLV". The following sub-TLVs are defined by this document:
0: Reserved
1: Max-SL
2: Max-End-Pop-SRH
3: Max-T-Ins-SRH
4: Max-T-Encap-SRH
5: Max-End-D-SR
This document adds the definition of two new sub-TLVs in the "sub- TLVs for TLV 22, 23, 141, 222 and 223 registry".
Type: 40 (suggested - to be assigned by IANA)
Description: Point-to-Point SRv6 X-SID
Type: 41 (suggested - to be assigned by IANA)
Description: LAN SRv6 X-SID
Type 22 23 141 222 223 40 y y y y y 41 y y y y y
This document requests the creation of a new IANA managed registry to identify SRv6 SID functions encoded in P2P/LAN X-SID sub-TLVs. The registration procedure is "Expert Review" as defined in [RFC7370]. Suggested registry name is "SRv6 X-SID sub-sub-TLV Codepoints Registry". The following values are defined by this document:
Value: 5 (Suggested - to be assigned by IANA)
Name: SRv6-function
Descriptor This sub-sub-TLV MAY appear in either the Point-to-Point SRv6 X-SID or the LAN SRv6 X-SID sub-TLVs described in Section 7.4.
Security concerns for IS-IS are addressed in [ISO10589, [RFC5304], and [RFC5310].
The following people gave a substantial contribution to the content of this document and should be considered as co-authors:
Stefano Previdi Cisco Systems, Inc. Email: stefano@previdi.net Peter Psenak Cisco Systems Apollo Business Center Mlynske nivy 43 Bratislava 821 09 Slovakia Email: ppsenak@cisco.com Paul Wells Cisco Systems Saint Paul, Minnesota United States Email: pauwells@cisco.com Daniel Voyer Email: daniel.voyer@bell.ca Satoru Matsushima Email: satoru.matsushima@g.softbank.co.jp Bart Peirens Email: bart.peirens@proximus.com Hani Elmalky Email: hani.elmalky@ericsson.com Prem Jonnalagadda Email: prem@barefootnetworks.com Milad Sharif Email: msharif@barefootnetworks.com> Robert Hanzl Cisco Systems Millenium Plaza Building, V Celnici 10, Prague 1, Prague, Czech Republic Email rhanzl@cisco.com
[ISO10589] | "Intermediate system to Intermediate system intra-domain routeing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode Network Service (ISO 8473), ISO/IEC 10589:2002, Second Edition.", Nov 2002. |
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. |
[RFC5304] | Li, T. and R. Atkinson, "IS-IS Cryptographic Authentication", RFC 5304, DOI 10.17487/RFC5304, October 2008. |
[RFC5310] | Bhatia, M., Manral, V., Li, T., Atkinson, R., White, R. and M. Fanto, "IS-IS Generic Cryptographic Authentication", RFC 5310, DOI 10.17487/RFC5310, February 2009. |
[RFC7370] | Ginsberg, L., "Updates to the IS-IS TLV Codepoints Registry", RFC 7370, DOI 10.17487/RFC7370, September 2014. |
[RFC7981] | Ginsberg, L., Previdi, S. and M. Chen, "IS-IS Extensions for Advertising Router Information", RFC 7981, DOI 10.17487/RFC7981, October 2016. |