Spectrum-X leaf and spine switches run Cumulus Linux 5.x with FRR (Free Range Routing) as the routing daemon. Configuring SRv6 involves three layers: the OS, FRR (for IS-IS and BGP), and the ASIC (hardware forwarding of SRH packets).
Hardware support: Spectrum-4 ASIC
The Spectrum-4 ASIC (SN5600 and SN5400 switches) supports SRv6 SRH processing in hardware:
- SRH parsing at line rate (no software slow path)
- SID endpoint processing: End, End.X, End.DT4/6 in hardware
- uSID shift operation in hardware
- SRH insertion at the headend (first switch in the SR domain)
This is critical. Some earlier ASIC generations handled SRH in a software slow-path, capping throughput at ~1 Gbps for SR-encapsulated traffic. On Spectrum-4, SRv6 forwarding is at full 51.2 Tbps capacity.
Configuring SRv6 locators and SIDs (FRR + NVUE)
The recommended configuration path on Cumulus Linux 5.x uses FRR's vtysh for IS-IS/BGP and NVUE for interface-level configuration:
# Step 1: Enable IPv6 forwarding and SRv6 in the kernel
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.all.seg6_enabled=1
# Step 2: Configure SRv6 locator in FRR
vtysh
router isis FABRIC
segment-routing srv6
locator LEAF01
prefix 2001:db8:0:leaf01::/64
block-len 40
node-len 24
func-bits 16
!
!
# Step 3: Assign End SID for this node
segment-routing
srv6
locators
locator LEAF01
prefix 2001:db8:0:leaf01::/64 block-len 40 node-len 24 func-bits 16
behavior usid
!
!
!
!
# Step 4: Enable SRv6 in BGP (for EVPN+SRv6)
router bgp 65001
address-family ipv4 unicast
segment-routing srv6
locator LEAF01
!
address-family l2vpn evpn
advertise-all-vni
segment-routing srv6
locator LEAF01
!
!
# Verify SRv6 locator and SID assignment:
vtysh -c "show segment-routing srv6 locator"
# Expected output:
# Locator:
# Name: LEAF01
# Prefix: 2001:db8:0:leaf01::/64
# Status: Up
# Chunks: 1 (allocated)
vtysh -c "show segment-routing srv6 sid"
# Expected output:
# SID Context Owner State
# 2001:db8:0:leaf01::1 End IS-IS Up
# 2001:db8:0:leaf01::2 End.X(swp1) IS-IS Up
# 2001:db8:0:leaf01::100 End.DT4(vrf RED) BGP Up
# Verify SRH processing is hardware-accelerated:
cl-resource-query | grep srv6
# Shows ASIC SRv6 table utilisation
# NVUE: check SRv6 global state
nv show router segment-routing srv6
# Shows enabled, locator name, SID count
IS-IS SRv6 distribution
SRv6 locators are distributed as IPv6 prefixes in IS-IS. Every switch in the fabric learns
every other switch's locator automatically — no static routes needed. When a spine switch
advertises 2001:db8:0:spine02::/64, every leaf knows how to reach spine-02 and its SIDs
become reachable.
# Verify IS-IS is advertising the SRv6 locator:
vtysh -c "show isis database detail" | grep -A5 "SRv6"
# Shows TLV 27 (SRv6 Capabilities) and TLV 267 (SRv6 Locator)
# Verify the locator prefix appears in the route table:
ip -6 route show | grep "2001:db8:0:spine"
# Each leaf switch should show routes to all spine locators