Overview: We configure example-bgp-rib with all-path and default policies, add internal neighbor and application peer. We add three different routes. At this point it is enough to check example-bgp-rib/loc-rib in oxygen we get
{"loc-rib":{"tables":[{"afi":"bgp-types:ipv4-address-family","safi":"bgp-types:unicast-subsequent-address-family","bgp-inet:ipv4-routes":{"ipv4-route":[{"path-id":3,"prefix":"1.1.1.1/32","attributes":{"multi-exit-disc":{"med":0},"origin":{"value":"igp"},"originator-id":{"originator":"41.41.41.41"},"local-pref":{"pref":300},"as-path":{},"cluster-id":{"cluster":["40.40.40.40"]},"ipv4-next-hop":{"global":"100.100.100.3"}}},{"path-id":2,"prefix":"1.1.1.1/32","attributes":{"multi-exit-disc":{"med":0},"origin":{"value":"igp"},"originator-id":{"originator":"41.41.41.41"},"local-pref":{"pref":200},"as-path":{},"cluster-id":{"cluster":["40.40.40.40"]},"ipv4-next-hop":{"global":"100.100.100.2"}}},{"path-id":1,"prefix":"1.1.1.1/32","attributes":{"multi-exit-disc":{"med":0},"origin":{"value":"igp"},"originator-id":{"originator":"41.41.41.41"},"local-pref":{"pref":100},"as-path":{},"cluster-id":{"cluster":["40.40.40.40"]},"ipv4-next-hop":{"global":"100.100.100.1"}}}]},"attributes":{"uptodate":true}}]}}
and in fluorine
{"loc-rib":{"tables":[{"afi":"bgp-types:ipv4-address-family","safi":"bgp-types:unicast-subsequent-address-family","bgp-inet:ipv4-routes":{"ipv4-route":[{"prefix":"1.1.1.1/32","path-id":1,"attributes":{"multi-exit-disc":{"med":0},"origin":{"value":"igp"},"originator-id":{"originator":"41.41.41.41"},"local-pref":{"pref":300},"as-path":{},"cluster-id":{"cluster":["40.40.40.40"]},"ipv4-next-hop":{"global":"100.100.100.3"}}}]},"attributes":{"uptodate":true}}]}}
locally I get one more route in fluorine however one is still missing and all of their path-ids is 1 which I suspect is the main problem.
Steps to reproduce:
(note: using jq for .sh scripts output, install with> sudo apt-get install jq )
- run script to reconfigure example-bgp-rib with all-path and default policies
./conf1.py
- run script to configure internal neighbor 127.0.0.2
./conf2.py
- configure application peer at 127.0.0.1
./conf3.py
- add routes into app-peer (can do one by one and check results meanwhile)
./addroute1.py ./addroute2.py ./addroute3.py
- check loc-rib with
./get_loc_rib.sh
there are also scripts for fullrib, and ipv4-topology to see the difference
after this there is exabgp connecting which receives only one route, even though we configure all-path and should recieve all 3.