This section describes the properties of the Babel protocol as well as its known limitations.
Babel is a conceptually simple protocol. It consists of a familiar algorithm (distributed Bellman-Ford) augmented with three simple and well-defined mechanisms (feasibility, sequenced routes, and explicit requests). Given a sufficiently friendly audience, the principles behind Babel can be explained in 15 minutes, and a full description of the protocol can be done in 52 minutes (one microcentury).
An important consequence is that Babel is easy to implement. At the time of writing, there exist four independent, interoperable implementations, including one that was reportedly written and debugged in just two nights.
The fairly strong properties of the Babel protocol (convergence, loop avoidance, and starvation avoidance) rely on some reasonably weak properties of the network and the metric being used. The most significant are:
-
-
causality:
-
the "happens-before" relation is acyclic (intuitively,a control message is not received before it has been sent);
-
strict monotonicity of the metric:
-
for any metric M and link cost C,M < C + M (intuitively, this implies that cycleshave a strictly positive metric);
-
left-distributivity of the metric:
-
for any metrics M and M'and cost C, if M <= M', thenC + M <= C + M' (intuitively, this impliesthat a good choice made by a neighbour B of a node A is also a good choicefor A).
See [
METAROUTING] for more information about these properties and their consequences.
In particular, Babel does not assume a reliable transport, it does not assume ordered delivery, it does not assume that communication is transitive, and it does not require that the metric be discrete (continuous metrics are possible, for example, reflecting packet loss rates). This is in contrast to link-state routing protocols such as OSPF [
RFC 5340] or IS-IS [
RFC 1195], which incorporate a reliable flooding algorithm and make stronger requirements on the underlying network and metric.
These weak requirements make Babel a robust protocol:
-
-
robust with respect to unusual networks:
-
an unusual network(non-transitive links, unstable link costs, etc.) is likely notto violate the assumptions of the protocol;
-
robust with respect to novel metrics:
-
an unusual metric (continuous,constantly fluctuating, etc.) is likely not to violate the assumptions ofthe protocol.
Section 3 gives examples of successful deployments of Babel that illustrate these properties.
These robustness properties have important consequences for the applicability of the protocol: Babel works (more or less efficiently) in a range of circumstances where traditional routing protocols don't work well (or at all).
Babel's packet format has a number of features that make the protocol extensible (see
Appendix D of
RFC 8966), and a number of extensions have been designed to make Babel work better in situations that were not envisioned when the protocol was initially designed. The ease of extensibility is not an accident, but a consequence of the design of the protocol: it is reasonably easy to check whether a given extension violates the assumptions on which Babel relies.
All of the extensions designed to date interoperate with the base protocol and with each other. This, again, is a consequence of the protocol design: in order to check that two extensions to the Babel protocol are interoperable, it is enough to verify that the interaction of the two does not violate the base protocol's assumptions.
Notable extensions deployed to date include:
-
source-specific routing (also known as Source-Address Dependent Routing, SADR) [BABEL-SS] allows forwarding to take a packet's source address into account, thus enabling a cheap form of multihoming [SS-ROUTING];
-
RTT-based routing [BABEL-RTT] minimises link delay, which is useful in overlay network (where both hop count and packet loss are poor metrics).
Some other extensions have been designed but have not seen deployment in production (and their usefulness is yet to be demonstrated):
-
frequency-aware routing [BABEL-Z] aims to minimise radio interference in wireless networks;
-
ToS-aware routing [BABEL-TOS] allows routing to take a packet's Type of Service (ToS) marking into account for selected routes without incurring the full cost of a multi-topology routing protocol.
Babel has some undesirable properties that make it suboptimal or even unusable in some deployments.
The main mechanisms used by Babel to reconverge after a topology change are reactive: triggered updates, triggered retractions and explicit requests. However, Babel relies on periodic updates to clear pathologies after a mobility event or in the presence of heavy packet loss. The use of periodic updates makes Babel unsuitable in at least two kinds of environments:
-
-
large, stable networks:
-
since Babel sends periodic updates even in theabsence of topology changes, in well-managed, large, stable networks theamount of control traffic will be reduced by using a protocol that usesa reliable transport (such as OSPF, IS-IS, or EIGRP);
-
low-power networks:
-
the periodic updates use up battery power even whenthere are no topology changes and no user traffic, which makes Babelwasteful in low-power networks.
While there exist techniques that allow a Babel speaker to function with a partial routing table (e.g., by learning just a default route or, more generally, performing route aggregation), Babel is designed around the assumption that every router has a full routing table. In networks where some nodes are too constrained to hold a full routing table, it might be preferable to use a protocol that was designed from the outset to work with a partial routing table (such as the Ad hoc On-Demand Distance Vector (AODV) routing protocol [
RFC 3561], the IPv6 Routing Protocol for Low-Power and Lossy Networks (RPL) [
RFC 6550], or the Lightweight On-demand Ad hoc Distance-vector Routing Protocol - Next Generation (LOADng) [
LOADng]).
Babel's loop-avoidance mechanism relies on making a route unreachable after a retraction until all neighbours have been guaranteed to have acted upon the retraction, even in the presence of packet loss. Unless the second algorithm described in
Section 3.5.5 of
RFC 8966 is implemented, this entails that a node is unreachable for a few minutes after the most specific route to it has been retracted. This delay makes Babel slow to recover from a topology change in networks that perform automatic route aggregation.