Segment Routing over IPv6 (srv6) Configuration Module
This configuration module configures SRv6 over IS-IS or BGP and can use the advertised SIDs for global and L3VPN connectivity services.
Supported SRv6 features:
Micro SIDs in F3216 format
IS-IS routing with SRv6 TLVs
Advertising SRv6 SIDs with BGP
SRv6 next hops for global IPv4/IPv6 BGP routes (Layer-3 services with SRv6)
BGP IPv4/IPv6 L3VPN over SRv6
You can use IS-IS or EBGP to advertise SRv6 SIDs[1], and use SRv6 for layer-3 services (IPv4 islands over SRv6, BGP-free core with IPv6) and IPv4/IPv6 layer-3 VPNs.
Platform Support
The following table describes the per-platform support of SRv6 features:
Device |
SRv6 with IS-IS |
SRv6 with EBGP |
Global BGP over SRv6[2] |
L3VPN over SRv6[3] |
|---|---|---|---|---|
Arrcus ArcOS |
✅ |
❌ |
❌ |
❌ |
Cisco Catalyst 8000v |
✅ |
❌ |
❌ |
✅ |
Cisco IOL |
✅ |
❌ |
❌ |
✅ |
Cisco IOL layer-2 image |
✅ |
❌ |
❌ |
✅ |
Cisco IOS XRv/XRd |
✅ |
✅ |
✅ |
✅ |
FRRouting |
✅ |
✅ |
✅ |
✅ |
Nokia SR Linux |
✅ |
❌ |
✅❗ |
❌ |
vJunos Router |
✅ |
❌ |
✅ |
✅ |
vJunos Switch |
✅ |
❌ |
✅ |
✅ |
Note
The minimum Cisco IOS/XE release with working SRv6 is release 17.16.01a.
Cisco 8000v does not support the shift-only microsegment behavior needed to interoperate with other SRv6 implementations.
When in doubt, check the SRv6 integration test results.
Configurable Global and Node Parameters
addressing.srv6_locator – global address pool[4] for allocation of SRv6 locator prefixes, the default prefix is defined in
topology.defaults.srv6.locator_pool(5F00::/16, the IANA reserved range defined by RFC9602srv6.allocate_loopback – global flag (default:
False) to replace the IPv6 loopback address of each SRv6-enabled node with an IPv6 address allocated from the locator rangesrv6.bgp – enable BGP with IPv4 and IPv6 address families over SRv6 (disabled by default, more details).
srv6.vpn – enable BGP with VPNv4 and VPNv6 address families over SRv6 (more details). BGP/SRv6 L3VPN is disabled by default.
srv6.igp – list of IGP protocols for which to enable SRv6, default
[isis]. To exchange SRv6 SIDs between autonomous systems, addebgpto srv6.igp
Node Parameters
srv6.locator: an optional IPv6 address prefix to allocate to a given SRv6 node; by default, each node is assigned a unique /48 prefix from the global pool
srv6.transit_only: an optional Boolean flag to optimize resource usage and only allocate transit behaviors, not endpoint behaviors
Configurable Layer-3 Services and L3VPN Parameters
This module provides 2 parameters that are identical in structure, controlling different BGP address families:
srv6.bgp – Controls SRv6 next hops for global IPv4 and IPv6 BGP routes
srv6.vpn – Controls VPNv4 and VPNv6 address families
Each parameter could be a boolean (True to enable both IP address families on IBGP sessions), or a dictionary of parameters:
ipv4 – enable IPv4/VPNv4 address family
ipv6 – enable IPv6/VPNv6 address family
ipv4 and ipv6 parameters could be:
Boolean value False to disable the address family within node data (overwriting global defaults)
Boolean value True to enable the address family on IBGP sessions
A string or a list of ibgp/ebgp keywords[5]
For tested examples, see the SRv6 integration tests.