Merge pull request #15679 from cscarpitta/test-srv6-sid-manager

tests: Add topotest to validate the sharing of an SRv6 locator among multiple protocols
This commit is contained in:
Russ White 2024-09-08 15:09:50 -04:00 committed by GitHub
commit 80d3a2b120
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
67 changed files with 6519 additions and 0 deletions

View File

@ -0,0 +1,8 @@
frr defaults traditional
!
hostname ce1
password zebra
!
log stdout notifications
log commands
log file bgpd.log

View File

@ -0,0 +1,58 @@
{
"::/0": [
{
"prefix": "::/0",
"protocol": "static",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 1,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 73,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"ip": "2001:1::1",
"afi": "ipv6",
"interfaceName": "eth-rt1",
"active": true,
"weight": 1
}
]
}
],
"2001:1::/64": [
{
"prefix": "2001:1::/64",
"protocol": "connected",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-rt1",
"active": true
}
]
}
]
}

View File

@ -0,0 +1,14 @@
log file zebra.log
!
hostname ce1
!
interface eth-rt1
ipv6 address 2001:1::2/64
!
ip forwarding
ipv6 forwarding
!
ipv6 route ::/0 2001:1::1
!
line vty
!

View File

@ -0,0 +1,8 @@
frr defaults traditional
!
hostname ce2
password zebra
!
log stdout notifications
log commands
log file bgpd.log

View File

@ -0,0 +1,58 @@
{
"::/0": [
{
"prefix": "::/0",
"protocol": "static",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 1,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 73,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"ip": "2001:2::1",
"afi": "ipv6",
"interfaceName": "eth-rt6",
"active": true,
"weight": 1
}
]
}
],
"2001:2::/64": [
{
"prefix": "2001:2::/64",
"protocol": "connected",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-rt6",
"active": true
}
]
}
]
}

View File

@ -0,0 +1,14 @@
log file zebra.log
!
hostname ce2
!
interface eth-rt6
ipv6 address 2001:2::2/64
!
ip forwarding
ipv6 forwarding
!
ipv6 route ::/0 2001:2::1
!
line vty
!

View File

@ -0,0 +1,8 @@
frr defaults traditional
!
hostname ce3
password zebra
!
log stdout notifications
log commands
log file bgpd.log

View File

@ -0,0 +1,58 @@
{
"::/0": [
{
"prefix": "::/0",
"protocol": "static",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 1,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 73,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"ip": "2001:3::1",
"afi": "ipv6",
"interfaceName": "eth-rt1",
"active": true,
"weight": 1
}
]
}
],
"2001:3::/64": [
{
"prefix": "2001:3::/64",
"protocol": "connected",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-rt1",
"active": true
}
]
}
]
}

View File

@ -0,0 +1,14 @@
log file zebra.log
!
hostname ce3
!
interface eth-rt1
ipv6 address 2001:3::2/64
!
ip forwarding
ipv6 forwarding
!
ipv6 route ::/0 2001:3::1
!
line vty
!

View File

@ -0,0 +1,8 @@
frr defaults traditional
!
hostname ce4
password zebra
!
log stdout notifications
log commands
log file bgpd.log

View File

@ -0,0 +1,58 @@
{
"::/0": [
{
"prefix": "::/0",
"protocol": "static",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 1,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 73,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"ip": "2001:4::1",
"afi": "ipv6",
"interfaceName": "eth-rt6",
"active": true,
"weight": 1
}
]
}
],
"2001:4::/64": [
{
"prefix": "2001:4::/64",
"protocol": "connected",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-rt6",
"active": true
}
]
}
]
}

View File

@ -0,0 +1,14 @@
log file zebra.log
!
hostname ce4
!
interface eth-rt6
ipv6 address 2001:4::2/64
!
ip forwarding
ipv6 forwarding
!
ipv6 route ::/0 2001:4::1
!
line vty
!

View File

@ -0,0 +1,8 @@
frr defaults traditional
!
hostname ce5
password zebra
!
log stdout notifications
log commands
log file bgpd.log

View File

@ -0,0 +1,58 @@
{
"::/0": [
{
"prefix": "::/0",
"protocol": "static",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 1,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 73,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"ip": "2001:5::1",
"afi": "ipv6",
"interfaceName": "eth-rt1",
"active": true,
"weight": 1
}
]
}
],
"2001:5::/64": [
{
"prefix": "2001:5::/64",
"protocol": "connected",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-rt1",
"active": true
}
]
}
]
}

View File

@ -0,0 +1,14 @@
log file zebra.log
!
hostname ce5
!
interface eth-rt1
ipv6 address 2001:5::2/64
!
ip forwarding
ipv6 forwarding
!
ipv6 route ::/0 2001:5::1
!
line vty
!

View File

@ -0,0 +1,8 @@
frr defaults traditional
!
hostname ce6
password zebra
!
log stdout notifications
log commands
log file bgpd.log

View File

@ -0,0 +1,58 @@
{
"::/0": [
{
"prefix": "::/0",
"protocol": "static",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 1,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 73,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"ip": "2001:6::1",
"afi": "ipv6",
"interfaceName": "eth-rt6",
"active": true,
"weight": 1
}
]
}
],
"2001:6::/64": [
{
"prefix": "2001:6::/64",
"protocol": "connected",
"vrfId": 0,
"vrfName": "default",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 254,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-rt6",
"active": true
}
]
}
]
}

View File

@ -0,0 +1,14 @@
log file zebra.log
!
hostname ce6
!
interface eth-rt6
ipv6 address 2001:6::2/64
!
ip forwarding
ipv6 forwarding
!
ipv6 route ::/0 2001:6::1
!
line vty
!

View File

@ -0,0 +1,22 @@
log file zebra.log
!
hostname dst
!
! debug zebra kernel
! debug zebra packet
! debug zebra mpls
!
interface lo
ip address 9.9.9.2/32
ipv6 address fc00:0:9::1/128
!
interface eth-rt6
ip address 10.0.10.2/24
ipv6 address 2001:db8:10::2/64
!
ip forwarding
!
ip route 2001:db8:1::1 2001:db8:10::1
!
line vty
!

View File

@ -0,0 +1,67 @@
frr defaults traditional
!
bgp send-extra-data zebra
!
hostname rt1
password zebra
!
log stdout notifications
log monitor notifications
log commands
!
!debug bgp neighbor-events
!debug bgp zebra
!debug bgp vnc verbose
!debug bgp update-groups
!debug bgp updates in
!debug bgp updates out
!debug bgp vpn label
!debug bgp vpn leak-from-vrf
!debug bgp vpn leak-to-vrf
!debug bgp vpn rmap-event
!
router bgp 1
bgp router-id 1.1.1.1
no bgp ebgp-requires-policy
no bgp default ipv4-unicast
neighbor fc00:0:6::1 remote-as 6
neighbor fc00:0:6::1 timers 3 10
neighbor fc00:0:6::1 timers connect 1
neighbor fc00:0:6::1 ttl-security hops 20
!
address-family ipv6 vpn
neighbor fc00:0:6::1 activate
exit-address-family
!
segment-routing srv6
locator loc1
!
!
router bgp 1 vrf vrf10
bgp router-id 1.1.1.1
no bgp ebgp-requires-policy
no bgp default ipv4-unicast
!
address-family ipv6 unicast
sid vpn export 65024
rd vpn export 1:10
rt vpn both 99:99
import vpn
export vpn
redistribute connected
exit-address-family
!
router bgp 1 vrf vrf20
bgp router-id 1.1.1.1
no bgp ebgp-requires-policy
no bgp default ipv4-unicast
!
address-family ipv6 unicast
sid vpn export 65025
rd vpn export 1:20
rt vpn both 88:88
import vpn
export vpn
redistribute connected
exit-address-family
!

