Protest against software patents

Babel — a loop-free distance-vector routing protocol

Babel is a 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 uses a variant of ETX link cost estimation rather than a simple hop-count metric.

Reading

BabelTool screenshot

You may also want to have a look at

About Babel

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

Babel was designed to be robust and efficient on both wireless mesh networks and classical wired networks.

Babel on wireless networks

Babel was primarily designed for wireless ad-hoc networks. Because of that, Babel is extremely robust in the presence of mobility: only under very exceptional situations circumstances will Babel cause a transient routing loop. (This is unlike OLSR, which will cause transient routing loops just after a mobility event before the new topology information is flooded throughout the network.)

Maluch

In its default operation, Babel uses a link quality measurement that is designed for networks using the IEEE 802.11 MAC. In other words, the paths chosen should be reasonable on any sort of network, but are particularly suitable for 802.11 networks.

Babel uses history-sensitive route selection to avoid route flapping, the situation in which routers repeatedly switch between two routes of similar quality.

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. The initial solution is not optimal — after converging to a 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 a minute or so (with the default update interval of 30 seconds).

Babel on wired networks

Babel will also work efficiently on wired networks. When the Babel daemon detects a wired network, it will use a larger interval between hellos, disable link quality estimation, and perform split-horizon processing.

In the absence of mobility (on a stable network with no link failures), Babel over a wired network will generate roughly between 3/4 and 1.5 times the amount of traffic that RIP would generate, depending on the exact network topology. However, since Babel uses explicit Hello messages and never counts to infinity, its update interval can be set to much larger values.

Babel on embedded systems

Being a distance vector protocol, Babel has extremely modest memory and CPU requirements. I have never seen the Babel daemon appear on either a CPU or a memory monitor.

Babel on dual-stack networks

Unlike most routing protocols, which route either IPv4 or IPv6 but not both at the same time, 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 on dual (IPv6 and IPv4) networks.

Formal proofs

The most important correctness properties of Babel — loop-freeness and convergence — have been formally proved. This is unlike most other routing protocols, the correctness of which has to be taken on trust.

Technical details

Babel has the following features:

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

Download the Babel routing daemon (Linux and Mac OS X only, for now).

You can also get my latest (possibly unstable) sources using Darcs by doing

$ darcs get http://www.pps.jussieu.fr/~jch/software/repos/babeld/

Binaries

Debian/Ubuntu

Debian and Ubuntu packages (with no init scripts) might or might not be available in your favourite repository. Assuming you have experimental in your /etc/apt/sources.list, you should be able to do:

$ apt-get install babeld

OpenWRT

OpenWRT packages might or might not be available from your favourite official OpenWRT package repository.

OpenWRT packages might or might not be available in my download area.

OpenWRT and Freifunk packages might or might not be available in Harald Geyer's download area.

Related software

A patch (due to Grégoire Henry) to make tcpdump aware of the Babel and AHCP protocols is available in my download area.

Babel-pinger, a hack to export a default route into Babel for people using DHCP to configure their routers rather than speaking to their upstream provider with a proper routing protocol, is available in my download area.

Mailing list

Please subscribe 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.

See also

Babel's freshmeat page, Babel's Alioth page.

We are running an experimental Babel network (in French).

AHCP is a configuration protocol for mesh networks.

Back to my software page, retour à wifi.pps.jussieu.fr.