Hi,

Is OpenBGPD capable of inserting equal cost multi-path routes into the 
kernel FIB like OpenOSPFD can?


I have equal cost routes being received into OpenOSPFD's RIB from two 
different OSPF ASBR neighbors, for accessing the same IXP network to 
which we are connected. These two multi-path routes are inserted into 
the Kernel FIB fine.
If I ping various routers on the IXP network I can see that multi-path 
is being used and a different ASBR neighbor is used for each IP etc.. 
Great :)

[LIVE]root@mg131:~# ospfctl show rib | grep 5.57.80
5.57.80.0/22         185.25.30.2       Type 1 ext   Network 21      01w1d09h
5.57.80.0/22         185.25.30.1       Type 1 ext   Network 21      01w0d04h

[LIVE]root@mg131:~# netstat -rn | grep 5.57.80
5.57.80/22         185.25.30.2        UGP        0       42 -    32 vlan202
5.57.80/22         185.25.30.1        UGP        0       77 -    32 vlan202



I therefore of course also have equal cost routes being received into 
OpenBGPD's RIB from the two different iBGP peers (the same two ASBR 
neighbors as above), for all the networks received via our IXP BGP peerings.
OpenBGPd by default only selects one path to the remote networks, the 
nexthop in the IXP network for the path is translated into a directly 
connected nexthop (using the OSPF routes for the IXP network).

[LIVE]root@mg131:~# bgpctl show rib | more
flags: * = Valid, > = Selected, I = via IBGP, A = Announced, S = Stale
origin: i = IGP, e = EGP, ? = Incomplete

flags destination          gateway          lpref   med aspath origin
I*>   1.0.0.0/24           5.57.80.136       1000     0 15169 i
I*    1.0.0.0/24           5.57.80.136       1000     0 15169 i
I*>   1.0.4.0/24           5.57.80.128        100     1 6939 7545 56203 i
I*    1.0.4.0/24           5.57.80.128        100     1 6939 7545 56203 i
I*>   1.0.5.0/24           5.57.80.128        100     1 6939 7545 56203 i
I*    1.0.5.0/24           5.57.80.128        100     1 6939 7545 56203 i
.
.

[LIVE]root@mg1311:~# netstat -rn | more
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu Prio Iface
1.0.0/24           185.25.30.2        UG         0        0 -    48 vlan2302
1.0.4/24           185.25.30.2        UG         0        0 -    48 vlan2302
1.0.5/24           185.25.30.2        UG         0        0 -    48 vlan2302
.
.

However it always chooses the same directly connected ASBR for every 
route during the next-hop translation step and no load balancing is 
achieved. :(

Even if I use 'next-hop-self' on the ASBR's to remove the nexthop 
translation step, the same ASBR is always chosen (due to BGP best path 
selection always matching for each route).

I also don't want to use next-hop-self anyway as that would *destroy* 
convergence times should an ASBR be unavailable, as in the absence of 
BFD it would be relying on BGP long timers to change the route, instead 
of having OSPF's fast convergence to change the next-hop in less than a 
second.


 From my understanding the only options are;
1) Randomize the directly connected nexthop used during in the next-hop 
translation step.
2) Use next-hop-self on the ASBR's to insert two routes into the RIB 
with different next-hops (one for each ASBR) (requiring BFD for BGP to 
not destroy convergence), and also enable BGP multi-hop 
(http://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/13753-25.html#bgpmpath)
 
to insert both RIB routes into the FIB, so the kernel can perform 
equal-cost multi-path routing.


Thanks for your time and for reading.
Cheers, Andy.




/**/

Reply via email to