Basic SR with ISIS
Load blank.cfg
Configure ISIS in the core
Use a metric of 50 for dashed links and a metric of 10 for solid links
Using SR, configure a prefix SID for each router’s Lo1 using the router number as the index
Configure ISIS using a group
All nodes should be L2-only and belong to the same area
Only advertise the loopback prefix in ISIS
All Gig interfaces should be point-to-point
Answer
Explanation
SR provides many benefits over LDP and RSVP-TE. First, SR is not a separate protocol. It simply advertises its information within the IGP. This removes the need for synchronization between the IGP and label protocol, as we use with LDP/IGP sync.
Second, SR provides robust TE capabilities. RSVP-TE has many drawbacks. It is not scalable due to soft state refresh and full mesh requirement. It also cannot follow ECMP paths. Additionally, FRR using RSVP-TE adds even more state into the network. SR can achieve source-node-specified TE paths by simply programing a list of SIDs as an MPLS label stack. This requires no soft state in the network. All nodes within an IGP area know of all prefix SIDs and adjacency SIDs, allowing a node to easily program any arbitrary LSP. Additionally, this allows SR to provide TI-LFA, which negates the need for FRR using RSVP-TE. Also, SR-TE paths are naturally ECMP-aware when using prefix SIDs.
SR is enabled for ISIS with two simple commands: enabling SR for the process, and configuring the loopback prefix SID. The prefix SID of all nodes is installed as a local LFIB entry using a label of <global base> + <prefix SID index #>. The default global base is 16000-23999. You can specify the loopback prefix SID as the index value, or the absolute value (i.e. 16001). If using the absolute value, it is converted into the index value in the IGP advertisement. However, note that it can be dangerous to configure an absolute value. If the absolute value ends up later falling out of the SRGB (because you manually change the SRGB), the prefix SID can no longer be advertised.
Let’s explore the information that has been added to R1’s ISIS LSP:
Prefix SID
First we see the prefix SID index, and the loopback prefix it corresponds to. This prefix SID is a node SID, so the N flag is set. (It represents the node itself). Here is the meaning of the other flags:
R = Re-advertisement. Set only if the prefix has been propagated from another level.
N = Node SID. Set if the prefix represents the node.
P = PHP-Off. Set if the router is requesting directly connected neighbors not to perform PHP.
E = Explicit-Null. Set if the router is requesting Exp Null. PHP-Off must also be set when this is set.
V = Value. Set if the prefix SID has a label value instead of an index. You should never see this for a prefix SID.
L = Local. Set if the prefix SID only has local significance. You should never see this for a prefix SID, as a prefix SID is always global.
The Prefix SID is advertised in a Prefix SID sub TLV attached to the Extended IP Reachability TLV (135). See an example pcap below:
Router Capabilities
Next we see the SR information about the node itself in a Router Capabilities TLV. The router capability RID comes from the following order:
MPLS TE RID
This requires MPLS-TE to be activated for the IGP and globally on the router to take affect
ISIS RID
This provides similar functionality of setting the MPLS TE RID but without needing to enable MPLS-TE
A prefix SID must be configured on the loopback used for the RID for this to take affect
lowest numbered Loopback (ie Lo0 instead of Lo1)
lowest numbered physical interface
In the Router Capabilities TLV we have three new sub TLVs:
SR Capability sub TLV
Contains SRGB base value and range
Contains two flags:
I = MPLS IPv4 support
V = MPLS IPv6 support
SR Algorithms sub TLV
Contains the algorithms supported
Node max SID depth sub TLV
The XRv supports a max SID depth of 10
This allows other routers in the IGP to know how many labels this router can process on a stack
The high-level Router Capabilities TLV itself also has two flags:
S = Scope flag, it is set when the TLV should be flooded across the entire domain
Not used in the current implementation, so this sub TLV is not advertised across level boundaries
D = Down flag, it is set when the router capability TLV is leaked from L2 to L1
If this flag is set, then the TLV is not propagated from L1 back to L2
Not used in the current implementation, because the Scope flag is never set, so this TLV is never leaked from L2 to L1
Here is an example pcap of the router capabilities TLV:
The SR algorithms supported requires further explanation. By default, both algo 0 and aglo 1 are supported. All prefix-SIDs are advertised with algo 0 by default. Algo 0 is “SPF-only” and algo 1 is “strict SPF.” With algo 1, the path must always follow the IGP shortest path. With algo 0, the shortest path is used but it allows any nodes along the path to alter the path based on local policy. For example, if a node in the middle has a TE tunnel to the destination using autoroute announce, this node is allowed to forward over the TE tunnel with algo 0. However, with algo 1, this node must forward along the IGP path. (As a note, a prefix can have multiple algorithms associated with it, but it must have one unqiue Prefix-SID per algorithm. So you can advertise multiple prefix SIDs per loopback. For example, index=1/algo=0 and index=100/algo=1).
Adj-SID
Lastly we see that each adjacency has an adjacency SID. Currently we are not using TI-LFA, so we only see an unprotected SID. The SID is a local segment which means “pop the label and forward out the IGP link.” We can verify the adjacency SIDs for an interface using the following command. Currently only the non-FRR SID is advertised into ISIS:
Once all routers advertise their prefix SIDs, we should see the same SR table on each node, as each node is using the default SRGB:
Note that on IOS-XR there is no need to enable “mpls ldp” as we have to when using only RSVP-TE. (It is necessary to enable LFIB functionality on XRv). The LFIB is built on each router automatically, and each IGP interface has MPLS enabled. (Note below, that there is no “SR” column, so by process of elimination we can assume SR is running).
The RIB route for a prefix-SID prefix shows via “labeled SR”:
The CEF table will show the outgoing label:
If we traceroute to this address, we should see each node along the path swaps 16008 for 16008.
Last updated