View File

@ -0,0 +1,35 @@
password 1
hostname rt1
log file isisd.log
!
! debug isis events
! debug isis route-events
! debug isis spf-events
! debug isis sr-events
! debug isis lsp-gen
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-sw1
ip router isis 1
ipv6 router isis 1
isis hello-interval 1
isis hello-multiplier 10
!
router isis 1
lsp-gen-interval 2
net 49.0000.0000.0000.0001.00
is-type level-1
topology ipv6-unicast
segment-routing srv6
locator loc1
node-msd
max-segs-left 3
max-end-pop 3
max-h-encaps 2
max-end-d 5
interface sr0
!

View File

@ -0,0 +1,276 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,314 @@
{
"fc00:0:2::1\/128":[
{
"prefix":"fc00:0:2::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:3::1\/128":[
{
"prefix":"fc00:0:3::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:4::1\/128":[
{
"prefix":"fc00:0:4::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:5::1\/128":[
{
"prefix":"fc00:0:5::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:6::1\/128":[
{
"prefix":"fc00:0:6::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:2::\/48":[
{
"prefix":"fc00:0:2::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:3::\/48":[
{
"prefix":"fc00:0:3::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:4::\/48":[
{
"prefix":"fc00:0:4::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:5::\/48":[
{
"prefix":"fc00:0:5::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:6::\/48":[
{
"prefix":"fc00:0:6::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:1::\/48":[
{
"prefix":"fc00:0:1::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"sr0",
"active":true,
"seg6local":{
"action":"End"
}
}
]
}
],
"fc00:0:1:e000::\/64":[
{
"prefix":"fc00:0:1:e000::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"eth-sw1",
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:1:e001::\/64":[
{
"prefix":"fc00:0:1:e001::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"eth-sw1",
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:1:fe00::\/128":[
{
"prefix":"fc00:0:1:fe00::\/128",
"protocol":"bgp",
"selected":true,
"destSelected":true,
"distance":20,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"vrf10",
"active":true,
"seg6local":{
"action":"End.DT6"
}
}
]
}
],
"fc00:0:1:fe01::\/128":[
{
"prefix":"fc00:0:1:fe01::\/128",
"protocol":"bgp",
"selected":true,
"destSelected":true,
"distance":20,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"vrf20",
"active":true,
"seg6local":{
"action":"End.DT6"
}
}
]
}
]
}

View File

@ -0,0 +1,15 @@
{
"locators":[
{
"name":"loc1",
"prefix":"fc00:0:1::/48",
"blockBitsLength":32,
"nodeBitsLength":16,
"functionBitsLength":16,
"argumentBitsLength":0,
"statusUp":true,
"chunks":[
]
}
]
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"hold-timer": 10,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"hold-timer": 10,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
}
]
}
}

View File

@ -0,0 +1,169 @@
{
"vrfId": 0,
"vrfName": "default",
"routerId": "1.1.1.1",
"defaultLocPrf": 100,
"localAS": 1,
"routes": {
"routeDistinguishers": {
"1:10": {
"2001:1::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:1::",
"prefixLen": 64,
"network": "2001:1::/64",
"metric": 0,
"weight": 32768,
"peerId": "(unspec)",
"path": "",
"origin": "incomplete",
"announceNexthopSelf": true,
"nhVrfName": "vrf10",
"nexthops": [
{
"ip": "::",
"hostname": "rt1",
"afi": "ipv6",
"used": true
}
]
}
],
"2001:3::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:3::",
"prefixLen": 64,
"network": "2001:3::/64",
"metric": 0,
"weight": 32768,
"peerId": "(unspec)",
"path": "",
"origin": "incomplete",
"announceNexthopSelf": true,
"nhVrfName": "vrf10",
"nexthops": [
{
"ip": "::",
"hostname": "rt1",
"afi": "ipv6",
"used": true
}
]
}
]
},
"1:20": {
"2001:5::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:5::",
"prefixLen": 64,
"network": "2001:5::/64",
"metric": 0,
"weight": 32768,
"peerId": "(unspec)",
"path": "",
"origin": "incomplete",
"announceNexthopSelf": true,
"nhVrfName": "vrf20",
"nexthops": [
{
"ip": "::",
"hostname": "rt1",
"afi": "ipv6",
"used": true
}
]
}
]
},
"6:10": {
"2001:2::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:2::",
"prefixLen": 64,
"network": "2001:2::/64",
"metric": 0,
"weight": 0,
"peerId": "fc00:0:6::1",
"path": "6",
"origin": "incomplete",
"nexthops": [
{
"ip": "fc00:0:6::1",
"hostname": "rt6",
"afi": "ipv6",
"used": true
}
]
}
]
},
"6:20": {
"2001:4::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:4::",
"prefixLen": 64,
"network": "2001:4::/64",
"metric": 0,
"weight": 0,
"peerId": "fc00:0:6::1",
"path": "6",
"origin": "incomplete",
"nexthops": [
{
"ip": "fc00:0:6::1",
"hostname": "rt6",
"afi": "ipv6",
"used": true
}
]
}
],
"2001:6::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:6::",
"prefixLen": 64,
"network": "2001:6::/64",
"metric": 0,
"weight": 0,
"peerId": "fc00:0:6::1",
"path": "6",
"origin": "incomplete",
"nexthops": [
{
"ip": "fc00:0:6::1",
"hostname": "rt6",
"afi": "ipv6",
"used": true
}
]
}
]
}
}
}
}

View File

@ -0,0 +1,86 @@
{
"2001:1::/64": [
{
"prefix": "2001:1::/64",
"protocol": "connected",
"vrfName": "vrf10",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 10,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-ce1",
"active": true
}
]
}
],
"2001:2::/64": [
{
"prefix": "2001:2::/64",
"protocol": "bgp",
"vrfName": "vrf10",
"selected": true,
"destSelected": true,
"distance": 20,
"metric": 0,
"installed": true,
"table": 10,
"internalStatus": 16,
"internalFlags": 9,
"internalNextHopNum": 3,
"internalNextHopActiveNum": 3,
"nexthops": [
{
"flags": 3,
"fib": true,
"afi": "ipv6",
"interfaceName": "eth-sw1",
"vrf": "default",
"active": true,
"weight": 1,
"seg6": {
"segs": "fc00:0:6:fe00::"
}
}
],
"asPath": "6"
}
],
"2001:3::/64": [
{
"prefix": "2001:3::/64",
"protocol": "connected",
"vrfName": "vrf10",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 10,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-ce3",
"active": true
}
]
}
]
}

View File

