Segment Routing

Cumulus Linux supports multipathing with SRv6 that enables you to tunnel packets from the source NIC to the destination NIC through the switch fabric using SRv6 micro segment identifiers (uSIDs). The SRv6 origination and termination is on the NIC and the switches merely act as SRv6-aware (transit) nodes. Cumulus Linux provides SRv6 uSID support with uN (END_CSID ) and uA (End.X_CSID ) endpoints.

Cumulus Linux supports SRv6 on the Spectrum-4 and Spectrum-5 switch only.

Configure SRv6

To configure SRv6:

  • Enable SRv6.
  • Configure the SRv6 locator settings and the static IDs:
    • Configure the SRv6 locator prefix.
    • Configure the SRv6 locator block length. Cumulus Linux currently supports a value of 32.
    • Configure the SRv6 locator function length. Cumulus Linux currently supports a value of 0.
    • Configure the SRv6 locator node length. Cumulus Linux currently supports a value of 16.
    • Configure the static segment identifier locator name.
    • Configure the static segment identifier endpoint behavior. You can specify uA or uN.

The following example enables SRv6, and configures the locator called LEAF and the static SID 2001:db8:1:1::100/48:

cumulus@switch:~$ nv set router segment-routing srv6 state enabled
cumulus@switch:~$ nv set router segment-routing srv6 locator LEAF prefix 2001:db8:1:1::100/48
cumulus@switch:~$ nv set router segment-routing srv6 locator LEAF block-length 32
cumulus@switch:~$ nv set router segment-routing srv6 locator LEAF func-length 0
cumulus@switch:~$ nv set router segment-routing srv6 locator LEAF node-length 16
cumulus@switch:~$ nv set router segment-routing static srv6-sid 2001:db8:1:1::100/48 locator-name LEAF  
cumulus@switch:~$ nv set router segment-routing static srv6-sid 2001:db8:1:1::100/48 behavior uA 
cumulus@switch:~$ nv config apply
cumulus@switch:~$ sudo vtysh
...
leaf01# configure t
leaf01(config)# segment-routing 
leaf01(config-sr)# srv6
leaf01(config-srv6)# static-sids
leaf01(config-srv6-sids)# sid 2001:db8:1:1::100/48 locator LEAF behavior uA
leaf01(config-srv6-sids)# exit
leaf01(config-srv6)# locators
leaf01(config-srv6-locators)# locator LEAF
leaf01(config-srv6-locator)# prefix 2001:db8:1:1::100/48 block-len 32 func-bits 0
leaf01(config-srv6-locator)# prefix 2001:db8:1:1::100/48 node-len 16
leaf01(config-srv6-locator)# end
leaf01# exit

Cumulus Linux only supports the SF3216 format (block-len(32) and node-len(16)).

Show SRv6 Configuration

To show if SRv6 is enabled and to show the configured locators, run the nv show router segment-routing command:

cumulus@switch:~$ nv show router segment-routing 
              applied   pending             
------------  --------  --------------------
srv6                                        
  state       disabled  enabled             
  [locator]             LEAF                
static                                      
  [srv6-sid]            2001:db8:1:1::100/48

To show configuration information for all SRv6 locators, run the nv show router segment-routing srv6 locator command or the vtysh show segment-routing srv6 locator command:

cumulus@switch:~$ nv show router segment-routing srv6 locator
SRv6 locator name  prefix            block length  node length  function length  status
-----------------  ----------------  ------------  -----------  ---------------  ------
LEAF               fcbb:bbbb:2::/48  32            16           0                up

To show configuration information about a specific locator, run the NVUE nv show router segment-routing srv6 locator <locator-id> command or the vtysh show segment-routing srv6 locator <locator> detail command:

cumulus@switch:~$ nv show router segment-routing srv6 locator LEAF
              operational       applied           pending         
------------  ----------------  ----------------  ----------------
prefix        fcbb:bbbb:2::/48  fcbb:bbbb:2::/48  fcbb:bbbb:2::/48
block-length  32                32                32              
node-length   16                16                16              
func-length   0                 0                 0               
status        up

To show the SRv6 static segment identifiers, run the NVUE nv show router segment-routing static srv6 sid command or the vtysh show segment-routing srv6 sid command:

cumulus@switch:~$ nv show router segment-routing srv6 sid 

To show information for a specific SRv6 static segment identifier, run the NVUE nv show router segment-routing static srv6 sid <sid> command or the vtysh show segment-routing srv6 sid <sid> command:

cumulus@switch:~$ nv show router segment-routing static srv6 sid 2001:db8:1:1::100/48

Show SRv6 Endpoints

SRv6 endpoints are installed as IPv6 routes into the RIB and FIB. To show SRv6 endpoints, view the IPv6 RIB with the nv show vrf <vrf> router rib ipv6 route command.

cumulus@switch:~$ nv show vrf mgmt router rib ipv6 route

Flags - * - selected, q - queued, o - offloaded, i - installed, S - fib-
selected, x - failed

Route      Protocol   Distance  Uptime                NHGId  Metric  Flags
---------  ---------  --------  --------------------  -----  ------  -----
::/0       kernel     255       2025-06-12T19:57:59Z  12     8192    *Si  
fe80::/64  connected  0         2025-06-12T19:57:59Z  9      0       *Si  

You can view a specific route with the nv show vrf <vrf> router rib ipv6 route <route-id> command.

Show SRv6 Statistics

To show all SRv6 information, run the nv show router segment-routing srv6 stats command

cumulus@switch:~$ nv show router segment-routing srv6 stats

To show information about a specific SRv6 SID, run the NVUE nv show router segment-routing srv6 stats sid <sid> command or the vtysh show segment-routing srv6 sid command:

cumulus@switch:~$ nv show router segment-routing srv6 stats sid 2001:db8:1:1::100/48

To show information about non-SID dropped packets, run the nv show router segment-routing srv6 stats no-sid-drop command:

cumulus@switch:~$ nv show router segment-routing srv6 stats no-sid-drop

Clear SRv6 Statistics

To clear all SRv6 statistics, run the nv action clear router segment-routing srv6 stats command:

cumulus@switch:~$ nv action clear router segment-routing srv6 stats 

To clear SRv6 statistics for a specific SID, run the nv action clear router segment-routing srv6 stats sid <sid> command:

cumulus@switch:~$ nv action clear router segment-routing srv6 stats sid 2001:db8:1:1::100/48 

To clear SRv6 statistics for no-SID dropped packets, run the nv action clear router segment-routing srv6 stats no-sid-drops command:

cumulus@switch:~$ nv action clear router segment-routing srv6 stats no-sid-drops