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