SRv6 Flex-Algo with TI-LFA and uLoop Avoidance

This document describes SRv6 Flex-Algo with TI-LFA and uLoop Avoidance.

Feature Information for SRv6 Flex-Algo with TI-LFA and uLoop Avoidance

The table below provides the feature history for SRv6 Flex-Algo with TI-LFA and uLoop Avoidance.
Table 1.

Feature

Release

Description

SRv6 Flex-Algo with TI-LFA and uLoop Avoidance

Cisco IOS XE 17.18.1a

From Cisco IOS XE 17.18.1a, Flexible Algorithm enhances SRv6 by including functions like Topology Independent Loop-Free Alternate (TI-LFA) and microloop (uLoop) avoidance. This feature improves network resilience and efficiency.

SRv6 Flex-Algo with TI-LFA and uLoop Avoidance

A SRv6 flexible algorithm is a feature that

  • extends the capabilities of SRv6.

  • allows traffic engineering and optimization.

  • improves network resilience and efficiency by incorporating functionalities like Topology Independent Loop-Free Alternate (TI-LFA) and uLoop (microloop) Avoidance.

In SRv6, the network forwards data using SRv6 SIDs and SRv6 Locators. SIDs are assigned from the locators, and forwarding entries for them exist only on the device where they are created. Locators help with network-wide reachability and forward traffic for the SIDs. Therefore, a locator represents an algorithm-specific path to a certain destination node in the SRv6 domain. Each node can advertise multiple SRv6 locators - one for each Flex-Algo it participates in, in addition to locators for the default algorithm (algo-0).

SRv6 flex-algo FRR and TI-LFA

Flex-Algo FRR and TI-LFA are network performance features that

  • improve network performance by allowing network operators to compute backups within the Flex-Algo topology, and

  • ensure that traffic can be rerouted quickly in the event of link or node failures.

The Forwarding Information Base (FIB) entries will include Flex-Algo specific End SIDs and End.X SIDs, which are essential for accurate traffic forwarding across the network.

SRv6 Flex-Algo Microloop-Avoidance

A Flex-Algo Microloop-Avoidance is a process that

  • integrates specific processing into existing IPv6 uLoop routines,

  • ensures that Forwarding Information Base (FIB) entries are tailored for each flexible algorithm by incorporating End SIDs and End.X SIDs, and

  • is crucial for maintaining seamless traffic flow and avoiding microloops during network updates or changes.

Prerequisites for SRv6 Flex-Algo with TI-LFA and uLoop Avoidance

SRv6 must be enabled on the router before the Flexible Algorithm functionality is activated.

Restrictions for SRv6 Flex-Algo with TI-LFA and uLoop Avoidance

  • Only up to 8 SRv6 flex-algo will be supported.

  • SRv6 deployments are supported only at one level. Leaking locators between levels or redistribution of locators is not supported.

Configure SRv6 IS-IS flexible algorithm

TI-LFA and uLoop Avoidance settings are inherited from the Algo zero configuration in Flex-Algos. You cannot modify these settings for each Flex-Algo, instead, you can only disable them. For more information, see ISIS - SRv6: uLoop Avoidance and IPv6 Loop-Free Alternate Fast Reroute

Use the following configuration to set up SRv6 flex-algo. For more details, see, Enabling Segment Routing Flexible Algorithm

The following is an example of how to configure the SRv6 IS-IS flexible algorithm. The below example shows how to configure three flexible-algorithms. Algo 128 runs IGP metric, Algo 129 runs with delay metric and Algo runs with 133 TE metric.

ipv6 unicast-routing
ipv6 cef
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
ipv6 address 111::111/128
!
segment-routing srv6
locators
  locator loc1
   prefix FCCC:CCC1:A1::/48
   format usid-f3216
  locator F128
   prefix FCCC:F128:A1::/48
   format usid-f3216
   algorithm 128
  locator F129
   prefix FCCC:F129:A1::/48
   format usid-f3216
   algorithm 129
  locator F133
   prefix FCCC:F133:A1::/48
   format usid-f3216
   algorithm 133