@ -0,0 +1,92 @@
{
"2001:4::/64": [
{
"prefix": "2001:4::/64",
"protocol": "bgp",
"vrfName": "vrf20",
"selected": true,
"destSelected": true,
"distance": 20,
"metric": 0,
"installed": true,
"table": 20,
"internalStatus": 16,
"internalFlags": 9,
"internalNextHopNum": 3,
"internalNextHopActiveNum": 3,
"nexthops": [
{
"flags": 3,
"fib": true,
"afi": "ipv6",
"interfaceName": "eth-sw1",
"vrf": "default",
"active": true,
"weight": 1,
"seg6": {
"segs": "fc00:0:6:fe01::"
}
}
],
"asPath": "6"
}
],
"2001:5::/64": [
{
"prefix": "2001:5::/64",
"protocol": "connected",
"vrfName": "vrf20",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 20,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-ce5",
"active": true
}
]
}
],
"2001:6::/64": [
{
"prefix": "2001:6::/64",
"protocol": "bgp",
"vrfName": "vrf20",
"selected": true,
"destSelected": true,
"distance": 20,
"metric": 0,
"installed": true,
"table": 20,
"internalStatus": 16,
"internalFlags": 9,
"internalNextHopNum": 3,
"internalNextHopActiveNum": 3,
"nexthops": [
{
"flags": 3,
"fib": true,
"afi": "ipv6",
"interfaceName": "eth-sw1",
"vrf": "default",
"active": true,
"weight": 1,
"seg6": {
"segs": "fc00:0:6:fe01::"
}
}
],
"asPath": "6"
}
]
}

View File

@ -0,0 +1,37 @@
log file zebra.log
!
hostname rt1
!
! debug zebra kernel
! debug zebra packet
!
interface lo
ip address 1.1.1.1/32
ipv6 address fc00:0:1::1/128
!
interface eth-sw1
ip address 10.0.1.1/24
ipv6 address 2001:db8:1::1/64
!
interface eth-ce1 vrf vrf10
ipv6 address 2001:1::1/64
!
interface eth-ce3 vrf vrf10
ipv6 address 2001:3::1/64
!
interface eth-ce5 vrf vrf20
ipv6 address 2001:5::1/64
!
segment-routing
srv6
locators
locator loc1
prefix fc00:0:1::/48
format usid-f3216
!
!
!
ip forwarding
!
line vty
!

View File

@ -0,0 +1,48 @@
hostname rt2
log file isisd.log
!
! debug isis events
! debug isis route-events
! debug isis spf-events
! debug isis sr-events
! debug isis lsp-gen
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-sw1
ip router isis 1
ipv6 router isis 1
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt4-1
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt4-2
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
router isis 1
lsp-gen-interval 2
net 49.0000.0000.0000.0002.00
is-type level-1
topology ipv6-unicast
segment-routing srv6
locator loc1
node-msd
max-segs-left 3
max-end-pop 3
max-h-encaps 2
max-end-d 5
interface sr0
!

View File

@ -0,0 +1,320 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1"
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2"
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,346 @@
{
"fc00:0:1::1\/128":[
{
"prefix":"fc00:0:1::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:3::1\/128":[
{
"prefix":"fc00:0:3::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:4::1\/128":[
{
"prefix":"fc00:0:4::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"fc00:0:5::1\/128":[
{
"prefix":"fc00:0:5::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:6::1\/128":[
{
"prefix":"fc00:0:6::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"fc00:0:1::\/48":[
{
"prefix":"fc00:0:1::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:3::\/48":[
{
"prefix":"fc00:0:3::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:4::\/48":[
{
"prefix":"fc00:0:4::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"fc00:0:5::\/48":[
{
"prefix":"fc00:0:5::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:6::\/48":[
{
"prefix":"fc00:0:6::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"fc00:0:2::\/48":[
{
"prefix":"fc00:0:2::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"sr0",
"active":true,
"seg6local":{
"action":"End"
}
}
]
}
],
"fc00:0:2:e000::\/64":[
{
"prefix":"fc00:0:2:e000::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:2:e001::\/64":[
{
"prefix":"fc00:0:2:e001::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:2:e002::\/64":[
{
"prefix":"fc00:0:2:e002::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:2:e003::\/64":[
{
"prefix":"fc00:0:2:e003::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
]
}

View File

@ -0,0 +1,15 @@
{
"locators":[
{
"name":"loc1",
"prefix":"fc00:0:2::/48",
"blockBitsLength":32,
"nodeBitsLength":16,
"functionBitsLength":16,
"argumentBitsLength":0,
"statusUp":true,
"chunks":[
]
}
]
}

View File

@ -0,0 +1,70 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt4-1",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-rt4-2",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-sw1",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"hold-timer": 10,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0001",
"hold-timer": 10,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
}
]
}
}

View File

@ -0,0 +1,34 @@
log file zebra.log
!
hostname rt2
!
! debug zebra kernel
! debug zebra packet
!
interface lo
ip address 2.2.2.2/32
ipv6 address fc00:0:2::1/128
!
interface eth-sw1
ip address 10.0.1.2/24
ipv6 address 2001:db8:1::2/64
!
interface eth-rt4-1
ip address 10.0.2.2/24
!
interface eth-rt4-2
ip address 10.0.3.2/24
!
segment-routing
srv6
locators
locator loc1
prefix fc00:0:2::/48
format usid-f3216
!
!
!
ip forwarding
!
line vty
!

View File

@ -0,0 +1,48 @@
hostname rt3
log file isisd.log
!
! debug isis events
! debug isis route-events
! debug isis spf-events
! debug isis sr-events
! debug isis lsp-gen
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-sw1
ip router isis 1
ipv6 router isis 1
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt5-1
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt5-2
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
router isis 1
lsp-gen-interval 2
net 49.0000.0000.0000.0003.00
is-type level-1
topology ipv6-unicast
segment-routing srv6
locator loc1
node-msd
max-segs-left 3
max-end-pop 3
max-h-encaps 2
max-end-d 5
interface sr0
!

View File

@ -0,0 +1,320 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.4.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"ip":"10.0.5.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.4.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"ip":"10.0.5.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.4.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"ip":"10.0.5.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.4.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-1"
},
{
"ip":"10.0.5.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.4.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"ip":"10.0.5.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-2"
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.4.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"ip":"10.0.5.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.4.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"ip":"10.0.5.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.4.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"ip":"10.0.5.5",
"afi":"ipv4",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,346 @@
{
"fc00:0:1::1\/128":[
{
"prefix":"fc00:0:1::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:2::1\/128":[
{
"prefix":"fc00:0:2::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:4::1\/128":[
{
"prefix":"fc00:0:4::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"fc00:0:5::1\/128":[
{
"prefix":"fc00:0:5::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"fc00:0:6::1\/128":[
{
"prefix":"fc00:0:6::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"fc00:0:1::\/48":[
{
"prefix":"fc00:0:1::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:2::\/48":[
{
"prefix":"fc00:0:2::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"fc00:0:4::\/48":[
{
"prefix":"fc00:0:4::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"fc00:0:5::\/48":[
{
"prefix":"fc00:0:5::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"fc00:0:6::\/48":[
{
"prefix":"fc00:0:6::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5-2",
"active":true
}
]
}
],
"fc00:0:3::\/48":[
{
"prefix":"fc00:0:3::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"sr0",
"active":true,
"seg6local":{
"action":"End"
}
}
]
}
],
"fc00:0:3:e000::\/64":[
{
"prefix":"fc00:0:3:e000::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:3:e001::\/64":[
{
"prefix":"fc00:0:3:e001::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:3:e002::\/64":[
{
"prefix":"fc00:0:3:e002::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:3:e003::\/64":[
{
"prefix":"fc00:0:3:e003::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
]
}

View File

@ -0,0 +1,15 @@
{
"locators":[
{
"name":"loc1",
"prefix":"fc00:0:3::/48",
"blockBitsLength":32,
"nodeBitsLength":16,
"functionBitsLength":16,
"argumentBitsLength":0,
"statusUp":true,
"chunks":[
]
}
]
}

View File

@ -0,0 +1,70 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt5-1",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0005",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-rt5-2",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0005",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-sw1",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0001",
"hold-timer": 10,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"hold-timer": 10,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
}
]
}
}

View File

@ -0,0 +1,33 @@
log file zebra.log
!
hostname rt3
!
! debug zebra kernel
! debug zebra packet
!
interface lo
ip address 3.3.3.3/32
ipv6 address fc00:0:3::1/128
!
interface eth-sw1
ip address 10.0.1.3/24
!
interface eth-rt5-1
ip address 10.0.4.3/24
!
interface eth-rt5-2
ip address 10.0.5.3/24
!
segment-routing
srv6
locators
locator loc1
prefix fc00:0:3::/48
format usid-f3216
!
!
!
ip forwarding
!
line vty
!

View File

@ -0,0 +1,56 @@
hostname rt4
log file isisd.log
!
! debug isis events
! debug isis route-events
! debug isis spf-events
! debug isis sr-events
! debug isis lsp-gen
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-rt2-1
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt2-2
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt5
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt6
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
router isis 1
lsp-gen-interval 2
net 49.0000.0000.0000.0004.00
is-type level-1
topology ipv6-unicast
segment-routing srv6
locator loc1
node-msd
max-segs-left 3
max-end-pop 3
max-h-encaps 2
max-end-d 5
interface sr0
!

View File

@ -0,0 +1,296 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-2",
"active":true
}
]
}
],
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-2",
"active":true
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-2",
"active":true
},
{
"fib":true,
"ip":"10.0.6.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.6.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.7.6",
"afi":"ipv4",
"interfaceName":"eth-rt6",
"active":true
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-2",
"active":true
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-1"
},
{
"ip":"10.0.3.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-2",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"ip":"10.0.3.2",
"afi":"ipv4",
"interfaceName":"eth-rt2-2"
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.6.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.6.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.6.5",
"afi":"ipv4",
"interfaceName":"eth-rt5"
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.7.6",
"afi":"ipv4",
"interfaceName":"eth-rt6"
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.6.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
},
{
"fib":true,
"ip":"10.0.7.6",
"afi":"ipv4",
"interfaceName":"eth-rt6",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,346 @@
{
"fc00:0:1::1\/128":[
{
"prefix":"fc00:0:1::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-2",
"active":true
}
]
}
],
"fc00:0:2::1\/128":[
{
"prefix":"fc00:0:2::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-2",
"active":true
}
]
}
],
"fc00:0:3::1\/128":[
{
"prefix":"fc00:0:3::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-2",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"fc00:0:5::1\/128":[
{
"prefix":"fc00:0:5::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"fc00:0:6::1\/128":[
{
"prefix":"fc00:0:6::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt6",
"active":true
}
]
}
],
"fc00:0:1::\/48":[
{
"prefix":"fc00:0:1::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-2",
"active":true
}
]
}
],
"fc00:0:2::\/48":[
{
"prefix":"fc00:0:2::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-2",
"active":true
}
]
}
],
"fc00:0:3::\/48":[
{
"prefix":"fc00:0:3::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt2-2",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"fc00:0:5::\/48":[
{
"prefix":"fc00:0:5::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"fc00:0:6::\/48":[
{
"prefix":"fc00:0:6::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt6",
"active":true
}
]
}
],
"fc00:0:4::\/48":[
{
"prefix":"fc00:0:4::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"sr0",
"active":true,
"seg6local":{
"action":"End"
}
}
]
}
],
"fc00:0:4:e000::\/64":[
{
"prefix":"fc00:0:4:e000::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:4:e001::\/64":[
{
"prefix":"fc00:0:4:e001::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:4:e002::\/64":[
{
"prefix":"fc00:0:4:e002::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:4:e003::\/64":[
{
"prefix":"fc00:0:4:e003::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
]
}

View File

@ -0,0 +1,15 @@
{
"locators":[
{
"name":"loc1",
"prefix":"fc00:0:4::/48",
"blockBitsLength":32,
"nodeBitsLength":16,
"functionBitsLength":16,
"argumentBitsLength":0,
"statusUp":true,
"chunks":[
]
}
]
}

View File

@ -0,0 +1,82 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt2-1",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-rt2-2",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-rt5",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0005",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-rt6",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0006",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
}
]
}
}

View File

@ -0,0 +1,36 @@
log file zebra.log
!
hostname rt4
!
! debug zebra kernel
! debug zebra packet
!
interface lo
ip address 4.4.4.4/32
ipv6 address fc00:0:4::1/128
!
interface eth-rt2-1
ip address 10.0.2.4/24
!
interface eth-rt2-2
ip address 10.0.3.4/24
!
interface eth-rt5
ip address 10.0.6.4/24
!
interface eth-rt6
ip address 10.0.7.4/24
!
segment-routing
srv6
locators
locator loc1
prefix fc00:0:4::/48
format usid-f3216
!
!
!
ip forwarding
!
line vty
!

View File

@ -0,0 +1,56 @@
hostname rt5
log file isisd.log
!
! debug isis events
! debug isis route-events
! debug isis spf-events
! debug isis sr-events
! debug isis lsp-gen
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-rt3-1
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt3-2
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt4
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt6
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
router isis 1
lsp-gen-interval 2
net 49.0000.0000.0000.0005.00
is-type level-1
topology ipv6-unicast
segment-routing srv6
locator loc1
node-msd
max-segs-left 3
max-end-pop 3
max-h-encaps 2
max-end-d 5
interface sr0
!

View File

@ -0,0 +1,296 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.4.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-1",
"active":true
},
{
"fib":true,
"ip":"10.0.5.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-2",
"active":true
}
]
}
],
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.4.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-1",
"active":true
},
{
"fib":true,
"ip":"10.0.5.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-2",
"active":true
},
{
"fib":true,
"ip":"10.0.6.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.4.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-1",
"active":true
},
{
"fib":true,
"ip":"10.0.5.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-2",
"active":true
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.6.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.8.6",
"afi":"ipv4",
"interfaceName":"eth-rt6",
"active":true
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.4.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-1",
"active":true
},
{
"fib":true,
"ip":"10.0.5.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-2",
"active":true
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.6.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.6.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.4.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-1"
},
{
"ip":"10.0.5.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-2",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.4.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-1",
"active":true
},
{
"ip":"10.0.5.3",
"afi":"ipv4",
"interfaceName":"eth-rt3-2"
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.6.4",
"afi":"ipv4",
"interfaceName":"eth-rt4"
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.6.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
},
{
"fib":true,
"ip":"10.0.8.6",
"afi":"ipv4",
"interfaceName":"eth-rt6",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.8.6",
"afi":"ipv4",
"interfaceName":"eth-rt6"
}
]
}
]
}

View File

@ -0,0 +1,346 @@
{
"fc00:0:1::1\/128":[
{
"prefix":"fc00:0:1::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-2",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-1",
"active":true
}
]
}
],
"fc00:0:2::1\/128":[
{
"prefix":"fc00:0:2::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-2",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-1",
"active":true
}
]
}
],
"fc00:0:3::1\/128":[
{
"prefix":"fc00:0:3::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-2",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-1",
"active":true
}
]
}
],
"fc00:0:4::1\/128":[
{
"prefix":"fc00:0:4::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"fc00:0:6::1\/128":[
{
"prefix":"fc00:0:6::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt6",
"active":true
}
]
}
],
"fc00:0:1::\/48":[
{
"prefix":"fc00:0:1::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-2",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-1",
"active":true
}
]
}
],
"fc00:0:2::\/48":[
{
"prefix":"fc00:0:2::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-2",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-1",
"active":true
}
]
}
],
"fc00:0:3::\/48":[
{
"prefix":"fc00:0:3::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-2",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt3-1",
"active":true
}
]
}
],
"fc00:0:4::\/48":[
{
"prefix":"fc00:0:4::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"fc00:0:6::\/48":[
{
"prefix":"fc00:0:6::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt6",
"active":true
}
]
}
],
"fc00:0:5::\/48":[
{
"prefix":"fc00:0:5::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"sr0",
"active":true,
"seg6local":{
"action":"End"
}
}
]
}
],
"fc00:0:5:e000::\/64":[
{
"prefix":"fc00:0:5:e000::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:5:e001::\/64":[
{
"prefix":"fc00:0:5:e001::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:5:e002::\/64":[
{
"prefix":"fc00:0:5:e002::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:5:e003::\/64":[
{
"prefix":"fc00:0:5:e003::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
]
}

View File

@ -0,0 +1,15 @@
{
"locators":[
{
"name":"loc1",
"prefix":"fc00:0:5::/48",
"blockBitsLength":32,
"nodeBitsLength":16,
"functionBitsLength":16,
"argumentBitsLength":0,
"statusUp":true,
"chunks":[
]
}
]
}

View File

@ -0,0 +1,82 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt3-1",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-rt3-2",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-rt4",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-rt6",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0006",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
}
]
}
}

View File

@ -0,0 +1,36 @@
log file zebra.log
!
hostname rt5
!
! debug zebra kernel
! debug zebra packet
!
interface lo
ip address 5.5.5.5/32
ipv6 address fc00:0:5::1/128
!
interface eth-rt3-1
ip address 10.0.4.5/24
!
interface eth-rt3-2
ip address 10.0.5.5/24
!
interface eth-rt4
ip address 10.0.6.5/24
!
interface eth-rt6
ip address 10.0.8.5/24
!
segment-routing
srv6
locators
locator loc1
prefix fc00:0:5::/48
format usid-f3216
!
!
!
ip forwarding
!
line vty
!

View File

@ -0,0 +1,68 @@
frr defaults traditional
!
bgp send-extra-data zebra
!
hostname rt6
password zebra
!
log stdout notifications
log monitor notifications
log commands
!
!debug bgp neighbor-events
!debug bgp zebra
!debug bgp vnc verbose
!debug bgp update-groups
!debug bgp updates in
!debug bgp updates out
!debug bgp updates
!debug bgp vpn label
!debug bgp vpn leak-from-vrf
!debug bgp vpn leak-to-vrf
!!debug bgp vpn rmap-event
!
router bgp 6
bgp router-id 6.6.6.6
no bgp ebgp-requires-policy
no bgp default ipv4-unicast
neighbor fc00:0:1::1 remote-as 1
neighbor fc00:0:1::1 timers 3 10
neighbor fc00:0:1::1 timers connect 1
neighbor fc00:0:1::1 ttl-security hops 20
!
address-family ipv6 vpn
neighbor fc00:0:1::1 activate
exit-address-family
!
segment-routing srv6
locator loc1
!
!
router bgp 6 vrf vrf10
bgp router-id 6.6.6.6
no bgp ebgp-requires-policy
no bgp default ipv4-unicast
!
address-family ipv6 unicast
sid vpn export 65024
rd vpn export 6:10
rt vpn both 99:99
import vpn
export vpn
redistribute connected
exit-address-family
!
router bgp 6 vrf vrf20
bgp router-id 6.6.6.6
no bgp ebgp-requires-policy
no bgp default ipv4-unicast
!
address-family ipv6 unicast
sid vpn export 65025
rd vpn export 6:20
rt vpn both 88:88
import vpn
export vpn
redistribute connected
exit-address-family
!

View File

@ -0,0 +1,42 @@
hostname rt6
log file isisd.log
!
! debug isis events
! debug isis route-events
! debug isis spf-events
! debug isis sr-events
! debug isis lsp-gen
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-rt4
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
interface eth-rt5
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-interval 1
isis hello-multiplier 10
!
router isis 1
lsp-gen-interval 2
net 49.0000.0000.0000.0006.00
is-type level-1
topology ipv6-unicast
segment-routing srv6
locator loc1
node-msd
max-segs-left 3
max-end-pop 3
max-h-encaps 2
max-end-d 5
interface sr0
!

View File

@ -0,0 +1,273 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.7.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
},
{
"fib":true,
"ip":"10.0.8.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.7.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.8.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.7.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.8.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.7.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
},
{
"fib":true,
"ip":"10.0.8.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.7.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.7.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.8.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.8.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.7.4",
"afi":"ipv4",
"interfaceName":"eth-rt4",
"active":true
},
{
"fib":true,
"ip":"10.0.8.5",
"afi":"ipv4",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.7.4",
"afi":"ipv4",
"interfaceName":"eth-rt4"
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.8.5",
"afi":"ipv4",
"interfaceName":"eth-rt5"
}
]
}
]
}

