<div dir="ltr"><div>Hi all,</div><div><br></div><div>Now I use quagga-0.99 as BGP stack in testbed, TOPO as bellow:</div><div>```</div><div>routerA |---</div><div>                 |</div><div>                 ------- DUT</div><div>                 |</div><div>routerB |---</div><div>```</div><div><br></div><div>routerA and routerB is aristaOS, its config is:</div><div>```</div><div>some static route and route-map</div><div><br></div><div>router bgp 64600<br>   router-id 100.1.0.29<br>   neighbor 10.0.0.56 remote-as 65100<br>   neighbor 10.0.0.56 description 65100<br>   neighbor 10.0.0.56 default-originate route-map DEFAULT_ROUTES<br>   neighbor 10.0.0.56 maximum-routes 12000<br>   neighbor fc00::71 remote-as 65100<br>   neighbor fc00::71 description 65100<br>   neighbor fc00::71 default-originate route-map DEFAULT_ROUTES<br>   neighbor fc00::71 maximum-routes 12000<br>   redistribute static route-map PREPENDAS # this is used for redistribute local static route into bgp.rib and zebr.rib<br>   address-family ipv4<br>      network <a href="http://100.1.0.29/32" target="_blank">100.1.0.29/32</a><br>   !<br>   address-family ipv6<br>      neighbor fc00::71 activate<br>      network 2064:100::1d/128<br>!<br></div><div>```</div><div><br></div><div>DUT is out router, use quagga-0.99, its config is:</div><div>```</div><div>router bgp 65100<br> bgp router-id 10.1.0.32<br> bgp log-neighbor-changes<br> no bgp default ipv4-unicast<br> bgp bestpath as-path multipath-relax # use this for ECMP<br> network <a href="http://10.1.0.32/32" target="_blank">10.1.0.32/32</a><br> network <a href="http://192.168.0.0/21" target="_blank">192.168.0.0/21</a><br> neighbor 10.0.0.57 remote-as 64600<br> neighbor 10.0.0.57 description ARISTA01T1<br> neighbor 10.0.0.57 timers 3 10<br> neighbor 10.0.0.57 activate<br> neighbor 10.0.0.59 remote-as 64600<br> neighbor 10.0.0.59 description ARISTA02T1<br> neighbor 10.0.0.59 timers 3 10<br> neighbor 10.0.0.59 activate<br> neighbor 10.0.0.61 remote-as 64600<br> neighbor 10.0.0.61 description ARISTA03T1<br> neighbor 10.0.0.61 timers 3 10<br> neighbor 10.0.0.61 activate<br> neighbor 10.0.0.63 remote-as 64600<br> neighbor 10.0.0.63 description ARISTA04T1<br> neighbor 10.0.0.63 timers 3 10<br> neighbor 10.0.0.63 activate<br> neighbor fc00::72 remote-as 64600<br> neighbor fc00::72 description ARISTA01T1<br> neighbor fc00::72 timers 3 10<br> neighbor fc00::76 remote-as 64600<br> neighbor fc00::76 description ARISTA02T1<br> neighbor fc00::76 timers 3 10<br> neighbor fc00::7a remote-as 64600<br> neighbor fc00::7a description ARISTA03T1<br> neighbor fc00::7a timers 3 10<br> neighbor fc00::7e remote-as 64600<br> neighbor fc00::7e description ARISTA04T1<br> neighbor fc00::7e timers 3 10<br>!<br> address-family ipv6<br> network fc00:1::32/128<br> neighbor fc00::72 activate<br> neighbor fc00::76 activate<br> neighbor fc00::7a activate<br> neighbor fc00::7e activate<br> exit-address-family<br>!<br>ip forwarding<br>ipv6 forwarding<br>!<br>line vty<br>!<br>end<br></div><div>```</div><div><br></div><div>But when run this testbed, I found there is no ECMP route on DUT, as bellow:</div><div>```</div><div>test-hostname(config-router)# do show ip bgp <a href="http://193.7.248.128/25" target="_blank">193.7.248.128/25</a><br>BGP routing table entry for <a href="http://193.7.248.128/25" target="_blank">193.7.248.128/25</a><br>Paths: (4 available, best #4, table Default-IP-Routing-Table)<br>  Advertised to non peer-group peers:<br>  10.0.0.57 10.0.0.61 10.0.0.63<br>  64600 65534 64791 65115<br>    10.0.0.57 from 10.0.0.57 (100.1.0.29)<br>      Origin incomplete, localpref 100, valid, external<br>      Last update: Wed Jun 10 09:47:27 2020<br><br>  64600 65534 64791 65115<br>    10.0.0.63 from 10.0.0.63 (100.1.0.32)<br>      Origin incomplete, localpref 100, valid, external<br>      Last update: Wed Jun 10 06:33:03 2020<br><br>  64600 65534 64791 65115<br>    10.0.0.61 from 10.0.0.61 (100.1.0.31)<br>      Origin incomplete, localpref 100, valid, external<br>      Last update: Wed Jun 10 06:32:58 2020<br><br>  64600 65534 64791 65115<br>    10.0.0.59 from 10.0.0.59 (100.1.0.30)<br>      Origin incomplete, localpref 100, valid, external, best<br>      Last update: Wed Jun 10 06:32:56 2020<br><br>test-hostname(config-router)# do show ip route <a href="http://193.7.248.128/25" target="_blank">193.7.248.128/25</a><br>Routing entry for <a href="http://193.7.248.128/25" target="_blank">193.7.248.128/25</a><br>  Known via "bgp", distance 20, metric 0, best<br>  Last update 03:15:00 ago<br>  * 10.0.0.59, via PortChannel0002<br></div><div>```</div><div><br></div><div>Why???</div><div><br></div><div>Compare with another environment:</div><div>```</div><div>BJ-GH-M1F203-B02-TEST-12# show ip bgp <a href="http://1.1.1.224/32" target="_blank">1.1.1.224/32</a><br>BGP routing table entry for <a href="http://1.1.1.224/32" target="_blank">1.1.1.224/32</a><br>Paths: (2 available, best #1, table Default-IP-Routing-Table)<br>  Advertised to non peer-group peers:<br>  100.0.34.222<br>  235 224<br>    100.0.56.223 from 100.0.56.223 (100.0.3.223)<br>      Origin IGP, localpref 100, valid, external, multipath, best<br>      Last update: Tue Jun  9 06:08:59 2020<br><br>  235 224<br>    100.0.34.222 from 100.0.34.222 (100.0.55.222)<br>      Origin IGP, localpref 100, valid, external, multipath<br>      Last update: Tue Jun  9 06:08:59 2020<br><br>BJ-GH-M1F203-B02-TEST-12# show ip route <a href="http://1.1.1.224/32" target="_blank">1.1.1.224/32</a><br>Routing entry for <a href="http://1.1.1.224/32" target="_blank">1.1.1.224/32</a><br>  Known via "bgp", distance 20, metric 0, best<br>  Last update 1d02h19m ago<br>  * 100.0.56.223, via Ethernet53<br>  * 100.0.34.222, via Ethernet50<br></div><div>```</div><div><br></div><div>Why does this have ECMP???</div><div><br></div><div>For detail, I found there is only one difference, which is `Origin IGP` and `Origin imcomplete`.</div><div>But I check code, in `<span style="color:rgb(220,220,170);background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre-wrap">bgp_path_info_cmp</span>` function, in step 11, the `<span style="background-color:rgb(30,30,30);color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre">paths_eq</span>` only depends on `<span style="background-color:rgb(30,30,30);color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre">BGP_FLAG_ASPATH_MULTIPATH_RELAX</span>` and something, nothing with `Origin`.</div><div><br></div><div>So why there is no ECMP in my testbed???</div><br clear="all"><div><div dir="ltr" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>----</div>Simon Jones</div></div></div></div></div></div>