Is it just me, or does the mpath code do strange stuff, at least under
asp-ath relaxed? E.g. if I run a set of bgpds in a ring, with each
connected to the previous and next 2 bgpd instances in the ring (using a
tweaked version of tools/multiple-bgpd.sh), current master without mpath
gives:
# sh ip bg 10.7.0.0/24
BGP routing table entry for 10.7.0.0/24
Paths: (4 available, best #4, table Default-IP-Routing-Table)
Advertised to non peer-group peers:
192.168.145.2 192.168.145.3 192.168.145.5
64563 64561 64567
192.168.145.3 from 192.168.145.3 (192.168.145.3)
Origin IGP, localpref 100, valid, external
Community: 64563:1
Extended Community: RT:64561:1 RT:64563:1 RT:64567:1 SoO:64561:2
SoO:64563:2 SoO:64567:2
Last update: Wed Dec 2 09:47:14 2015
64562 64568 64567
192.168.145.2 from 192.168.145.2 (192.168.145.2)
Origin IGP, localpref 100, valid, external
Community: 64562:1
Extended Community: RT:64562:1 RT:64567:1 RT:64568:1 SoO:64562:2
SoO:64567:2 SoO:64568:2
Last update: Wed Dec 2 09:46:45 2015
64565 64567
192.168.145.5 from 192.168.145.5 (192.168.145.5)
Origin IGP, localpref 100, valid, external
Community: 64565:1
Extended Community: RT:64565:1 RT:64567:1 SoO:64565:2 SoO:64567:2
Last update: Wed Dec 2 09:46:44 2015
64566 64567
192.168.145.6 from 192.168.145.6 (192.168.145.6)
Origin IGP, localpref 100, valid, external, best
Community: 64566:1
Extended Community: RT:64566:1 RT:64567:1 SoO:64566:2 SoO:64567:2
Last update: Wed Dec 2 09:46:15 2015
The ASNs are 64560+x and each advertises 10.x.0.0/24 (amongst other
things). There are 8 in total in the ring, and the above is x == 4 /
AS64564. So the peerings are:
peers x peers
7 8 1 2 3
8 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 1
6 7 8 1 2
4 has paths 453, 423 and 43 to 3; and paths 457, 467, 4287 and 4317 to 7.
Look what happens if I set:
maximum-paths 32
bgp bestpath as-path multipath-relax
on all the bgpds. This is the view from 4:
# sh ip bg 10.7.0.0/24
BGP routing table entry for 10.7.0.0/24
Paths: (4 available, best #4, table Default-IP-Routing-Table)
Advertised to non peer-group peers:
192.168.145.2 192.168.145.3 192.168.145.6
64563 {64561,64562,64565,64567,64568}
192.168.145.3 from 192.168.145.3 (192.168.145.3)
Origin IGP, localpref 100, valid, external, multipath
Community: 64563:1
Extended Community: RT:64561:1 RT:64562:1 RT:64563:1 RT:64565:1
RT:64567:1 RT:64568:1 SoO:64561:2 SoO:64562:2 SoO:64563:2 SoO:64565:2
SoO:64567:2 SoO:64568:2
Last update: Wed Dec 2 09:55:33 2015
64562 {64561,64567,64568}
192.168.145.2 from 192.168.145.2 (192.168.145.2)
Origin IGP, localpref 100, valid, external, multipath
Community: 64562:1
Extended Community: RT:64561:1 RT:64562:1 RT:64567:1 RT:64568:1
SoO:64561:2 SoO:64562:2 SoO:64567:2 SoO:64568:2
Last update: Wed Dec 2 09:55:32 2015
64566 64567
192.168.145.6 from 192.168.145.6 (192.168.145.6)
Origin IGP, localpref 100, valid, external, multipath
Community: 64566:1
Extended Community: RT:64566:1 RT:64567:1 SoO:64566:2 SoO:64567:2
Last update: Wed Dec 2 09:53:32 2015
64565 64567
192.168.145.5 from 192.168.145.5 (192.168.145.5)
Origin IGP, localpref 100, valid, external, multipath, best
Community: 64565:1
Extended Community: RT:64565:1 RT:64567:1 SoO:64565:2 SoO:64567:2
Last update: Wed Dec 2 09:53:03 2015
That looks like it's multipathing over /all/ the paths to 7, including the
longer 3-hop paths. Also, the aggregates don't really make sense, do they?
It is advertising this aggregate back to the neighbours from whose routes
the aggregate was constructed:
# sh ip bgp neighbors 192.168.145.2 advertised-routes
*> 10.7.0.0/24 192.168.145.4 0
{64561,64562,64563,64565,64566,64567,64568} i
# sh ip bgp neighbors 192.168.145.3 advertised-routes
*> 10.7.0.0/24 192.168.145.4 0
{64561,64562,64563,64565,64566,64567,64568} i
# sh ip bgp neighbors 192.168.145.5 advertised-routes
# sh ip bgp neighbors 192.168.145.6 advertised-routes
*> 10.7.0.0/24 192.168.145.4 0
{64561,64562,64565,64566,64567,64568} i
So, in terms of the advertised routes and deciding who to advertise a
route onto, it is taking only the 'best' path via 6 into consideration.
Does this make sense to anyone? It seems seriously borken to me...
Also, the mpath code probably should have been implemented using the
existing aggregation code...
regards,
--
Paul Jakma [email protected] @pjakma Key ID: 64A2FF6A
Fortune:
I have discovered the art of deceiving diplomats. I tell them the truth
and they never believe me.
-- Camillo Di Cavour
_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev