rfc9229.original | rfc9229.txt | |||
---|---|---|---|---|
Network Working Group J. Chroboczek | Internet Engineering Task Force (IETF) J. Chroboczek | |||
Internet-Draft IRIF, University of Paris | Request for Comments: 9229 IRIF, University of Paris | |||
Intended status: Experimental 24 February 2022 | Category: Experimental May 2022 | |||
Expires: 28 August 2022 | ISSN: 2070-1721 | |||
IPv4 routes with an IPv6 next hop in the Babel routing protocol | IPv4 Routes with an IPv6 Next Hop in the Babel Routing Protocol | |||
draft-ietf-babel-v4viav6-08 | ||||
Abstract | Abstract | |||
This document defines an extension to the Babel routing protocol that | This document defines an extension to the Babel routing protocol that | |||
allows announcing routes to an IPv4 prefix with an IPv6 next-hop, | allows announcing routes to an IPv4 prefix with an IPv6 next hop, | |||
which makes it possible for IPv4 traffic to flow through interfaces | which makes it possible for IPv4 traffic to flow through interfaces | |||
that have not been assigned an IPv4 address. | that have not been assigned an IPv4 address. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for examination, experimental implementation, and | |||
evaluation. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document defines an Experimental Protocol for the Internet | |||
and may be updated, replaced, or obsoleted by other documents at any | community. This document is a product of the Internet Engineering | |||
time. It is inappropriate to use Internet-Drafts as reference | Task Force (IETF). It represents the consensus of the IETF | |||
material or to cite them other than as "work in progress." | community. It has received public review and has been approved for | |||
publication by the Internet Engineering Steering Group (IESG). Not | ||||
all documents approved by the IESG are candidates for any level of | ||||
Internet Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 28 August 2022. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9229. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
1.1. Specification of Requirements . . . . . . . . . . . . . . 3 | 1.1. Specification of Requirements | |||
2. Protocol operation . . . . . . . . . . . . . . . . . . . . . 3 | 2. Protocol Operation | |||
2.1. Announcing v4-via-v6 routes . . . . . . . . . . . . . . . 4 | 2.1. Announcing v4-via-v6 Routes | |||
2.2. Receiving v4-via-v6 routes . . . . . . . . . . . . . . . 4 | 2.2. Receiving v4-via-v6 Routes | |||
2.3. Route and seqno requests . . . . . . . . . . . . . . . . 5 | 2.3. Route and Seqno Requests | |||
2.4. Other TLVs . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.4. Other TLVs | |||
3. ICMPv4 and PMTU discovery . . . . . . . . . . . . . . . . . . 5 | 3. ICMPv4 and PMTU Discovery | |||
4. Protocol encoding . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Protocol Encoding | |||
4.1. Prefix encoding . . . . . . . . . . . . . . . . . . . . . 6 | 4.1. Prefix Encoding | |||
4.2. Changes to existing TLVs . . . . . . . . . . . . . . . . 7 | 4.2. Changes to Existing TLVs | |||
5. Backwards compatibility . . . . . . . . . . . . . . . . . . . 7 | 5. Backwards Compatibility | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 6. IANA Considerations | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 7. Security Considerations | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 | 8. References | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 8.1. Normative References | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 8.2. Informative References | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 9 | Acknowledgments | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 | Author's Address | |||
1. Introduction | 1. Introduction | |||
The role of a routing protocol is to build a routing table, a data | The role of a routing protocol is to build a routing table, a data | |||
structure that maps network prefixes in a given family (IPv4 or IPv6) | structure that maps network prefixes in a given family (IPv4 or IPv6) | |||
to next hops, pairs of an outgoing interface and a neighbour's | to next hops, which are (at least conceptually) pairs of an outgoing | |||
network address, for example: | interface and a neighbour's network address. For example: | |||
destination next hop | destination next hop | |||
2001:db8:0:1::/64 eth0, fe80::1234:5678 | 2001:db8:0:1::/64 eth0, fe80::1234:5678 | |||
203.0.113.0/24 eth0, 192.0.2.1 | 203.0.113.0/24 eth0, 192.0.2.1 | |||
When a packet is routed according to a given routing table entry, the | When a packet is routed according to a given routing table entry, the | |||
forwarding plane typically uses a neighbour discovery protocol (the | forwarding plane typically uses a neighbour discovery protocol (the | |||
Neighbour Discovery protocol (ND) [RFC4861] in the case of IPv6, the | Neighbour Discovery (ND) protocol [RFC4861] in the case of IPv6 and | |||
Address Resolution Protocol (ARP) [RFC0826] in the case of IPv4) to | the Address Resolution Protocol (ARP) [RFC0826] in the case of IPv4) | |||
map the next-hop address to a link-layer address (a "MAC address"), | to map the next-hop address to a link-layer address (a "Media Access | |||
which is then used to construct the link-layer frames that | Control (MAC) address"), which is then used to construct the link- | |||
encapsulate forwarded packets. | layer frames that encapsulate forwarded packets. | |||
It is apparent from the description above that there is no | It is apparent from the description above that there is no | |||
fundamental reason why the destination prefix and the next-hop | fundamental reason why the destination prefix and the next-hop | |||
address should be in the same address family: there is nothing | address should be in the same address family: there is nothing | |||
preventing an IPv6 packet from being routed through a next hop with | preventing an IPv6 packet from being routed through a next hop with | |||
an IPv4 address (in which case the next hop's MAC address will be | an IPv4 address (in which case the next hop's MAC address will be | |||
obtained using ARP), or, conversely, an IPv4 packet from being routed | obtained using ARP) or, conversely, an IPv4 packet from being routed | |||
through a next hop with an IPv6 address. (In fact, it is even | through a next hop with an IPv6 address. (In fact, it is even | |||
possible to store link-layer addresses directly in the next-hop entry | possible to store link-layer addresses directly in the next-hop entry | |||
of the routing table, which is commonly done in networks using the | of the routing table, which is commonly done in networks using the | |||
OSI protocol suite). | OSI protocol suite). | |||
The case of routing IPv4 packets through an IPv6 next hop is | The case of routing IPv4 packets through an IPv6 next hop is | |||
particularly interesting, since it makes it possible to build | particularly interesting, since it makes it possible to build | |||
networks that have no IPv4 addresses except at the edges and still | networks that have no IPv4 addresses except at the edges and still | |||
provide IPv4 connectivity to edge hosts. In addition, since an IPv6 | provide IPv4 connectivity to edge hosts. In addition, since an IPv6 | |||
next hop can use a link-local address that is autonomously | next hop can use a link-local address that is autonomously | |||
skipping to change at page 3, line 28 ¶ | skipping to change at line 121 ¶ | |||
We call a route towards an IPv4 prefix that uses an IPv6 next hop a | We call a route towards an IPv4 prefix that uses an IPv6 next hop a | |||
"v4-via-v6" route. This document describes an extension that allows | "v4-via-v6" route. This document describes an extension that allows | |||
the Babel routing protocol [RFC8966] to announce v4-via-v6 routes | the Babel routing protocol [RFC8966] to announce v4-via-v6 routes | |||
across interfaces that have no IPv4 addresses assigned but are | across interfaces that have no IPv4 addresses assigned but are | |||
capable of forwarding IPv4 traffic. Section 3 describes procedures | capable of forwarding IPv4 traffic. Section 3 describes procedures | |||
that ensure that all routers can originate ICMPv4 packets, even if | that ensure that all routers can originate ICMPv4 packets, even if | |||
they have not been assigned any IPv4 addresses. | they have not been assigned any IPv4 addresses. | |||
The extension described in this document is inspired by a previously | The extension described in this document is inspired by a previously | |||
defined extension to the BGP protocol [RFC5549]. | defined extension to BGP [RFC5549]. | |||
1.1. Specification of Requirements | 1.1. Specification of Requirements | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. Protocol operation | 2. Protocol Operation | |||
The Babel protocol fully supports dual-stack operation: all data that | The Babel protocol fully supports dual-stack operation: all data that | |||
represent a neighbour address or a network prefix are tagged by an | represent a neighbour address or a network prefix are tagged by an | |||
Address Encoding (AE), a small integer that identifies the address | Address Encoding (AE), a small integer that identifies the address | |||
family (IPv4 or IPv6) of the address of prefix, and describes how it | family (IPv4 or IPv6) of the address of prefix and describes how it | |||
is encoded. This extension defines a new AE, called v4-via-v6, which | is encoded. This extension defines a new AE, called "v4-via-v6", | |||
has the same format as the existing AE for IPv4 addresses (AE 1). | which has the same format as the existing AE for IPv4 addresses (AE | |||
This new AE is only allowed in TLVs that carry network prefixes: TLVs | 1). This new AE is only allowed in TLVs that carry network prefixes: | |||
that carry an IPv6 neighbour address use one of the normal encodings | TLVs that carry an IPv6 neighbour address use one of the normal | |||
for IPv6 addresses. | encodings for IPv6 addresses. | |||
2.1. Announcing v4-via-v6 routes | 2.1. Announcing v4-via-v6 Routes | |||
A Babel node can use a v4-via-v6 announcement to announce an IPv4 | A Babel node can use a v4-via-v6 announcement to announce an IPv4 | |||
route over an interface that has no assigned IPv4 address. In order | route over an interface that has no assigned IPv4 address. In order | |||
to do so, it first establishes an IPv6 next-hop address in the usual | to do so, it first establishes an IPv6 next-hop address in the usual | |||
manner (either by sending the Babel packet over IPv6, or by including | manner (either by sending the Babel packet over IPv6, or by including | |||
a Next Hop TLV containing an IPv6 address and using AE 2 or 3); it | a Next Hop TLV containing an IPv6 address and using AE 2 or 3); it | |||
then sends an Update, with AE equal to 4 (v4-via-v6) containing the | then sends an Update, with AE equal to 4 (v4-via-v6) containing the | |||
IPv4 prefix being announced. | IPv4 prefix being announced. | |||
If the outgoing interface has been assigned an IPv4 address, then, in | If the outgoing interface has been assigned an IPv4 address, then, in | |||
skipping to change at page 4, line 27 ¶ | skipping to change at line 165 ¶ | |||
sender SHOULD prefer an ordinary IPv4 announcement; even in that | sender SHOULD prefer an ordinary IPv4 announcement; even in that | |||
case, however, it MAY send a v4-via-v6 announcement. A node SHOULD | case, however, it MAY send a v4-via-v6 announcement. A node SHOULD | |||
NOT send both ordinary IPv4 and v4-via-v6 announcements for the same | NOT send both ordinary IPv4 and v4-via-v6 announcements for the same | |||
prefix over a single interface (if the update is sent to a multicast | prefix over a single interface (if the update is sent to a multicast | |||
address) or to a single neighbour (if sent to a unicast address), | address) or to a single neighbour (if sent to a unicast address), | |||
since doing that provides no benefit while doubling the amount of | since doing that provides no benefit while doubling the amount of | |||
routing traffic. | routing traffic. | |||
Updates with infinite metric are retractions: they indicate that a | Updates with infinite metric are retractions: they indicate that a | |||
previously announced route is no longer available. Retractions do | previously announced route is no longer available. Retractions do | |||
not require a next hop, and there is therefore no difference between | not require a next hop; therefore, there is no difference between | |||
v4-via-v6 retractions and ordinary retractions. A node MAY send IPv4 | v4-via-v6 retractions and ordinary retractions. A node MAY send IPv4 | |||
retractions only, or it MAY send v4-via-v6 retractions on interfaces | retractions only, or it MAY send v4-via-v6 retractions on interfaces | |||
that have not been assigned an IPv4 address. | that have not been assigned an IPv4 address. | |||
2.2. Receiving v4-via-v6 routes | 2.2. Receiving v4-via-v6 Routes | |||
Upon reception of an Update TLV with AE equal to 4 (v4-via-v6) and | Upon reception of an Update TLV with AE equal to 4 (v4-via-v6) and | |||
finite metric, a Babel node computes the IPv6 next hop, as described | finite metric, a Babel node computes the IPv6 next hop, as described | |||
in Section 4.6.9 of [RFC8966]. If no IPv6 next hop exists, then the | in Section 4.6.9 of [RFC8966]. If no IPv6 next hop exists, then the | |||
Update MUST be ignored. If an IPv6 next hop exists, then the node | Update MUST be ignored. If an IPv6 next hop exists, then the node | |||
MAY acquire the route being announced, as described in Section 3.5.3 | MAY acquire the route being announced, as described in Section 3.5.3 | |||
of [RFC8966]; the parameters of the route are as follows: | of [RFC8966]; the parameters of the route are as follows: | |||
* the prefix, plen, router-id, seqno, metric MUST be computed as for | * The prefix, plen, router-id, seqno, and metric MUST be computed as | |||
an IPv4 route, as described in Section 4.6.9 of [RFC8966]; | 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 | * The next hop MUST be computed as for an IPv6 route, as described | |||
in Section 4.6.9 of [RFC8966]: it is taken from the last preceding | in Section 4.6.9 of [RFC8966]. It is taken from the last | |||
Next Hop TLV with an AE field equal to 2 or 3; if no such entry | preceding Next Hop TLV with an AE field equal to 2 or 3; if no | |||
exists, and if the Update TLV has been sent in a Babel packet | such entry exists and if the Update TLV has been sent in a Babel | |||
carried over IPv6, then the next hop is the network-layer source | packet carried over IPv6, then the next hop is the network-layer | |||
address of the packet. | source address of the packet. | |||
An Update TLV with a v4-via-v6 AE and metric equal to infinity is a | An Update TLV with a v4-via-v6 AE and metric equal to infinity is a | |||
retraction: it announces that a previously available route is being | retraction: it announces that a previously available route is being | |||
retracted. In that case, no next hop is necessary, and the | retracted. In that case, no next hop is necessary, and the | |||
retraction is treated as described in Section 4.6.9 of [RFC8966]. | retraction is treated as described in Section 4.6.9 of [RFC8966]. | |||
As usual, a node MAY ignore the update, e.g., due to filtering | As usual, a node MAY ignore the update, e.g., due to filtering (see | |||
(Appendix C of [RFC8966]). If a node cannot install v4-via-v6 | Appendix C of [RFC8966]). If a node cannot install v4-via-v6 routes, | |||
routes, e.g., due to hardware or software limitations, then routes to | e.g., due to hardware or software limitations, then routes to an IPv4 | |||
an IPv4 prefix with an IPv6 next hop MUST NOT be selected. | prefix with an IPv6 next hop MUST NOT be selected. | |||
2.3. Route and seqno requests | 2.3. Route and Seqno Requests | |||
Route and seqno requests are used to request an update for a given | Route and seqno requests are used to request an update for a given | |||
prefix. Since they are not related to a specific next hop, there is | prefix. Since they are not related to a specific next hop, there is | |||
no semantic difference between IPv4 and v4-via-v6 requests. | no semantic difference between IPv4 and v4-via-v6 requests. | |||
Therefore, a node SHOULD NOT send requests of either kind with the AE | Therefore, a node SHOULD NOT send requests of either kind with the AE | |||
field being set to 4 (v4-via-v6); instead, it SHOULD request IPv4 | field being set to 4 (v4-via-v6); instead, it SHOULD request IPv4 | |||
updates by sending requests with the AE field being set to 1 (IPv4). | updates by sending requests with the AE field being set to 1 (IPv4). | |||
When receiving requests, AEs 1 (IPv4) and 4 (v4-via-v6) MUST be | When receiving requests, AEs 1 (IPv4) and 4 (v4-via-v6) MUST be | |||
treated in the same manner: the receiver processes the request as | treated in the same manner: the receiver processes the request as | |||
described in Section 3.8 of [RFC8966]. If an Update is sent, then it | described in Section 3.8 of [RFC8966]. If an Update is sent, then it | |||
MAY be an ordinary IPv4 announcement (AE = 1) or an v4-via-v6 | MAY be an ordinary IPv4 announcement (AE = 1) or a v4-via-v6 | |||
announcement (AE = 4), as described in Section 2.1 above, | announcement (AE = 4), as described in Section 2.1, irrespective of | |||
irrespective of which AE was used in the request. | which AE was used in the request. | |||
When receiving a request with AE 0 (wildcard), the receiver SHOULD | When receiving a request with AE 0 (wildcard), the receiver SHOULD | |||
send a full route dump, as described in Section 3.8.1.1 of [RFC8966]. | send a full route dump, as described in Section 3.8.1.1 of [RFC8966]. | |||
Any IPv4 routes contained in the route dump may use either AE 1 | Any IPv4 routes contained in the route dump may use either AE 1 | |||
(IPv4) or AE 4 (v4-via-v6), as described Section 2.1 above. | (IPv4) or AE 4 (v4-via-v6), as described Section 2.1. | |||
2.4. Other TLVs | 2.4. Other TLVs | |||
The only other TLVs defined by [RFC8966] that carry an AE field are | The only other TLVs defined by [RFC8966] that carry an AE field are | |||
Next Hop and IHU. Next Hop and IHU TLVs MUST NOT carry the AE 4 (v4- | Next Hop and IHU. Next Hop and IHU TLVs MUST NOT carry the AE 4 (v4- | |||
via-v6). | via-v6). | |||
3. ICMPv4 and PMTU discovery | 3. ICMPv4 and PMTU Discovery | |||
The Internet Control Message Protocol (ICMPv4, or simply ICMP) | The Internet Control Message Protocol (ICMPv4, or simply ICMP) | |||
[RFC0792] is a protocol related to IPv4 that is primarily used to | [RFC0792] is a protocol related to IPv4 that is primarily used to | |||
carry diagnostic and debugging information. ICMPv4 packets may be | carry diagnostic and debugging information. ICMPv4 packets may be | |||
originated by end hosts (e.g., the "destination unreachable, port | originated by end hosts (e.g., the "destination unreachable, port | |||
unreachable" ICMPv4 packet), but they may also be originated by | unreachable" ICMPv4 packet), but they may also be originated by | |||
intermediate routers (e.g., most other kinds of "destination | intermediate routers (e.g., most other kinds of "destination | |||
unreachable" packets). | unreachable" packets). | |||
Some protocols deployed in the Internet rely on ICMPv4 packets sent | Some protocols deployed in the Internet rely on ICMPv4 packets sent | |||
by intermediate routers. Most notably, path MTU Discovery (PMTUd) | by intermediate routers. Most notably, Path MTU Discovery (PMTUD) | |||
[RFC1191] is an algorithm executed by end hosts to discover the | [RFC1191] is an algorithm executed by end hosts to discover the | |||
maximum packet size that a route is able to carry. While there exist | maximum packet size that a route is able to carry. While there exist | |||
variants of PMTUd that are purely end-to-end [RFC4821], the variant | variants of PMTUD that are purely end-to-end [RFC4821], the variant | |||
most commonly deployed in the Internet has a hard dependency on | most commonly deployed in the Internet has a hard dependency on | |||
ICMPv4 packets originated by intermediate routers: if intermediate | ICMPv4 packets originated by intermediate routers: if intermediate | |||
routers are unable to send ICMPv4 packets, PMTUd may lead to | routers are unable to send ICMPv4 packets, PMTUD may lead to | |||
persistent blackholing of IPv4 traffic. | persistent blackholing of IPv4 traffic. | |||
Due to this kind of dependency, every Babel router that is able to | Due to this kind of dependency, every Babel router that is able to | |||
forward IPv4 traffic MUST be able originate ICMPv4 traffic. Since | forward IPv4 traffic MUST be able originate ICMPv4 traffic. Since | |||
the extension described in this document enables routers to forward | the extension described in this document enables routers to forward | |||
IPv4 traffic received over an interface that has not been assigned an | IPv4 traffic received over an interface that has not been assigned an | |||
IPv4 address, a router implementing this extension MUST be able to | IPv4 address, a router implementing this extension MUST be able to | |||
originate ICMPv4 packets even when the outgoing interface has not | originate ICMPv4 packets even when the outgoing interface has not | |||
been assigned an IPv4 address. | been assigned an IPv4 address. | |||
In such a situation, if a Babel router has an interface that has been | In such a situation, if a Babel router has an interface that has been | |||
assigned an IPv4 address (other than the loopback address), or if an | assigned an IPv4 address (other than a loopback address) or if an | |||
IPv4 address has been assigned to the router itself (to the "loopback | IPv4 address has been assigned to the router itself (to the "loopback | |||
interface"), then that IPv4 address may be used as the source of | interface"), then that IPv4 address may be used as the source of | |||
originated ICMPv4 packets. If no IPv4 address is available, a Babel | originated ICMPv4 packets. If no IPv4 address is available, a Babel | |||
router could use the experimental mechanism described in Requirement | router could use the experimental mechanism described in Requirement | |||
R-22 of Section 4.8 [RFC7600], which consists of using the dummy | R-22 of Section 4.8 of [RFC7600], which consists of using the dummy | |||
address 192.0.0.8 as the source address of originated ICMPv4 packets. | address 192.0.0.8 as the source address of originated ICMPv4 packets. | |||
Note however that using the same address on multiple routers may | Note, however, that using the same address on multiple routers may | |||
hamper debugging and fault isolation, e.g., when using the | hamper debugging and fault isolation, e.g., when using the | |||
"traceroute" utility. | "traceroute" utility. | |||
4. Protocol encoding | 4. Protocol Encoding | |||
This extension defines the v4-via-v6 AE, whose value is 4. This AE | This extension defines the v4-via-v6 AE, whose value is 4. This AE | |||
is solely used to tag network prefixes, and MUST NOT be used to tag | is solely used to tag network prefixes and MUST NOT be used to tag | |||
neighbour addresses, e.g. in Next Hop or IHU TLVs. | neighbour addresses, e.g., in Next Hop or IHU TLVs. | |||
This extension defines no new TLVs or sub-TLVs. | This extension defines no new TLVs or sub-TLVs. | |||
4.1. Prefix encoding | 4.1. Prefix Encoding | |||
Network prefixes tagged with AE 4 (v4-via-v6) MUST be encoded and | 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 | decoded just like prefixes tagged with AE 1 (IPv4), as described in | |||
Section 4.3.1 of [RFC8966]. | Section 4.1.5 of [RFC8966]. | |||
A new compression state for AE 4 (v4-via-v6) distinct from that of AE | A new compression state for AE 4 (v4-via-v6) distinct from that of AE | |||
1 (IPv4) is introduced, and MUST be used for address compression of | 1 (IPv4) is introduced and MUST be used for address compression of | |||
prefixes tagged with AE 4, as described in Sections 4.5 and 4.6.9 of | prefixes tagged with AE 4, as described in Sections 4.5 and 4.6.9 of | |||
[RFC8966] | [RFC8966] | |||
4.2. Changes to existing TLVs | 4.2. Changes to Existing TLVs | |||
The following TLVs MAY be tagged with AE 4 (v4-via-v6): | The following TLVs MAY be tagged with AE 4 (v4-via-v6): | |||
* Update (Type = 8) | * Update (Type = 8) | |||
* Route Request (Type = 9) | * Route Request (Type = 9) | |||
* Seqno Request (Type = 10) | * Seqno Request (Type = 10) | |||
As AE 4 (v4-via-v6) is suitable only for network prefixes, IHU | As AE 4 (v4-via-v6) is suitable only for network prefixes, IHU (Type | |||
(Type = 5) and Next-Hop (Type = 7) TLVs are never sent with AE 4. | = 5) and Next Hop (Type = 7) TLVs are never sent with AE 4. Such | |||
Such (incorrect) TLVs MUST be ignored upon reception. | (incorrect) TLVs MUST be ignored upon reception. | |||
4.2.1. Update | 4.2.1. Update | |||
An Update (Type = 8) TLV with AE 4 is constructed as described in | An Update (Type = 8) TLV with AE 4 (v4-via-v6) is constructed as | |||
Section 4.6.9 of [RFC8966] for AE 1 (IPv4), with the following | described in Section 4.6.9 of [RFC8966] for AE 1 (IPv4), with the | |||
specificities: | following specificities: | |||
* Prefix. The Prefix field is constructed according to Section 4.1 | * The Prefix field is constructed according to Section 4.1. | |||
above. | ||||
* Next Hop. The next hop is built and prased as described in | * The Next Hop field is built and parsed as described in Sections | |||
Section 2.1 and Section 2.2 above. | 2.1 and 2.2. | |||
4.2.2. Requests | 4.2.2. Requests | |||
When tagged with the AE 4, Route Request and Seqno Request updates | When tagged with the AE 4 (v4-via-v6), Route Request and Seqno | |||
MUST be constructed and decoded as described in Section 4.6 of | Request TLVs MUST be constructed and decoded as described in | |||
[RFC8966], and the network prefixes contained within them decoded as | Section 4.6 of [RFC8966], and the network prefixes contained within | |||
described in Section 4.1 above (see also Section 2.3). | them MUST be decoded as described in Section 4.1 (see also | |||
Section 2.3). | ||||
5. Backwards compatibility | 5. Backwards Compatibility | |||
This protocol extension adds no new TLVs or sub-TLVs. | This protocol extension adds no new TLVs or sub-TLVs. | |||
This protocol extension uses a new AE. As discussed in Appendix D of | This protocol extension uses a new AE. As discussed in Appendix D of | |||
[RFC8966] and specified in the same document, implementations that do | [RFC8966] and specified in the same document, implementations that do | |||
not understand the present extension will silently ignore the various | not understand the present extension will silently ignore the various | |||
TLVs that use this new AE. As a result, incompatible versions will | TLVs that use this new AE. As a result, incompatible versions will | |||
ignore v4-via-v6 routes. They will also ignore requests with AE 4, | ignore v4-via-v6 routes. They will also ignore requests with AE 4 | |||
which, as stated in Section 2.3, are not recommended. | (v4-via-v6), which, as stated in Section 2.3, are not recommended. | |||
Using a new AE introduces a new compression state, used to parse the | Using a new AE introduces a new compression state, which is used to | |||
network prefixes. As this compression state is separate from other | parse the network prefixes. As this compression state is separate | |||
AEs' states, it will not interfere with the compression state of | from the states of other AEs, it will not interfere with the | |||
unextended nodes. | compression state of unextended nodes. | |||
This extension reuses the next-hop state from AEs 2 and 3 (IPv6), but | This extension reuses the next-hop state from AEs 2 and 3 (IPv6) but | |||
makes no changes to the way in which it is updated, and therefore | makes no changes to the way in which it is updated. Therefore, it | |||
causes no compatibility issues. | causes no compatibility issues. | |||
As mentioned in Section 2.1, ordinary IPv4 announcements are | As mentioned in Section 2.1, ordinary IPv4 announcements are | |||
preferred to v4-via-v6 announcements when the outgoing interface has | preferred to v4-via-v6 announcements when the outgoing interface has | |||
an assigned IPv4 address; doing otherwise would prevent routers that | an assigned IPv4 address; doing otherwise would prevent routers that | |||
do not implement this extension from learning the route being | do not implement this extension from learning the route being | |||
announced. | announced. | |||
6. IANA Considerations | 6. IANA Considerations | |||
IANA has allocated value 4 in the "Babel Address Encodings" registry | IANA has allocated value 4 in the "Babel Address Encodings" registry | |||
as follows: | as follows: | |||
+====+===========+=================+ | +====+===========+===========+ | |||
| AE | Name | Reference | | | AE | Name | Reference | | |||
+====+===========+=================+ | +====+===========+===========+ | |||
| 4 | v4-via-v6 | (this document) | | | 4 | v4-via-v6 | RFC 9229 | | |||
+----+-----------+-----------------+ | +----+-----------+-----------+ | |||
Table 1 | Table 1 | |||
7. Security Considerations | 7. Security Considerations | |||
The extension defined in this document does not fundamentally change | The extension defined in this document does not fundamentally change | |||
the security properties of the Babel protocol. However, by allowing | the security properties of the Babel protocol. However, by allowing | |||
IPv4 routes to be propagated across routers that have not been | IPv4 routes to be propagated across routers that have not been | |||
assigned IPv4 addresses, it might invalidate the assumptions made by | assigned IPv4 addresses, it might invalidate the assumptions made by | |||
network administrators, which could conceivably lead to security | network administrators, which could conceivably lead to security | |||
issues. | issues. | |||
For example, if an island of IPv4-only hosts is separated from the | For example, if an island of IPv4-only hosts is separated from the | |||
IPv4 Internet by routers that have not been assigned IPv4 addresses, | IPv4 Internet by routers that have not been assigned IPv4 addresses, | |||
a network administrator might reasonably assume that the IPv4-only | a network administrator might reasonably assume that the IPv4-only | |||
hosts are unreachable from the IPv4 Internet. This assumption is | hosts are unreachable from the IPv4 Internet. This assumption is | |||
broken if the intermediary routers implement the extension described | broken if the intermediary routers implement the extension described | |||
in this document, which might expose the IPv4-only hosts to traffic | in this document, which might expose the IPv4-only hosts to traffic | |||
from the IPv4 Internet. If this is undesirable, the flow of IPv4 | from the IPv4 Internet. If this is undesirable, the flow of IPv4 | |||
traffic must be restricted by the use of suitable filtering rules | traffic must be restricted by the use of suitable filtering rules | |||
(Appendix C of [RFC8966]) together with matching packet filters in | (see Appendix C of [RFC8966]) together with matching packet filters | |||
the data plane. | in the data plane. | |||
8. 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 Hoiland- | ||||
Jorgensen, David Schinazi, and Donald Sharp. | ||||
9. References | 8. References | |||
9.1. Normative References | 8.1. Normative References | |||
[RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, | [RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, | |||
RFC 792, DOI 10.17487/RFC0792, September 1981, | RFC 792, DOI 10.17487/RFC0792, September 1981, | |||
<https://www.rfc-editor.org/info/rfc792>. | <https://www.rfc-editor.org/info/rfc792>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8966] Chroboczek, J. and D. Schinazi, "The Babel Routing | [RFC8966] Chroboczek, J. and D. Schinazi, "The Babel Routing | |||
Protocol", RFC 8966, DOI 10.17487/RFC8966, January 2021, | Protocol", RFC 8966, DOI 10.17487/RFC8966, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8966>. | <https://www.rfc-editor.org/info/rfc8966>. | |||
9.2. Informative References | 8.2. Informative References | |||
[RFC0826] Plummer, D., "An Ethernet Address Resolution Protocol: Or | [RFC0826] Plummer, D., "An Ethernet Address Resolution Protocol: Or | |||
Converting Network Protocol Addresses to 48.bit Ethernet | Converting Network Protocol Addresses to 48.bit Ethernet | |||
Address for Transmission on Ethernet Hardware", STD 37, | Address for Transmission on Ethernet Hardware", STD 37, | |||
RFC 826, DOI 10.17487/RFC0826, November 1982, | RFC 826, DOI 10.17487/RFC0826, November 1982, | |||
<https://www.rfc-editor.org/rfc/rfc826>. | <https://www.rfc-editor.org/info/rfc826>. | |||
[RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, | [RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, | |||
DOI 10.17487/RFC1191, November 1990, | DOI 10.17487/RFC1191, November 1990, | |||
<https://www.rfc-editor.org/info/rfc1191>. | <https://www.rfc-editor.org/info/rfc1191>. | |||
[RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU | [RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU | |||
Discovery", RFC 4821, DOI 10.17487/RFC4821, March 2007, | Discovery", RFC 4821, DOI 10.17487/RFC4821, March 2007, | |||
<https://www.rfc-editor.org/info/rfc4821>. | <https://www.rfc-editor.org/info/rfc4821>. | |||
[RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | |||
"Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | |||
DOI 10.17487/RFC4861, September 2007, | DOI 10.17487/RFC4861, September 2007, | |||
<https://www.rfc-editor.org/rfc/rfc4861>. | <https://www.rfc-editor.org/info/rfc4861>. | |||
[RFC5549] Le Faucheur, F. and E. Rosen, "Advertising IPv4 Network | [RFC5549] Le Faucheur, F. and E. Rosen, "Advertising IPv4 Network | |||
Layer Reachability Information with an IPv6 Next Hop", | Layer Reachability Information with an IPv6 Next Hop", | |||
RFC 5549, DOI 10.17487/RFC5549, May 2009, | RFC 5549, DOI 10.17487/RFC5549, May 2009, | |||
<https://www.rfc-editor.org/rfc/rfc5549>. | <https://www.rfc-editor.org/info/rfc5549>. | |||
[RFC7404] Behringer, M. and E. Vyncke, "Using Only Link-Local | [RFC7404] Behringer, M. and E. Vyncke, "Using Only Link-Local | |||
Addressing inside an IPv6 Network", RFC 7404, | Addressing inside an IPv6 Network", RFC 7404, | |||
DOI 10.17487/RFC7404, November 2014, | DOI 10.17487/RFC7404, November 2014, | |||
<https://www.rfc-editor.org/info/rfc7404>. | <https://www.rfc-editor.org/info/rfc7404>. | |||
[RFC7600] Despres, R., Jiang, S., Ed., Penno, R., Lee, Y., Chen, G., | [RFC7600] Despres, R., Jiang, S., Ed., Penno, R., Lee, Y., Chen, G., | |||
and M. Chen, "IPv4 Residual Deployment via IPv6 - A | and M. Chen, "IPv4 Residual Deployment via IPv6 - A | |||
Stateless Solution (4rd)", RFC 7600, DOI 10.17487/RFC7600, | Stateless Solution (4rd)", RFC 7600, DOI 10.17487/RFC7600, | |||
July 2015, <https://www.rfc-editor.org/info/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 | Author's Address | |||
Juliusz Chroboczek | Juliusz Chroboczek | |||
IRIF, University of Paris | IRIF, University of Paris | |||
Case 7014 | Case 7014 | |||
75205 Paris Cedex 13 | 75205 Paris Cedex 13 | |||
France | France | |||
Email: jch@irif.fr | Email: jch@irif.fr | |||
End of changes. 57 change blocks. | ||||
143 lines changed or deleted | 144 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |