Babel is a loop-avoiding distance-vector routing protocol for IPv6 and IPv4 with fast convergence properties. It is based on the ideas in DSDV, AODV and Cisco's EIGRP, but is designed to work well not only in wired networks but also in wireless mesh networks, and has been extended with support for overlay networks.
See download below for source and binaries.
babeld(8) manual page.
M. Boutier and J Chroboczek. Source-Specific routing. To appear in IFIP Networking 2015. 2015.
B. Jonglez, M. Boutier and J. Chroboczek. Delay-based routing. Submitted for publication. 2015.
M. Abolhasan, B. Hagelstein, J. C.-P. Wang. Real-world performance of current proactive multi-hop mesh protocols. Asia-Pacific Conference on Communication (APCC 2009), Shanghai, China. 2009.
David Murray, Michael Dixon and Terry Koziniec. An Experimental Comparison of Routing Protocols in Multi Hop Ad Hoc Networks. In Proc. ATNAC 2010. 2010.
Jesús Friginal, David de Andrés, Juan-Carlos Ruiz, Pedro Gil. Towards Benchmarking Routing Protocols in Wireless Mesh Networks. In Ad Hoc Networks, Volume 9, Issue 8, November 2011, Pages 1374-1388.
Jesús Friginal, Juan-Carlos Ruiz, David de Andrés and Antonio Bustos. Mitigating the Impact of Ambient Noise on Wireless Mesh Networks Using Adaptive Link-Quality-based Packet Replication. DSN'2012:1-8. 2013.
To contact us, please write to the Babel users mailing list. You may browse the archives on Alioth, at Gmane using HTTP, at Gmane using NNTP, and at mail-archive.com.
There is also a #babel channel on Freenode, where a number of competent people tend to lurk.
If you do not have brains you follow the same route twice. — Greek proverb
Babel's main features are the following:
Babel works efficiently on ordinary wired networks. When babeld detects a wired link, it enables a number of optimisations that make it as efficient as traditional routing protocols. (These optimisations need to be manually disabled on exotic links, such as point-to-multipoint VPNs.)
When it detects a wireless link, babeld disables all optimisations and uses a metric based on packet loss that is designed for the 802.11 (WiFi) MAC (the ETX metric). This slows down convergence, but ensures that the peculiar characteristics of wireless links do not break routing.
Babel is robust in the presence of mobility: in a pure mesh network, Babel never creates a routing loop, and in a prefix-based network, all routing loops are guaranteed to disappear as soon as one update went around a loop (there is no "counting to infinity").
Babel enjoys fairly fast convergence. Since Babel uses triggered updates and explicit requests for routing information, it usually converges almost immediately after the link quality measure has completed. This initial solution is not optimal — after converging to a merely satisfactory set of routes, Babel will take its sweet time before optimising the routing tables. In the presence of heavy packet loss, converging on an optimal set of routes may take up to 40 seconds or so (with the default update interval of 16 seconds).
Babeld can optionally take radio frequency into account in order to avoid interference. This dramatically improves performance on multi-frequency networks.
The Babel-RTT protocol extension allows Babel to optimise routing in overlay networks. This is described in detail in Baptiste Jonglez' report and in a RTT-based routing draft article. Search for "enable-timestamps" in the manual page.
Babel is a hybrid IPv6 and IPv4 protocol: a single update packet can carry both IPv6 and IPv4 routes (this is similar to how multi-protocol BGP works). This makes Babel particularly efficient and simple to manage on double-stack (IPv6 and IPv4) networks.
Babel has support for source-specific routing (sometimes called SADR), which allows a form of multihoming without cooperation from the ISP. This is described in detail in Source-Specific routing.
If you don't know what to do with many of the papers piled on your desk, stick a dozen colleagues' initials on 'em, and pass them along. When in doubt, route. — Malcolm Forbes
Stable tarballs of babeld are available in my download area.
You can get my latest (possibly unstable) sources using git:
git clone git://github.com/jech/babeld.git
Debian and Ubuntu packages should be available in your favourite repository (merci, Stéphane !).
apt-get install babeld
Versions are also included in Fedora Extras and Arch
Linux. On other Linux and BSD systems (including
Mac OS X), building the daemon is a simple matter
make && make install.
There exist other implementations of the Babel protocol: