! debug bgp neighbor-events
! debug bgp updates
! debug bgp zebra
+!
vrf r1-vrf-101
vni 101
exit-vrf
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
!
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
+++ /dev/null
-! 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
- rd 65000:302
- route-target both 65:101
- advertise ipv4 unicast
- advertise ipv6 unicast
- exit-address-family
- !
-
-
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"
)
return pytest.skip("Skipping BGP EVPN RT5 NETNS Test. Kernel not supported")
- # create VRF vrf-101 on R1, R2, R3
+ # create VRF vrf-101 on R1, R2
# create loop101
cmds_vrflite = [
"ip link add {0}-vrf-{1} type vrf table {1}",
"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}",
- # "ip netns exec {0}-vrf-{1} ip li set dev lo up",
- # "ip netns exec {0}-vrf-{1} ip link add name bridge-{1} up type bridge stp_state 0",
- # "ip netns exec {0}-vrf-{1} ip link set dev vxlan-{1} master bridge-{1}",
- # "ip netns exec {0}-vrf-{1} ip link set bridge-{1} up",
- # "ip netns exec {0}-vrf-{1} ip link set vxlan-{1} up",
- # ]
-
router = tgen.gears["r1"]
ns = "r1-vrf-101"
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"
)