SR Adjacency SID
Load basic.isis.sr.enabled.cfg
SR with ISIS is already configured.
Configure a static label value of 15003 for the Adj-SID on R1 that represents its non-FRR Adj-SID with R3, and a value of 15013 for its FRR Adj-SID with R3.
Configure R5 to advertise its FRR Adj-SID for its adjacency with R7 without statically configuring the Adj-SID value as we did on R1.
Answer
Explanation
The Adjacency SID values come from the dynamic label range (24,000 - max). By default, a router will allocate both a FRR and non-FRR Adj-SID label per IGP adjacency. The FRR label means that if TI-LFA is enabled on the interface, the local router will perform fast reroute for that Adj-SID value. Essentially, using that FRR-protected Adj-SID value means that the LSP will be FRR-protected. Using the non-FRR Adj-SID value means that traffic will be momentarily broken while the local node re-computes SPF during link failure.
We can see the default behavior on R5 before making any changes. R5 has reserved two dynamic labels for the FRR and non-FRR Adj-SIDs with R7, but only advertises the non-FRR Adj-SID, because TI-LFA is not enabled on the link:
The flags in the Adjacency SID have the following meaning:
F - address-family is IPv6
When unset, the address-family is IPv4
This is needed to differentiate between an Adj-SID for IPv4 vs. IPv6 when single topology is used. In this case, all Adj-SIDs (IPv4 and IPv6) are advertised under the single Extended IS Reachability TLV.
B - Backup (FRR protected)
V - Value, the label is the explicit absolute value, not an index
L - Local, the label only has local meaning to the advertising node
S - Set, the Adjacency-SID refers to a set of adjacencies. Does not appear to be currently supported.
P - Persistent, the value is persistent and will not change
By default, an Adjacency-SID is only locally retained for 30 minutes. If you disable SR and re-enable within 30 minutes, you will retain the adjacency SID values. But after 30 minutes, or after a reboot, these values might change.
The backup-protected Adj SID is held for an additional 5 minutes when an adjacency goes down, to allow some time for the protection to be used. After this 5 minutes is up, it is removed from the LSD where it is held for 30 minutes in case the adjacency is re-established soon.
The weight is used for the purpose of load balancing. I believe this is always 0 in IOS-XR.
We can see above that R5 is only advertising its non-FRR Adj-SID, and that the B flag is unset. If we simply enable TI-LFA on this link, R5 will also advertise the FRR Adj-SID.
We can also force advertisement of the FRR Adjcency-SID without enabling TI-LFA by using an explicit Adj-SID value. These values come from the SRLB (SR Local Block), which is by default 15000-15999. To be able to do this, we first must enable segment-routing at the global level, because otherwise, the router does not have an SRLB. We can see this on R1:
Now that R1 has an SRLB, we can statically allocate Adj-SID values:
Interestingly, the show adjacency output still shows us our dynamically allocated labels:
These dynamic values are in fact still advertised, in addition to our static labels. Notice that on our static labels, the P flag is set because these are persistent.
We can verify that these Adj-SIDs work by programming a SID list at another node, for example, R4, and ensuring that traffic arrives at R3. You will need mpls oam enabled.
We can also verify adjacency SIDs in the LFIB in general. For example, we can see the two adjacency SIDs for R9 on R5:
The above index values on an Adjacency SID have nothing to do with prefix SID index values. Instead, this is an internal mechanism for ISIS. The index values for Adjacency SIDs work as follows:
Index 0 = protected L1 Adj-SID
Index 1 = protected L2 Adj-SID
Index 2 = non-protected L1 Adj-SID
Index 3 = non-protected L2 Adj-SID
Last updated