mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 01:47:29 +00:00
bgp_l3vpn_to_bgp_vrf: test adding/removing 50K*2CEs VRF routes
Only runs when configured with --enable-sharpd Signed-off-by: Lou Berger <lberger@labn.net>
This commit is contained in:
parent
a330e8170d
commit
1cba6d1210
@ -15,6 +15,7 @@ router bgp 5227
|
|||||||
network 99.0.0.1/32
|
network 99.0.0.1/32
|
||||||
network 5.1.0.0/24 route-map rm-nh
|
network 5.1.0.0/24 route-map rm-nh
|
||||||
network 5.1.1.0/24 route-map rm-nh
|
network 5.1.1.0/24 route-map rm-nh
|
||||||
|
redistribute sharp route-map sharp-nh
|
||||||
neighbor 192.168.1.1 activate
|
neighbor 192.168.1.1 activate
|
||||||
exit-address-family
|
exit-address-family
|
||||||
!
|
!
|
||||||
@ -29,6 +30,15 @@ route-map rm-nh permit 10
|
|||||||
set extcommunity rt 89:123
|
set extcommunity rt 89:123
|
||||||
set community 0:67
|
set community 0:67
|
||||||
!
|
!
|
||||||
|
route-map sharp-nh permit 10
|
||||||
|
match ip address al-any
|
||||||
|
set ip next-hop 99.0.0.1
|
||||||
|
set local-preference 200
|
||||||
|
set metric 200
|
||||||
|
set large-community 90:12:34
|
||||||
|
set extcommunity rt 80:987
|
||||||
|
set community 0:65
|
||||||
|
!
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ router bgp 5227
|
|||||||
network 99.0.0.2/32
|
network 99.0.0.2/32
|
||||||
network 5.1.0.0/24 route-map rm-nh
|
network 5.1.0.0/24 route-map rm-nh
|
||||||
network 5.1.1.0/24 route-map rm-nh
|
network 5.1.1.0/24 route-map rm-nh
|
||||||
|
redistribute sharp route-map sharp-nh
|
||||||
neighbor 192.168.1.1 activate
|
neighbor 192.168.1.1 activate
|
||||||
exit-address-family
|
exit-address-family
|
||||||
!
|
!
|
||||||
@ -29,6 +30,15 @@ route-map rm-nh permit 10
|
|||||||
set extcommunity rt 89:123
|
set extcommunity rt 89:123
|
||||||
set community 0:67
|
set community 0:67
|
||||||
!
|
!
|
||||||
|
route-map sharp-nh permit 10
|
||||||
|
match ip address al-any
|
||||||
|
set ip next-hop 99.0.0.2
|
||||||
|
set local-preference 200
|
||||||
|
set metric 200
|
||||||
|
set large-community 78:90:12
|
||||||
|
set extcommunity rt 70:456
|
||||||
|
set community 0:66
|
||||||
|
!
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from lutil import luCommand
|
from lutil import luCommand
|
||||||
from customize import l3mdev_accept
|
from customize import l3mdev_accept
|
||||||
|
|
||||||
l3mdev_rtrs = ['r1', 'r3', 'r4', 'ce4']
|
l3mdev_rtrs = ['r1', 'r3', 'r4', 'ce4']
|
||||||
for rtr in l3mdev_rtrs:
|
for rtr in l3mdev_rtrs:
|
||||||
luCommand(rtr,'sysctl net.ipv4.tcp_l3mdev_accept',' = \d*','none','')
|
luCommand(rtr,'sysctl net.ipv4.tcp_l3mdev_accept',' = \d*','none','')
|
||||||
|
20
tests/topotests/bgp_l3vpn_to_bgp_vrf/scripts/scale_down.py
Normal file
20
tests/topotests/bgp_l3vpn_to_bgp_vrf/scripts/scale_down.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
from lutil import luCommand
|
||||||
|
ret = luCommand('ce1', 'vtysh -c "show ip route" | grep -c \\ 10\\.\\*/32','(.*)','pass', 'Looking for sharp routes')
|
||||||
|
found = luLast()
|
||||||
|
if ret != False and found != None:
|
||||||
|
num = int(found.group())
|
||||||
|
luCommand('ce3', 'vtysh -c "show bgp sum"',
|
||||||
|
'.', 'pass', 'See %s sharp routes' % num)
|
||||||
|
if num > 0:
|
||||||
|
wait = num/500
|
||||||
|
luCommand('ce1', 'vtysh -c "sharp remove routes 10.0.0.0 {}"'.format(num),'.','none','Removing {} routes'.format(num))
|
||||||
|
luCommand('ce2', 'vtysh -c "sharp remove routes 10.0.0.0 {}"'.format(num),'.','none','Removing {} routes'.format(num))
|
||||||
|
rtrs = ['ce1', 'ce2', 'ce3']
|
||||||
|
for rtr in rtrs:
|
||||||
|
luCommand(rtr, 'vtysh -c "show bgp ipv4 uni" | grep -c 10\\.\\*/32','^0$', 'wait', 'BGP routes removed', wait)
|
||||||
|
for rtr in rtrs:
|
||||||
|
luCommand(rtr, 'ip route show | grep -c \\^10\\.','^0$', 'wait', 'Linux routes removed', wait)
|
||||||
|
rtrs = ['r1', 'r3', 'r4']
|
||||||
|
for rtr in rtrs:
|
||||||
|
luCommand(rtr, 'ip route show vrf {}-cust1 | grep -c \\^10\\.'.format(rtr),'^0$','wait','VRF route removed',wait)
|
||||||
|
#done
|
66
tests/topotests/bgp_l3vpn_to_bgp_vrf/scripts/scale_up.py
Normal file
66
tests/topotests/bgp_l3vpn_to_bgp_vrf/scripts/scale_up.py
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
from lutil import luCommand
|
||||||
|
num = 50000
|
||||||
|
b = int(num/(256*256))
|
||||||
|
if b > 0:
|
||||||
|
r = num - b * (256*256)
|
||||||
|
else:
|
||||||
|
r = num
|
||||||
|
c = int(r/256)
|
||||||
|
if c > 0:
|
||||||
|
d = r - c * 256 - 1
|
||||||
|
else:
|
||||||
|
d = r
|
||||||
|
wait = num/1000
|
||||||
|
mem = {}
|
||||||
|
rtrs = ['ce1', 'ce2', 'ce3', 'r1', 'r2', 'r3', 'r4']
|
||||||
|
for rtr in rtrs:
|
||||||
|
mem[rtr] = {'value': 0, 'units': 'unknown'}
|
||||||
|
ret = luCommand(rtr, 'vtysh -c "show memory"', 'bgpd: System allocator statistics: Total heap allocated: *(\d*) ([A-Za-z]*)', 'none', 'collect bgpd memory stats')
|
||||||
|
found = luLast()
|
||||||
|
if ret != False and found != None:
|
||||||
|
mem[rtr] = {'value': int(found.group(1)), 'units': found.group(2)}
|
||||||
|
|
||||||
|
luCommand('ce1', 'vtysh -c "sharp data nexthop"', 'sharpd is not running', 'none','check if sharpd running')
|
||||||
|
doSharp = True
|
||||||
|
found = luLast()
|
||||||
|
if ret != False and found != None:
|
||||||
|
if len(found.group()):
|
||||||
|
luCommand('ce1', 'vtysh -c "sharp data nexthop"', 'sharpd is not running', 'pass','sharpd NOT running, skipping test')
|
||||||
|
doSharp = False
|
||||||
|
|
||||||
|
if doSharp == True:
|
||||||
|
luCommand('ce1', 'vtysh -c "sharp install routes 10.0.0.0 nexthop 99.0.0.1 {}"'.format(num),'','pass','Adding {} routes'.format(num))
|
||||||
|
luCommand('ce2', 'vtysh -c "sharp install routes 10.0.0.0 nexthop 99.0.0.2 {}"'.format(num),'','pass','Adding {} routes'.format(num))
|
||||||
|
rtrs = ['ce1', 'ce2', 'ce3']
|
||||||
|
for rtr in rtrs:
|
||||||
|
luCommand(rtr, 'vtysh -c "show bgp ipv4 uni 10.{}.{}.{}"'.format(b,c,d), 'Last update:', 'wait', 'RXed last route, 10.{}.{}.{}'.format(b,c,d), wait)
|
||||||
|
luCommand(rtr, 'vtysh -c "show bgp ipv4 uni" | grep -c 10\\.\\*/32', str(num), 'wait', 'See all sharp routes in BGP', wait)
|
||||||
|
luCommand('r1', 'vtysh -c "show bgp vrf r1-cust1 ipv4 uni 10.{}.{}.{}"'.format(b,c,d),'99.0.0.1','wait','RXed -> 10.{}.{}.{} from CE1'.format(b,c,d), wait)
|
||||||
|
luCommand('r3', 'vtysh -c "show bgp vrf r3-cust1 ipv4 uni 10.{}.{}.{}"'.format(b,c,d),'99.0.0.2','wait','RXed -> 10.{}.{}.{} from CE2'.format(b,c,d), wait)
|
||||||
|
luCommand('r1', 'vtysh -c "show bgp ipv4 vpn 10.{}.{}.{}"'.format(b,c,d),'99.0.0.1','wait','see VPN safi -> 10.{}.{}.{} from CE1'.format(b,c,d))
|
||||||
|
luCommand('r3', 'vtysh -c "show bgp ipv4 vpn 10.{}.{}.{}"'.format(b,c,d),'99.0.0.2','wait','see VPN safi -> 10.{}.{}.{} from CE2'.format(b,c,d))
|
||||||
|
luCommand('r3', 'vtysh -c "show bgp ipv4 vpn 10.{}.{}.{}"'.format(b,c,d),'1.1.1.1','wait','see VPN safi -> 10.{}.{}.{} from CE1'.format(b,c,d))
|
||||||
|
luCommand('r1', 'vtysh -c "show bgp ipv4 vpn 10.{}.{}.{}"'.format(b,c,d),'3.3.3.3','wait','see VPN safi -> 10.{}.{}.{} from CE2'.format(b,c,d))
|
||||||
|
luCommand('r4', 'vtysh -c "show bgp ipv4 vpn 10.{}.{}.{}"'.format(b,c,d),'1.1.1.1','wait','see VPN safi -> 10.{}.{}.{} from CE1'.format(b,c,d))
|
||||||
|
luCommand('r4', 'vtysh -c "show bgp ipv4 vpn 10.{}.{}.{}"'.format(b,c,d),'3.3.3.3','wait','see VPN safi -> 10.{}.{}.{} from CE2'.format(b,c,d))
|
||||||
|
rtrs = ['ce1', 'ce2', 'ce3']
|
||||||
|
for rtr in rtrs:
|
||||||
|
luCommand(rtr, 'ip route get 10.{}.{}.{}'.format(b,c,d),'dev','wait','Route to 10.{}.{}.{} available'.format(b,c,d), wait)
|
||||||
|
luCommand(rtr, 'ip route show | grep -c \\^10\\.', str(num), 'wait', 'See {} linux routes'.format(num), wait)
|
||||||
|
|
||||||
|
rtrs = ['r1', 'r3', 'r4']
|
||||||
|
for rtr in rtrs:
|
||||||
|
luCommand(rtr, 'ip route get vrf {}-cust1 10.{}.{}.{}'.format(rtr,b,c,d),'dev','wait','VRF route available',wait)
|
||||||
|
luCommand(rtr, 'ip route show vrf {}-cust1 | grep -c \\^10\\.'.format(rtr), str(num), 'wait','See {} linux routes'.format(num), wait)
|
||||||
|
rtrs = ['ce1', 'ce2', 'ce3', 'r1', 'r2', 'r3', 'r4']
|
||||||
|
for rtr in rtrs:
|
||||||
|
ret = luCommand(rtr, 'vtysh -c "show memory"', 'bgpd: System allocator statistics: Total heap allocated: *(\d*) ([A-Za-z]*)', 'none', 'collect bgpd memory stats')
|
||||||
|
found = luLast()
|
||||||
|
if ret != False and found != None:
|
||||||
|
val = int(found.group(1))
|
||||||
|
if mem[rtr]['units'] != found.group(2):
|
||||||
|
val *= 1000
|
||||||
|
delta = val - int(mem[rtr]['value'])
|
||||||
|
ave = float(delta)/float(num)
|
||||||
|
luCommand(rtr, 'vtysh -c "show thread cpu"', '.', 'pass', 'BGPd heap: {0} {1} --> {2} {3} ({4} {1}/route)'.format(mem[rtr]['value'], mem[rtr]['units'], found.group(1), found.group(2), round(ave,4)))
|
||||||
|
#done
|
@ -75,6 +75,24 @@ def test_check_linux_mpls():
|
|||||||
#CheckFunc = 'ltemplateVersionCheck(\'4.1\', cli=True, iproute2=\'4.9\')'
|
#CheckFunc = 'ltemplateVersionCheck(\'4.1\', cli=True, iproute2=\'4.9\')'
|
||||||
ltemplateTest('scripts/check_linux_mpls.py', False, CliOnFail, CheckFunc)
|
ltemplateTest('scripts/check_linux_mpls.py', False, CliOnFail, CheckFunc)
|
||||||
|
|
||||||
|
def test_check_scale_up():
|
||||||
|
CliOnFail = None
|
||||||
|
# For debugging, uncomment the next line
|
||||||
|
#CliOnFail = 'tgen.mininet_cli'
|
||||||
|
CheckFunc = 'ltemplateVersionCheck(\'4.1\', iproute2=\'4.9\')'
|
||||||
|
#uncomment next line to start cli *before* script is run
|
||||||
|
#CheckFunc = 'ltemplateVersionCheck(\'4.1\', cli=True, iproute2=\'4.9\')'
|
||||||
|
ltemplateTest('scripts/scale_up.py', False, CliOnFail, CheckFunc)
|
||||||
|
|
||||||
|
def test_check_scale_down():
|
||||||
|
CliOnFail = None
|
||||||
|
# For debugging, uncomment the next line
|
||||||
|
#CliOnFail = 'tgen.mininet_cli'
|
||||||
|
CheckFunc = 'ltemplateVersionCheck(\'4.1\', iproute2=\'4.9\')'
|
||||||
|
#uncomment next line to start cli *before* script is run
|
||||||
|
#CheckFunc = 'ltemplateVersionCheck(\'4.1\', cli=True, iproute2=\'4.9\')'
|
||||||
|
ltemplateTest('scripts/scale_down.py', False, CliOnFail, CheckFunc)
|
||||||
|
|
||||||
def SKIP_test_cleanup_all():
|
def SKIP_test_cleanup_all():
|
||||||
CliOnFail = None
|
CliOnFail = None
|
||||||
# For debugging, uncomment the next line
|
# For debugging, uncomment the next line
|
||||||
|
Loading…
Reference in New Issue
Block a user