!
router isis 1
net 50.1234.1721.1600.1001.00
is-type level-2-only
router-id Loopback0
metric-style wide
affinity-map BLACK bit-position 255
affinity-map BLUE bit-position 0
affinity-map GREEN bit-position 8
flex-algo 128
  advertise-definition
  priority 250
  affinity
   exclude-any
    name BLUE
    exit-fa-affinity-attr
   !
!
flex-algo 129
  advertise-definition
  metric-type delay
  priority 250
  affinity
   include-all
    name BLACK
!
flex-algo 133
  advertise-definition
  metric-type te
  priority 250
  affinity
   include-any
    name GREEN
!
address-family ipv6
  router-id Loopback0
  segment-routing srv6
   locator loc1
   locator F128
   locator F129
   locator F133
  fast-reroute per-prefix level-2 all
  fast-reroute ti-lfa level-2
 
interface Ethernet1/3
ipv6 address 15:15::1/64
ipv6 router isis 1
bfd interval 50 min_rx 50 multiplier 3
isis network point-to-point
isis te-metric flex-algo 10 level-2
isis ipv6 metric 10
isis ipv6 bfd
isis affinity flex-algo
  name BLACK
  name GREEN
  name BLUE

performance-measurement 
interface Ethernet1/3 
 delay-measurement 
 next-hop ipv6 15:15::2

Verify SRv6 Flex-Algo with TI-LFA and uLoop Avoidance

Verify the configuration by using show commands to check the status and details of Flex-Algo settings:

The following is a sample output of the show isis ipv6 rib flex-algo value command showing all the IS-IS IPv6 local RIB information:
Router# sh isis ipv6 rib flex-algo 128

IS-IS IPv6 process 1, local RIB

Repair path attributes:
    DS - Downstream, LC - Linecard-Disjoint, NP - Node-Protecting
    PP - Primary-Path, SR - SRLG-Disjoint

Flex-algo 128

* CAFE:F128:606::/48
  Algorithm: 128
    via FE80::A8BB:CCFF:FE02:5E20/Ethernet0/2, type L2  metric 10 tag 0 
     (installed)
     repair path: via FE80::A8BB:CCFF:FE02:5A10/Ethernet0/1 metric: 130 (DS,SR)
      TI-LFA link-protecting
        SRv6-Fwd-Id 25165861
        P node: r604 SID CAFE:0:604:: uN (PSP/USD)
        Q node: r605 SID CAFE:0:604:E002:: uA (PSP/USD)
      repair source: r606, metric to pfx: 150
The following is a sample output of the show isis ipv6 flex-algo command showing all the information regarding IS-IS IPv6 flexible algorithm running in multi-topology mode. If ISIS IPv6 routing runs in single-topology mode, use the show isis flex-algo command.
Router# show isis ipv6 flex-algo 128
Tag 1:
IS-IS Flex-Algo Database
 Flex-Algo count: 2
 Use delay metric advertisement: Application, Legacy
    IS-IS Level-2
      Delay metric: Inactive

Flex-Algo 128: 
  Topology-2
    IS-IS Level-2
      Definition Priority: 128
      Definition Source: r601.00
      Definition Equal to Local: Yes
      Definition Metric Type: IGP
      Definition Flex-Algo Prefix Metric: No
      Disabled: No
      Microloop Avoidance Timer Running: No
   Local Priority: 128
   FRR Disabled: No
   Microloop Avoidance Disabled: No
The following is a sample output of the show isis ipv6 topology flex-algovalue command showing information regarding the IS-IS paths to intermediate systems running in multi-topology mode.If ISIS IPv6 routing runs in single-topology mode, use the command show isis topology flex-algo.
Router# sh isis ipv6 topology flex-algo 128

Tag 1:
Flex-algo 128
IS-IS TID 2 paths to level-2 routers
System Id            Metric     Next-Hop             Interface   SNPA
r601                 --
r602                 10         r602                 Et0/0       aabb.cc02.5a00 
                                r602                 Et0/1       aabb.cc02.5a10 
