Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

topotests: bgp_evpn_rt5, add test with match evpn vni command #17652

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion tests/topotests/bgp_bmp/test_bgp_bmp_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def setup_module(mod):
"tcpdump -nni r1-eth0 -s 0 -w {} &".format(pcap_file), stdout=None
)

for rname, router in tgen.routers().items():
for _, (rname, router) in enumerate(tgen.routers().items(), 1):
logger.info("Loading router %s" % rname)
router.load_frr_config(
os.path.join(CWD, "{}/frr.conf".format(rname)),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,42 @@
log stdout

hostname r1
password zebra

! debug zebra vxlan
! debug zebra kernel
! debug zebra dplane
! debug zebra rib
! debug bgp neighbor-events
! debug bgp updates
! debug bgp zebra
log stdout
vrf r1-vrf-101
vni 101
exit-vrf
!
interface r1-eth0
ip address 192.168.100.21/24
!
interface loop101 vrf r1-vrf-101
ip address 192.168.102.21/32
ipv6 address fd00::1/128
!
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 +55,11 @@ 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


23 changes: 0 additions & 23 deletions tests/topotests/bgp_evpn_rt5/r1/zebra.conf

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,24 @@
log stdout

hostname r2
password zebra

! debug zebra vxlan
! debug bgp neighbor-events
! debug bgp updates
! debug bgp zebra

vrf r2-vrf-101
vni 101
exit-vrf
!
interface loop101 vrf r2-vrf-101
ip address 192.168.101.41/32
ipv6 address fd00::2/128
!
interface r2-eth0
ip address 192.168.100.41/24
!
router bgp 65000
bgp router-id 192.168.100.41
bgp log-neighbor-changes
Expand Down Expand Up @@ -47,3 +65,4 @@ exit
route-map rmap6 deny 2
match ipv6 address acl6_2
exit

19 changes: 0 additions & 19 deletions tests/topotests/bgp_evpn_rt5/r2/zebra.conf

This file was deleted.

44 changes: 44 additions & 0 deletions tests/topotests/bgp_evpn_rt5/r3/frr.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
! debug bgp neighbor-events
! debug bgp updates
! debug bgp zebra
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
!
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
!


63 changes: 42 additions & 21 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 All @@ -134,21 +159,17 @@ def setup_module(mod):
tgen.net["r1"].cmd_raises("ip -n r1-vrf-101 link set bridge-101 up")
tgen.net["r1"].cmd_raises("ip -n r1-vrf-101 link set vxlan-101 up")

for rname, router in router_list.items():
for rname, router in tgen.routers().items():
logger.info("Loading router %s" % rname)
if rname == "r1":
router.load_config(TopoRouter.RD_MGMTD, None, "--vrfwnetns")
router.load_config(
TopoRouter.RD_ZEBRA,
os.path.join(CWD, "{}/zebra.conf".format(rname)),
"--vrfwnetns",
router.load_frr_config(
os.path.join(CWD, "{}/frr.conf".format(rname)),
[(TopoRouter.RD_MGMTD, "--vrfwnetns"), (TopoRouter.RD_ZEBRA, "--vrfwnetns"), (TopoRouter.RD_BGP, None)],
)
else:
router.load_config(
TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
router.load_frr_config(
os.path.join(CWD, "{}/frr.conf".format(rname))
)
router.load_config(
TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
)

# Initialize all routers.
tgen.start_router()
Expand Down
Loading