summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPhilippe Guibert <philippe.guibert@6wind.com>2024-12-16 15:29:39 +0100
committerPhilippe Guibert <philippe.guibert@6wind.com>2025-01-21 13:48:36 +0100
commit0d5bd461af9f77631be6d77438090166ca4bf1aa (patch)
tree3bd15bf9ede6964d869c4828f4936b82545bb662 /tests
parent4f65107d20901b136aa158b18e484a15df166cf0 (diff)
topotests: bgp_evpn_rt5, add test with match evpn vni command
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>
Diffstat (limited to 'tests')
-rw-r--r--tests/topotests/bgp_evpn_rt5/r1/bgpd.conf12
-rw-r--r--tests/topotests/bgp_evpn_rt5/r3/bgpd.conf31
-rw-r--r--tests/topotests/bgp_evpn_rt5/r3/zebra.conf13
-rw-r--r--tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py45
4 files changed, 91 insertions, 10 deletions
diff --git a/tests/topotests/bgp_evpn_rt5/r1/bgpd.conf b/tests/topotests/bgp_evpn_rt5/r1/bgpd.conf
index c8c4faf222..c49f3ce12d 100644
--- a/tests/topotests/bgp_evpn_rt5/r1/bgpd.conf
+++ b/tests/topotests/bgp_evpn_rt5/r1/bgpd.conf
@@ -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
!
@@ -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
diff --git a/tests/topotests/bgp_evpn_rt5/r3/bgpd.conf b/tests/topotests/bgp_evpn_rt5/r3/bgpd.conf
new file mode 100644
index 0000000000..43f04c8bd8
--- /dev/null
+++ b/tests/topotests/bgp_evpn_rt5/r3/bgpd.conf
@@ -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
+ !
diff --git a/tests/topotests/bgp_evpn_rt5/r3/zebra.conf b/tests/topotests/bgp_evpn_rt5/r3/zebra.conf
new file mode 100644
index 0000000000..3ab51423d9
--- /dev/null
+++ b/tests/topotests/bgp_evpn_rt5/r3/zebra.conf
@@ -0,0 +1,13 @@
+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
+!
+
+
diff --git a/tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py b/tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py
index c874cbed66..8570f4f8a1 100644
--- a/tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py
+++ b/tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py
@@ -42,10 +42,12 @@ 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"])
@@ -53,6 +55,9 @@ def build_topo(tgen):
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"
@@ -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
@@ -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}",
@@ -111,8 +125,8 @@ 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:
@@ -120,6 +134,17 @@ def setup_module(mod):
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"
)