IS-IS Extensions to
Support Routing over IPv6 DataplaneCisco Systems821 Alder DriveMilpitas95035CAUSAginsberg@cisco.comCisco Systems170 West Tasman DrSan Jose95134CAUSAbashandy@cisco.comCisco SystemsBrusselsBelgiumcfilsfil@cisco.comOrangeIssy-les-MoulineauxFrancebruno.decraene@orange.com
Routing Area
Networking Working GroupSegment 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].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: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.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.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].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].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.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: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:This section defines the code points for supported functions
associated with SRv6 SIDs. Functions are defined in [NP].0: Reserved1: End Function2: End.X Function3: End.DX6 Function4: End.DT6 FunctionCertain 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:The function associated with the advertised SID is
specified by the SRv6-Function Descriptor sub-sub-TLV specified in
Section 3. If the SRv6-Function Descriptor is encoded in the P2P SRv6
X-SID sub-TLV, then the encoded SRv6 SID function MUST include only
the code points of SRv6 SID functions that require the specification
of a neighbor to be correctly applied. This document specifies the
code points of two such functions, namely End.X and End.DX6 [NP].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:The function associated with the advertised SID is
specified by the SRv6-Function Descriptor sub-sub-TLV specified in
Section 3. If the SRv6-Function Descriptor is encoded in the P2P SRv6
X-SID sub-TLV, then the encoded SRv6 SID function MUST include only
the code points of SRv6 SID functions that require the specification
of a neighbor to be correctly applied. This document specifies the
code points of two such functions, namely End.X and End.DX6 [NP].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 SIDThe 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 DescriptorThe revised table of sub-TLVs in the registry should be: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 Reserved1 End function.2 End.X function3 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 CapabilitiesThuis 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: Reserved1: Max-SL2: Max-End-Pop-SRH3: Max-T-Ins-SRH4: Max-T-Encap-SRH5: Max-End-D-SRThis 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-SIDType: 41 (suggested - to be assigned by IANA)Description: LAN SRv6 X-SIDThis 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-functionDescriptor 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: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.Segment Routing Architecture,
draft-ietf-spring-segment-routing-12(work in progress)IPv6 SegmentRouting Header (SRH),
draft-ietf-6man-segment-routing-header-07 (work in progress)SRv6 Network Programming,
draft-filsfils-spring-srv6-network-programming-01 (work in
progress)