mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-09 11:05:04 +00:00
tests: Modify bgp_rr_ibgp to test RR server correctness
Fixup this basically unused test to ensure that a RR server passes the nexthop through correctly. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
99819027b1
commit
a19aca1671
@ -11,15 +11,12 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":13,
|
"internalFlags":13,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"ip":"192.168.2.1",
|
"ip":"192.168.2.1",
|
||||||
"afi":"ipv4",
|
"afi":"ipv4",
|
||||||
"interfaceIndex":2,
|
|
||||||
"interfaceName":"spine1-eth0",
|
"interfaceName":"spine1-eth0",
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
@ -38,14 +35,11 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":8,
|
"internalFlags":8,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"directlyConnected":true,
|
"directlyConnected":true,
|
||||||
"interfaceIndex":2,
|
|
||||||
"interfaceName":"spine1-eth0",
|
"interfaceName":"spine1-eth0",
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
@ -64,15 +58,12 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":13,
|
"internalFlags":13,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"ip":"192.168.4.2",
|
"ip":"192.168.4.2",
|
||||||
"afi":"ipv4",
|
"afi":"ipv4",
|
||||||
"interfaceIndex":3,
|
|
||||||
"interfaceName":"spine1-eth1",
|
"interfaceName":"spine1-eth1",
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
@ -91,23 +82,20 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":8,
|
"internalFlags":8,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"directlyConnected":true,
|
"directlyConnected":true,
|
||||||
"interfaceIndex":3,
|
|
||||||
"interfaceName":"spine1-eth1",
|
"interfaceName":"spine1-eth1",
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"192.168.5.0\/24":[
|
"192.168.5.1\/32":[
|
||||||
{
|
{
|
||||||
"prefix":"192.168.5.0\/24",
|
"prefix":"192.168.5.1\/32",
|
||||||
"protocol":"bgp",
|
"protocol":"bgp",
|
||||||
"selected":true,
|
"selected":true,
|
||||||
"destSelected":true,
|
"destSelected":true,
|
||||||
@ -117,24 +105,21 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":13,
|
"internalFlags":13,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"ip":"192.168.2.1",
|
"ip":"192.168.2.1",
|
||||||
"afi":"ipv4",
|
"afi":"ipv4",
|
||||||
"interfaceIndex":2,
|
|
||||||
"interfaceName":"spine1-eth0",
|
"interfaceName":"spine1-eth0",
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"192.168.6.0\/24":[
|
"192.168.6.2\/32":[
|
||||||
{
|
{
|
||||||
"prefix":"192.168.6.0\/24",
|
"prefix":"192.168.6.2\/32",
|
||||||
"protocol":"bgp",
|
"protocol":"bgp",
|
||||||
"selected":true,
|
"selected":true,
|
||||||
"destSelected":true,
|
"destSelected":true,
|
||||||
@ -144,19 +129,16 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":13,
|
"internalFlags":13,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"ip":"192.168.4.2",
|
"ip":"192.168.4.2",
|
||||||
"afi":"ipv4",
|
"afi":"ipv4",
|
||||||
"interfaceIndex":3,
|
|
||||||
"interfaceName":"spine1-eth1",
|
"interfaceName":"spine1-eth1",
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -1,8 +0,0 @@
|
|||||||
hostname spine2
|
|
||||||
router bgp 99
|
|
||||||
neighbor 192.168.5.1 remote-as internal
|
|
||||||
neighbor 192.168.6.2 remote-as internal
|
|
||||||
address-family ipv4 uni
|
|
||||||
redistribute connected
|
|
||||||
neighbor 192.168.5.1 route-reflector-client
|
|
||||||
neighbor 192.168.6.2 route-reflector-client
|
|
@ -1,162 +0,0 @@
|
|||||||
{
|
|
||||||
"192.168.1.0\/24":[
|
|
||||||
{
|
|
||||||
"prefix":"192.168.1.0\/24",
|
|
||||||
"protocol":"bgp",
|
|
||||||
"selected":true,
|
|
||||||
"destSelected":true,
|
|
||||||
"distance":200,
|
|
||||||
"metric":0,
|
|
||||||
"installed":true,
|
|
||||||
"table":254,
|
|
||||||
"internalStatus":16,
|
|
||||||
"internalFlags":13,
|
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
|
||||||
{
|
|
||||||
"flags":3,
|
|
||||||
"fib":true,
|
|
||||||
"ip":"192.168.5.1",
|
|
||||||
"afi":"ipv4",
|
|
||||||
"interfaceIndex":2,
|
|
||||||
"interfaceName":"spine2-eth0",
|
|
||||||
"active":true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"192.168.2.0\/24":[
|
|
||||||
{
|
|
||||||
"prefix":"192.168.2.0\/24",
|
|
||||||
"protocol":"bgp",
|
|
||||||
"selected":true,
|
|
||||||
"destSelected":true,
|
|
||||||
"distance":200,
|
|
||||||
"metric":0,
|
|
||||||
"installed":true,
|
|
||||||
"table":254,
|
|
||||||
"internalStatus":16,
|
|
||||||
"internalFlags":13,
|
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
|
||||||
{
|
|
||||||
"flags":3,
|
|
||||||
"fib":true,
|
|
||||||
"ip":"192.168.5.1",
|
|
||||||
"afi":"ipv4",
|
|
||||||
"interfaceIndex":2,
|
|
||||||
"interfaceName":"spine2-eth0",
|
|
||||||
"active":true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"192.168.3.0\/24":[
|
|
||||||
{
|
|
||||||
"prefix":"192.168.3.0\/24",
|
|
||||||
"protocol":"bgp",
|
|
||||||
"selected":true,
|
|
||||||
"destSelected":true,
|
|
||||||
"distance":200,
|
|
||||||
"metric":0,
|
|
||||||
"installed":true,
|
|
||||||
"table":254,
|
|
||||||
"internalStatus":16,
|
|
||||||
"internalFlags":13,
|
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
|
||||||
{
|
|
||||||
"flags":3,
|
|
||||||
"fib":true,
|
|
||||||
"ip":"192.168.6.2",
|
|
||||||
"afi":"ipv4",
|
|
||||||
"interfaceIndex":3,
|
|
||||||
"interfaceName":"spine2-eth1",
|
|
||||||
"active":true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"192.168.4.0\/24":[
|
|
||||||
{
|
|
||||||
"prefix":"192.168.4.0\/24",
|
|
||||||
"protocol":"bgp",
|
|
||||||
"selected":true,
|
|
||||||
"destSelected":true,
|
|
||||||
"distance":200,
|
|
||||||
"metric":0,
|
|
||||||
"installed":true,
|
|
||||||
"table":254,
|
|
||||||
"internalStatus":16,
|
|
||||||
"internalFlags":13,
|
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
|
||||||
{
|
|
||||||
"flags":3,
|
|
||||||
"fib":true,
|
|
||||||
"ip":"192.168.6.2",
|
|
||||||
"afi":"ipv4",
|
|
||||||
"interfaceIndex":3,
|
|
||||||
"interfaceName":"spine2-eth1",
|
|
||||||
"active":true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"192.168.5.0\/24":[
|
|
||||||
{
|
|
||||||
"prefix":"192.168.5.0\/24",
|
|
||||||
"protocol":"connected",
|
|
||||||
"selected":true,
|
|
||||||
"destSelected":true,
|
|
||||||
"distance":0,
|
|
||||||
"metric":0,
|
|
||||||
"installed":true,
|
|
||||||
"table":254,
|
|
||||||
"internalStatus":16,
|
|
||||||
"internalFlags":8,
|
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
|
||||||
{
|
|
||||||
"flags":3,
|
|
||||||
"fib":true,
|
|
||||||
"directlyConnected":true,
|
|
||||||
"interfaceIndex":2,
|
|
||||||
"interfaceName":"spine2-eth0",
|
|
||||||
"active":true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"192.168.6.0\/24":[
|
|
||||||
{
|
|
||||||
"prefix":"192.168.6.0\/24",
|
|
||||||
"protocol":"connected",
|
|
||||||
"selected":true,
|
|
||||||
"destSelected":true,
|
|
||||||
"distance":0,
|
|
||||||
"metric":0,
|
|
||||||
"installed":true,
|
|
||||||
"table":254,
|
|
||||||
"internalStatus":16,
|
|
||||||
"internalFlags":8,
|
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
|
||||||
{
|
|
||||||
"flags":3,
|
|
||||||
"fib":true,
|
|
||||||
"directlyConnected":true,
|
|
||||||
"interfaceIndex":3,
|
|
||||||
"interfaceName":"spine2-eth1",
|
|
||||||
"active":true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
hostname spine2
|
|
@ -1,9 +0,0 @@
|
|||||||
hostname spine2
|
|
||||||
ip forwarding
|
|
||||||
ipv6 forwarding
|
|
||||||
|
|
||||||
int spine2-eth0
|
|
||||||
ip addr 192.168.5.4/24
|
|
||||||
|
|
||||||
int spine2-eth1
|
|
||||||
ip addr 192.168.6.4/24
|
|
@ -25,47 +25,8 @@
|
|||||||
"""
|
"""
|
||||||
test_bgp_rr_ibgp_topo1.py: Testing IBGP with RR and no IGP
|
test_bgp_rr_ibgp_topo1.py: Testing IBGP with RR and no IGP
|
||||||
|
|
||||||
|
Ensure that a basic rr topology comes up and correctly passes
|
||||||
In a leaf/spine topology with only IBGP connections, where
|
routes around
|
||||||
the same network is being redistributed at multiple points
|
|
||||||
in the network ( say a redistribute connected at both leaf and spines )
|
|
||||||
we end up in a state where zebra gets very confused.
|
|
||||||
|
|
||||||
eva# show ip route
|
|
||||||
Codes: K - kernel route, C - connected, S - static, R - RIP,
|
|
||||||
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
|
|
||||||
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
|
|
||||||
F - PBR, f - OpenFabric,
|
|
||||||
> - selected route, * - FIB route, q - queued route, r - rejected route
|
|
||||||
|
|
||||||
C>* 192.168.1.0/24 is directly connected, tor1-eth0, 00:00:30
|
|
||||||
C>* 192.168.2.0/24 is directly connected, tor1-eth1, 00:00:30
|
|
||||||
B 192.168.3.0/24 [200/0] via 192.168.4.2 inactive, 00:00:25
|
|
||||||
via 192.168.6.2 inactive, 00:00:25
|
|
||||||
B>* 192.168.4.0/24 [200/0] via 192.168.2.3, tor1-eth1, 00:00:25
|
|
||||||
* via 192.168.6.2 inactive, 00:00:25
|
|
||||||
C>* 192.168.5.0/24 is directly connected, tor1-eth2, 00:00:30
|
|
||||||
B>* 192.168.6.0/24 [200/0] via 192.168.4.2 inactive, 00:00:25
|
|
||||||
* via 192.168.5.4, tor1-eth2, 00:00:25
|
|
||||||
|
|
||||||
Effectively we have ibgp routes recursing through ibgp routes
|
|
||||||
and there is no metric to discern whom to listen to.
|
|
||||||
|
|
||||||
This draft:
|
|
||||||
https://tools.ietf.org/html/draft-ietf-idr-bgp-optimal-route-reflection-19
|
|
||||||
|
|
||||||
appears to address this issue. From looking at both cisco and arista
|
|
||||||
deployments they are handling this issue by having the route reflector
|
|
||||||
prefer the localy learned routes over from their clients.
|
|
||||||
|
|
||||||
Add this topology, in a broken state, so that when we do fix this issue
|
|
||||||
it is a simple matter of touching this topology up and re-adding it
|
|
||||||
to the normal daily builds. I also wanted to add this topology
|
|
||||||
since it is in a state of `doneness` and I wanted to move onto
|
|
||||||
my normal day job without having to remember about this test.
|
|
||||||
|
|
||||||
This topology is not configured to be run as part of the normal
|
|
||||||
topotests.
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -105,7 +66,6 @@ class NetworkTopo(Topo):
|
|||||||
tgen.add_router('tor1')
|
tgen.add_router('tor1')
|
||||||
tgen.add_router('tor2')
|
tgen.add_router('tor2')
|
||||||
tgen.add_router('spine1')
|
tgen.add_router('spine1')
|
||||||
tgen.add_router('spine2')
|
|
||||||
|
|
||||||
# First switch is for a dummy interface (for local network)
|
# First switch is for a dummy interface (for local network)
|
||||||
# on tor1
|
# on tor1
|
||||||
@ -128,15 +88,6 @@ class NetworkTopo(Topo):
|
|||||||
switch.add_link(tgen.gears['tor2'])
|
switch.add_link(tgen.gears['tor2'])
|
||||||
switch.add_link(tgen.gears['spine1'])
|
switch.add_link(tgen.gears['spine1'])
|
||||||
|
|
||||||
# 192.168.5.0/24 - tor1 <-> spine2 connection
|
|
||||||
switch = tgen.add_switch('sw5')
|
|
||||||
switch.add_link(tgen.gears['tor1'])
|
|
||||||
switch.add_link(tgen.gears['spine2'])
|
|
||||||
|
|
||||||
# 192.168.6.0/24 - tor2 <-> spine2 connection
|
|
||||||
switch = tgen.add_switch('sw6')
|
|
||||||
switch.add_link(tgen.gears['tor2'])
|
|
||||||
switch.add_link(tgen.gears['spine2'])
|
|
||||||
|
|
||||||
#####################################################
|
#####################################################
|
||||||
##
|
##
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
hostname tor1
|
hostname tor1
|
||||||
router bgp 99
|
router bgp 99
|
||||||
neighbor 192.168.2.3 remote-as internal
|
neighbor 192.168.2.3 remote-as internal
|
||||||
neighbor 192.168.5.4 remote-as internal
|
|
||||||
redistribute connected
|
redistribute connected
|
||||||
|
@ -11,14 +11,11 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":8,
|
"internalFlags":8,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"directlyConnected":true,
|
"directlyConnected":true,
|
||||||
"interfaceIndex":2,
|
|
||||||
"interfaceName":"tor1-eth0",
|
"interfaceName":"tor1-eth0",
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
@ -37,14 +34,11 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":8,
|
"internalFlags":8,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"directlyConnected":true,
|
"directlyConnected":true,
|
||||||
"interfaceIndex":3,
|
|
||||||
"interfaceName":"tor1-eth1",
|
"interfaceName":"tor1-eth1",
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
@ -55,23 +49,29 @@
|
|||||||
{
|
{
|
||||||
"prefix":"192.168.3.0\/24",
|
"prefix":"192.168.3.0\/24",
|
||||||
"protocol":"bgp",
|
"protocol":"bgp",
|
||||||
|
"selected":true,
|
||||||
|
"destSelected":true,
|
||||||
"distance":200,
|
"distance":200,
|
||||||
"metric":0,
|
"metric":0,
|
||||||
|
"installed":true,
|
||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":0,
|
"internalStatus":16,
|
||||||
"internalFlags":5,
|
"internalFlags":13,
|
||||||
"internalNextHopNum":2,
|
|
||||||
"internalNextHopActiveNum":0,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":0,
|
"flags":5,
|
||||||
"ip":"192.168.4.2",
|
"ip":"192.168.4.2",
|
||||||
"afi":"ipv4"
|
"afi":"ipv4",
|
||||||
|
"active":true,
|
||||||
|
"recursive":true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"flags":0,
|
"flags":3,
|
||||||
"ip":"192.168.6.2",
|
"fib":true,
|
||||||
"afi":"ipv4"
|
"ip":"192.168.2.3",
|
||||||
|
"afi":"ipv4",
|
||||||
|
"interfaceName":"tor1-eth1",
|
||||||
|
"active":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -88,29 +88,21 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":13,
|
"internalFlags":13,
|
||||||
"internalNextHopNum":2,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"ip":"192.168.2.3",
|
"ip":"192.168.2.3",
|
||||||
"afi":"ipv4",
|
"afi":"ipv4",
|
||||||
"interfaceIndex":3,
|
|
||||||
"interfaceName":"tor1-eth1",
|
"interfaceName":"tor1-eth1",
|
||||||
"active":true
|
"active":true
|
||||||
},
|
|
||||||
{
|
|
||||||
"flags":0,
|
|
||||||
"ip":"192.168.6.2",
|
|
||||||
"afi":"ipv4"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"192.168.5.0\/24":[
|
"192.168.5.1\/32":[
|
||||||
{
|
{
|
||||||
"prefix":"192.168.5.0\/24",
|
"prefix":"192.168.5.1\/32",
|
||||||
"protocol":"connected",
|
"protocol":"connected",
|
||||||
"selected":true,
|
"selected":true,
|
||||||
"destSelected":true,
|
"destSelected":true,
|
||||||
@ -120,23 +112,20 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":8,
|
"internalFlags":8,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"directlyConnected":true,
|
"directlyConnected":true,
|
||||||
"interfaceIndex":4,
|
"interfaceName":"lo",
|
||||||
"interfaceName":"tor1-eth2",
|
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"192.168.6.0\/24":[
|
"192.168.6.2\/32":[
|
||||||
{
|
{
|
||||||
"prefix":"192.168.6.0\/24",
|
"prefix":"192.168.6.2\/32",
|
||||||
"protocol":"bgp",
|
"protocol":"bgp",
|
||||||
"selected":true,
|
"selected":true,
|
||||||
"destSelected":true,
|
"destSelected":true,
|
||||||
@ -146,21 +135,20 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":13,
|
"internalFlags":13,
|
||||||
"internalNextHopNum":2,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":0,
|
"flags":5,
|
||||||
"ip":"192.168.4.2",
|
"ip":"192.168.4.2",
|
||||||
"afi":"ipv4"
|
"afi":"ipv4",
|
||||||
|
"active":true,
|
||||||
|
"recursive":true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"ip":"192.168.5.4",
|
"ip":"192.168.2.3",
|
||||||
"afi":"ipv4",
|
"afi":"ipv4",
|
||||||
"interfaceIndex":4,
|
"interfaceName":"tor1-eth1",
|
||||||
"interfaceName":"tor1-eth2",
|
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -8,5 +8,5 @@ int tor1-eth0
|
|||||||
int tor1-eth1
|
int tor1-eth1
|
||||||
ip addr 192.168.2.1/24
|
ip addr 192.168.2.1/24
|
||||||
|
|
||||||
int tor1-eth2
|
int lo
|
||||||
ip addr 192.168.5.1/24
|
ip addr 192.168.5.1/32
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
hostname tor2
|
hostname tor2
|
||||||
router bgp 99
|
router bgp 99
|
||||||
neighbor 192.168.4.3 remote-as internal
|
neighbor 192.168.4.3 remote-as internal
|
||||||
neighbor 192.168.6.4 remote-as internal
|
|
||||||
redistribute connected
|
redistribute connected
|
||||||
|
@ -3,23 +3,29 @@
|
|||||||
{
|
{
|
||||||
"prefix":"192.168.1.0\/24",
|
"prefix":"192.168.1.0\/24",
|
||||||
"protocol":"bgp",
|
"protocol":"bgp",
|
||||||
|
"selected":true,
|
||||||
|
"destSelected":true,
|
||||||
"distance":200,
|
"distance":200,
|
||||||
"metric":0,
|
"metric":0,
|
||||||
|
"installed":true,
|
||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":0,
|
"internalStatus":16,
|
||||||
"internalFlags":5,
|
"internalFlags":13,
|
||||||
"internalNextHopNum":2,
|
|
||||||
"internalNextHopActiveNum":0,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":0,
|
"flags":5,
|
||||||
"ip":"192.168.2.1",
|
"ip":"192.168.2.1",
|
||||||
"afi":"ipv4"
|
"afi":"ipv4",
|
||||||
|
"active":true,
|
||||||
|
"recursive":true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"flags":0,
|
"flags":3,
|
||||||
"ip":"192.168.5.1",
|
"fib":true,
|
||||||
"afi":"ipv4"
|
"ip":"192.168.4.3",
|
||||||
|
"afi":"ipv4",
|
||||||
|
"interfaceName":"tor2-eth1",
|
||||||
|
"active":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -36,22 +42,14 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":13,
|
"internalFlags":13,
|
||||||
"internalNextHopNum":2,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"ip":"192.168.4.3",
|
"ip":"192.168.4.3",
|
||||||
"afi":"ipv4",
|
"afi":"ipv4",
|
||||||
"interfaceIndex":3,
|
|
||||||
"interfaceName":"tor2-eth1",
|
"interfaceName":"tor2-eth1",
|
||||||
"active":true
|
"active":true
|
||||||
},
|
|
||||||
{
|
|
||||||
"flags":0,
|
|
||||||
"ip":"192.168.5.1",
|
|
||||||
"afi":"ipv4"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -68,14 +66,11 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":8,
|
"internalFlags":8,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"directlyConnected":true,
|
"directlyConnected":true,
|
||||||
"interfaceIndex":2,
|
|
||||||
"interfaceName":"tor2-eth0",
|
"interfaceName":"tor2-eth0",
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
@ -94,23 +89,20 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":8,
|
"internalFlags":8,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"directlyConnected":true,
|
"directlyConnected":true,
|
||||||
"interfaceIndex":3,
|
|
||||||
"interfaceName":"tor2-eth1",
|
"interfaceName":"tor2-eth1",
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"192.168.5.0\/24":[
|
"192.168.5.1\/32":[
|
||||||
{
|
{
|
||||||
"prefix":"192.168.5.0\/24",
|
"prefix":"192.168.5.1\/32",
|
||||||
"protocol":"bgp",
|
"protocol":"bgp",
|
||||||
"selected":true,
|
"selected":true,
|
||||||
"destSelected":true,
|
"destSelected":true,
|
||||||
@ -120,29 +112,28 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":13,
|
"internalFlags":13,
|
||||||
"internalNextHopNum":2,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":0,
|
"flags":5,
|
||||||
"ip":"192.168.2.1",
|
"ip":"192.168.2.1",
|
||||||
"afi":"ipv4"
|
"afi":"ipv4",
|
||||||
|
"active":true,
|
||||||
|
"recursive":true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"ip":"192.168.6.4",
|
"ip":"192.168.4.3",
|
||||||
"afi":"ipv4",
|
"afi":"ipv4",
|
||||||
"interfaceIndex":4,
|
"interfaceName":"tor2-eth1",
|
||||||
"interfaceName":"tor2-eth2",
|
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"192.168.6.0\/24":[
|
"192.168.6.2\/32":[
|
||||||
{
|
{
|
||||||
"prefix":"192.168.6.0\/24",
|
"prefix":"192.168.6.2\/32",
|
||||||
"protocol":"connected",
|
"protocol":"connected",
|
||||||
"selected":true,
|
"selected":true,
|
||||||
"destSelected":true,
|
"destSelected":true,
|
||||||
@ -152,15 +143,12 @@
|
|||||||
"table":254,
|
"table":254,
|
||||||
"internalStatus":16,
|
"internalStatus":16,
|
||||||
"internalFlags":8,
|
"internalFlags":8,
|
||||||
"internalNextHopNum":1,
|
|
||||||
"internalNextHopActiveNum":1,
|
|
||||||
"nexthops":[
|
"nexthops":[
|
||||||
{
|
{
|
||||||
"flags":3,
|
"flags":3,
|
||||||
"fib":true,
|
"fib":true,
|
||||||
"directlyConnected":true,
|
"directlyConnected":true,
|
||||||
"interfaceIndex":4,
|
"interfaceName":"lo",
|
||||||
"interfaceName":"tor2-eth2",
|
|
||||||
"active":true
|
"active":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -9,5 +9,5 @@ int tor2-eth1
|
|||||||
ip addr 192.168.4.2/24
|
ip addr 192.168.4.2/24
|
||||||
|
|
||||||
|
|
||||||
int tor2-eth2
|
int lo
|
||||||
ip addr 192.168.6.2/24
|
ip addr 192.168.6.2/32
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Skip pytests example directory
|
# Skip pytests example directory
|
||||||
[pytest]
|
[pytest]
|
||||||
norecursedirs = .git example-test example-topojson-test lib docker bgp_rr_ibgp
|
norecursedirs = .git example-test example-topojson-test lib docker
|
||||||
|
|
||||||
[topogen]
|
[topogen]
|
||||||
# Default configuration values
|
# Default configuration values
|
||||||
|
Loading…
Reference in New Issue
Block a user