ISIS Manual Adjacency SID

The Integrated Intermediate System-to-Intermediate System (IS-IS) manual adjacency SID feature provides information about manually provisioned Adjency SIDs.

Feature Information for ISIS Manual Adjacency SID

The following table provides release information about the feature or features described in this module. This table lists only the software release that introduced support for a given feature in a given software release train. Unless noted otherwise, subsequent releases of that software release train also support that feature.

Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to https://cfnng.cisco.com/. An account on Cisco.com is not required.
Table 1. Feature Information for ISIS Manual Adjacency SID

Feature Name

Releases

Feature Information

ISIS Manual Adjacency SID

Cisco IOS XE Amsterdam 17.3.2

The Integrated Intermediate System-to-Intermediate System (IS-IS) manual adjacency SID feature provides information about manually provisioned Adjency SIDs.

The following commands were introduced by this feature:

adjacency-sid [absolute | index] <value> [protected] .

.

Information About ISIS Manual Adjacency SID

Segment routing (SR) networks often use SR Traffic Engineering (SR-TE) to influence the path the specific traffic takes over the network. SR-TE tunnels can be provisioned manually on the tunnel head, but often they are calculated and provisioned by the central controller. In many cases operator of the network wants to be able to force the traffic over specific nodes and links.

To force the traffic over a certain node in the SR network operators can use Prefix-SID that is advertised by the node. Many times the anycast Prefix SID is used which forces the traffic to go over specific location where multiple nodes share the same Prefix-SID.

To force the traffic over the specific link, an Adjacency-SID (Adj-SID) is used. The problem with the existing implementation of the Adj-SID is that it is a dynamically allocated value which is in contrast to manually provisioned prefix-SID. The fact that the Adj-SID is dynamically allocated brings a set of problems:

  • The value is not persistent over reload or process restart.

  • The value is not known upfront so controller cannot use it unless it has access to the information flooded by IGP (natively or through BGP-LS).

  • Each link is allocated a unique adj-SID value which prevents the same adj-SID to be shared by multiple links.

To address the above mentioned issues, the adj-SIDs are enhanced and now thay are capable of the following:

  • Support manually provisioned adj-SID that is persistent over reload and restart.

  • Support same adj-SID to be provisioned for multiple adjacencies to the same neighbor.

  • Support same adj-SID to be provisioned for multiple adjacencies going to different neighbors.

  • Multiple manual Adj-SIDs can be configured for a single adjacency.

Manual Adjacency SID

The existing IS-IS Adj-SID infrastructure that is being used for dynamically allocated Adj-SIDs is extended to support the new persistent Adj-SID requirements. A new CLI command is also introduced to manually assign Adj-SID values for point-to-point links. Multiple Adj-SIDs can be provisioned on a single point-to-point interface. Same Adj-SID can be provisioned on multiple point-to-point interfaces leading to the same or different neighbors.

All manual Adj-SIDs are assigned from a range of labels called Segment Routing Local Block(SRLB). The default SRLB Range is 15000-15999.

Manual Adj-SIDs can be configured as an Index or an Absolute value. If it is configured as an index, the absolute label is calculated as an index + SRLB starting label. For example, if you configure 56 as a manual Adj-SID index, the absolute label would be 15000 + 56 = 15056. If it is configured as an absolute, the label itself is the absolute value. For example, if you configure 56 as an absolute manual Adj-SID, the absolute label would be 56 only. Labels (both index and absolute) can be configured as protected or non-protected. By default, all the labels are non-protected.

Adjacency SID Advertisement

Manual adj-SIDs are advertised using existing ISIS adj-SID sub-TLV as defined in the ISIS SR extension draft. If the same value of the adj-SID has been provisioned on multiple interfaces, the S-Flag is set in the adj-SID sub-TLV. In the case of manual adj-SID, P flag is always set.

If the provisioned adj-SID has been configured as protected, the B-flag also gets set.

Adjacency-SIDs are always advertised as a label value and never as an index even if the index are used to configure the adj-SID.

Adjacency SID Forwarding

When the adj-SID value is only configured on a single interface, then the ISIS installs forwarding entries for manually allocated adj-SIDs. The primary path for any Adj-SID is a POP operation over the point-to-point interface for which the Adj-SID is allocated. If the allocated adj-SID is eligible for backup and the backup path is available, IS-IS programs the backup path as well. The backup path for Adj-SID is equal to the backup path computed for the neighbor router-id address.

If the same adj-SID value is configured on multiple links forwarding happens as the following:

  • Primary path with POP operation is installed via each link where adj-SID is configured with that value.

  • For each primary path if the adj-SID is configured as protected on the primary interface and backup is available, backup path gets installed. Backup path is represented as a backup path associated with the neighbor router-id address.

Configuration Prerequisites

  • Ensure that segment routing is configured globally.

  • Ensure that segment routing is configured using IS-IS.

Configuring Manual Adjacency SID


Device#configure terminal 
Device(config)#interface ethernet0/1
Device(config-if)#isis adjacency-sid [absolute | index] <value> [protected]
 

[index] – (Optional) It is used if the adjacency SID is configured as an index to the SRLB range. If the index keyword is not used the value is expected to represent the absolute value of the label.

[absolute] - (Optional) It is used if the adjacency SID is configured as absolute value.

<value> - It represents the adj-SID label value or index. For the adj-SID to be programmed and advertised, the value/index must fall in the valid SRLB range.

[protected] - (Optional) It is used to protect the manual adj-SIDs. By default, manual adj-SIDs are not protected.

Modifying Segment Routing Local Block (SRLB) Range

Device#configure terminal
Device(config)#segment-routing mpls 
Device(config-srmpls)#local-block 7000 7999

Verifying Manual Adjacency SID

Verifying Label in SR APP Database

Device#show segment-routing mpls lb assigned-sids
Adjacency SID Database
 C=> In conflict
 S=> Shared
 R=> In range
SID  STATE       PROTOCOL     TOPOID      LAN      PRO NEIGHBOR    INTERFACE
15378 R
                 ISIS         0           N        N   10.0.0.3     Ethernet0/1

Verifying Label in MPLS Forwarding


       Device# show mpls forwarding-table 
       Local      Outgoing        Prefix               Bytes Label      Outgoing        Next Hop
       Label      Label           or Tunnel Id         Switched         interface
       15378      Pop Label       0.0.60.18-A          0                Et0/0             10.0.0.2 == Configured only for interface e0/0

Verifying Shared Label


       Device# show mpls forwarding-table 
       Local      Outgoing       Prefix               Bytes Label      Outgoing        Next Hop
       Label      Label          or Tunnel Id         Switched         interface
       15378      Pop Label      0.0.60.18-A          0                Et0/0             10.0.0.2  == Same Label is configured for 2 interfaces
                  Pop Label      0.0.60.18-A          0                Et0/1             10.0.0.3  ==

Verifying ISIS LSP


       Device# sh isis database verbose R1.00-00  
       xxxxxx
       xxxxxx
       Adjacency SID Value:15378 F:0 B:0 V:1 L:1 S:1 P:1 Weight:0 == P (Persistent) flag is always 1 if it is Manual Adj-SID
       xxxxxx

       P -> Persistent Flag (0 for Dynamic Adj-SID and 1 for Manual Adj-SID)
       S -> Shared Flag (1 if label is shared by multiple adjacencies)