r603                 20         r602                 Et0/0       aabb.cc02.5a00 
                                r602                 Et0/1       aabb.cc02.5a10 
r604                 30         r602                 Et0/0       aabb.cc02.5a00 
                                r602                 Et0/1       aabb.cc02.5a10 
                                r606                 Et0/2       aabb.cc02.5e20 
r605                 20         r606                 Et0/2       aabb.cc02.5e20 
r606                 10         r606                 Et0/2       aabb.cc02.5e20 
The following is a sample output of the sh isis ipv6 fast-reroute summary flex-algo command showing information regarding the IS-IS fast-reroute summary flex-algo:
Router# sh isis ipv6 fast-reroute summary flex-algo 128

Tag 1:
Flex-algo 128
IPv6 Fast-Reroute Protection Summary:

 Prefix Counts:          Total      Protected    Coverage
   High priority:        0          0            0%
   Normal priority:      18         12           66%
   Total:                18         12           66%
Use the show isis ipv6 microloop-avoidance flex-algo command to display the current uLoop flex-algo status.
Router# sh isis ipv6 microloop-avoidance flex-algo 128

Tag: 1
Algo  State            Delay  Running(L1/L2)
128   Segment-Routing  5000   NA/FALSE
Following is the example output for show isis srv6 locators command
Router# sh isis srv6 locators 
ISIS SRv6 Locators:
Tag 1:

Name             Algo Prefix                                         Level
----             ---- ------                                         -----
A                0    CAFE:0:601::/48                                1-2  
F128             128  CAFE:F128:601::/48                             1-2  
Following is the example output for show isis node locators command
Router# sh isis node locators r601.00

Tag 1:

ISIS level-2 node information for r601.00
SRv6 locator cache:
 (MT-2) CAFE:0:601::/48, Algorithm: 0
    LSP 0, Index 1, Seq 0x45
    Metric: 0, Algoritm: 0
    End SID: CAFE:0:601:: uN (PSP/USD)
 (MT-2) CAFE:F128:601::/48, Algorithm: 128
    LSP 0, Index 1, Seq 0x45
    Metric: 0, Algoritm: 128
    End SID: CAFE:F128:601:: uN (PSP/USD)
Following is the example output for sh isis node internal lsp locators command
Router# sh isis node internal lsp locators r601.00

Tag 1:

ISIS level-2 node information for r601.00
 LSP r601.00-00 (1111.1111.1111.00-00) Seq 0x49 locator list:
 (MT-2) CAFE:F128:601::/48, Algo 128
 (MT-2) CAFE:0:601::/48, Algo 0

Monitor SRv6 Flex-Algo with TI-LFA and uLoop Avoidance

After configuring SRv6 Flex-Algo, monitor its performance and behavior using the following commands:

Use show isis ipv6 fast-reroute summary flex-algo [number] command to monitor Fast-reroute coverage and status.

Use show isis ipv6 microloop-avoidance flex-algo [number] command to check microloop avoidance settings.

Traffic steering

ISIS creates the Flex-Algo forwarding plane, which is different from the algo-0 forwarding plane due to metric and affinity constraints. The forwarding plane in SRv6 was established by installing locator IPv6 prefixes into the routing table. From Cisco IOS XE 17.17.1a, users can steer VPN traffic routed by BGP to Flex-Algo by instructing BGP to use a locator for the specific VRF that belongs to Flex-Algo. For example, locator F255 belongs to flex-algo 255 and is used for traffic in VRF V6.

Configure traffic steering

The following sample configuration shows how to configure Traffic Steering
segment-routing srv6
locators
  locator F255
   prefix CAFE:F255:601::/48
   format usid-f3216
   algorithm 255 

router bgp 100
..
address-family ipv6 vrf V6
  !
  segment-routing srv6
   locator F255
  exit-srv6

BGP than creates service SID which is used to steer traffic for BGP routes onto Flex-Algo forwarding plane.