intarea Working Group | L. Li |
Internet-Draft | Y. Cui |
Intended status: Standards Track | C. Liu |
Expires: October 22, 2019 | J. Wu |
Tsinghua University | |
F. Baker | |
J. Palet Martinez | |
The IPv6 Company | |
April 20, 2019 |
DHCPv6 Options for Discovery NAT64 Prefixes
draft-li-intarea-nat64-prefix-dhcp-option-02
Several IPv6 transition mechanisms require the usage of stateless or stateful translators (commonly named as NAT64) able to allow IP/ICMP communication between IPv4 and IPv6 networks.
Those translators are using either a default Well-Known Prefix (WKP), and/or one or several additional Network Specific Prefixes (NSP), which need to be configured into the nodes willing to use the translator. Different translators will likely have different IPv6 prefixes, to attract traffic to the correct translator. Thus, an automatic translator prefix discovery method is necessary.
This document defines a DHCPv6-based method to inform DHCPv6 clients the set of IPv6 and IPv4 prefixes it serves. This DHCPv6 option can be used by several transition mechanisms such as SIIT, 464XLAT, EAM.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
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 and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 22, 2019.
Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Stateless IP/ICMP Translation (SIIT), describes the basic translation mechanism (NAT64), which is actually used as the base for many of the related translation protocols.
Stateful NAT64, describes a stateful IPv6 to IPv4 translation mechanism, which allows IPv6-only hosts to communicate with IPv4-only servers using unicast UDP, TCP, or ICMP, by means of IPv4 public addresses sharing, among multiple IPv6-only hosts. Unless otherwise stated, references in the rest of this document to NAT64 (function) should be interpreted as to Stateful NAT64.
The translation of the packet headers is done using the IP/ICMP translation algorithm defined in [RFC7915] and algorithmically translating the IPv4 addresses to IPv6 addresses and vice versa, following [RFC6052].
464XLAT describes an architecture that provides IPv4 connectivity across a network, or part of it, when it is only natively transporting IPv6. [RFC7849] already suggest the need to support the CLAT function in order to ensure the IPv4 service continuity in IPv6-only cellular deployments. The 464XLAT architecture uses IPv4/IPv6 translation, described in [RFC6144], and standardized in [RFC6052], [RFC7915], and [RFC6146]. In the 464XLAT architecture, the CLAT (customer-side NAT46 translator) must determine which among potentially several PLAT (provider-side NAT64 translator) IPv6 prefixes to use in order to send a packet to the PLAT that provides the connectivity to its destination.
[RFC7050] describes a mechanism to learn the PLAT-side IPv6 prefix for protocol translation by DNS64. Although it supports multiple PLAT-side prefix by responding with multiple AAAA records to a DNS64 query, it does not support mapping IPv4 prefixes to IPv6 prefix, which would be required, for example, if one PLAT has connectivity to the general Internet following a default route, another has connectivity to a BGP peer, and a third has connectivity to a network using private addressing. Therefore, in the scenario with multiple PLATs, [RFC7050] does not directly support destination-based IPv4 routing among PLATs; instead, the DNS64 database must contain equivalent information. It also requires the additional deployment of DNS64 service in customer-side networks, which is not required in 464XLAT deployment. Indeed, this scenario, which may become very common in wired access networks, has not even been considered by [RFC7051].
464XLAT is in fact, a very frequent usage case of Stateful NAT64 and actually the predominant one in cellular networks. As indicated in [I-D.ietf-v6ops-nat64-deployment], it is expected that in some scenarios, DNS64 is not used, so mandating the use of [RFC7050] in those cases it is not a sensible approach.
Explicit Address Mappings for Stateless IP/ICMP Translation extends SIIT with an Explicit Address Mapping (EAM) algorithm to facilitate stateless IP/ICMP translation between arbitrary (non-IPv4-translatable) IPv6 endpoints and IPv4.
Furthermore, [I-D.ietf-v6ops-nat64-deployment] and [I-D.ietf-v6ops-transition-ipv4aas] show that there is an increasing demand for deployment of NAT64/464XLAT in broadband networks, which may use PCP [RFC7225], to learn the NAT64 prefixes, however is not widely deployed. Instead, DHCPv6/DHCPv6-PD [RFC8415] is the predominant provisioning protocol for broadband CEs (Customer Edge Routers).
DHPCv6/DHCPv6-PD is also supported in 3GPP specifications for cellular networks ([RFC6459], [RFC7066], [RFC7849]), even if today is not predominant, but it is expected that the deployment of cellular broadband services will use it, as it is the only standard way to provide shorter prefixes to CEs through the cellular interphase.
Finally, even if [RFC7051] discarded DHCPv6 as one of the interesting choices for learning the NAT64 prefix, the deployment considerations have evolved, and in fact there is a new Router Advertising option ([I-D.ietf-6man-ra-pref64]), which provides an alternative in some cases, which is complementary to the one suggested by this document.
Consequently, this document proposes a method for the discovery of the NAT64 prefix, based on DHCPv6, which is widely deployed and supported in customer networks. It defines two new DHCPv6 options for use by a DHCPv6 client to discover the NAT64 IPv6 prefix(es). Also, the proposed mechanism can deal with the scenario with multiple independent DNS64 databases supporting separate translators.
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 interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
The NAT Prefix List Option is a container for NAT64 Prefix Option(s). A NAT64 Prefix List Option MAY contain multiple NAT64 Prefix Options.
The format of the NAT64 Prefix List Option is:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION_NAT64_PREFIX_LIST | option-length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + NAT64_PREFIX-options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: The format of NAT64 Prefix List option
The NAT64 Prefix Option is encapsulated in the NAT64 Prefix List Option. This option allows the mapping of destination IPv4 address ranges (contained in the IPv4 Prefix List) to a NAT64 IPv6 prefix. If there is more than one such prefix, each prefix comes in its own option, with its associated IPv4 prefix list. In this way, the DHCPv6 client can select the NAT64 with the corresponding destination IPv4 address.
The format of the NAT64 Prefix Option is:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION_NAT64_PREFIX | option-length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NAT64-Type | NAT64-prelen | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NAT64-prefix | | (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NAT64-suffix | | (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . (optional) . . IPv4 Prefix List (variable length) . . (see Figure 3) . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: The format of NAT64 Prefix option
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv4-prelen | IPv4 Prefix (32 bits) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | (cont.) | IPv4-prelen | IPv4 Prefix (32 bits) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv4 Prefix (cont.) | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: The format of IPv4 Prefix List field
The client requests the OPTION_NAT64_PREFIX_LIST option using the Option Request option (ORO) in every Solicit, Request, Renew, Rebind, and Information-request message. The NAT64-Type field defines the mechanism being used. If the DHCPv6 server includes the OPTION_NAT64_PREFIX_LIST option in its response, the DHCPv6 client may use the contained NAT64-prefix to translate the destination IPv4 address into the destination IPv6 address.
When receiving the OPTION_NAT64_PREFIX option with IPv4 Prefix List, the DHCPv6 client MUST record the received IPv6 prefix and the corresponding IPv4 prefixes in IPv4 Prefix List. When receiving the OPTION_NAT64_PREFIX option without IPv4 Prefix List, the DHCPv6 client MUST treat the IPv6 prefix and the default IPv4 prefix 0.0.0.0/0 as one of the records.
If the DHCPv6 client loses contact with the DHCPv6 server, the DHCPv6 client SHOULD clear the prefix(es) it learned from the DHCPv6 server.
When translating the destination IPv4 address into the destination IPv6 address, DHCPv6 client MUST search an IPv4 routing database using the longest-match-first rule and select the IPv6 prefix offering that IPv4 prefix.
The figure below shows an example of message flow for a Client learning IPv6 prefixes using DHCPv6.
In this example, two IPv6 prefixes are provided by the DHCPv6 server. The first IPv6 prefix is 2001:db8:122:300::/56, the corresponding IPv4 prefixes are 192.0.2.0/24 and 198.51.100.0/24. The second IPv6 prefix is 2001:db8:122::/48, the corresponding IPv4 prefix is 192.0.2.128/25.
When the DHCPv6 client receives the packet with destination IPv4 address 192.0.2.1, according to the rule of longest prefix match, the NAT64 with IPv6 prefix 2001:db8:122::/48 is chosen. In the same way, the NAT64 with IPv6 prefix 2001:db8:122::/48 is chosen.
+---------------+ +-----------------+ | DHCPv6 Client | | DHCPv6 server | +---------------+ +-----------------+ | DHCPv6 query for IPv6 prefix | |--------------------------------------------------->| | ORO with OPTION_NAT64_PREFIX_LIST | | | | DHCPv6 response with: | | NAT64PREFIX{ | | NAT64-v6-pre = 2001:db8:122:300::/56 | | NAT64-v4-pre = 192.0.2.0/24 | | NAT64-v4-pre = 198.51.100.0/24} | | NAT64PREFIX{ | | NAT64-v6-pre = 2001:db8:122::/48 | | NAT64-v4-pre = 192.0.2.128/25} | |<---------------------------------------------------| | | | | +-----------------+ +-----------------+ | | NAT64 1 | | NAT64 2 | | +-----------------+ +-----------------+ | NAT64-v6-pre = NAT64-v6-pre = | 2001:db8:122:300::/56 2001:db8:122::/48 | NAT64-v4-pre = NAT64-v4-pre = | 192.0.2.0/24 192.0.2.128/25 | 198.51.100.0/24 | | | | | Dest IPv4 addr: | | | 192.0.2.1 | | | Dest IPv6 addr: | | | 2001:db8:122:300::c000:201 | | |----------------------------->| | | | | | | | Dest IPv4 addr: 192.0.2.193 | | Dest IPv6 addr: 2001:db8:122::c000:2c1 | |--------------------------------------------------->|
Figure 4: The example figure of the process procedure
Considerations for security in this type of environment are primarily around the operation of the DHCPv6 protocol and the databases it uses.
In the DHCPv6 server, should the database be compromised, it will deliver incorrect data to its DHCPv6 clients. In the DHCPv6 client, should its database be compromised by attack or polluted by an incorrect DHCPv6 server database, it will route data incorrectly. In both cases, the security of the systems and their databases in an operational matter, not managed by protocol.
However, the operation of the DHCPv6 protocol itself is also required to be correct - the server and its clients must recognize valid requests and reject invalid ones. Therefore, DHCPv6 exchanges MUST be secured as described in [RFC8415].
IANA should allocate two DHCPv6 option codes for use by OPTION_V6_PLATPREFIX_LIST and OPTION_V6_PLATPREFIX from the "Option Codes" table. Similarly, a request to IANA for assigning the NAT64-Type field codes. The following initial values are assigned in this document (values are 16-bit unsigned intergers).
Name | Value | RFC -----------------+---------+--------- Unspecified | 0x00 | RFC6052 SIIT | 0x01 | RFC7915 Stateful NAT64 | 0x02 | RFC6146 EAM-SIIT | 0x03 | RFC7757
The authors will like to recognize the inputs from Tore Anderson in a previous version of this work. Mohamed Boucadair provided very significant inputs.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. |
[RFC6877] | Mawatari, M., Kawashima, M. and C. Byrne, "464XLAT: Combination of Stateful and Stateless Translation", RFC 6877, DOI 10.17487/RFC6877, April 2013. |
[RFC8174] | Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017. |
[RFC8415] | Mrugalski, T., Siodelski, M., Volz, B., Yourtchenko, A., Richardson, M., Jiang, S., Lemon, T. and T. Winters, "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)", RFC 8415, DOI 10.17487/RFC8415, November 2018. |