This post describes the ISIS Segment Routing IPv6 (SRv6) with FRR (FRRouting) and Ubuntu (WSL).
![](http://192.168.1.62/wp-content/uploads/2024/01/Screenshot-2023-07-28-021404-1024x482.png)
Code repositories
Credits:
Code authours: Carmine Scarpitta and Dmytro Shytyi.
[PART1] SRv6 multiple segs SIDs series of patches
[PART2] ISIS SRv6 series of patches
I would like to thank for a review: @cscarpitta @pushpasis @donaldsharp @routingrocks and @riw777.
Linux support
Ubuntu 22.04 within WSL was used for the testbed with kernel that has activated LW_TUNNELs (CONFIG_IPV6_SEG6_LWTUNNEL)
0root@munet:/# uname -a
1Linux munet 5.15.90.4-microsoft-standard-WSL2+ #1 SMP Fri Jul 28 00:56:47 CEST 2023 x86_64 x86_64 x86_64 GNU/Linux
Consider to activate Sysfs variable such as “Seg6 seg6_enabled” and/or “sysctl -w net.ipv6.conf.all.forwarding=1”.
FRR configuration
r1:
ipv6 route 2001:db8::/64 r1-r4 segs fc00:0:6::/fc00:0:5::/fc00:0:4::
!
interface lo
ip address 1.1.1.1/32
ip router isis 1
ipv6 address fc00:0:1::1/128
ipv6 router isis 1
isis passive
exit
!
interface r1-r2
ip address 10.0.1.1/24
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
exit
!
interface r1-r4
ip address 10.0.4.1/24
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
exit
!
router isis 1
is-type level-1
net 49.0000.0000.0000.0001.00
lsp-timers gen-interval 2 refresh-interval 900 max-lifetime 1200
topology ipv6-unicast
segment-routing srv6
locator loc1
exit
!
segment-routing
srv6
locators
locator loc1
prefix fc00:0:1::/48 block-len 32 node-len 16 func-bits 16
exit
!
exit
!
exit
!
exit
!
end
r2:
interface lo
ip address 2.2.2.2/32
ip router isis 1
ipv6 address fc00:0:2::1/128
ipv6 router isis 1
isis passive
exit
!
interface r2-r1
ip address 10.0.1.2/24
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3 exit ! interface r2-r3 ip address 10.0.2.2/24 ip router isis 1 ipv6 router isis 1 isis hello-multiplier 3 exit ! router isis 1 is-type level-1 net 49.0000.0000.0000.0002.00 lsp-timers gen-interval 2 refresh-interval 900 max-lifetime 1200 topology ipv6-unicast segment-routing srv6 locator loc1 exit ! segment-routing srv6 locators locator loc1 prefix fc00:0:2::/48 block-len 32 node-len 16 func-bits 16 exit ! exit ! exit ! exit ! end
r7:
!
interface lo
ip address 7.7.7.7/32
ip router isis 1
ipv6 address fc00:0:7::1/128
ipv6 router isis 1
isis passive
exit
!
interface r7-r3
ip address 10.0.3.7/24
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
exit
!
interface r7-r6
ip address 10.0.7.7/24
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
exit
!
router isis 1
is-type level-1
net 49.0000.0000.0000.0007.00
lsp-timers gen-interval 2 refresh-interval 900 max-lifetime 1200
topology ipv6-unicast
segment-routing srv6
locator loc1
exit
!
segment-routing
srv6
locators
locator loc1
prefix fc00:0:7::/48 block-len 32 node-len 16 func-bits 16
exit
!
exit
!
exit
!
exit
!
end
Display SRv6 route on r1
FRR:
r1# show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, T - Table, v - VNC,
V - VNC-Direct, A - Babel, F - PBR, f - OpenFabric,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
S>* 2001:db8::/64 [1/0] is directly connected, r1-r4, seg6 fc00:0:6::,fc00:0:5::,fc00:0:4::, weight 1, 01:52:08
[..]
iproute2:
root@r1:/# ip -6 route
2001:db8::/64 nhid 41 encap seg6 mode encap segs 3 [ fc00:0:4:: fc00:0:5:: fc00:0:6:: ] dev r1-r4 proto 196 metric 20 pref medium
Display ISIS SRv6 seg6local behavior on R2
The same seg6local behavior is bootstrapped on r3, r4, r5, r6, r7 nodes.
r2 router:
r2# show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, T - Table, v - VNC,
V - VNC-Direct, A - Babel, F - PBR, f - OpenFabric,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
[..]
I>* fc00:0:2::/128 [115/0] is directly connected, sr0, seg6local End USP, weight 1, 02:34:25
r5 router:
r5# show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, T - Table, v - VNC,
V - VNC-Direct, A - Babel, F - PBR, f - OpenFabric,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
[..]
I>* fc00:0:5::/128 [115/0] is directly connected, sr0, seg6local End USP, weight 1, 02:37:17
Testbed consoles presented with routers indexes
![](http://192.168.1.62/wp-content/uploads/2024/01/Screenshot-2023-07-28-020617.png)
This figure is related to the network topology presented in the top of article. This figure describes router placement that doesn’t change in future figures.
Testbed – echo request/reply based on ISIS SPF (RED Line in the first figure)
![](http://192.168.1.62/wp-content/uploads/2024/01/Screenshot-2023-07-28-020856.png)
This figure is related to the network topology presented in the top of article. This figure describes the echo “request”/”reply” process in regular setup. Echo request is sent via SPF (r1-r2-r3-r7) – red line in the first figure. Echo reply is returned in vise-versa manner.
Testbed – echo request/reply based with SRv6 features (Blue SRv6 Low-Latency tunnel)
This figure is related to the network topology presented in the top of article. This figure describes the echo “request”/”reply” process witch SRv6 features.
Echo request is sent via the low-latency path (r1-r4-r5-r6-r7) using the SRv6 route and returned by regular path (r7-r3-r2-r1).
![](http://192.168.1.62/wp-content/uploads/2024/01/Screenshot-2023-07-28-021249.png)
Thank your for reading!