Babel — a loop-avoiding distance-vector routing protocol

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. Babel is in the process of becoming an IETF Standard.

See download below for source and binaries.

Reading

Specifications

RFCs:

Internet Drafts:

Work in progress tends to be made available at https://github.com/jech/babel-drafts

Human-friendly documents

Our papers

M. Boutier and J Chroboczek. Source-Specific routing. In IFIP Networking 2015. 2015.

B. Jonglez, M. Boutier and J. Chroboczek. Delay-based routing. Unpublished draft. 2015.

Other papers

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.

María E. Villapol et al. Performance comparison of mesh routing protocols in an experimental network with bandwidth restrictions in the border router. Revista de la Facultad de Ingeniería U.C.V., 28:1. 2012.

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.

Contact and development information

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.

Babel features

If you do not have brains you follow the same route twice. — Greek proverb

Babel's main features are the following:

robust and efficient on both wireless mesh networks and wired, structured networks;

flexible choice of metrics, including hop-count, packet loss, radio diversity and delay-based;

support for double-stack (IPv4 and IPv6s) networks;

support for source-specific routing for multihoming;

small implementation, suitable for embedded systems.

Babel on wired networks

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.)

Babel on wireless networks

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 immedia­tely 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.

Babel on overlay 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 on double-stack networks

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.

Source-specific routing and multihoming

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.

Download

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

Reference implementation

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 of make && make install .

Other implementations

There exist other implementations of the Babel protocol:

Bird includes a complete and competent independent reimplementation of Babel.

FRR (the successor to Quagga) includes an implementation of Babel based on the babeld implementation. This version is currently obsolete, and not recommended.

Pybabel is an independent reimplementation of Babel in Python, due to Markus Stenberg. It is a complete implementation of the IPv6 subset of RFC 6126, but without support for link quality estimation. It is not recommended except in small wired networks.

Sbabeld is a minimalistic stub-only implementation of Babel that compiles to just 12kB on AMD 64.

There exists an independent reimplementation of Babel for the OMNet++ simulator, described in this paper.

Related software