[FROG] Why no ecmp route?
Quentin Young
qlyoung at cumulusnetworks.com
Fri Jun 12 19:45:18 UTC 2020
Unfortunately, Quagga 0.99 is about 15,000 commits behind FRR. If you can
reproduce your issue on a recent version of FRR you are more likely to get
help.
On Fri, Jun 12, 2020 at 3:12 PM Simon Jones <batmanustc at gmail.com> wrote:
> Hi all,
>
> Now I use quagga-0.99 as BGP stack in testbed, TOPO as bellow:
> ```
> routerA |---
> |
> ------- DUT
> |
> routerB |---
> ```
>
> routerA and routerB is aristaOS, its config is:
> ```
> some static route and route-map
>
> router bgp 64600
> router-id 100.1.0.29
> neighbor 10.0.0.56 remote-as 65100
> neighbor 10.0.0.56 description 65100
> neighbor 10.0.0.56 default-originate route-map DEFAULT_ROUTES
> neighbor 10.0.0.56 maximum-routes 12000
> neighbor fc00::71 remote-as 65100
> neighbor fc00::71 description 65100
> neighbor fc00::71 default-originate route-map DEFAULT_ROUTES
> neighbor fc00::71 maximum-routes 12000
> redistribute static route-map PREPENDAS # this is used for redistribute
> local static route into bgp.rib and zebr.rib
> address-family ipv4
> network 100.1.0.29/32
> !
> address-family ipv6
> neighbor fc00::71 activate
> network 2064:100::1d/128
> !
> ```
>
> DUT is out router, use quagga-0.99, its config is:
> ```
> router bgp 65100
> bgp router-id 10.1.0.32
> bgp log-neighbor-changes
> no bgp default ipv4-unicast
> bgp bestpath as-path multipath-relax # use this for ECMP
> network 10.1.0.32/32
> network 192.168.0.0/21
> neighbor 10.0.0.57 remote-as 64600
> neighbor 10.0.0.57 description ARISTA01T1
> neighbor 10.0.0.57 timers 3 10
> neighbor 10.0.0.57 activate
> neighbor 10.0.0.59 remote-as 64600
> neighbor 10.0.0.59 description ARISTA02T1
> neighbor 10.0.0.59 timers 3 10
> neighbor 10.0.0.59 activate
> neighbor 10.0.0.61 remote-as 64600
> neighbor 10.0.0.61 description ARISTA03T1
> neighbor 10.0.0.61 timers 3 10
> neighbor 10.0.0.61 activate
> neighbor 10.0.0.63 remote-as 64600
> neighbor 10.0.0.63 description ARISTA04T1
> neighbor 10.0.0.63 timers 3 10
> neighbor 10.0.0.63 activate
> neighbor fc00::72 remote-as 64600
> neighbor fc00::72 description ARISTA01T1
> neighbor fc00::72 timers 3 10
> neighbor fc00::76 remote-as 64600
> neighbor fc00::76 description ARISTA02T1
> neighbor fc00::76 timers 3 10
> neighbor fc00::7a remote-as 64600
> neighbor fc00::7a description ARISTA03T1
> neighbor fc00::7a timers 3 10
> neighbor fc00::7e remote-as 64600
> neighbor fc00::7e description ARISTA04T1
> neighbor fc00::7e timers 3 10
> !
> address-family ipv6
> network fc00:1::32/128
> neighbor fc00::72 activate
> neighbor fc00::76 activate
> neighbor fc00::7a activate
> neighbor fc00::7e activate
> exit-address-family
> !
> ip forwarding
> ipv6 forwarding
> !
> line vty
> !
> end
> ```
>
> But when run this testbed, I found there is no ECMP route on DUT, as
> bellow:
> ```
> test-hostname(config-router)# do show ip bgp 193.7.248.128/25
> BGP routing table entry for 193.7.248.128/25
> Paths: (4 available, best #4, table Default-IP-Routing-Table)
> Advertised to non peer-group peers:
> 10.0.0.57 10.0.0.61 10.0.0.63
> 64600 65534 64791 65115
> 10.0.0.57 from 10.0.0.57 (100.1.0.29)
> Origin incomplete, localpref 100, valid, external
> Last update: Wed Jun 10 09:47:27 2020
>
> 64600 65534 64791 65115
> 10.0.0.63 from 10.0.0.63 (100.1.0.32)
> Origin incomplete, localpref 100, valid, external
> Last update: Wed Jun 10 06:33:03 2020
>
> 64600 65534 64791 65115
> 10.0.0.61 from 10.0.0.61 (100.1.0.31)
> Origin incomplete, localpref 100, valid, external
> Last update: Wed Jun 10 06:32:58 2020
>
> 64600 65534 64791 65115
> 10.0.0.59 from 10.0.0.59 (100.1.0.30)
> Origin incomplete, localpref 100, valid, external, best
> Last update: Wed Jun 10 06:32:56 2020
>
> test-hostname(config-router)# do show ip route 193.7.248.128/25
> Routing entry for 193.7.248.128/25
> Known via "bgp", distance 20, metric 0, best
> Last update 03:15:00 ago
> * 10.0.0.59, via PortChannel0002
> ```
>
> Why???
>
> Compare with another environment:
> ```
> BJ-GH-M1F203-B02-TEST-12# show ip bgp 1.1.1.224/32
> BGP routing table entry for 1.1.1.224/32
> Paths: (2 available, best #1, table Default-IP-Routing-Table)
> Advertised to non peer-group peers:
> 100.0.34.222
> 235 224
> 100.0.56.223 from 100.0.56.223 (100.0.3.223)
> Origin IGP, localpref 100, valid, external, multipath, best
> Last update: Tue Jun 9 06:08:59 2020
>
> 235 224
> 100.0.34.222 from 100.0.34.222 (100.0.55.222)
> Origin IGP, localpref 100, valid, external, multipath
> Last update: Tue Jun 9 06:08:59 2020
>
> BJ-GH-M1F203-B02-TEST-12# show ip route 1.1.1.224/32
> Routing entry for 1.1.1.224/32
> Known via "bgp", distance 20, metric 0, best
> Last update 1d02h19m ago
> * 100.0.56.223, via Ethernet53
> * 100.0.34.222, via Ethernet50
> ```
>
> Why does this have ECMP???
>
> For detail, I found there is only one difference, which is `Origin IGP`
> and `Origin imcomplete`.
> But I check code, in `bgp_path_info_cmp` function, in step 11, the `
> paths_eq` only depends on `BGP_FLAG_ASPATH_MULTIPATH_RELAX` and
> something, nothing with `Origin`.
>
> So why there is no ECMP in my testbed???
>
> ----
> Simon Jones
> _______________________________________________
> frog mailing list
> frog at lists.frrouting.org
> https://lists.frrouting.org/listinfo/frog
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.frrouting.org/pipermail/frog/attachments/20200612/37daf6c7/attachment-0001.htm>
More information about the frog
mailing list