[FROG] Why no ecmp route?
Simon Jones
batmanustc at gmail.com
Thu Jun 11 07:28:52 UTC 2020
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.frrouting.org/pipermail/frog/attachments/20200611/efd211e5/attachment.htm>
More information about the frog
mailing list