RFC 9229
IPv4 Routes with an IPv6 Next Hop in the Babel Routing Protocol
IPv4 Routes with an IPv6 Next Hop in the Babel Routing Protocol β¨
- RFC: 9229 π
- Publisher: Internet Engineering Task Force (IETF) πΈ
- Author: J. Chroboczek, IRIF, University of Paris π
- Category: Experimental π§ͺ
- Date: May 2022 π
- ISSN: 2070-1721
- Obsoletes / Updates: the title block doesn't list anything this one obsoletes or updates π¦
Abstract π
okay so this doc adds an extension to the Babel routing protocol that lets a router announce routes to an IPv4 prefix using an IPv6 next hop π which is a big deal because it means IPv4 traffic can flow through interfaces that never got an IPv4 address assigned π§
Status of This Memo π
this one is not an Internet Standards Track spec π it's published for examination, experimental implementation, and evaluation π¬
it defines an Experimental Protocol for the Internet community π«Ά it's a product of the IETF, it represents the IETF community's consensus, it got public review, and the IESG approved it for publication π ngl not every IESG-approved doc is a candidate for any level of Internet Standard, see Section 2 of RFC 7841 π
you can find the current status, any errata, and how to send feedback at https://www.rfc-editor.org/info/rfc9229 π
Copyright Notice π
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved. πΈ
this doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stand on the publication date π please actually read those, they spell out your rights and restrictions for this document π and any Code Components pulled out of this doc have to include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Revised BSD License βοΈ
Table of Contents π
1. Introduction
1.1. Specification of Requirements
2. Protocol Operation
2.1. Announcing v4-via-v6 Routes
2.2. Receiving v4-via-v6 Routes
2.3. Route and Seqno Requests
2.4. Other TLVs
3. ICMPv4 and PMTU Discovery
4. Protocol Encoding
4.1. Prefix Encoding
4.2. Changes to Existing TLVs
5. Backwards Compatibility
6. IANA Considerations
7. Security Considerations
8. References
8.1. Normative References
8.2. Informative References
Acknowledgments
Author's Address
1. Introduction π¦
okay bestie, the whole job of a routing protocol is to build a routing table πΊοΈ it's a data structure that maps network prefixes (IPv4 or IPv6) to next hops, and a next hop is basically (at least conceptually) a pair of an outgoing interface and a neighbour's network address β¨ here's what that looks like:
destination next hop
2001:db8:0:1::/64 eth0, fe80::1234:5678
203.0.113.0/24 eth0, 192.0.2.1
when a packet gets routed by one of those entries, the forwarding plane usually leans on a neighbour discovery protocol to turn the next-hop address into a link-layer address (a "Media Access Control (MAC) address") π for IPv6 that's the Neighbour Discovery (ND) protocol [RFC4861], and for IPv4 it's the Address Resolution Protocol (ARP) [RFC0826] π§ then the MAC address is used to build the link-layer frames that carry the forwarded packets π¦
so honestly there's no deep rule saying the destination prefix and the next hop have to be the same address family π an IPv6 packet can go through a next hop with an IPv4 address (the next hop's MAC gets found with ARP), and an IPv4 packet can go through a next hop with an IPv6 address π (fun fact, you can even store link-layer addresses straight in the next-hop entry, which is common in networks using the OSI protocol suite π)
now the part that's giving me life π routing IPv4 packets through an IPv6 next hop means you can build networks with no IPv4 addresses except at the edges, and edge hosts still get IPv4 connectivity π plus, since an IPv6 next hop can use a link-local address that configures itself, the network core can run with no statically assigned IP addresses of either family π«Ά that massively cuts down on manual config. (see also [RFC7404] for the issues that come with this approach β οΈ)
we're calling a route to an IPv4 prefix that uses an IPv6 next hop a "v4-via-v6" route π this doc describes how the Babel routing protocol [RFC8966] can announce v4-via-v6 routes across interfaces that have no IPv4 addresses but can still forward IPv4 traffic β¨ Section 3 covers the procedures that make sure every router can originate ICMPv4 packets, even if no IPv4 address was ever assigned to it π
the extension is inspired by an earlier BGP extension [RFC5549] π
1.1. Specification of Requirements π
the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be read as BCP 14 [RFC2119] [RFC8174] describes, but only when they show up in capitals, just like that π«Ά anywhere else they're just regular words π
2. Protocol Operation π₯
Babel is fully dual-stack π every piece of data that represents a neighbour address or a network prefix gets tagged with an Address Encoding (AE), a small integer that says which address family (IPv4 or IPv6) the address or prefix belongs to and how it's encoded β¨ this extension adds a new AE called "v4-via-v6", which uses the same format as the existing AE for IPv4 addresses (AE 1) π§ the new AE is only allowed in TLVs that carry network prefixes. TLVs carrying an IPv6 neighbour address stick to the normal IPv6 encodings πΈ
2.1. Announcing v4-via-v6 Routes π¦
okay so a Babel node can send a v4-via-v6 announcement to announce an IPv4 route over an interface that doesn't have an IPv4 address assigned π first it sets up an IPv6 next hop the usual way (either by sending the Babel packet over IPv6, or by adding a Next Hop TLV with an IPv6 address and AE 2 or 3) π then it sends an Update with AE equal to 4 (v4-via-v6) carrying the IPv4 prefix being announced β¨
if the outgoing interface does have an IPv4 address, then to keep things compatible with existing routers, the sender SHOULD prefer an ordinary IPv4 announcement π«Ά even then it MAY still send a v4-via-v6 announcement π a node SHOULD NOT send both an ordinary IPv4 announcement and a v4-via-v6 announcement for the same prefix over a single interface (if the update goes to a multicast address) or to a single neighbour (if it goes to a unicast address) π why? because you get no benefit and you double the routing traffic for nothing π
updates with an infinite metric are retractions π they mean a route that was announced before isn't available anymore π retractions don't need a next hop, so there's no difference between a v4-via-v6 retraction and an ordinary one π§ a node MAY send IPv4 retractions only, or it MAY send v4-via-v6 retractions on interfaces that don't have an IPv4 address assigned π
2.2. Receiving v4-via-v6 Routes π₯
when a node gets an Update TLV with AE equal to 4 (v4-via-v6) and a finite metric, it works out the IPv6 next hop as described in Section 4.6.9 of [RFC8966] πΊοΈ if there's no IPv6 next hop, the Update MUST be ignored π« if there is one, the node MAY acquire the announced route, as described in Section 3.5.3 of [RFC8966] π the route's parameters work like this:
- The prefix, plen, router-id, seqno, and metric MUST be computed as for an IPv4 route, as described in Section 4.6.9 of [RFC8966]. β¨
- The next hop MUST be computed as for an IPv6 route, as described in Section 4.6.9 of [RFC8966]. It comes from the last preceding Next Hop TLV with an AE field equal to 2 or 3. If no such entry exists and the Update TLV was sent in a Babel packet carried over IPv6, then the next hop is the network-layer source address of that packet. πΈ
an Update TLV with a v4-via-v6 AE and an infinite metric is a retraction π₯ it says a route that was available is being retracted π no next hop is needed here, and the retraction is handled as described in Section 4.6.9 of [RFC8966] π
as usual, a node MAY ignore the update, for example because of filtering (see Appendix C of [RFC8966]) π and if a node can't install v4-via-v6 routes, say because of hardware or software limits, then routes to an IPv4 prefix with an IPv6 next hop MUST NOT be selected β the node just can't pick those routes, no exceptions π
heads up π¨: the MUST NOT above is the key bit for anyone implementing this. if your box can't install v4-via-v6 routes, don't select them, full stop.
2.3. Route and Seqno Requests πββοΈ
route and seqno requests are how a node asks for an update about a given prefix π they aren't tied to any specific next hop, so there's no real semantic difference between an IPv4 request and a v4-via-v6 request π which means a node SHOULD NOT send either kind of request with the AE field set to 4 (v4-via-v6) π ββοΈ instead, it SHOULD ask for IPv4 updates by sending requests with the AE field set to 1 (IPv4) β¨
when receiving requests, AEs 1 (IPv4) and 4 (v4-via-v6) MUST be treated in the same way π«Ά the receiver handles the request as described in Section 3.8 of [RFC8966] π§ if an Update gets sent back, it MAY be an ordinary IPv4 announcement (AE = 1) or a v4-via-v6 announcement (AE = 4), as described in Section 2.1, no matter which AE the request used π
when a request comes in with AE 0 (wildcard), the receiver SHOULD send a full route dump, as described in Section 3.8.1.1 of [RFC8966] π any IPv4 routes in that dump can use either AE 1 (IPv4) or AE 4 (v4-via-v6), as described in Section 2.1 π¦
2.4. Other TLVs π§©
the only other TLVs defined by [RFC8966] that carry an AE field are Next Hop and IHU π and Next Hop and IHU TLVs MUST NOT carry AE 4 (v4-via-v6) π« that's a hard no, bestie π
π that's part 1! π part 2 picks up with Section 3 (ICMPv4 and PMTU Discovery) and keeps going from there π¦β¨
3. ICMPv4 and PMTU Discovery πΈ
okay bestie, so ICMPv4 (or just ICMP π ) [RFC0792] is the protocol that goes with IPv4, and it's mostly used to carry diagnostic and debugging info π. End hosts can send ICMPv4 packets (like the "destination unreachable, port unreachable" one), but intermediate routers can send them too (like most of the other "destination unreachable" kinds) β¨.
Some protocols out in the Internet depend on ICMPv4 packets from routers in the middle, and the big one is Path MTU Discovery (PMTUD) [RFC1191] π. It's an algorithm end hosts run to figure out the biggest packet a route can carry. There are purely end-to-end variants [RFC4821], but the version most commonly deployed has a hard dependency on ICMPv4 packets originated by intermediate routers. So if routers can't send ICMPv4, PMTUD may lead to persistent blackholing of IPv4 traffic π. Yikes!!
Because of that dependency, every Babel router that is able to forward IPv4 traffic MUST be able originate ICMPv4 traffic π«Ά. And since this extension lets routers forward IPv4 traffic received over an interface that doesn't have an IPv4 address, a router implementing this extension MUST be able to originate ICMPv4 packets even when the outgoing interface has not been assigned an IPv4 address π§.
So in that situation, if a Babel router has an interface with an assigned IPv4 address (not a loopback address), or if the router itself has an IPv4 address assigned (to the "loopback interface"), then that IPv4 address may be used as the source of originated ICMPv4 packets π. If there's no IPv4 address at all, a Babel router could use the experimental mechanism from Requirement R-22 of Section 4.8 of [RFC7600], which means using the dummy address 192.0.0.8 as the source address of originated ICMPv4 packets π. Heads up though: using the same address on multiple routers may make debugging and fault isolation harder, for example when you're using the "traceroute" utility π.
4. Protocol Encoding π
okay so this extension defines the v4-via-v6 AE, and its value is 4 π. This AE is only used to tag network prefixes, and it MUST NOT be used to tag neighbour addresses, for example in Next Hop or IHU TLVs π«.
This extension defines no new TLVs or sub-TLVs β¨. Zero new TLVs, bestie, the vibe is super chill π.
4.1. Prefix Encoding π§
Network prefixes tagged with AE 4 (v4-via-v6) MUST be encoded and decoded just like prefixes tagged with AE 1 (IPv4), as described in Section 4.1.5 of [RFC8966] π₯.
A new compression state for AE 4 (v4-via-v6) is introduced, and it's separate from the one for AE 1 (IPv4). It MUST be used for address compression of prefixes tagged with AE 4, as described in Sections 4.5 and 4.6.9 of [RFC8966] π .
4.2. Changes to Existing TLVs π¦
The following TLVs MAY be tagged with AE 4 (v4-via-v6) πΈ:
Update (Type = 8)Route Request (Type = 9)Seqno Request (Type = 10)
Since AE 4 (v4-via-v6) only makes sense for network prefixes, IHU (Type = 5) and Next Hop (Type = 7) TLVs are never sent with AE 4 π
. Those (incorrect) TLVs MUST be ignored upon reception ποΈ.
4.2.1. Update π·
An Update (Type = 8) TLV with AE 4 (v4-via-v6) is constructed as described in Section 4.6.9 of [RFC8966] for AE 1 (IPv4), with these specifics β¨:
- The Prefix field is constructed according to Section 4.1.
- The Next Hop field is built and parsed as described in Sections 2.1 and 2.2.
4.2.2. Requests π
When tagged with AE 4 (v4-via-v6), Route Request and Seqno Request TLVs MUST be constructed and decoded as described in Section 4.6 of [RFC8966], and the network prefixes inside them MUST be decoded as described in Section 4.1 (see also Section 2.3) π«§.
5. Backwards Compatibility π¦
This protocol extension adds no new TLVs or sub-TLVs, so nothing new to learn there π₯°.
It does use a new AE though π. As discussed in Appendix D of [RFC8966] and specified in that same document, implementations that don't understand this extension will silently ignore the TLVs that use this new AE π. So incompatible versions just ignore v4-via-v6 routes. They'll also ignore requests with AE 4 (v4-via-v6), which, as stated in Section 2.3, are not recommended π¬.
Using a new AE also brings a new compression state, which is used to parse the network prefixes. Because it's separate from the states of other AEs, it won't interfere with the compression state of unextended nodes π«Ά.
This extension reuses the next-hop state from AEs 2 and 3 (IPv6), but it makes no changes to how that state gets updated. So it causes no compatibility issues πΈ.
As mentioned in Section 2.1, ordinary IPv4 announcements are preferred over v4-via-v6 announcements when the outgoing interface has an assigned IPv4 address π. Doing otherwise would stop routers that don't implement this extension from learning the route being announced π.
6. IANA Considerations ποΈ
IANA has allocated value 4 in the "Babel Address Encodings" registry, like so β¨:
+====+===========+===========+
| AE | Name | Reference |
+====+===========+===========+
| 4 | v4-via-v6 | RFC 9229 |
+----+-----------+-----------+
Table 1
7. Security Considerations π
Okay, this part is important, so listen up π. The extension defined in this document does not fundamentally change the security properties of the Babel protocol π. BUT, by allowing IPv4 routes to be propagated across routers that have not been assigned IPv4 addresses, it might invalidate the assumptions network administrators have been making, and that could conceivably lead to security issues π±.
For example, say there's an island of IPv4-only hosts separated from the IPv4 Internet by routers with no IPv4 addresses. A network administrator might reasonably assume those IPv4-only hosts are unreachable from the IPv4 Internet ποΈ. That assumption breaks if the intermediary routers implement the extension described here, because that might expose the IPv4-only hosts to traffic from the IPv4 Internet π¨. If that's undesirable, the flow of IPv4 traffic must be restricted using suitable filtering rules (see Appendix C of [RFC8966]) together with matching packet filters in the data plane π‘οΈ. Don't skip this, bestie!!
8. References π
8.1. Normative References π
[RFC0792] Postel, J., "Internet Control Message Protocol", STD 5,
RFC 792, DOI 10.17487/RFC0792, September 1981,
<https://www.rfc-editor.org/info/rfc792>.
[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>.
[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>.
8.2. Informative References π·
[RFC0826] Plummer, D., "An Ethernet Address Resolution Protocol: Or
Converting Network Protocol Addresses to 48.bit Ethernet
Address for Transmission on Ethernet Hardware", STD 37,
RFC 826, DOI 10.17487/RFC0826, November 1982,
<https://www.rfc-editor.org/info/rfc826>.
[RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191,
DOI 10.17487/RFC1191, November 1990,
<https://www.rfc-editor.org/info/rfc1191>.
[RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU
Discovery", RFC 4821, DOI 10.17487/RFC4821, March 2007,
<https://www.rfc-editor.org/info/rfc4821>.
[RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
"Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
DOI 10.17487/RFC4861, September 2007,
<https://www.rfc-editor.org/info/rfc4861>.
[RFC5549] Le Faucheur, F. and E. Rosen, "Advertising IPv4 Network
Layer Reachability Information with an IPv6 Next Hop",
RFC 5549, DOI 10.17487/RFC5549, May 2009,
<https://www.rfc-editor.org/info/rfc5549>.
[RFC7404] Behringer, M. and E. Vyncke, "Using Only Link-Local
Addressing inside an IPv6 Network", RFC 7404,
DOI 10.17487/RFC7404, November 2014,
<https://www.rfc-editor.org/info/rfc7404>.
[RFC7600] Despres, R., Jiang, S., Ed., Penno, R., Lee, Y., Chen, G.,
and M. Chen, "IPv4 Residual Deployment via IPv6 - A
Stateless Solution (4rd)", RFC 7600, DOI 10.17487/RFC7600,
July 2015, <https://www.rfc-editor.org/info/rfc7600>.
Acknowledgments π«Ά
This protocol extension was originally designed, described, and implemented in collaboration with Theophile Bastian π―. Margaret Cullen pointed out the issues with ICMP and helped coin the phrase "v4-via-v6" π‘. The author is also indebted to Donald Eastlake, Toke HΓΈiland-JΓΈrgensen, David Schinazi, and Donald Sharp π.
Author's Address π
Juliusz Chroboczek
IRIF, University of Paris
Case 7014
75205 Paris Cedex 13
France
Email: jch@irif.fr
π¦ where this page comes from
- ietf: rfc9229 2022-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms