RFC 8965
Applicability of the Babel Routing Protocol
Internet Engineering Task Force (IETF) π Applicability of the Babel Routing Protocol
okay bestie, this is RFC 8965 and it's giving "Babel is for the niches" energy π β¨
Here's the vibe check on the title block: it's from J. Chroboczek at IRIF, University of Paris-Diderot, dated January 2021 πΈ. It's an Informational doc (not a Standards Track thing, so no pressure π«Ά), and it's part of the ISSN 2070-1721 series. It doesn't obsolete or update anything, so it's a clean slate π§.
Abstract β¨
Okay so the abstract is the TL;DR: Babel is a routing protocol built on the distance-vector algorithm, but it got a glow-up with mechanisms for loop avoidance and starvation avoidance π. This doc spotlights a bunch of niches where Babel has been found to be useful and where more mature protocols arguably don't quite hit the spot π¦.
Status of This Memo π
Quick heads up: this document is not an Internet Standards Track specification. It's published for informational purposes only π .
It's a product of the IETF, it represents the consensus of the IETF community, got public review, and was approved for publication by the IESG. Not every IESG-approved doc is a candidate for any level of Internet Standard, so check out Section 2 of RFC 7841 if you want the deets π₯.
For the current status, errata, and how to give feedback, peep https://www.rfc-editor.org/info/rfc8965 π.
Copyright Notice π
Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved π.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication. Please read these carefully, bestie, because they spell out your rights and restrictions π«Ά. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License β.
Table of Contents π¦
1. Introduction and Background
1.1. Technical Overview of the Babel Protocol
2. Properties of the Babel Protocol
2.1. Simplicity and Implementability
2.2. Robustness
2.3. Extensibility
2.4. Limitations
3. Successful Deployments of Babel
3.1. Heterogeneous Networks
3.2. Large-Scale Overlay Networks
3.3. Pure Mesh Networks
3.4. Small Unmanaged Networks
4. Security Considerations
5. References
5.1. Normative References
5.2. Informative References
Acknowledgments
Author's Address
1. Introduction and Background π§
Okay so Babel [RFC8966] is a routing protocol built on the familiar distance-vector algorithm (sometimes called distributed Bellman-Ford) π . It's got mechanisms for loop avoidance (no "counting to infinity" drama!) and starvation avoidance π₯. This doc walks through niches where Babel is useful and where more mature protocols like OSPF [RFC5340] and IS-IS [RFC1195] arguably aren't the best fit πΈ.
1.1. Technical Overview of the Babel Protocol π
So at its core, Babel is a distance-vector protocol using distributed Bellman-Ford, kinda like RIP [RFC2453] but with two major upgrades β¨. First, it senses neighbour reachability, bidirectional reachability, and link quality π. Second, it supports multiple address families (like IPv6 and IPv4) in one single protocol instance π.
These algorithms are simple to understand and simple to implement, but ngl they don't work super well. They suffer from "counting to infinity," which is a pathologically slow convergence in some topologies after a link failure π. Babel borrows a mechanism pioneered by EIGRP [DUAL] [RFC7868], called "feasibility," which avoids routing loops and makes counting to infinity impossible π¦.
Feasibility is conservative, though. It avoids all looping routes but also rejects some loop-free routes π. That can lead to "starvation," where a router rejects every route to a given destination, even the loop-free ones π. To recover, Babel uses "sequenced routes," a mechanism pioneered by DSDV [DSDV] π«Ά. Babel generalises it to prefixes of arbitrary length and to routes announced at multiple points in one routing domain. (DSDV was a pure mesh protocol and only carried host routes, so this is a big upgrade π.)
In DSDV, the sequenced routes algorithm is slow to react to a starvation episode. In Babel, recovery gets accelerated by explicit requests (called "seqno requests" in the protocol) that signal a starvation episode and make a new sequenced route propagate in a timely manner π. Without packet loss, this mechanism is provably complete and clears starvation in time proportional to the network's diameter, at the cost of some extra signalling traffic π₯.
2. Properties of the Babel Protocol π
This section covers the properties of Babel as well as its known limitations π.
2.1. Simplicity and Implementability πΈ
Babel is conceptually simple π§. It's a familiar algorithm (distributed Bellman-Ford) with three simple, well-defined mechanisms layered on top: feasibility, sequenced routes, and explicit requests β¨. With a sufficiently friendly audience, the principles can be explained in 15 minutes, and a full description takes 52 minutes (one microcentury) π.
Because of that, Babel is easy to implement π. At the time of writing, there were four independent, interoperable implementations, including one reportedly written and debugged in just two nights π.
2.2. Robustness π¦
Babel's fairly strong properties (convergence, loop avoidance, and starvation avoidance) rely on some reasonably weak properties of the network and the metric π. The most significant are:
- causality: the "happens-before" relation is acyclic (basically, a control message isn't received before it's been sent) π.
- strict monotonicity of the metric: for any metric M and link cost C, M < C + M (so cycles have a strictly positive metric) π.
- left-distributivity of the metric: for any metrics M and M' and cost C, if M <= M', then C + M <= C + M' (so a good choice made by a neighbour B of a node A is also a good choice for A) β¨.
Check out [METAROUTING] for more on these properties and their consequences π«Ά.
Babel doesn't assume a reliable transport, doesn't assume ordered delivery, doesn't assume communication is transitive, and doesn't require the metric to be discrete (continuous metrics are possible, like ones reflecting packet loss rates) π¦. This is in contrast to link-state protocols like OSPF [RFC5340] or IS-IS [RFC1195], which use a reliable flooding algorithm and make stronger requirements on the 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 not to violate the protocol's assumptions πΈ.
- robust with respect to novel metrics: an unusual metric (continuous, constantly fluctuating, etc.) is likely not to violate the protocol's assumptions π.
Section 3 has examples of successful Babel deployments that show these properties in action π.
These robustness properties matter a lot for applicability: Babel works (more or less efficiently) in a range of situations where traditional routing protocols don't work well, or at all ππ₯.
2.3. Extensibility π§
Babel's packet format has a bunch of features that make the protocol extensible (see Appendix D of [RFC8966]) π. A number of extensions have been designed to make Babel work better in situations nobody envisioned when it was first designed β¨. The ease of extensibility isn't an accident, it's a consequence of the design: it's reasonably easy to check whether a given extension violates the assumptions Babel relies on π.
All the extensions designed so far interoperate with the base protocol and with each other π¦. Again, that's the design at work: to check that two extensions are interoperable, you only need to verify that their interaction doesn't violate the base protocol's assumptions π.
Notable extensions deployed so far include:
- source-specific routing (also known as Source-Address Dependent Routing, SADR) [BABEL-SS], which lets forwarding take a packet's source address into account, enabling a cheap form of multihoming [SS-ROUTING] π.
- RTT-based routing [BABEL-RTT], which minimises link delay. That's useful in overlay networks, where both hop count and packet loss are poor metrics π.
Some other extensions have been designed but haven't seen production deployment (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] lets routing take a packet's Type of Service (ToS) marking into account for selected routes, without the full cost of a multi-topology routing protocol β¨.
2.4. Limitations π
Babel has some undesirable properties that make it suboptimal, or even unusable, in some deployments π.
2.4.1. Periodic Updates πΈ
Babel reconverges after a topology change mainly through reactive mechanisms: 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 π. That makes Babel unsuitable in at least two kinds of environments π:
- large, stable networks: since Babel sends periodic updates even without topology changes, well-managed, large, stable networks will see less control traffic with a protocol that uses a reliable transport (such as OSPF, IS-IS, or EIGRP) π.
- low-power networks: the periodic updates burn battery even when there are no topology changes and no user traffic, which makes Babel wasteful in low-power networks π.
2.4.2. Full Routing Table π
Okay so there are techniques that let a Babel speaker work with a partial routing table (like learning just a default route or doing route aggregation) π§. But 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 better to use a protocol designed from the start for partial tables, like AODV [RFC3561], RPL [RFC6550], or LOADng [LOADng] β¨.
To be continued in part 2 π«Άπ
2.4.3. Slow Aggregation β¨
okay so babel's loop-avoidance trick is kinda clever π§ when a route gets retracted, the node makes it unreachable until every neighbour is guaranteed to have heard about it, even if some packets got lost along the way π¦π¨ unless you've implemented the second algorithm from Section 3.5.5 of [RFC8966], this means a node can stay unreachable for a few minutes after its most specific route gets retracted π and in networks that do automatic route aggregation, that makes babel slow to bounce back after a topology change π₯²
3. Successful Deployments of Babel πΈ
this section is the glow-up montage π it shows a few places where babel has been successfully deployed, so you can see it actually works out in the wild π¦
3.1. Heterogeneous Networks π
okay this one is so cool bestie π«Ά babel handles both classic prefix-based ("Internet-style") routing and flat ("mesh-style") routing over non-transitive link technologies πΈοΈ like traditional distance-vector protocols, it can carry prefixes of any length, suppress redundant announcements with split-horizon where that applies, and it can be configured to filter out redundant announcements (manual aggregation) π and like specialised mesh protocols, babel doesn't assume by default that links are transitive or symmetric, it can dynamically compute metrics from an estimate of link quality, and it carries huge piles of host routes efficiently by leaving out common prefixes π
because of all that, babel has had a bunch of successful deployments in medium-sized heterogeneous networks, the kind that mix a wired, aggregated backbone with meshy wireless bits at the edges π
efficient operation in heterogeneous networks requires the implementation to distinguish between wired and wireless links, and to perform link quality estimation on wireless links. π₯
3.2. Large-Scale Overlay Networks π§
the algorithms babel uses (loop avoidance, hysteresis, delayed updates) let it stay stable even when metrics are unstable, even with a feedback loop going on π that's why it's been successfully deployed in large-scale overlay networks built out of thousands of tunnels spanning continents π where it uses a metric computed from links' latencies β±οΈ
this particular application depends on the extension for RTT-sensitive routing [DELAY-BASED] π
3.3. Pure Mesh Networks π¦
babel is a general-purpose routing protocol, and it's been shown to be competitive with dedicated routing protocols for wireless mesh networks [REAL-WORLD] [BRIDGING-LAYERS] π that said, this niche already has a bunch of mature protocols, notably the Optimized Link State Routing Protocol with Expected Transmission Count (OLSR-ETX) and OLSRv2 (OLSR Version 2) [RFC7181] (equipped e.g., with the Directional Airtime (DAT) metric [RFC7779]) π but babel still picked up a moderate amount of successful deployment in pure mesh networks β¨
3.4. Small Unmanaged Networks π
because babel is small and simple to configure, it's been deployed in small, unmanaged networks (e.g., home and small office networks) π‘ where it works as a more efficient replacement for RIP [RFC2453] π and it has two big advantages over RIP: it can route multiple address families (IPv6 and IPv4) in a single protocol instance, and it has good support for using wireless links for transit π‘
4. Security Considerations π
okay this part is serious bestie, so listen up π«Ά like all distance-vector routing protocols, a babel speaker receives reachability information from its neighbours, and by default every node in the routing domain trusts that information π¬
at the time of writing, babel is usually run over a network that's secured either at the physical layer (e.g., physically protecting Ethernet sockets) or at the link layer (using a protocol such as Wi-Fi Protected Access 2 (WPA2)) π if babel is being run over an unprotected network, then the routing traffic needs to be protected using a sufficiently strong cryptographic mechanism π¨
at the time of writing, two such mechanisms have been defined. π
Message Authentication Code (MAC) authentication for Babel (Babel-MAC) [RFC8967] is a simple, easy-to-implement mechanism π· it only guarantees authenticity, integrity, and replay protection of the routing traffic, and it only supports symmetric keying with a small number of keys (typically just one or two) π Babel-DTLS [RFC8968] is a more complex mechanism π§© it requires some minor changes to a typical Babel implementation and depends on a DTLS stack being available, but it inherits all of the features of DTLS, notably confidentiality, optional replay protection, and the ability to use asymmetric keys π¦
due to its simplicity, babel-MAC should be the preferred security mechanism in most deployments, with Babel-DTLS available for networks that require its additional features π
also, the information a mobile Babel node announces to the whole routing domain is often enough to figure out a mobile node's physical location with reasonable precision π so babel might be unapplicable in scenarios where a node's location is considered confidential π
5. References π
5.1. Normative References π
[RFC8966] Chroboczek, J. and D. Schinazi, "The Babel Routing
Protocol", RFC 8966, DOI 10.17487/RFC8966, January 2021,
<https://www.rfc-editor.org/info/rfc8966>.
5.2. Informative References π
[BABEL-RTT]
Jonglez, B. and J. Chroboczek, "Delay-based Metric
Extension for the Babel Routing Protocol", Work in
Progress, Internet-Draft, draft-jonglez-babel-rtt-
extension-02, 11 March 2019, <https://tools.ietf.org/html/
draft-jonglez-babel-rtt-extension-02>.
[BABEL-SS] Boutier, M. and J. Chroboczek, "Source-Specific Routing in
Babel", Work in Progress, Internet-Draft, draft-ietf-
babel-source-specific-07, 28 October 2020,
<https://tools.ietf.org/html/draft-ietf-babel-source-
specific-07>.
[BABEL-TOS]
Chouasne, G. and J. Chroboczek, "TOS-Specific Routing in
Babel", Work in Progress, Internet-Draft, draft-chouasne-
babel-tos-specific-00, 3 July 2017,
<https://tools.ietf.org/html/draft-chouasne-babel-tos-
specific-00>.
[BABEL-Z] Chroboczek, J., "Diversity Routing for the Babel Routing
Protocol", Work in Progress, Internet-Draft, draft-
chroboczek-babel-diversity-routing-01, 15 February 2016,
<https://tools.ietf.org/html/draft-chroboczek-babel-
diversity-routing-01>.
[BRIDGING-LAYERS]
Murray, D., Dixon, M., and T. Koziniec, "An Experimental
Comparison of Routing Protocols in Multi Hop Ad Hoc
Networks", In Proceedings of ATNAC,
DOI 10.1109/ATNAC.2010.5680190, October 2010,
<https://doi.org/10.1109/ATNAC.2010.5680190>.
[DELAY-BASED]
Jonglez, B., Boutier, M., and J. Chroboczek, "A delay-
based routing metric", March 2014,
<http://arxiv.org/abs/1403.3488>.
[DSDV] Perkins, C. and P. Bhagwat, "Highly Dynamic Destination-
Sequenced Distance-Vector Routing (DSDV) for Mobile
Computers", ACM SIGCOMM '94: Proceedings of the Conference
on Communications Architectures, Protocols and
Applications, pp. 234-244, DOI 10.1145/190314.190336,
October 1994, <https://doi.org/10.1145/190314.190336>.
[DUAL] Garcia-Luna-Aceves, J. J., "Loop-Free Routing Using
Diffusing Computations", IEEE/ACM Transactions on
Networking, Volume 1, Issue 1, DOI 10.1109/90.222913,
February 1993, <https://doi.org/10.1109/90.222913>.
[LOADng] Clausen, T. H., Verdiere, A. C. D., Yi, J., Niktash, A.,
Igarashi, Y., Satoh, H., Herberg, U., Lavenu, C., Lys, T.,
and J. Dean, "The Lightweight On-demand Ad hoc Distance-
vector Routing Protocol - Next Generation (LOADng)", Work
in Progress, Internet-Draft, draft-clausen-lln-loadng-15,
4 July 2016,
<https://tools.ietf.org/html/draft-clausen-lln-loadng-15>.
[METAROUTING]
Griffin, T. G. and J. L. Sobrinho, "Metarouting", ACM
SIGCOMM Computer Communication Review, Volume 35, Issue 4,
DOI 10.1145/1090191.1080094, August 2005,
<https://doi.org/10.1145/1090191.1080094>.
[REAL-WORLD]
Abolhasan, M., Hagelstein, B., and J. C.-P. Wang, "Real-
world performance of current proactive multi-hop mesh
protocols", 15th Asia-Pacific Conference on
Communications, DOI 10.1109/APCC.2009.5375690, October
2009, <https://doi.org/10.1109/APCC.2009.5375690>.
[RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and
dual environments", RFC 1195, DOI 10.17487/RFC1195,
December 1990, <https://www.rfc-editor.org/info/rfc1195>.
[RFC2453] Malkin, G., "RIP Version 2", STD 56, RFC 2453,
DOI 10.17487/RFC2453, November 1998,
<https://www.rfc-editor.org/info/rfc2453>.
[RFC3561] Perkins, C., Belding-Royer, E., and S. Das, "Ad hoc On-
Demand Distance Vector (AODV) Routing", RFC 3561,
DOI 10.17487/RFC3561, July 2003,
<https://www.rfc-editor.org/info/rfc3561>.
[RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF
for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008,
<https://www.rfc-editor.org/info/rfc5340>.
[RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J.,
Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur,
JP., and R. Alexander, "RPL: IPv6 Routing Protocol for
Low-Power and Lossy Networks", RFC 6550,
DOI 10.17487/RFC6550, March 2012,
<https://www.rfc-editor.org/info/rfc6550>.
[RFC7181] Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg,
"The Optimized Link State Routing Protocol Version 2",
RFC 7181, DOI 10.17487/RFC7181, April 2014,
<https://www.rfc-editor.org/info/rfc7181>.
[RFC7779] Rogge, H. and E. Baccelli, "Directional Airtime Metric
Based on Packet Sequence Numbers for Optimized Link State
Routing Version 2 (OLSRv2)", RFC 7779,
DOI 10.17487/RFC7779, April 2016,
<https://www.rfc-editor.org/info/rfc7779>.
[RFC7868] Savage, D., Ng, J., Moore, S., Slice, D., Paluch, P., and
R. White, "Cisco's Enhanced Interior Gateway Routing
Protocol (EIGRP)", RFC 7868, DOI 10.17487/RFC7868, May
2016, <https://www.rfc-editor.org/info/rfc7868>.
[RFC8967] DΓ΄, C., Kolodziejak, W., and J. Chroboczek, "MAC
Authentication for the Babel Routing Protocol", RFC 8967,
DOI 10.17487/RFC8967, January 2021,
<https://www.rfc-editor.org/info/rfc8967>.
[RFC8968] DΓ©cimo, A., Schinazi, D., and J. Chroboczek, "Babel
Routing Protocol over Datagram Transport Layer Security",
RFC 8968, DOI 10.17487/RFC8968, January 2021,
<https://www.rfc-editor.org/info/rfc8968>.
[SS-ROUTING]
Boutier, M. and J. Chroboczek, "Source-specific routing",
In Proceedings of the IFIP Networking Conference,
DOI 10.1109/IFIPNetworking.2015.7145305, May 2015,
<http://arxiv.org/pdf/1403.0445>.
Acknowledgments β¨
Okay, big thank-you time π«Ά The author is so grateful to Jean-Paul Smetz and Alexander Vainshtein for their input on this document. Literally couldn't have done it without them π
Author's Address π
Here's where to find the author, Juliusz Chroboczek π¦
Juliusz Chroboczek
IRIF, University of Paris-Diderot
Case 7014
75205 Paris CEDEX 13
France
Email: jch@irif.fr
π¦ where this page comes from
- ietf: rfc8965 2021-01
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms