Networking Working Group | L. Ginsberg |
Internet-Draft | A. Bashandy |
Intended status: Standards Track | C. Filsfils |
Expires: September 20, 2018 | Cisco Systems |
B. Decraene | |
Orange | |
Z. Hu | |
Huawei Technologies | |
March 19, 2018 |
IS-IS Extensions to Support Routing over IPv6 Dataplane
draft-bashandy-isis-srv6-extensions-02.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", "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.
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 20, 2018.
Copyright (c) 2018 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) [I-D.ietf-spring-segment-routing], 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 [I-D.ietf-6man-segment-routing-header]. SRv6 refers to this SR instantiation on the IPv6 dataplane.
The network programming paradigm [I-D.filsfils-spring-srv6-network-programming] 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.
This document specifies IS-IS extensions that allow IS-IS protocol to encode some of these functions.
Familiarity with the network programming paradigm [I-D.filsfils-spring-srv6-network-programming] is necessary to understand the extensions specified in this document.
This document defines one new top level IS-IS TLV and several new IS- IS sub-TLVs.
The SRv6 Capabilities sub-TLV announces the ability to support SRv6 and some Endpoint functions listed in Section 5 as well as advertising limitations when applying such Endpoint functions.
The SRv6 Node SID top level TLV, the SRv6 Adjacency-SID sub-TLV, and the SRv6 LAN Adjacency-SID sub-TLV are used to advertise which SIDs are instantiated at a node and what Endpoint function is bound to each instantiated SID.
A node indicates that it has support for SRv6 by advertising a new 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | optional sub-sub-TLVs... Type: Suggested value 25, 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|O| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ where: E-flag: If set, then router is able to apply "T.Encap" operation. Further limitations as regards T.encap are indicated by the advertisement of the Maximum T.Insert sub-sub-TLV described below. O-flag: If set, the router supports use of the O-bit in the Segment Routing Header(SRH) as defined in [draft-ietf-6man-segment-routing-header].
The following sections define the supported sub-sub-TLVs.
The Maximum Segments Left sub-sub-TLV specifies the maximum value of the "SL" field [I-D.ietf-6man-segment-routing-header] in the SRH of a received packet before applying the Endpoint 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" [I-D.filsfils-spring-srv6-network-programming] 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 [I-D.filsfils-spring-srv6-network-programming].
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 [I-D.filsfils-spring-srv6-network-programming].
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" Endpoint 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" Endpoint 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 have one (and only one) SRv6 Endpoint function Descriptor.
The SRv6 Endpoint function Descriptor has the following format:
0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+ | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Endpoint function (2 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ No flags are currently defined. The second two octets encode the Endpoint function.
The SRv6 Node SID TLV is introduced to advertise SRv6 Segment Identifiers (SID) and their attributes.
The new TLV is used to advertise SRv6 SIDs with Endpoint functions which do not require a particular neighbor in order to be correctly applied [I-D.filsfils-spring-srv6-network-programming]. SRv6 SIDs associated with a neighbor are advertised using 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 Node 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 | Func-flags | Endpoint function Value | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 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. Func-flags: 1 octet. As defined in Section 3 Endpoint function Value: 2 octets. As defined in Section 3 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. Sub-TLV-length: 1 octet. Number of octets used by sub-TLVs
Endpoint function code points are defined in [I-D.filsfils-spring-srv6-network-programming]. The numerical values are defined in the "Endpoint Types" registry defined in [I-D.filsfils-spring-srv6-network-programming]. This section lists the Endpoint function types which may be advertised by IS-IS.
Certain SRv6 Endpoint functions [I-D.filsfils-spring-srv6-network-programming] 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 the End.X and End.DX6 variants as described in Section 5.
This document defines two new sub-TLVs of TLV 22, 23, 222, 223, and 141 - namely "SRv6 Adjacency-SID" and "SRv6 LAN Adjacency-SID".
This sub-TLV is used to advertise one or more SRv6 SIDs associated with a point to point adjacency.
The SRv6 Adjacency-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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Func-flags | Endpoint function Value | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 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 Func-flags: 1 octet. As defined in Section 3 Endpoint function Value: 2 octets. As defined in Section 3. Legal values are the End.X and End.DX6 variants. 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. 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 a LAN adjacency.
The SRv6 LAN Adjacency-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 | Func-flags | Endpoint function Value | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 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 Func-flags: 1 octet. As defined in Section 3 Endpoint function Value: 2 octets. As defined in Section 3. Legal values are the End.X and End.DX6 variants. 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. 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 Node 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".
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 11 y y y y y 12 y y y y y
This document adds the definition of a new sub-TLV in the "Sub- TLVs for TLV 242 registry".
Type: 25 (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: SRv6 Adjacency-SID
Type: 41 (suggested - to be assigned by IANA)
Description: SRv6 LAN Adjacency-SID
Type 22 23 141 222 223 40 y y y y y 41 y y y y y
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 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
[I-D.ietf-spring-segment-routing] | Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., Litkowski, S. and R. Shakir, "Segment Routing Architecture", Internet-Draft draft-ietf-spring-segment-routing-15, January 2018. |