diff options
| author | Philippe Guibert <philippe.guibert@6wind.com> | 2024-12-16 15:29:39 +0100 | 
|---|---|---|
| committer | Philippe Guibert <philippe.guibert@6wind.com> | 2025-01-21 13:48:36 +0100 | 
| commit | 0d5bd461af9f77631be6d77438090166ca4bf1aa (patch) | |
| tree | 3bd15bf9ede6964d869c4828f4936b82545bb662 /tests | |
| parent | 4f65107d20901b136aa158b18e484a15df166cf0 (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.conf | 12 | ||||
| -rw-r--r-- | tests/topotests/bgp_evpn_rt5/r3/bgpd.conf | 31 | ||||
| -rw-r--r-- | tests/topotests/bgp_evpn_rt5/r3/zebra.conf | 13 | ||||
| -rw-r--r-- | tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py | 45 | 
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"      )  | 
