Babel Router is a loop-free distance-vector routing protocol. Babel is a distance-vector routing protocol for IPv6 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.
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.)
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 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. In the presence of heavy packet loss, however, 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 operating over 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 1.2 and 2.4 times the amount of traffic that RIPng would generate, depending on the exact network topology. However, since Babel 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 Babel appear on either a CPU or a memory monitor.
(I was also going to mention how little network bandwidth is consumed by Babel's routing traffic, but in these times of multimegabit networks, it seems somewhat silly.)
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.
Babel currently works with IPv6 only - there is no support for IPv4. Please let me know if you want to work on an IPv4 version of Babel.
Here are some key features of "Babel Router":
· it is a distance-vector protocol;
· it is a proactive protocol, but with some features inspired by reactive protocols;
· it senses link quality for computing route metrics using a variant of the ETX algorithm;
· it uses a feasibility condition that guarantees the absence of loops (the feasibility condition is taken from EIGRP and is somewhat less strict than the one in AODV);
· it uses sequence numbers to make old routes feasible again (like DSDV and AODV, but unlike EIGRP);
· it allows redistributed external routes to be injected into the routing domain at multiple points (like EIGRP, but unlike DSDV and AODV).
What's New in This Release: [ read full changelog ]
· Change the route selection algorithm to used a smoothed metric in addition to the "real" metric. This reduces the amount of route 5 flapping without any special case hacks.
· New flag -r, use a random router-id. This avoids temporarily 7 unreachable nodes after a reboot when persistent storage is not 8 available.
· INCOMPATIBLE CHANGE: the local interface now announces the local 10 hostname, and marks the end of the initial route dump. (Thanks to 11 Gabriel Kerneis.)
· The local interface is now able to accept multiple simultaneous 13 connections.
· Detect BATMAN interfaces, don't assume they are wired.