IS-IS Extensions for Segment Routing

Segment Routing (SR) allows for a flexible definition of end-to-end paths within IGP topologies by encoding paths as sequences of topological sub-paths called as Segments.  These segments are advertised by the link-state routing protocols (IS-IS and OSPF). Prefix segments represent an ECMP-aware shortest path to a prefix (or a node), as per the state of the IGP topology.  Adjacency segments represent a hop over a specific adjacency between two nodes in the IGP.  A prefix segment is typically a multi-hop path while an adjacency segment, in most of the cases, is a one-hop path.  SR's control plane can be applied to both IPv6 and MPLS data planes and does not require any additional signaling (other than the regular IGP).  For example, when used in MPLS networks, SR paths do not require any LDP or RSVP-TE signaling.  Still, SR can interoperate in the presence of Label Switched Paths (LSPs) established with RSVP or LDP.

This document defines the IS-IS encodings for the IGP-Prefix Segment, the IGP-Adjacency Segment, the IGP-LAN-Adjacency Segment, and the Binding Segment.

Below is complete set of ISIS TLVs and Sub-TLVs related to SR



Understanding Segment Routing ISIS Control Plane.

ISIS can be enabled with SR for both IPv4 and IPv6 control plane for Level 1, Level 2 and multi-level routing.
Prefix Segment ID (Prefix-SID) will be allocated for host prefixes on loopback interfaces and Adjacency Segment IDs (Adj-SIDs) will be allocated for adjacencies.

Prefix Segment Identifier (Prefix-SID) Sub-TLV:


A new IS-IS sub-TLV is defined which is called as the Prefix Segment Identifier (Prefix-SID) sub-TLV. The Prefix-SID sub-TLV carries the Segment Routing IGP-Prefix-SID as defined in [RFC8402].  The 'Prefix-SID' must be unique within a given IGP domain unless L-Flag is set. Flags are explained in detail in this article.

A Prefix-SID sub-TLV is associated to a prefix advertised by a node or a router and may be present in any of the following TLVs:
  • TLV-135 (Extended IPv4 reachability) defined in RFC5305.
  • TLV-235 (Multi-topology IPv4 Reachability) defined in RFC5120.
  • TLV-236 (IPv6 IP Reachability) defined in RFC5308.
  • TLV-237 (Multi-topology IPv6 IP Reachability) defined in RFC5120.
The Prefix-SID sub-TLV has the following format:


Flags Explanation:

R-Flag: Re-advertisement Flag. If set, then the prefix to which this Prefix-SID is attached has been propagated by the router from either another level (i.e., from Level-1 to Level-2 or the opposite) or redistribution (e.g., from another
protocol).

N-Flag: Node-SID Flag. If set, then the Prefix-SID refers to the router identified by the prefix.Typically, the N-Flag is set on Prefix-SIDs that are attached to a router loopback address. The N-Flag is set when the Prefix-SID is a Node-SID
as described in.

P-Flag:  No-PHP (No Penultimate Hop-Popping) Flag.  If set, then the penultimate hop MUST NOT pop the Prefix-SID before delivering the packet to the node that advertised the Prefix-SID.
                       
E-Flag: Explicit NULL Flag.  If set, any upstream neighbor of the Prefix-SID originator MUST replace the Prefix-SID with a Prefix-SID that has an Explicit NULL value (0 for IPv4 and 2 for IPv6) before forwarding the packet.  
                       
V-Flag:  Value Flag.  If set, then the Prefix-SID carries a value (instead of an index).  By default, the flag is UNSET.     
L-Flag:  Local Flag.  If set, then the value/index carried by the Prefix-SID has local significance. By default, the flag is UNSET

Other bits:  MUST be zero when originated and ignored when received.


The Adjacency-SID sub-TLV has the following format:

Flags Explanation:

F-Flag:  Address-Family Flag.  If unset, then the Adj-SID is used when forwarding IPv4-encapsulated traffic to the neighbor.  If set, then the Adj-SID is used when forwarding IPv6-encapsulated traffic to the neighbor.
                       
B-Flag:  Backup Flag.  If set, the Adj-SID is eligible for protection (e.g., using IP Fast Reroute (IPFRR) or MPLS Fast Reroute (MPLS-FRR)).

V-Flag:  Value Flag.  If set, then the Adj-SID carries a value.  By default, the flag is SET.

L-Flag:  Local Flag.  If set, then the value/index carried by the Adj-SID has local significance. By default, the flag is SET.

S-Flag:  Set Flag.  When set, the S-Flag indicates that the Adj-SID refers to a set of adjacencies (and therefore MAY be assigned to other adjacencies as well).

P-Flag:  Persistent Flag.  When set, the P-Flag indicates that the Adj-SID is persistently allocated, i.e., the Adj-SID value remains consistent across router restart and/or interface flap.                      
                       
Other bits:  MUST be zero when originated and ignored when received.                       

Weight:  1 octet.  The value represents the weight of the Adj-SID for the purpose of load balancing.