Skip to content

Commit

Permalink
topotests: bgp_evpn_rt5, add test with match evpn vni command
Browse files Browse the repository at this point in the history
Add a test that ensures that the 'match evpn vni' command works with bgp
evpn rt5 updates.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
  • Loading branch information
pguibert6WIND committed Dec 16, 2024
1 parent 27b01ce commit e9a6c39
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 10 deletions.
12 changes: 12 additions & 0 deletions tests/topotests/bgp_evpn_rt5/r1/bgpd.conf
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,17 @@ router bgp 65000
bgp router-id 192.168.100.21
bgp log-neighbor-changes
no bgp default ipv4-unicast
no bgp ebgp-requires-policy
neighbor 192.168.100.41 remote-as 65000
neighbor 192.168.100.41 capability extended-nexthop
neighbor 192.168.100.61 remote-as 65500
neighbor 192.168.100.61 capability extended-nexthop
!
address-family l2vpn evpn
neighbor 192.168.100.41 activate
neighbor 192.168.100.41 route-map rmap_r1 in
neighbor 192.168.100.61 activate
neighbor 192.168.100.61 route-map rmap_r3 in
advertise-all-vni
exit-address-family
!
Expand All @@ -28,3 +34,9 @@ router bgp 65000 vrf r1-vrf-101
advertise ipv6 unicast
exit-address-family
!
route-map rmap_r3 deny 1
match evpn vni 102
exit
route-map rmap_r1 permit 1
match evpn vni 101
exit
31 changes: 31 additions & 0 deletions tests/topotests/bgp_evpn_rt5/r3/bgpd.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
! debug bgp neighbor-events
! debug bgp updates
! debug bgp zebra
router bgp 65500
bgp router-id 192.168.100.61
bgp log-neighbor-changes
no bgp default ipv4-unicast
no bgp ebgp-requires-policy
neighbor 192.168.100.21 remote-as 65000
neighbor 192.168.100.21 capability extended-nexthop
!
address-family l2vpn evpn
neighbor 192.168.100.21 activate
advertise-all-vni
exit-address-family
!
router bgp 65000 vrf r3-vrf-102
bgp router-id 192.168.100.61
bgp log-neighbor-changes
no bgp network import-check
address-family ipv4 unicast
network 192.168.102.102/32
exit-address-family
address-family ipv6 unicast
network fd00:102::1/128
exit-address-family
address-family l2vpn evpn
advertise ipv4 unicast
advertise ipv6 unicast
exit-address-family
!
23 changes: 23 additions & 0 deletions tests/topotests/bgp_evpn_rt5/r3/zebra.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
log stdout

hostname r3
password zebra

! debug zebra vxlan
! debug zebra kernel
! debug zebra dplane
! debug zebra rib
log stdout
vrf r3-vrf-102
vni 102
exit-vrf
!
interface r3-eth0
ip address 192.168.100.61/24
!
interface loop102 vrf r3-vrf-102
ip address 192.168.102.61/32
ipv6 address fd00:6::1/128
!


45 changes: 35 additions & 10 deletions tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,22 @@ def build_topo(tgen):

tgen.add_router("r1")
tgen.add_router("r2")
tgen.add_router("r3")

switch = tgen.add_switch("s1")
switch.add_link(tgen.gears["r1"])
switch.add_link(tgen.gears["r2"])
switch.add_link(tgen.gears["r3"])

switch = tgen.add_switch("s2")
switch.add_link(tgen.gears["r1"])

switch = tgen.add_switch("s3")
switch.add_link(tgen.gears["r2"])

switch = tgen.add_switch("s4")
switch.add_link(tgen.gears["r3"])


def setup_module(mod):
"Sets up the pytest environment"
Expand All @@ -71,16 +76,16 @@ def setup_module(mod):
)
return pytest.skip("Skipping BGP EVPN RT5 NETNS Test. Kernel not supported")

# create VRF vrf-101 on R1 and R2
# create VRF vrf-101 on R1, R2, R3
# create loop101
cmds_vrflite = [
"ip link add {}-vrf-101 type vrf table 101",
"ip ru add oif {}-vrf-101 table 101",
"ip ru add iif {}-vrf-101 table 101",
"ip link set dev {}-vrf-101 up",
"ip link add loop101 type dummy",
"ip link set dev loop101 master {}-vrf-101",
"ip link set dev loop101 up",
"ip link add {0}-vrf-{1} type vrf table {1}",
"ip ru add oif {0}-vrf-{1} table {1}",
"ip ru add iif {0}-vrf-{1} table {1}",
"ip link set dev {0}-vrf-{1} up",
"ip link add loop{1} type dummy",
"ip link set dev loop{1} master {0}-vrf-{1}",
"ip link set dev loop{1} up",
]

cmds_r2 = [ # config routing 101
Expand All @@ -92,6 +97,15 @@ def setup_module(mod):
"ip link set vxlan-101 up type bridge_slave learning off flood off mcast_flood off",
]

cmds_r3 = [ # config routing 102
"ip link add name bridge-102 up type bridge stp_state 0",
"ip link set bridge-102 master {}-vrf-102",
"ip link set dev bridge-102 up",
"ip link add name vxlan-102 type vxlan id 102 dstport 4789 dev r3-eth0 local 192.168.100.61",
"ip link set dev vxlan-102 master bridge-102",
"ip link set vxlan-102 up type bridge_slave learning off flood off mcast_flood off",
]

# cmds_r1_netns_method3 = [
# "ip link add name vxlan-{1} type vxlan id {1} dstport 4789 dev {0}-eth0 local 192.168.100.21",
# "ip link set dev vxlan-{1} netns {0}-vrf-{1}",
Expand All @@ -111,15 +125,26 @@ def setup_module(mod):

router = tgen.gears["r2"]
for cmd in cmds_vrflite:
logger.info("cmd to r2: " + cmd.format("r2"))
output = router.cmd_raises(cmd.format("r2"))
logger.info("cmd to r2: " + cmd.format("r2", 101))
output = router.cmd_raises(cmd.format("r2", 101))
logger.info("result: " + output)

for cmd in cmds_r2:
logger.info("cmd to r2: " + cmd.format("r2"))
output = router.cmd_raises(cmd.format("r2"))
logger.info("result: " + output)

router = tgen.gears["r3"]
for cmd in cmds_vrflite:
logger.info("cmd to r3: " + cmd.format("r3", 102))
output = router.cmd_raises(cmd.format("r3", 102))
logger.info("result: " + output)

for cmd in cmds_r3:
logger.info("cmd to r3: " + cmd.format("r3"))
output = router.cmd_raises(cmd.format("r3"))
logger.info("result: " + output)

tgen.net["r1"].cmd_raises(
"ip link add name vxlan-101 type vxlan id 101 dstport 4789 dev r1-eth0 local 192.168.100.21"
)
Expand Down

0 comments on commit e9a6c39

Please sign in to comment.