Skip to content

Instantly share code, notes, and snippets.

@rwestphal
Last active August 25, 2020 18:49
Show Gist options
  • Save rwestphal/a9afd7de1867a6faf37f04dacb652259 to your computer and use it in GitHub Desktop.
Save rwestphal/a9afd7de1867a6faf37f04dacb652259 to your computer and use it in GitHub Desktop.
# +-------+ +-------+ +-------+
# | | | | | |
# | HOST1 | | HOST2 | | HOST3 |
# | | | | | |
# +---+---+ +---+---+ +---+---+
# | | |
# |fd00:10:1::/64 | |
# +-----+ +------+ fd00:20:1::/64|
# | |fd00:10:2::/64 |
# | | |
# +-+--+--+ +---+---+
# | | | |
# | CE1 | | CE2 |
# | | | |
# +---+---+ +---+---+
# | |
# | |
# |fd00:10:0::/64 fd00:20:0::/64|
# | |
# | |
# +---+---+ +-------+ +-------+ +---+---+
# | |4000:101::/64| |4000:102::/64| |4000:103::/64| |
# | R11 +-------------+ R12 +-------------+ R13 +-------------+ R14 |
# | | | | | | | |
# +---+---+ +--+-+--+ +--+-+--+ +---+---+
# | | | | | |
# |4000:104::/64 | |4000:106::/64 | |4000:108::/64 |
# +---------+ +--------+ +--------+ +--------+ +--------+ +---------+
# | |4000:105::/64 | |4000:107::/64 | |4000:109::/64
# | | | | | |
# +--+-+--+ +--+-+--+ +--+-+--+
# | |4000:110::/64| |4000:111::/64| |
# | R21 +-------------+ R22 +-------------+ R23 |
# | | | | | |
# +--+-+--+ +--+-+--+ +--+-+--+
# | | | | | |
# | |4000:113::/64 | |4000:115::/64 | |4000:117::/64
# +---------+ +--------+ +--------+ +--------+ +--------+ +---------+
# |4000:112::/64 | |4000:114::/64 | |4000:116::/64 |
# | | | | | |
# +---+---+ +--+-+--+ +--+-+--+ +---+---+
# | |4000:118::/64| |4000:119::/64| |4000:120::/64| |
# | R31 +-------------+ R32 +-------------+ R33 +-------------+ R34 |
# | | | | | | | |
# +-------+ +---+---+ +---+---+ +-------+
# | |
# |4000:121::/64 |
# +----------+----------+
# |
# |
# +---+---+
# | |
# | R41 |
# | |
# +-------+
---
routers:
host1:
links:
eth-ce1:
peer: [ce1, eth-host1]
frr:
zebra:
staticd:
config: |
interface eth-ce1
ipv6 address fd00:10:1::1/64
!
ipv6 route ::/0 fd00:10:1::100
host2:
links:
eth-ce1:
peer: [ce1, eth-host2]
frr:
zebra:
staticd:
config: |
interface eth-ce1
ipv6 address fd00:10:2::1/64
!
ipv6 route ::/0 fd00:10:2::100
host3:
links:
eth-ce2:
peer: [ce2, eth-host3]
frr:
zebra:
staticd:
config: |
interface eth-ce2
ipv6 address fd00:20:1::1/64
ipv6 address fd00:30:1::1/64
ipv6 address fd00:40:1::1/64
!
ipv6 route ::/0 fd00:20:1::100
ce1:
links:
eth-host1:
peer: [host1, eth-ce1]
eth-host2:
peer: [host2, eth-ce1]
eth-rt11:
peer: [rt11, eth-ce1]
frr:
zebra:
staticd:
config: |
interface eth-host1
ipv6 address fd00:10:1::100/64
!
interface eth-host2
ipv6 address fd00:10:2::100/64
!
interface eth-rt11
ipv6 address fd00:10:0::100/64
!
ipv6 route ::/0 fd00:10:0::11
ce2:
links:
eth-host3:
peer: [host3, eth-ce2]
eth-rt14:
peer: [rt14, eth-ce2]
frr:
zebra:
staticd:
config: |
interface eth-host3
ipv6 address fd00:20:1::100/64
!
interface eth-rt14
ipv6 address fd00:20:0::100/64
!
ipv6 route ::/0 fd00:20:0::14
rt11:
links:
vrf-RED:
type: vrf
table: 10
lo:
mpls: yes
eth-ce1:
vrf: vrf-RED
peer: [ce1, eth-rt11]
mpls: yes
eth-rt12:
peer: [rt12, eth-rt11]
mpls: yes
eth-rt21:
peer: [rt21, eth-rt11]
mpls: yes
frr:
zebra:
staticd:
isisd:
bgpd:
pathd:
config: |
interface lo
ip address 10.0.0.11/32
ipv6 address 5000::11/128
ipv6 router isis 1
!
interface eth-ce1
ipv6 address fd00:10:0::11/64
!
interface eth-rt12
ipv6 address 4000:101::11/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt21
ipv6 address 4000:104::11/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
vrf vrf-RED
ipv6 route fd00:10::/32 fd00:10:0::100
!
segment-list sl1
index 10 mpls label 16031
index 20 mpls label 16041
index 30 mpls label 16034
index 40 mpls label 16014
!
segment-list sl2
index 10 mpls label 16022
index 20 mpls label 16023
index 30 mpls label 16014
!
sr-policy color 1 endpoint 5000::14
name LOW_DELAY
binding-sid 200
candidate-path preference 100 name cand1 explicit segment-list sl1
!
sr-policy color 2 endpoint 5000::14
name LOW_COST
binding-sid 201
candidate-path preference 100 name cand1 explicit segment-list sl2
!
ipv6 access-list ACL1 permit fd00:20::/32 exact-match
ipv6 access-list ACL2 permit fd00:30::/32 exact-match
ipv6 access-list ACL3 permit fd00:40::/32 exact-match
!
route-map SET_SR_POLICY permit 10
match ipv6 address ACL1
set sr-te color 1
!
route-map SET_SR_POLICY permit 20
match ipv6 address ACL2
set sr-te color 2
!
route-map SET_SR_POLICY permit 30
! match ipv6 address ACL3
! set sr-te color 3
!
router isis 1
net 49.0000.0000.0000.0011.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::11/128 index 11
!
router bgp 1
bgp router-id 11.11.11.11
neighbor 5000::14 remote-as 1
neighbor 5000::14 update-source lo
!
address-family ipv6 vpn
neighbor 5000::14 activate
neighbor 5000::14 next-hop-self
neighbor 5000::14 route-map SET_SR_POLICY in
exit-address-family
!
!
router bgp 1 vrf vrf-RED
address-family ipv6 unicast
rd vpn export 1:1
rt vpn both 1:1
label vpn export 500
import vpn
export vpn
redistribute static
exit-address-family
!
rt12:
links:
lo:
mpls: yes
eth-rt11:
peer: [rt11, eth-rt12]
mpls: yes
eth-rt13:
peer: [rt13, eth-rt12]
mpls: yes
eth-rt21:
peer: [rt21, eth-rt12]
mpls: yes
eth-rt22:
peer: [rt22, eth-rt12]
mpls: yes
frr:
zebra:
isisd:
config: |
interface lo
ip address 10.0.0.12/32
ipv6 address 5000::12/128
ipv6 router isis 1
!
interface eth-rt11
ipv6 address 4000:101::12/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt13
ipv6 address 4000:102::12/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt21
ipv6 address 4000:105::12/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt22
ipv6 address 4000:106::12/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0012.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::12/128 index 12
!
rt13:
links:
lo:
mpls: yes
eth-rt12:
peer: [rt12, eth-rt13]
mpls: yes
eth-rt14:
peer: [rt14, eth-rt13]
mpls: yes
eth-rt22:
peer: [rt22, eth-rt13]
mpls: yes
eth-rt23:
peer: [rt23, eth-rt13]
mpls: yes
frr:
zebra:
isisd:
config: |
interface lo
ip address 10.0.0.13/32
ipv6 address 5000::13/128
ipv6 router isis 1
!
interface eth-rt12
ipv6 address 4000:102::13/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt14
ipv6 address 4000:103::13/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt22
ipv6 address 4000:107::13/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt23
ipv6 address 4000:108::13/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0013.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::13/128 index 13
!
rt14:
links:
vrf-RED:
type: vrf
table: 10
lo:
mpls: yes
eth-ce2:
vrf: vrf-RED
peer: [ce2, eth-rt14]
mpls: yes
eth-rt13:
peer: [rt13, eth-rt14]
mpls: yes
eth-rt23:
peer: [rt23, eth-rt14]
mpls: yes
frr:
zebra:
staticd:
isisd:
bgpd:
pathd:
config: |
interface lo
ip address 10.0.0.14/32
ipv6 address 5000::14/128
ipv6 router isis 1
!
interface eth-ce2
ipv6 address fd00:20:0::14/64
!
interface eth-rt13
ipv6 address 4000:103::14/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt23
ipv6 address 4000:109::14/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
vrf vrf-RED
ipv6 route fd00:20::/32 fd00:20:0::100
ipv6 route fd00:30::/32 fd00:20:0::100
ipv6 route fd00:40::/32 fd00:20:0::100
!
segment-list sl1
index 10 mpls label 16034
index 20 mpls label 16041
index 30 mpls label 16031
index 40 mpls label 16011
!
segment-list sl2
index 10 mpls label 16023
index 20 mpls label 16022
index 30 mpls label 16011
!
sr-policy color 1 endpoint 5000::11
name LOW_DELAY
binding-sid 100
candidate-path preference 100 name cand1 explicit segment-list sl1
!
sr-policy color 2 endpoint 5000::11
name LOW_COST
binding-sid 101
candidate-path preference 100 name cand1 explicit segment-list sl2
!
route-map SET_SR_POLICY permit 10
set sr-te color 1
!
router isis 1
net 49.0000.0000.0000.0014.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::14/128 index 14
!
router bgp 1
bgp router-id 14.14.14.14
neighbor 5000::11 remote-as 1
neighbor 5000::11 update-source lo
!
address-family ipv6 vpn
neighbor 5000::11 activate
neighbor 5000::11 next-hop-self
neighbor 5000::11 route-map SET_SR_POLICY in
exit-address-family
!
!
router bgp 1 vrf vrf-RED
address-family ipv6 unicast
rd vpn export 1:1
rt vpn both 1:1
label vpn export 500
import vpn
export vpn
redistribute static
exit-address-family
!
rt21:
links:
lo:
mpls: yes
eth-rt11:
peer: [rt11, eth-rt21]
mpls: yes
eth-rt12:
peer: [rt12, eth-rt21]
mpls: yes
eth-rt22:
peer: [rt22, eth-rt21]
mpls: yes
eth-rt31:
peer: [rt31, eth-rt21]
mpls: yes
eth-rt32:
peer: [rt32, eth-rt21]
mpls: yes
frr:
zebra:
isisd:
config: |
interface lo
ip address 10.0.0.21/32
ipv6 address 5000::21/128
ipv6 router isis 1
!
interface eth-rt11
ipv6 address 4000:104::21/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt12
ipv6 address 4000:105::21/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt22
ipv6 address 4000:110::21/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt31
ipv6 address 4000:112::21/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt32
ipv6 address 4000:113::21/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0021.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::21/128 index 21
!
rt22:
links:
lo:
mpls: yes
eth-rt12:
peer: [rt12, eth-rt22]
mpls: yes
eth-rt13:
peer: [rt13, eth-rt22]
mpls: yes
eth-rt21:
peer: [rt21, eth-rt22]
mpls: yes
eth-rt23:
peer: [rt23, eth-rt22]
mpls: yes
eth-rt32:
peer: [rt32, eth-rt22]
mpls: yes
eth-rt33:
mpls: yes
peer: [rt33, eth-rt22]
frr:
zebra:
isisd:
config: |
interface lo
ip address 10.0.0.22/32
ipv6 address 5000::22/128
ipv6 router isis 1
!
interface eth-rt12
ipv6 address 4000:106::22/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt13
ipv6 address 4000:107::22/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt21
ipv6 address 4000:110::22/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt23
ipv6 address 4000:111::22/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt32
ipv6 address 4000:114::22/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt33
ipv6 address 4000:115::22/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0022.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::22/128 index 22
!
rt23:
links:
lo:
mpls: yes
eth-rt13:
peer: [rt13, eth-rt23]
mpls: yes
eth-rt14:
peer: [rt14, eth-rt23]
mpls: yes
eth-rt22:
peer: [rt22, eth-rt23]
mpls: yes
eth-rt33:
peer: [rt33, eth-rt23]
mpls: yes
eth-rt34:
peer: [rt34, eth-rt23]
mpls: yes
frr:
zebra:
isisd:
config: |
interface lo
ip address 10.0.0.23/32
ipv6 address 5000::23/128
ipv6 router isis 1
!
interface eth-rt13
ipv6 address 4000:108::23/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt14
ipv6 address 4000:109::23/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt22
ipv6 address 4000:111::23/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt33
ipv6 address 4000:116::23/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt34
ipv6 address 4000:117::23/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0023.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::23/128 index 23
!
rt31:
links:
lo:
mpls: yes
eth-rt21:
peer: [rt21, eth-rt31]
mpls: yes
eth-rt32:
peer: [rt32, eth-rt31]
mpls: yes
frr:
zebra:
isisd:
config: |
interface lo
ip address 10.0.0.31/32
ipv6 address 5000::31/128
ipv6 router isis 1
!
interface eth-rt21
ipv6 address 4000:112::31/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt32
ipv6 address 4000:118::31/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0031.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::31/128 index 31
!
rt32:
links:
lo:
mpls: yes
eth-rt21:
peer: [rt21, eth-rt32]
mpls: yes
eth-rt22:
peer: [rt22, eth-rt32]
mpls: yes
eth-rt31:
peer: [rt31, eth-rt32]
mpls: yes
eth-rt33:
peer: [rt33, eth-rt32]
mpls: yes
eth-sw1:
peer: [sw1, eth-rt32]
mpls: yes
frr:
zebra:
isisd:
config: |
interface lo
ip address 10.0.0.32/32
ipv6 address 5000::32/128
ipv6 router isis 1
!
interface eth-rt21
ipv6 address 4000:113::32/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt22
ipv6 address 4000:114::32/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt31
ipv6 address 4000:118::32/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt33
ipv6 address 4000:119::32/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-sw1
ipv6 address 4000:121::32/64
ipv6 router isis 1
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0032.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::32/128 index 32
!
rt33:
links:
lo:
mpls: yes
eth-rt22:
peer: [rt22, eth-rt33]
mpls: yes
eth-rt23:
peer: [rt23, eth-rt33]
mpls: yes
eth-rt32:
peer: [rt32, eth-rt33]
mpls: yes
eth-rt34:
peer: [rt34, eth-rt33]
mpls: yes
eth-sw1:
peer: [sw1, eth-rt33]
mpls: yes
frr:
zebra:
isisd:
config: |
interface lo
ip address 10.0.0.33/32
ipv6 address 5000::33/128
ipv6 router isis 1
!
interface eth-rt22
ipv6 address 4000:115::33/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt23
ipv6 address 4000:116::33/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt32
ipv6 address 4000:119::33/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt34
ipv6 address 4000:120::33/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-sw1
ipv6 address 4000:121::33/64
ipv6 router isis 1
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0033.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::33/128 index 33
!
rt34:
links:
lo:
mpls: yes
eth-rt23:
peer: [rt23, eth-rt34]
mpls: yes
eth-rt33:
peer: [rt33, eth-rt34]
mpls: yes
frr:
zebra:
isisd:
config: |
interface lo
ip address 10.0.0.34/32
ipv6 address 5000::34/128
ipv6 router isis 1
!
interface eth-rt23
ipv6 address 4000:117::34/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt33
ipv6 address 4000:120::34/64
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0034.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::34/128 index 34
!
rt41:
links:
lo:
mpls: yes
eth-sw1:
peer: [sw1, eth-rt41]
mpls: yes
frr:
zebra:
isisd:
config: |
interface lo
ip address 10.0.0.41/32
ipv6 address 5000::41/128
ipv6 router isis 1
!
interface eth-sw1
ipv6 address 4000:121::41/64
ipv6 router isis 1
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0041.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing prefix 5000::41/128 index 41
!
switches:
sw1:
links:
eth-rt32:
peer: [rt32, eth-sw1]
eth-rt33:
peer: [rt33, eth-sw1]
eth-rt41:
peer: [rt41, eth-sw1]
frr:
#valgrind: yes
base-config: |
hostname %(node)
password 1
log file %(logdir)/%(node).log
log commands
!
debug zebra rib
debug zebra packet
debug bgp nht
debug bgp updates
debug bgp neighbor-events
debug bgp zebra
debug isis sr-events
debug isis events
debug isis route-events
debug isis spf-events
debug isis lsp-gen
!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment