ECMP/multipath support

Vincent Bernat bernat at luffy.cx
Fri Oct 1 19:57:23 CEST 2010


OoO En ce  début d'après-midi nuageux du vendredi  01 octobre 2010, vers
14:18, Ondrej Zajicek <santiago at crfreenet.org> disait :

> I see two possibilities how to implement ECMP in BIRD:

> 1) adding special route type for a multipath route with multiple
> gw addresses. This wouldn't be hard, it is consistent with a way
> how Linux kernel handles multipath and works well with OSPF, but
> it will not allow to 'merge' routes from different protocols
> (a multipath route would have to be originated by one protocol).

I don't  see this  as a limitation.  To the  best of my  knowledge, each
protocol having a different administrative distance, this is also how it
works with  other routing solutions. A  route from BGP and  a route from
OSPF cannot be combined into a single ECMP route.

> 2) allow BIRD kernel protocol to scan all equal-best routes to
> one destination and 'merge' these to a multipath route for kernel.
> This would be harder to implement, esp. because BIRD would not
> allow more routes to the same destination from one protocol in
> one routing table. But it is probably more natural way for a user.

I don't know any use case for this.

> What protocols are you thinking about with regard to ECMP?
> ECMP in OSPF would work OK, ECMP in BGP probably would not work either,
> i am not sure about RIP.

We use ECMP with OSPF here.  Unlike Andrew, both routes are strictly the
same. We use this as  layer 3 redundancy and aggregation. Aggregation is
pretty  important too. With  two routers,  aggregation allows  to handle
temporary bursts  of traffic. You  cannot rely on aggregation  to handle
permanently more traffic because if one of them fails, you cannot handle
your  original traffic.  There is  also the  use case  of three  or more
routers. You can allow one to fail  but you still need the traffic to be
load balanced on the two remaining ones.

I have some knowledge on how ECMP routes work with netlink interface and
can offer to  try to implement this in  BIRD if we agree on  what is the
best  place to  implement this.  However, I  have no  knowledge  on BIRD
internals and on how ECMP work with OS other than Linux.
-- 
Make input easy to prepare and output self-explanatory.
            - The Elements of Programming Style (Kernighan & Plauger)



More information about the Bird-users mailing list