> 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 _______________________________________________ Babel-users mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/babel-users

