[Babel-users] Implementing Babel on Bird

Juliusz Chroboczek jch at pps.univ-paris-diderot.fr
Wed Nov 20 19:56:59 UTC 2013


> Bird provides nice features for routing protocol programmers [1], such as
> a neighbour cache [2] or an events architecture [3].  Besides, the
> interface with the core is very well documented and looks quite clean.
> 
> It turns out that implementing Babel would be quite difficult, because of
> a very questionable design choice: in Bird, IPv4 and IPv6 are *completely*
> separated.

Yes, I looked at Bird before I asked Matthieu to implement Babel in
Quagga, and that's one of the reasons I decided for Quagga.

> In the case of Babel, running two single-stack instances is not only
> cumbersome, but also difficult to implement, since we need IPv6 link-local
> even when working with IPv4 routes.

It's worse than that -- Babel uses unicast packets for some purposes,
and one of the two Babel instances running on the same (IPv6 UDP) port
wouldn't be able to get its unicast packets.

> I see multiple solutions for implementing Babel on Bird:
> 
> 1/ Only implement IPv6 Babel.

Doable, but perhaps premature.

> 2/ Since Babel can use IPv4 to communicate between neighbours (see Section
>    4. of RFC 6126), the IPv4 implementation could use that.  However, it
>    wouldn't be interoperable with all known Babel implementations (babeld
>    and Quagga).

I'm really not interested in implementing Babel over IPv4.  That would
split the existing implementations into two incompatible camps.

> 3/ Redefine all needed structures and use link-local IPv6 anyway, even
>    when compiled for IPv4.  This would be tedious, would require to bypass
>    most Bird abstractions, and the resulting code would probably never
>    make it upstream.

I'd speak with upstream if I were you.  I'm sure the nice chaps from
Charles University would love to hear about the issue.

> It would certainly earn Babel the title of "post-modern routing
> protocol", but I'm sure some people will complain.

I've just decided the title of my next talk ;-)

-- Juliusz



More information about the Babel-users mailing list