mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-04 18:44:54 +00:00
tests: Add test to check importing routes to VRF
After implementing ACCEPT_OWN extended community, bgpd can't import VPN routes to the VRFs whose RD is matched with that of VPN routes. This commit adds new test to check the effect of the next commit. Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
This commit is contained in:
parent
69306c44e8
commit
03cc2022d2
4
tests/topotests/bgp_srv6l3vpn_over_ipv6/c31/staticd.conf
Normal file
4
tests/topotests/bgp_srv6l3vpn_over_ipv6/c31/staticd.conf
Normal file
@ -0,0 +1,4 @@
|
||||
!
|
||||
ip route 0.0.0.0/0 192.168.3.254
|
||||
ipv6 route ::/0 2001:3::ffff
|
||||
!
|
6
tests/topotests/bgp_srv6l3vpn_over_ipv6/c31/zebra.conf
Normal file
6
tests/topotests/bgp_srv6l3vpn_over_ipv6/c31/zebra.conf
Normal file
@ -0,0 +1,6 @@
|
||||
hostname c31
|
||||
!
|
||||
interface eth0
|
||||
ip address 192.168.3.1/24
|
||||
ipv6 address 2001:3::1/64
|
||||
!
|
4
tests/topotests/bgp_srv6l3vpn_over_ipv6/c32/staticd.conf
Normal file
4
tests/topotests/bgp_srv6l3vpn_over_ipv6/c32/staticd.conf
Normal file
@ -0,0 +1,4 @@
|
||||
!
|
||||
ip route 0.0.0.0/0 192.168.3.254
|
||||
ipv6 route ::/0 2001:3::ffff
|
||||
!
|
6
tests/topotests/bgp_srv6l3vpn_over_ipv6/c32/zebra.conf
Normal file
6
tests/topotests/bgp_srv6l3vpn_over_ipv6/c32/zebra.conf
Normal file
@ -0,0 +1,6 @@
|
||||
hostname c32
|
||||
!
|
||||
interface eth0
|
||||
ip address 192.168.3.1/24
|
||||
ipv6 address 2001:3::1/64
|
||||
!
|
@ -11,16 +11,21 @@ router bgp 65001
|
||||
bgp router-id 192.0.2.1
|
||||
no bgp ebgp-requires-policy
|
||||
no bgp default ipv4-unicast
|
||||
neighbor 2001:db8::2 remote-as 65002
|
||||
neighbor 2001:db8::2 timers 3 10
|
||||
neighbor 2001:db8::2 timers connect 1
|
||||
neighbor 2001:db8::2 capability extended-nexthop
|
||||
neighbor 2001:db8:12::2 remote-as 65002
|
||||
neighbor 2001:db8:12::2 timers 3 10
|
||||
neighbor 2001:db8:12::2 timers connect 1
|
||||
neighbor 2001:db8:12::2 capability extended-nexthop
|
||||
neighbor 2001:db8:13::3 remote-as 65001
|
||||
neighbor 2001:db8:13::3 timers 3 10
|
||||
neighbor 2001:db8:13::3 timers connect 1
|
||||
neighbor 2001:db8:13::3 capability extended-nexthop
|
||||
!
|
||||
segment-routing srv6
|
||||
locator default
|
||||
!
|
||||
address-family ipv4 vpn
|
||||
neighbor 2001:db8::2 activate
|
||||
neighbor 2001:db8:12::2 activate
|
||||
neighbor 2001:db8:13::3 activate
|
||||
exit-address-family
|
||||
!
|
||||
!
|
||||
|
@ -1,3 +1,4 @@
|
||||
!
|
||||
ipv6 route 2001:db8:2:2::/64 2001:db8::2
|
||||
ipv6 route 2001:db8:2:2::/64 2001:db8:12::2
|
||||
ipv6 route 2001:db8:3:3::/64 2001:db8:13::3
|
||||
!
|
||||
|
@ -6,12 +6,15 @@ interface lo
|
||||
ipv6 address 2001:db8:1:1::1/128
|
||||
!
|
||||
interface eth0
|
||||
ipv6 address 2001:db8::1/64
|
||||
ipv6 address 2001:db8:12::1/64
|
||||
!
|
||||
interface eth1 vrf vrf10
|
||||
interface eth1
|
||||
ipv6 address 2001:db8:13::1/64
|
||||
!
|
||||
interface eth2 vrf vrf10
|
||||
ip address 192.168.1.254/24
|
||||
!
|
||||
interface eth2 vrf vrf20
|
||||
interface eth3 vrf vrf20
|
||||
ip address 192.168.1.254/24
|
||||
!
|
||||
segment-routing
|
||||
|
@ -11,16 +11,16 @@ router bgp 65002
|
||||
bgp router-id 192.0.2.2
|
||||
no bgp ebgp-requires-policy
|
||||
no bgp default ipv4-unicast
|
||||
neighbor 2001:db8::1 remote-as 65001
|
||||
neighbor 2001:db8::1 timers 3 10
|
||||
neighbor 2001:db8::1 timers connect 1
|
||||
neighbor 2001:db8::1 capability extended-nexthop
|
||||
neighbor 2001:db8:12::1 remote-as 65001
|
||||
neighbor 2001:db8:12::1 timers 3 10
|
||||
neighbor 2001:db8:12::1 timers connect 1
|
||||
neighbor 2001:db8:12::1 capability extended-nexthop
|
||||
!
|
||||
segment-routing srv6
|
||||
locator default
|
||||
!
|
||||
address-family ipv4 vpn
|
||||
neighbor 2001:db8::1 activate
|
||||
neighbor 2001:db8:12::1 activate
|
||||
exit-address-family
|
||||
!
|
||||
!
|
||||
|
@ -1,3 +1,4 @@
|
||||
!
|
||||
ipv6 route 2001:db8:1:1::/64 2001:db8::1
|
||||
ipv6 route 2001:db8:1:1::/64 2001:db8:12::1
|
||||
ipv6 route 2001:db8:3:3::/64 2001:db8:12::1
|
||||
!
|
||||
|
@ -6,7 +6,7 @@ interface lo
|
||||
ipv6 address 2001:db8:2:2::1/128
|
||||
!
|
||||
interface eth0
|
||||
ipv6 address 2001:db8::2/64
|
||||
ipv6 address 2001:db8:12::2/64
|
||||
!
|
||||
interface eth1 vrf vrf10
|
||||
ip address 192.168.2.254/24
|
||||
|
52
tests/topotests/bgp_srv6l3vpn_over_ipv6/r3/bgpd.conf
Normal file
52
tests/topotests/bgp_srv6l3vpn_over_ipv6/r3/bgpd.conf
Normal file
@ -0,0 +1,52 @@
|
||||
frr defaults traditional
|
||||
!
|
||||
hostname r2
|
||||
password zebra
|
||||
!
|
||||
log stdout notifications
|
||||
log monitor notifications
|
||||
log commands
|
||||
!
|
||||
router bgp 65001
|
||||
bgp router-id 192.0.2.3
|
||||
no bgp ebgp-requires-policy
|
||||
no bgp default ipv4-unicast
|
||||
neighbor 2001:db8:13::1 remote-as 65001
|
||||
neighbor 2001:db8:13::1 timers 3 10
|
||||
neighbor 2001:db8:13::1 timers connect 1
|
||||
neighbor 2001:db8:13::1 capability extended-nexthop
|
||||
!
|
||||
segment-routing srv6
|
||||
locator default
|
||||
!
|
||||
address-family ipv4 vpn
|
||||
neighbor 2001:db8:13::1 activate
|
||||
exit-address-family
|
||||
!
|
||||
!
|
||||
router bgp 65001 vrf vrf10
|
||||
bgp router-id 192.0.2.3
|
||||
!
|
||||
address-family ipv4 unicast
|
||||
redistribute connected
|
||||
sid vpn export 1
|
||||
rd vpn export 65001:10
|
||||
rt vpn both 0:10
|
||||
import vpn
|
||||
export vpn
|
||||
exit-address-family
|
||||
!
|
||||
!
|
||||
router bgp 65001 vrf vrf20
|
||||
bgp router-id 192.0.2.2
|
||||
!
|
||||
address-family ipv4 unicast
|
||||
redistribute connected
|
||||
sid vpn export 2
|
||||
rd vpn export 65001:20
|
||||
rt vpn both 0:20
|
||||
import vpn
|
||||
export vpn
|
||||
exit-address-family
|
||||
!
|
||||
!
|
6
tests/topotests/bgp_srv6l3vpn_over_ipv6/r3/staticd.conf
Normal file
6
tests/topotests/bgp_srv6l3vpn_over_ipv6/r3/staticd.conf
Normal file
@ -0,0 +1,6 @@
|
||||
!
|
||||
ipv6 route 2001:db8:12::/64 2001:db8:13::1
|
||||
!
|
||||
ipv6 route 2001:db8:1:1::/64 2001:db8:13::1
|
||||
ipv6 route 2001:db8:2:2::/64 2001:db8:13::1
|
||||
!
|
29
tests/topotests/bgp_srv6l3vpn_over_ipv6/r3/zebra.conf
Normal file
29
tests/topotests/bgp_srv6l3vpn_over_ipv6/r3/zebra.conf
Normal file
@ -0,0 +1,29 @@
|
||||
log file zebra.log
|
||||
!
|
||||
hostname r2
|
||||
!
|
||||
interface lo
|
||||
ipv6 address 2001:db8:3:3::1/128
|
||||
!
|
||||
interface eth0
|
||||
ipv6 address 2001:db8:13::3/64
|
||||
!
|
||||
interface eth1 vrf vrf10
|
||||
ip address 192.168.3.254/24
|
||||
!
|
||||
interface eth2 vrf vrf20
|
||||
ip address 192.168.3.254/24
|
||||
!
|
||||
segment-routing
|
||||
srv6
|
||||
locators
|
||||
locator default
|
||||
prefix 2001:db8:3:3::/64
|
||||
!
|
||||
!
|
||||
!
|
||||
ip forwarding
|
||||
ipv6 forwarding
|
||||
!
|
||||
line vty
|
||||
!
|
@ -44,17 +44,23 @@ pytestmark = [pytest.mark.bgpd]
|
||||
def build_topo(tgen):
|
||||
tgen.add_router("r1")
|
||||
tgen.add_router("r2")
|
||||
tgen.add_router("r3")
|
||||
|
||||
tgen.add_router("c11")
|
||||
tgen.add_router("c12")
|
||||
tgen.add_router("c21")
|
||||
tgen.add_router("c22")
|
||||
tgen.add_router("c31")
|
||||
tgen.add_router("c32")
|
||||
|
||||
tgen.add_link(tgen.gears["r1"], tgen.gears["r2"], "eth0", "eth0")
|
||||
tgen.add_link(tgen.gears["r1"], tgen.gears["c11"], "eth1", "eth0")
|
||||
tgen.add_link(tgen.gears["r1"], tgen.gears["c12"], "eth2", "eth0")
|
||||
tgen.add_link(tgen.gears["r1"], tgen.gears["r3"], "eth1", "eth0")
|
||||
tgen.add_link(tgen.gears["r1"], tgen.gears["c11"], "eth2", "eth0")
|
||||
tgen.add_link(tgen.gears["r1"], tgen.gears["c12"], "eth3", "eth0")
|
||||
tgen.add_link(tgen.gears["r2"], tgen.gears["c21"], "eth1", "eth0")
|
||||
tgen.add_link(tgen.gears["r2"], tgen.gears["c22"], "eth2", "eth0")
|
||||
tgen.add_link(tgen.gears["r3"], tgen.gears["c31"], "eth1", "eth0")
|
||||
tgen.add_link(tgen.gears["r3"], tgen.gears["c32"], "eth2", "eth0")
|
||||
|
||||
|
||||
def setup_module(mod):
|
||||
@ -66,20 +72,23 @@ def setup_module(mod):
|
||||
tgen.start_topology()
|
||||
|
||||
for rname, router in tgen.routers().items():
|
||||
router.load_config(TopoRouter.RD_ZEBRA,
|
||||
os.path.join(CWD, '{}/zebra.conf'.format(rname)))
|
||||
router.load_config(TopoRouter.RD_STATIC,
|
||||
os.path.join(CWD, '{}/staticd.conf'.format(rname)))
|
||||
router.load_config(TopoRouter.RD_BGP,
|
||||
os.path.join(CWD, '{}/bgpd.conf'.format(rname)))
|
||||
router.load_config(
|
||||
TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
|
||||
)
|
||||
router.load_config(
|
||||
TopoRouter.RD_STATIC, os.path.join(CWD, "{}/staticd.conf".format(rname))
|
||||
)
|
||||
router.load_config(
|
||||
TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
|
||||
)
|
||||
|
||||
tgen.gears["r1"].run("sysctl net.vrf.strict_mode=1")
|
||||
tgen.gears["r1"].run("ip link add vrf10 type vrf table 10")
|
||||
tgen.gears["r1"].run("ip link set vrf10 up")
|
||||
tgen.gears["r1"].run("ip link add vrf20 type vrf table 20")
|
||||
tgen.gears["r1"].run("ip link set vrf20 up")
|
||||
tgen.gears["r1"].run("ip link set eth1 master vrf10")
|
||||
tgen.gears["r1"].run("ip link set eth2 master vrf20")
|
||||
tgen.gears["r1"].run("ip link set eth2 master vrf10")
|
||||
tgen.gears["r1"].run("ip link set eth3 master vrf20")
|
||||
|
||||
tgen.gears["r2"].run("sysctl net.vrf.strict_mode=1")
|
||||
tgen.gears["r2"].run("ip link add vrf10 type vrf table 10")
|
||||
@ -89,6 +98,14 @@ def setup_module(mod):
|
||||
tgen.gears["r2"].run("ip link set eth1 master vrf10")
|
||||
tgen.gears["r2"].run("ip link set eth2 master vrf20")
|
||||
|
||||
tgen.gears["r3"].run("sysctl net.vrf.strict_mode=1")
|
||||
tgen.gears["r3"].run("ip link add vrf10 type vrf table 10")
|
||||
tgen.gears["r3"].run("ip link set vrf10 up")
|
||||
tgen.gears["r3"].run("ip link add vrf20 type vrf table 20")
|
||||
tgen.gears["r3"].run("ip link set vrf20 up")
|
||||
tgen.gears["r3"].run("ip link set eth1 master vrf10")
|
||||
tgen.gears["r3"].run("ip link set eth2 master vrf20")
|
||||
|
||||
tgen.start_router()
|
||||
|
||||
|
||||
@ -115,12 +132,13 @@ def check_ping4(name, dest_addr, expected):
|
||||
|
||||
def test_ping():
|
||||
tgen = get_topogen()
|
||||
logger.info(tgen.gears["c11"].run("ip route show"))
|
||||
# tests for ipv4-vpn
|
||||
|
||||
check_ping4("c11", "192.168.2.1", True)
|
||||
check_ping4("c11", "192.168.3.1", True)
|
||||
check_ping4("c12", "192.168.2.1", True)
|
||||
check_ping4("c21", "192.168.1.1", True)
|
||||
check_ping4("c22", "192.168.1.1", True)
|
||||
check_ping4("c12", "192.168.3.1", True)
|
||||
check_ping4("c21", "192.168.3.1", True)
|
||||
check_ping4("c22", "192.168.3.1", True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Loading…
Reference in New Issue
Block a user