RFC 9080
Homenet Profile of the Babel Routing Protocol
RFC 9080: Homenet Profile of the Babel Routing Protocol π
okay bestie, this RFC is literally the spec for how Babel (the routing protocol) has to behave inside a Homenet π β¨. It was written by J. Chroboczek from IRIF at the University of Paris-Diderot, and it's a Standards Track document, so it's an official Internet standard, not just vibes. It was published in August 2021, and it's ISSN 2070-1721. It doesn't obsolete or update any other RFCs, since none are listed in its header. Iconic, no notes π
Abstract β¨
ngl the abstract is a whole mood. It says this doc pins down the exact slice of Babel and its extensions that a Homenet implementation needs, plus how the Home Networking Control Protocol (HNCP) and Babel are supposed to talk to each other π«Ά
Status of This Memo π
This is an Internet Standards Track document, so it's officially giving "standard" energy π
It's a product of the Internet Engineering Task Force (IETF), which means it reflects what the IETF community agreed on. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). If you want more on Internet Standards, check Section 2 of RFC 7841 π¦
For the current status, any errata, and how to send feedback, go to https://www.rfc-editor.org/info/rfc9080.
Copyright Notice Β©οΈ
Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved, obviously π
This document is covered by BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stood on the publication date. Read those carefully, because they spell out your rights and restrictions. Any Code Components pulled out of this document have to include the Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as the Simplified BSD License says π
Table of Contents πΊοΈ
1. Introduction
1.1. Requirements Language
1.2. Background
2. The Homenet Profile of Babel
2.1. Requirements
2.2. Optional Features
3. Interactions between HNCP and Babel
3.1. Requirements
3.2. Optional Features
4. Security Considerations
5. IANA Considerations
6. References
6.1. Normative References
6.2. Informative References
Acknowledgments
Author's Address
1. Introduction πΈ
so the Homenet core is made of two things. First there's HNCP [RFC7788], which floods configuration info around and hands out prefixes to links. Then there's Babel [RFC8966] for routing. Babel is super extensible and modular π§ You can make a minimal version in a few hundred lines of code, or go big with the extensions and end up with over ten thousand lines of C. Wild range, bestie π
This doc has two parts. Part one nails down the exact subset of Babel and its extensions a Homenet implementation has to have. Part two covers how HNCP and Babel interact π
1.1. Requirements Language π
the BCP 14 key words are the magic words in this doc. They get their meaning from [RFC2119] and [RFC8174], but only when they're written in ALL CAPS like this:
"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL"
so if you see them in caps, they're load-bearing. If they're lowercase, they're just regular English π
1.2. Background π
the Babel protocol and its extensions are spread across a bunch of documents, so here's the tea:
- RFC 8966 [RFC8966] is the base Babel protocol. Its control data can ride over link-local IPv6 or over IPv4, and either way you can announce IPv4 and IPv6 routes. It doesn't tell you how to compute link costs, metrics, or pick routes; that's up to the implementation. Different Babel implementations will still interoperate and keep a set of loop-free forwarding paths. But if they implement conflicting options, they might not swap a full set of routes. Worst case, an IPv6-only implementation and an IPv4-only one won't exchange any routes at all π And if implementations use conflicting route selection policies, persistent oscillations might happen.
- Appendix A of [RFC8966] is informative, and it suggests a simple, easy-to-implement cost and metric algorithm that's been found to work well across lots of topologies π
- RFC 8966 doesn't give a route selection algorithm, but Section 3.6 of it suggests picking the route with the smallest metric, with some hysteresis applied. An algorithm that works well in practice is described in Section III.E of [DELAY-BASED] π¦
- Four documents define optional extensions to Babel: authentication based on Hashed Message Authentication Code (HMAC) [RFC8967], source-specific routing [RFC9079], delay-based routing [BABEL-RTT], and ToS-specific (Type of Service) routing [ToS-SPECIFIC]. All of them interoperate with the core protocol and with each other β¨
2. The Homenet Profile of Babel π
this is the main event: the exact Babel profile a Homenet implementation has to ship. The requirements are the non-negotiables, and the optional features are where you get to choose your own adventure π
2.1. Requirements π«Ά
REQ1: A Homenet implementation of Babel MUST encapsulate Babel control traffic in IPv6 packets sent to the IANA-assigned port 6696, and those packets go either to the IANA-assigned multicast group ff02::1:6 or to a link-local unicast address.
Rationale: Babel can carry both IPv4 and IPv6 routes over either IPv4 or IPv6, so picking which one carries the control traffic is kind of a preference thing. But IPv6 has features that make implementations a bit simpler and more reliable, like properly scoped and reasonably stable link-local addresses. So we require control data over IPv6 π
REQ2: A Homenet implementation of Babel MUST implement the IPv6 subset of the protocol defined in the body of RFC 8966.
Rationale: IPv6 routing is an essential part of Homenet architecture. Non-negotiable, bestie π
REQ3: A Homenet implementation of Babel SHOULD implement the IPv4 subset of the protocol defined in the body of RFC 8966. Using other tricks to get IPv4 connectivity, like stacking multiple layers of NAT, is strongly discouraged π
Rationale: IPv4 is going to stick around for years, and even in pure IPv6 deployments the IPv4 code costs very little. HNCP also makes it easy to give distinct IPv4 prefixes to the links in a network, so there's no need to resort to multiple layers of NAT, with all of its problems π
REQ4: A Homenet implementation of Babel MUST implement source-specific routing for IPv6, as defined in RFC 9079 [RFC9079].
Rationale: source-specific routing is an essential part of Homenet architecture, so it's a must-have π₯ It isn't required for IPv4, though, because HNCP arranges things so a single nonspecific IPv4 default route gets announced (Section 6.5 of [RFC7788]) π§
REQ5: A Homenet implementation of Babel must use metrics that are of a similar magnitude to the values suggested in Appendix A of [RFC8966]. In particular, it SHOULD assign costs that are no less than 256 to wireless links, and it SHOULD assign costs between 32 and 196 to lossless wired links.
Rationale: if two Babel implementations pick really different link costs, mixing routers from different vendors is gonna cause suboptimal routing. Not the vibe π
REQ6: A Homenet implementation of Babel SHOULD distinguish between wired and wireless links. If it can't figure out whether a link is wired or wireless, it SHOULD make the worst-case assumption that the link is wireless. It SHOULD also dynamically probe the quality of wireless links and derive a suitable metric from its quality estimate. Appendix A of [RFC8966] gives an example of a suitable algorithm π¦
Rationale: wireless transit links are a signature Homenet feature, and our users are asking for them. Without dynamically computed metrics, the routing protocol tries to minimise the number of links crossed by a route, so it prefers long, lossy links over shorter, lossless ones. As the saying goes, "hop-count routing is worst-path routing" π
Wired links would benefit from probing too, especially power-line networks. But those links tend to be hard or impossible to detect automatically, and we don't know of any published link-quality algorithms for them. So we don't require link-quality estimation for wired links of any kind πΈ
2.2. Optional Features π
OPT1: A Homenet implementation of Babel MAY perform route selection by applying hysteresis to route metrics, as suggested in Section 3.6 of [RFC8966] and described in detail in Section III.E of [DELAY-BASED]. However, hysteresis is not required, and the implementation may simply pick the route with the smallest metric.
Rationale: hysteresis only really helps in congested, highly dynamic networks. A typical home network is stable and uncongested, so the feedback loop that hysteresis compensates for just doesn't happen there π
OPT2: A Homenet implementation of Babel may include support for other extensions to the protocol, as long as they're known to interoperate with both the core protocol and source-specific routing.
Rationale: Babel has picked up a bunch of extensions over the years, but they're useful in fairly specific situations, like routing over global-scale overlay networks [BABEL-RTT] or multi-hop wireless networks with multiple radio frequencies [BABEL-Z]. So apart from source-specific routing, no extensions are required for Homenet β¨
okay bestie, section 3 is next, and it's where HNCP and Babel actually meet π¦ stay tuned for part 2! π§π
3.1. Requirements
REQ7: If an HNCP node receives a DHCPv6 prefix delegation for prefix P and publishes an External-Connection TLV containing a Delegated-Prefix TLV with prefix P and no Prefix-Policy TLV, then it MUST announce a source-specific default route with source prefix P over Babel. π
Rationale: Okay, source-specific routes are the main tool Homenet uses for optimal routing when you've got multiple IPv6 prefixes, so this one's a big deal β¨. External connections with nontrivial prefix policies are explicitly excluded from this requirement, since their exact behaviour is application specific π.
REQ8: If an HNCP node receives a DHCPv4 lease with an IPv4 address and wins the election for NAT gateway, then it MUST act as a NAT gateway and MUST announce a (nonspecific) IPv4 default route over Babel. πΈ
Rationale: The Homenet stack doesn't use source-specific routing for IPv4 π ββοΈ. Instead, HNCP elects a single NAT gateway and publishes a single default route towards that gateway ([RFC7788], Section 6.5). Very clean, very minimal, iconic π .
REQ9: If an HNCP node assigns a prefix P to an attached link and announces P in an Assigned-Prefix TLV, then it MUST announce a route towards P over Babel. π¦
Rationale: Prefixes assigned to links must be routable within the Homenet. No cap, that's just common sense π§ β¨.
3.2. Optional Features
OPT3: An HNCP node that receives a DHCPv6 prefix delegation MAY announce a nonspecific IPv6 default route over Babel in addition to the source-specific default route mandated by requirement REQ7. π
Rationale: Since the source-specific default route is more specific than the nonspecific default route, the former will override the latter if all nodes implement source-specific routing π. Announcing an additional nonspecific route is allowed, since doing that causes no harm and might simplify operations in some circumstances, e.g., when interoperating with a routing protocol that does not support source-specific routing. Lowkey a nice little safety net π§.
OPT4: An HNCP node that receives a DHCPv4 lease with an IPv4 address and wins the election for NAT gateway SHOULD NOT announce a source-specific IPv4 default route. π
Rationale: Homenet doesn't require support for IPv4 source-specific routing π€·ββοΈ. Announcing IPv4 source-specific routes won't cause routing pathologies (blackholes or routing loops), but it might cause packets sourced in different parts of the Homenet to follow different paths, with all the confusion that this entails π.
4. Security Considerations π
Okay, bestie, this section is SERIOUS π, so let's go. Both HNCP and Babel carry their control data in IPv6 packets with a link-local source address, and implementations are required to drop packets sent from a global address. Hence, they are only susceptible to attacks from a directly connected link on which the HNCP and Babel implementations are listening. Very locked-down, very secure, very main character π‘οΈ.
The security of a Homenet network relies on having a set of "Internal", "Ad Hoc", and "Hybrid" interfaces (Section 5.1 of [RFC7788]) that are assumed to be connected to links that are secured at a lower layer. HNCP and Babel packets are only accepted when they originate on these trusted links. "External" and "Guest" interfaces are connected to links that are not trusted, and any HNCP or Babel packets that are received on such interfaces are ignored. ("Leaf" interfaces are a special case since they are connected to trusted links, but HNCP and Babel traffic received on such interfaces is ignored.) This implies that the security of a Homenet network depends on the reliability of the border discovery procedure described in Section 5.3 of [RFC7788]. So the whole thing rests on border discovery being reliable π±π«Ά.
If untrusted links are used for transit, which is NOT RECOMMENDED, then any HNCP and Babel traffic that is carried over such links MUST be secured using an upper-layer security protocol. While both HNCP and Babel support cryptographic authentication, at the time of writing, no protocol for autonomous configuration of HNCP and Babel security has been defined. So yeah, be careful with untrusted transit links, periodt π¨π.
5. IANA Considerations π·
This document has no IANA actions. Zero registries touched, zero drama β¨.
6. References π
6.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC7788] Stenberg, M., Barth, S., and P. Pfister, "Home Networking
Control Protocol", RFC 7788, DOI 10.17487/RFC7788, April
2016, <https://www.rfc-editor.org/info/rfc7788>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[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>.
[RFC9079] Boutier, M. and J. Chroboczek, "Source-Specific Routing in
the Babel Routing Protocol", RFC 9079,
DOI 10.17487/RFC9079, August 2021,
<https://www.rfc-editor.org/rfc/rfc9079>.
6.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-ietf-babel-rtt-extension-
00, 26 April 2019, <https://datatracker.ietf.org/doc/html/
draft-ietf-babel-rtt-extension-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://datatracker.ietf.org/doc/html/draft-chroboczek-
babel-diversity-routing-01>.
[DELAY-BASED]
Jonglez, B., Boutier, M., and J. Chroboczek, "A delay-
based routing metric", March 2014,
<http://arxiv.org/abs/1403.3488>.
[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>.
[ToS-SPECIFIC]
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://datatracker.ietf.org/doc/html/draft-chouasne-
babel-tos-specific-00>.
Acknowledgments π
A number of people have helped with defining the requirements listed in this document. I am especially indebted to Barbara Stark and Markus Stenberg. Huge thank-yous to them, they're the real MVPs ππ.
Author's Address π¦
Juliusz Chroboczek
IRIF, University of Paris-Diderot
Case 7014
75205 Paris CEDEX 13
France
Email: jch@irif.fr
π¦ where this page comes from
- ietf: rfc9080 2021-08
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms