SRv6 on FRRouting (FRR)¶
FRRouting is an open-source routing suite that provides SRv6 support through its zebra, IS-IS, BGP and static daemons. FRR programs the Linux kernel seg6/seg6local data plane over netlink, so it can only use the SRv6 behaviors the kernel implements.
SRv6 Support Status¶
| Feature | Status | FRR Version |
|---|---|---|
| BGP SRv6 L3VPN, VPNv6 (End.DT6) | 8.1+ | |
| BGP SRv6 L3VPN, VPNv4 (End.DT4) | 8.3+ | |
Per-VRF End.DT46 SID; SRv6 uSID (behavior usid) for BGP services | 8.5+ | |
| IS-IS SRv6 (RFC 9352): locators, End/uN and End.X/uA SIDs; static SRv6 segment routes (IPv6) | 9.1+ | |
| SRv6 static SIDs (uN, uDT4/6/46) | 10.3+ | |
| Static uA, H.Encaps.Red (staticd and BGP), PSP flavor (End only), IPv4 static segment routes | 10.4+ | |
| Multiple SRv6 locators / locator per VRF | 10.5+ | |
| MPLS and SRv6 coexistence on the same L3VRF | 10.5+ | |
| Global (default-VRF) IPv4/IPv6 unicast over SRv6 core (RFC 9252) | 10.6+ | |
| BGP-LS (RFC 9552) with SRv6 extensions (RFC 9514) | 10.7+ | |
| Shared uDT46 SID for the global table | 10.7+ | |
| EVPN over SRv6 | L3 EVPN (RT5) merged for 10.8, not yet released | |
| SRv6 TI-LFA, SRv6 Flex-Algo | isisd TI-LFA and Flex-Algo are SR-MPLS only | |
| OSPFv3 SRv6, PCEP / SR policies for SRv6 | ospf6d has no SRv6; pathd is MPLS-based |
FRR's SRv6 history starts in 8.1 (zebra SRv6 locator manager and BGP L3VPN for VPNv6). VPNv4 followed in 8.3 and uSID in 8.5 (behavior usid locators, PR #12219); IS-IS learned SRv6 in 9.1. 10.3 (March 2025) added static SRv6 SIDs, 10.4 (July 2025) static uA, H.Encaps.Red and the PSP flavor, and 10.5 (November 2025) multiple-locator support, per-VRF locator selection, and MPLS/SRv6 coexistence for migration scenarios. Release 10.6 also added IPv6 VTEPs for EVPN, but that is EVPN over VXLAN, not SRv6. The SRv6 Support Matrix compares FRR with the kernel and vendor routers behavior by behavior.
FRR 10.6 (March 2026) extends SRv6 beyond VPNs: BGP can now carry global IPv4 and IPv6 unicast over an SRv6 core in the default VRF, the "Global IPv4/IPv6 over SRv6 Core" services of RFC 9252. Per the implementing pull request, the default-VRF service uses DT4/DT6 SIDs and requires the sr0 interface to install the DT routes because of a kernel limitation.
FRR 10.7 (July 2026) brings FRR into controller-driven SRv6 TE: it adds BGP-LS (RFC 9552) with the SRv6 extensions of RFC 9514 — SRv6 Capabilities and Locator TLVs, SRv6 SID NLRI for End, End.X and LAN End.X SIDs, and the Endpoint Behavior and SID Structure TLVs. Static SRv6 SIDs configured in zebra can be exported into BGP-LS so a TE controller sees them. The 10.7 changelog also adds a single uDT46 SID for the global table as an alternative to separate uDT4/uDT6 SIDs.
Global table over SRv6 (10.6+)¶
router bgp 65001
segment-routing srv6
locator MAIN
exit
neighbor 2001:db8::2 remote-as 65001
!
address-family ipv6 unicast
sid export auto
neighbor 2001:db8::2 activate
neighbor 2001:db8::2 encapsulation-srv6
exit-address-family
sid export (default VRF only) allocates the global-table service SID; compare sid vpn export for L3VPN. encapsulation-srv6 makes BGP attach the Prefix-SID attribute toward that neighbor (encapsulation-srv6-relax sends routes with and without it). Command names are from the FRR 10.6 BGP user guide — check the docs for your release before deploying.
Configuration Example¶
! Enable SRv6 in IS-IS
router isis CORE
segment-routing srv6
locator MAIN
exit
! Define SRv6 locator
segment-routing
srv6
locators
locator MAIN
prefix fc00:0:1::/48 block-len 32 node-len 16 func-bits 16
exit
exit
exit
Further Reading¶
- SRv6 Support Matrix - FRR next to the Linux kernel and vendor implementations
- Linux Kernel - Data plane for FRR
- Containerlab - FRR + Linux labs
References¶
- FRRouting User Guide - Official FRR documentation portal with SRv6 configuration guides
- FRRouting ISIS Documentation - IS-IS daemon docs covering SRv6 locator and SID advertisement
- FRRouting GitHub Repository - Source code and releases for the FRRouting project
- Add Support for SRv6 IPv4 L3VPN - FRR PR #9649 - Pull request adding SRv6 VPNv4 support to FRR
- Add Support for SRv6 uSID Behaviors - FRR PR #12219 - Pull request adding SRv6 micro-SID behavior support
- FRR 10.3 Release Notes - Adds SRv6 static SIDs
- FRR 10.4.0 Release Notes - Adds static uA, H.Encaps.Red and the PSP flavor
- FRR 10.5.0 Release Notes - Adds multiple SRv6 locators, per-VRF locator selection, and MPLS/SRv6 coexistence
- FRR 10.6.0 Release Notes - Adds global (default-VRF) IPv4/IPv6 unicast over an SRv6 core
- bgpd: add SRv6 unicast at default VRF - FRR PR #19496 - Implementation notes for the global-table SRv6 service (DT4/DT6,
sr0requirement) - FRR 10.7.0 Release Notes - Adds BGP-LS SRv6 extensions and export of static SRv6 SIDs into BGP-LS
- FRR 10.7.0 GitHub Release - Full changelog including base BGP-LS (RFC 9552) and global-table uDT46 SIDs
- FRR 10.6 BGP User Guide - Global IPv4/6 SRv6 configuration -
segment-routing srv6andsid exportcommands - FRR 9.1 Release Notes - IS-IS SRv6 uSID support (RFC 9352)
- FRR 8.5 Release Notes - SRv6 uSID implementation and per-VRF SIDs
- FRR 8.1 BGP documentation: L3VPN SRv6 - First release with BGP SRv6 L3VPN