[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