Paul -

I believe that this patch should fix your issue:

https://github.com/CumulusNetworks/quagga/commit/f4eeff72d5be6c1065f11face168a4bcd832de78

>From my notes it should apply cleanly to master.

donald

On Wed, Dec 2, 2015 at 5:11 AM, Paul Jakma <[email protected]> wrote:

> 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
>
_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to