RFC 9080

Homenet Profile of the Babel Routing Protocol

πŸ“… published August 2021, from ietf

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 (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