View File

@ -0,0 +1,312 @@
{
"fc00:0:1::1\/128":[
{
"prefix":"fc00:0:1::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"fc00:0:2::1\/128":[
{
"prefix":"fc00:0:2::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"fc00:0:3::1\/128":[
{
"prefix":"fc00:0:3::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"fc00:0:4::1\/128":[
{
"prefix":"fc00:0:4::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"fc00:0:5::1\/128":[
{
"prefix":"fc00:0:5::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"fc00:0:1::\/48":[
{
"prefix":"fc00:0:1::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"fc00:0:2::\/48":[
{
"prefix":"fc00:0:2::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"fc00:0:3::\/48":[
{
"prefix":"fc00:0:3::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"fc00:0:4::\/48":[
{
"prefix":"fc00:0:4::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4",
"active":true
}
]
}
],
"fc00:0:5::\/48":[
{
"prefix":"fc00:0:5::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":10,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt5",
"active":true
}
]
}
],
"fc00:0:6::\/48":[
{
"prefix":"fc00:0:6::\/48",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"sr0",
"active":true,
"seg6local":{
"action":"End"
}
}
]
}
],
"fc00:0:6:e000::\/64":[
{
"prefix":"fc00:0:6:e000::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:6:e001::\/64":[
{
"prefix":"fc00:0:6:e001::\/64",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"active":true,
"seg6local":{
"action":"End.X"
}
}
]
}
],
"fc00:0:6:fe00::\/128":[
{
"prefix":"fc00:0:6:fe00::\/128",
"protocol":"bgp",
"selected":true,
"destSelected":true,
"distance":20,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"vrf10",
"active":true,
"seg6local":{
"action":"End.DT6"
}
}
]
}
],
"fc00:0:6:fe01::\/128":[
{
"prefix":"fc00:0:6:fe01::\/128",
"protocol":"bgp",
"selected":true,
"destSelected":true,
"distance":20,
"metric":0,
"installed":true,
"nexthops":[
{
"fib":true,
"directlyConnected":true,
"interfaceName":"vrf20",
"active":true,
"seg6local":{
"action":"End.DT6"
}
}
]
}
]
}

