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