]> git.puffer.fish Git - mirror/frr.git/commitdiff
topotests: bgp_evpn_rt5, add test with match evpn vni command
authorPhilippe Guibert <philippe.guibert@6wind.com>
Mon, 16 Dec 2024 14:29:39 +0000 (15:29 +0100)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 21 Jan 2025 12:48:36 +0000 (13:48 +0100)
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>
tests/topotests/bgp_evpn_rt5/r1/bgpd.conf
tests/topotests/bgp_evpn_rt5/r3/bgpd.conf [new file with mode: 0644]
tests/topotests/bgp_evpn_rt5/r3/zebra.conf [new file with mode: 0644]
tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py

index c8c4faf222ccd032df6430013e574df79fabf484..c49f3ce12db09403859d35585bb4101fb728868d 100644 (file)
@@ -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 (file)
index 0000000..43f04c8
--- /dev/null
@@ -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 (file)
index 0000000..3ab5142
--- /dev/null
@@ -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
+!
+
+
index c874cbed66700211512c8b9f2536f6814d21e156..8570f4f8a19b788c20a5d003751a186d6082d6a8 100644 (file)
@@ -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"
     )