BIRD and ECMP on Linux seems flaky

Israel G. Lugo israel.lugo at
Wed Jan 27 22:07:19 CET 2016

I would also be very much interested in this.

Back in 2015-07 I started a similar thread, and would be willing to help
implement something. I'd need a few pointers into the code, though, as
Bird isn't exactly trivial and time is unfortunately a scarce resource
for us all.

This is the one feature that I really miss on Bird, coming from other
Linux routing daemons. I migrated to Bird because it's much more
practical to configure, and stable for that matter. But the IPv6 ECMP
would sure be handy :)

Israel G. Lugo
Núcleo de Redes e Comunicações
Direção de Serviços de Informática
Instituto Superior Técnico

On 27-01-2016 10:37, Ondrej Zajicek wrote:
> On Tue, Jan 19, 2016 at 04:11:10PM +0100, Arno Töll wrote:
>> Hi,
>> On Tuesday 12 January 2016 00:09:34 Wilco Baan Hofman wrote:
>>> In this case, the API is not symmetrical. You can set routes via the
>>> multipath structures, but the Linux kernel splits this up into separate
>>> routes internally, because with IPv6 you can now have multiple routes to
>>> the same destination that are not linked together (why? Maybe to
>>> remove/add one of the nexthops independently or something).
>> arguably I think bird should adapt to whatever the public APIs of
>> Linux provide, and not the other way around as long as Linux is a
>> supported platform to bird.
>> This makes me wonder if you guys would accept patches working around
>> this asymmetry for ECMP route in bird in order to have compliant ECMP
>> support in bird for IPv6 based on Ondrej Z.'s patch? If so, do you
>> have any constraints? What about bird 2?
> Hi
> Sorry for a late answer. Patches for handling IPv6 ECMP support in Linux
> with current API could be accepted if they are not too crazy. Unfortunately
> the API has several problems that complicates its usage from BIRD.
> E.g.: 1. when asynchronous updates are received, they do not contain the
> whole route, just the modified next hop. 2. when a new ECMP route
> appears, it is announced as a sequence of next hops, but there is AFAIK
> no flag for 'this is last next hop'.
> Seems to me that there are several options how to workaround that. For
> start, we could support IPv6 ECMP only in non-learn mode. Or we could
> support learn/import (for IPv6 ECMP) during periodic scans only.
> Using RTA_MULTIPATH in IPv6 Linux API is for backwards compatibility
> (although it does not really provide it), so it would make sense to not
> use that and just send muliple routes.
> The patch could be against int-new branch for BIRD 2. Or you could send
> two patches, one against master for BIRD 1.x and one against int-new for
> BIRD 2.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <>

More information about the Bird-users mailing list