View File

@ -0,0 +1,15 @@
{
"locators":[
{
"name":"loc1",
"prefix":"fc00:0:6::/48",
"blockBitsLength":32,
"nodeBitsLength":16,
"functionBitsLength":16,
"argumentBitsLength":0,
"statusUp":true,
"chunks":[
]
}
]
}

View File

@ -0,0 +1,44 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt4",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
},
{
"name": "eth-rt5",
"vrf": "default",
"state": {
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0005",
"hold-timer": 10,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
}
}
]
}
}

View File

@ -0,0 +1,169 @@
{
"vrfId": 0,
"vrfName": "default",
"routerId": "6.6.6.6",
"defaultLocPrf": 100,
"localAS": 6,
"routes": {
"routeDistinguishers": {
"1:10": {
"2001:1::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:1::",
"prefixLen": 64,
"network": "2001:1::/64",
"metric": 0,
"weight": 0,
"peerId": "fc00:0:1::1",
"path": "1",
"origin": "incomplete",
"nexthops": [
{
"ip": "fc00:0:1::1",
"hostname": "rt1",
"afi": "ipv6",
"used": true
}
]
}
],
"2001:3::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:3::",
"prefixLen": 64,
"network": "2001:3::/64",
"metric": 0,
"weight": 0,
"peerId": "fc00:0:1::1",
"path": "1",
"origin": "incomplete",
"nexthops": [
{
"ip": "fc00:0:1::1",
"hostname": "rt1",
"afi": "ipv6",
"used": true
}
]
}
]
},
"1:20": {
"2001:5::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:5::",
"prefixLen": 64,
"network": "2001:5::/64",
"metric": 0,
"weight": 0,
"peerId": "fc00:0:1::1",
"path": "1",
"origin": "incomplete",
"nexthops": [
{
"ip": "fc00:0:1::1",
"hostname": "rt1",
"afi": "ipv6",
"used": true
}
]
}
]
},
"6:10": {
"2001:2::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:2::",
"prefixLen": 64,
"network": "2001:2::/64",
"metric": 0,
"weight": 32768,
"peerId": "(unspec)",
"path": "",
"origin": "incomplete",
"announceNexthopSelf": true,
"nhVrfName": "vrf10",
"nexthops": [
{
"ip": "::",
"hostname": "rt6",
"afi": "ipv6",
"used": true
}
]
}
]
},
"6:20": {
"2001:4::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:4::",
"prefixLen": 64,
"network": "2001:4::/64",
"metric": 0,
"weight": 32768,
"peerId": "(unspec)",
"path": "",
"origin": "incomplete",
"announceNexthopSelf": true,
"nhVrfName": "vrf20",
"nexthops": [
{
"ip": "::",
"hostname": "rt6",
"afi": "ipv6",
"used": true
}
]
}
],
"2001:6::/64": [
{
"valid": true,
"bestpath": true,
"selectionReason": "First path received",
"pathFrom": "external",
"prefix": "2001:6::",
"prefixLen": 64,
"network": "2001:6::/64",
"metric": 0,
"weight": 32768,
"peerId": "(unspec)",
"path": "",
"origin": "incomplete",
"announceNexthopSelf": true,
"nhVrfName": "vrf20",
"nexthops": [
{
"ip": "::",
"hostname": "rt6",
"afi": "ipv6",
"used": true
}
]
}
]
}
}
}
}

View File

@ -0,0 +1,92 @@
{
"2001:1::/64": [
{
"prefix": "2001:1::/64",
"protocol": "bgp",
"vrfName": "vrf10",
"selected": true,
"destSelected": true,
"distance": 20,
"metric": 0,
"installed": true,
"table": 10,
"internalStatus": 16,
"internalFlags": 9,
"internalNextHopNum": 3,
"internalNextHopActiveNum": 3,
"nexthops": [
{
"flags": 3,
"fib": true,
"afi": "ipv6",
"interfaceName": "eth-rt5",
"vrf": "default",
"active": true,
"weight": 1,
"seg6": {
"segs": "fc00:0:1:fe00::"
}
}
],
"asPath": "1"
}
],
"2001:2::/64": [
{
"prefix": "2001:2::/64",
"protocol": "connected",
"vrfName": "vrf10",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 10,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-ce2",
"active": true
}
]
}
],
"2001:3::/64": [
{
"prefix": "2001:3::/64",
"protocol": "bgp",
"vrfName": "vrf10",
"selected": true,
"destSelected": true,
"distance": 20,
"metric": 0,
"installed": true,
"table": 10,
"internalStatus": 16,
"internalFlags": 9,
"internalNextHopNum": 3,
"internalNextHopActiveNum": 3,
"nexthops": [
{
"flags": 3,
"fib": true,
"afi": "ipv6",
"interfaceName": "eth-rt5",
"vrf": "default",
"active": true,
"weight": 1,
"seg6": {
"segs": "fc00:0:1:fe00::"
}
}
],
"asPath": "1"
}
]
}

View File

@ -0,0 +1,86 @@
{
"2001:4::/64": [
{
"prefix": "2001:4::/64",
"protocol": "connected",
"vrfName": "vrf20",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 20,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-ce4",
"active": true
}
]
}
],
"2001:5::/64": [
{
"prefix": "2001:5::/64",
"protocol": "bgp",
"vrfName": "vrf20",
"selected": true,
"destSelected": true,
"distance": 20,
"metric": 0,
"installed": true,
"table": 20,
"internalStatus": 16,
"internalFlags": 9,
"internalNextHopNum": 3,
"internalNextHopActiveNum": 3,
"nexthops": [
{
"flags": 3,
"fib": true,
"afi": "ipv6",
"interfaceName": "eth-rt5",
"vrf": "default",
"active": true,
"weight": 1,
"seg6": {
"segs": "fc00:0:1:fe01::"
}
}
],
"asPath": "1"
}
],
"2001:6::/64": [
{
"prefix": "2001:6::/64",
"protocol": "connected",
"vrfName": "vrf20",
"selected": true,
"destSelected": true,
"distance": 0,
"metric": 0,
"installed": true,
"table": 20,
"internalStatus": 16,
"internalFlags": 8,
"internalNextHopNum": 1,
"internalNextHopActiveNum": 1,
"nexthops": [
{
"flags": 3,
"fib": true,
"directlyConnected": true,
"interfaceName": "eth-ce6",
"active": true
}
]
}
]
}

View File

@ -0,0 +1,45 @@
log file zebra.log
!
hostname rt6
!
! debug zebra kernel
! debug zebra packet
!
interface lo
ip address 6.6.6.6/32
ipv6 address fc00:0:6::1/128
!
interface eth-rt4
ip address 10.0.7.6/24
!
interface eth-rt5
ip address 10.0.8.6/24
!
interface eth-dst
ip address 10.0.10.1/24
ip address 2001:db8:10::1/64
!
interface eth-ce2 vrf vrf10
ipv6 address 2001:2::1/64
!
interface eth-ce4 vrf vrf20
ipv6 address 2001:4::1/64
!
interface eth-ce6 vrf vrf20
ipv6 address 2001:6::1/64
!
segment-routing
srv6
locators
locator loc1
prefix fc00:0:6::/48
format usid-f3216
!
!
!
ip forwarding
!
ipv6 route fc00:0:9::1/128 2001:db8:10::2 vrf vrf10
!
line vty
!

View File

@ -0,0 +1,421 @@
#!/usr/bin/env python
# SPDX-License-Identifier: ISC
#
# Copyright (c) 2023 by Carmine Scarpitta <cscarpit@cisco.com>
#
"""
test_srv6_sid_manager.py:
+---------+
| |
| RT1 |
| 1.1.1.1 |
| |
+---------+
|eth-sw1
|
|
|
+---------+ | +---------+
| | | | |
| RT2 |eth-sw1 | eth-sw1| RT3 |
| 2.2.2.2 +----------+----------+ 3.3.3.3 |
| | 10.0.1.0/24 | |
+---------+ +---------+
eth-rt4-1| |eth-rt4-2 eth-rt5-1| |eth-rt5-2
| | | |
10.0.2.0/24| |10.0.3.0/24 10.0.4.0/24| |10.0.5.0/24
| | | |
eth-rt2-1| |eth-rt2-2 eth-rt3-1| |eth-rt3-2
+---------+ +---------+
| | | |
| RT4 | 10.0.6.0/24 | RT5 |
| 4.4.4.4 +---------------------+ 5.5.5.5 |
| |eth-rt5 eth-rt4| |
+---------+ +---------+
eth-rt6| |eth-rt6
| |
10.0.7.0/24| |10.0.8.0/24
| +---------+ |
| | | |
| | RT6 | |
+----------+ 6.6.6.6 +-----------+
eth-rt4| |eth-rt5
+---------+
|eth-dst (.1)
|
|10.0.10.0/24
|
|eth-rt6 (.2)
+---------+
| |
| DST |
| 9.9.9.2 |
| |
+---------+
"""
import os
import re
import sys
import json
import functools
import pytest
CWD = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.join(CWD, "../"))
# pylint: disable=C0413
# Import topogen and topotest helpers
from lib import topotest
from lib.topogen import Topogen, TopoRouter, get_topogen
from lib.topolog import logger
from lib.common_config import (
required_linux_kernel_version,
create_interface_in_kernel,
)
from lib.checkping import check_ping
pytestmark = [pytest.mark.isisd, pytest.mark.sharpd]
def build_topo(tgen):
"""Build function"""
# Define FRR Routers
tgen.add_router("rt1")
tgen.add_router("rt2")
tgen.add_router("rt3")
tgen.add_router("rt4")
tgen.add_router("rt5")
tgen.add_router("rt6")
tgen.add_router("dst")
tgen.add_router("ce1")
tgen.add_router("ce2")
tgen.add_router("ce3")
tgen.add_router("ce4")
tgen.add_router("ce5")
tgen.add_router("ce6")
# Define connections
switch = tgen.add_switch("s1")
switch.add_link(tgen.gears["rt1"], nodeif="eth-sw1")
switch.add_link(tgen.gears["rt2"], nodeif="eth-sw1")
switch.add_link(tgen.gears["rt3"], nodeif="eth-sw1")
switch = tgen.add_switch("s2")
switch.add_link(tgen.gears["rt2"], nodeif="eth-rt4-1")
switch.add_link(tgen.gears["rt4"], nodeif="eth-rt2-1")
switch = tgen.add_switch("s3")
switch.add_link(tgen.gears["rt2"], nodeif="eth-rt4-2")
switch.add_link(tgen.gears["rt4"], nodeif="eth-rt2-2")
switch = tgen.add_switch("s4")
switch.add_link(tgen.gears["rt3"], nodeif="eth-rt5-1")
switch.add_link(tgen.gears["rt5"], nodeif="eth-rt3-1")
switch = tgen.add_switch("s5")
switch.add_link(tgen.gears["rt3"], nodeif="eth-rt5-2")
switch.add_link(tgen.gears["rt5"], nodeif="eth-rt3-2")
switch = tgen.add_switch("s6")
switch.add_link(tgen.gears["rt4"], nodeif="eth-rt5")
switch.add_link(tgen.gears["rt5"], nodeif="eth-rt4")
switch = tgen.add_switch("s7")
switch.add_link(tgen.gears["rt4"], nodeif="eth-rt6")
switch.add_link(tgen.gears["rt6"], nodeif="eth-rt4")
switch = tgen.add_switch("s8")
switch.add_link(tgen.gears["rt5"], nodeif="eth-rt6")
switch.add_link(tgen.gears["rt6"], nodeif="eth-rt5")
switch = tgen.add_switch("s9")
switch.add_link(tgen.gears["rt6"], nodeif="eth-dst")
switch.add_link(tgen.gears["dst"], nodeif="eth-rt6")
tgen.add_link(tgen.gears["ce1"], tgen.gears["rt1"], "eth-rt1", "eth-ce1")
tgen.add_link(tgen.gears["ce2"], tgen.gears["rt6"], "eth-rt6", "eth-ce2")
tgen.add_link(tgen.gears["ce3"], tgen.gears["rt1"], "eth-rt1", "eth-ce3")
tgen.add_link(tgen.gears["ce4"], tgen.gears["rt6"], "eth-rt6", "eth-ce4")
tgen.add_link(tgen.gears["ce5"], tgen.gears["rt1"], "eth-rt1", "eth-ce5")
tgen.add_link(tgen.gears["ce6"], tgen.gears["rt6"], "eth-rt6", "eth-ce6")
tgen.gears["rt1"].run("ip link add vrf10 type vrf table 10")
tgen.gears["rt1"].run("ip link set vrf10 up")
tgen.gears["rt1"].run("ip link add vrf20 type vrf table 20")
tgen.gears["rt1"].run("ip link set vrf20 up")
tgen.gears["rt1"].run("ip link set eth-ce1 master vrf10")
tgen.gears["rt1"].run("ip link set eth-ce3 master vrf10")
tgen.gears["rt1"].run("ip link set eth-ce5 master vrf20")
tgen.gears["rt6"].run("ip link add vrf10 type vrf table 10")
tgen.gears["rt6"].run("ip link set vrf10 up")
tgen.gears["rt6"].run("ip link add vrf20 type vrf table 20")
tgen.gears["rt6"].run("ip link set vrf20 up")
tgen.gears["rt6"].run("ip link set eth-ce2 master vrf10")
tgen.gears["rt6"].run("ip link set eth-ce4 master vrf20")
tgen.gears["rt6"].run("ip link set eth-ce6 master vrf20")
# Add dummy interface for SRv6
create_interface_in_kernel(
tgen,
"rt1",
"sr0",
"2001:db8::1",
netmask="128",
create=True,
)
create_interface_in_kernel(
tgen,
"rt2",
"sr0",
"2001:db8::2",
netmask="128",
create=True,
)
create_interface_in_kernel(
tgen,
"rt3",
"sr0",
"2001:db8::3",
netmask="128",
create=True,
)
create_interface_in_kernel(
tgen,
"rt4",
"sr0",
"2001:db8::4",
netmask="128",
create=True,
)
create_interface_in_kernel(
tgen,
"rt5",
"sr0",
"2001:db8::5",
netmask="128",
create=True,
)
create_interface_in_kernel(
tgen,
"rt6",
"sr0",
"2001:db8::6",
netmask="128",
create=True,
)
def setup_module(mod):
"""Sets up the pytest environment"""
# Verify if kernel requirements are satisfied
result = required_linux_kernel_version("4.10")
if result is not True:
pytest.skip("Kernel requirements are not met")
# Build the topology
tgen = Topogen(build_topo, mod.__name__)
tgen.start_topology()
# For all registered routers, load the zebra and isis configuration files
for rname, router in tgen.routers().items():
router.load_config(TopoRouter.RD_ZEBRA,
os.path.join(CWD, '{}/zebra.conf'.format(rname)))
router.load_config(TopoRouter.RD_ISIS,
os.path.join(CWD, '{}/isisd.conf'.format(rname)))
router.load_config(TopoRouter.RD_BGP,
os.path.join(CWD, '{}/bgpd.conf'.format(rname)))
if (os.path.exists('{}/sharpd.conf'.format(rname))):
router.load_config(TopoRouter.RD_SHARP,
os.path.join(CWD, '{}/sharpd.conf'.format(rname)))
# Start routers
tgen.start_router()
def teardown_module(mod):
"Teardown the pytest environment"
# Teardown the topology
tgen = get_topogen()
tgen.stop_topology()
def router_compare_json_output(rname, command, reference):
"Compare router JSON output"
logger.info('Comparing router "%s" "%s" output', rname, command)
tgen = get_topogen()
filename = "{}/{}/{}".format(CWD, rname, reference)
expected = json.loads(open(filename).read())
# Run test function until we get an result. Wait at most 60 seconds.
test_func = functools.partial(topotest.router_json_cmp, tgen.gears[rname], command, expected)
_, diff = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
assertmsg = '"{}" JSON output mismatches the expected result'.format(rname)
assert diff is None, assertmsg
def check_ping6(name, dest_addr, expect_connected):
def _check(name, dest_addr, match):
tgen = get_topogen()
output = tgen.gears[name].run("ping6 {} -c 1 -w 1".format(dest_addr))
logger.info(output)
if match not in output:
return "ping fail"
match = "{} packet loss".format("0%" if expect_connected else "100%")
logger.info("[+] check {} {} {}".format(name, dest_addr, match))
tgen = get_topogen()
func = functools.partial(_check, name, dest_addr, match)
success, result = topotest.run_and_expect(func, None, count=10, wait=1)
assert result is None, "Failed"
def open_json_file(filename):
try:
with open(filename, "r") as f:
return json.load(f)
except IOError:
assert False, "Could not read file {}".format(filename)
def check_rib(name, cmd, expected_file):
def _check(name, cmd, expected_file):
logger.info("polling")
tgen = get_topogen()
router = tgen.gears[name]
output = json.loads(router.vtysh_cmd(cmd))
expected = open_json_file("{}/{}".format(CWD, expected_file))
return topotest.json_cmp(output, expected)
logger.info('[+] check {} "{}" {}'.format(name, cmd, expected_file))
tgen = get_topogen()
func = functools.partial(_check, name, cmd, expected_file)
success, result = topotest.run_and_expect(func, None, count=10, wait=0.5)
assert result is None, "Failed"
#
# Step 1
#
# Test initial network convergence
#
def test_isis_adjacencies():
logger.info("Test: check IS-IS adjacencies")
tgen = get_topogen()
# Skip if previous fatal error condition is raised
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
for rname in ["rt1", "rt2", "rt3", "rt4", "rt5", "rt6"]:
router_compare_json_output(
rname,
"show yang operational-data /frr-interface:lib isisd",
"show_yang_interface_isis_adjacencies.ref",
)
def test_rib_ipv4():
logger.info("Test: verify IPv4 RIB")
tgen = get_topogen()
# Skip if previous fatal error condition is raised
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
for rname in ["rt1", "rt2", "rt3", "rt4", "rt5", "rt6"]:
router_compare_json_output(
rname, "show ip route isis json", "show_ip_route.ref"
)
def test_rib_ipv6():
logger.info("Test: verify IPv6 RIB")
tgen = get_topogen()
# Skip if previous fatal error condition is raised
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
for rname in ["rt1", "rt2", "rt3", "rt4", "rt5", "rt6"]:
router_compare_json_output(
rname, "show ipv6 route json", "show_ipv6_route.ref"
)
def test_srv6_locator():
logger.info("Test: verify SRv6 Locator")
tgen = get_topogen()
# Skip if previous fatal error condition is raised
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
for rname in ["rt1", "rt2", "rt3", "rt4", "rt5", "rt6"]:
router_compare_json_output(
rname, "show segment-routing srv6 locator json", "show_srv6_locator_table.ref"
)
def test_vpn_rib():
check_rib("rt1", "show bgp ipv6 vpn json", "rt1/vpnv6_rib.ref")
check_rib("rt6", "show bgp ipv6 vpn json", "rt6/vpnv6_rib.ref")
check_rib("rt1", "show ipv6 route vrf vrf10 json", "rt1/vrf10_rib.ref")
check_rib("rt1", "show ipv6 route vrf vrf20 json", "rt1/vrf20_rib.ref")
check_rib("rt6", "show ipv6 route vrf vrf10 json", "rt6/vrf10_rib.ref")
check_rib("rt6", "show ipv6 route vrf vrf20 json", "rt6/vrf20_rib.ref")
check_rib("ce1", "show ipv6 route json", "ce1/ipv6_rib.json")
check_rib("ce2", "show ipv6 route json", "ce2/ipv6_rib.json")
check_rib("ce3", "show ipv6 route json", "ce3/ipv6_rib.json")
check_rib("ce4", "show ipv6 route json", "ce4/ipv6_rib.json")
check_rib("ce5", "show ipv6 route json", "ce5/ipv6_rib.json")
check_rib("ce6", "show ipv6 route json", "ce6/ipv6_rib.json")
def test_ping():
logger.info("Test: verify ping")
tgen = get_topogen()
# Required linux kernel version for this suite to run.
result = required_linux_kernel_version("6.1")
if result is not True:
pytest.skip("Kernel requirements are not met, kernel version should be >=6.1")
# Skip if previous fatal error condition is raised
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
# Setup encap route on rt1, decap route on rt2
# tgen.gears["rt1"].vtysh_cmd("sharp install seg6-routes fc00:0:9::1 nexthop-seg6 2001:db8:1::2 encap fc00:0:2:6:fe00:: 1")
tgen.gears["rt1"].cmd("ip -6 r a fc00:0:9::1/128 encap seg6 mode encap segs fc00:0:2:6:fe00:: via 2001:db8:1::2")
# tgen.gears["rt6"].vtysh_cmd("sharp install seg6local-routes fc00:0:f00d:: nexthop-seg6local eth-dst End_DT6 254 1")
tgen.gears["rt6"].cmd("ip -6 r a fc00:0:9::1/128 via 2001:db8:10::2 vrf vrf10")
tgen.gears["dst"].cmd("ip -6 r a 2001:db8:1::1/128 via 2001:db8:10::1")
# Try to ping dst from rt1
check_ping("rt1", "fc00:0:9::1", True, 10, 1)
# Memory leak test template
def test_memory_leak():
"Run the memory leak test and report results."
tgen = get_topogen()
if not tgen.is_memleak_enabled():
pytest.skip("Memory leak test/report is disabled")
tgen.report_memory_leaks()
if __name__ == "__main__":
args = ["-s"] + sys.argv[1:]
sys.exit(pytest.main(args))