| rfc9313.original | rfc9313.txt | |||
|---|---|---|---|---|
| v6ops G. Lencse | Internet Engineering Task Force (IETF) G. Lencse | |||
| Internet-Draft BUTE | Request for Comments: 9313 BUTE | |||
| Intended status: Informational J. Palet Martinez | Category: Informational J. Palet Martinez | |||
| Expires: 24 November 2022 The IPv6 Company | ISSN: 2070-1721 The IPv6 Company | |||
| L. Howard | L. Howard | |||
| Retevia | Retevia | |||
| R. Patterson | R. Patterson | |||
| Sky UK | Sky UK | |||
| I. Farrer | I. Farrer | |||
| Deutsche Telekom AG | Deutsche Telekom AG | |||
| 23 May 2022 | October 2022 | |||
| Pros and Cons of IPv6 Transition Technologies for IPv4aaS | Pros and Cons of IPv6 Transition Technologies for IPv4-as-a-Service | |||
| draft-ietf-v6ops-transition-comparison-04 | (IPv4aaS) | |||
| Abstract | Abstract | |||
| Several IPv6 transition technologies have been developed to provide | Several IPv6 transition technologies have been developed to provide | |||
| customers with IPv4-as-a-Service (IPv4aaS) for ISPs with an IPv6-only | customers with IPv4-as-a-Service (IPv4aaS) for ISPs with an IPv6-only | |||
| access and/or core network. All these technologies have their | access and/or core network. These technologies have their advantages | |||
| advantages and disadvantages, and depending on existing topology, | and disadvantages. Depending on existing topology, skills, strategy, | |||
| skills, strategy and other preferences, one of these technologies may | and other preferences, one of these technologies may be the most | |||
| be the most appropriate solution for a network operator. | appropriate solution for a network operator. | |||
| This document examines the five most prominent IPv4aaS technologies | This document examines the five most prominent IPv4aaS technologies | |||
| considering a number of different aspects to provide network | and considers a number of different aspects to provide network | |||
| operators with an easy-to-use reference to assist in selecting the | operators with an easy-to-use reference to assist in selecting the | |||
| technology that best suits their needs. | technology that best suits their needs. | |||
| 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 informational purposes. | |||
| 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 is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | 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 24 November 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/rfc9313. | ||||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Overview of the Technologies . . . . . . . . . . . . . . . . 4 | 2. Overview of the Technologies | |||
| 2.1. 464XLAT . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. 464XLAT | |||
| 2.2. Dual-Stack Lite . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. Dual-Stack Lite | |||
| 2.3. Lightweight 4over6 . . . . . . . . . . . . . . . . . . . 6 | 2.3. Lightweight 4over6 | |||
| 2.4. MAP-E . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.4. MAP-E | |||
| 2.5. MAP-T . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 2.5. MAP-T | |||
| 3. High-level Architectures and their Consequences . . . . . . . 9 | 3. High-Level Architectures and Their Consequences | |||
| 3.1. Service Provider Network Traversal . . . . . . . . . . . 9 | 3.1. Service Provider Network Traversal | |||
| 3.2. Network Address Translation among the Different IPv4aaS | 3.2. Network Address Translation among the Different IPv4aaS | |||
| Technologies . . . . . . . . . . . . . . . . . . . . . . 10 | Technologies | |||
| 3.3. IPv4 Address Sharing . . . . . . . . . . . . . . . . . . 11 | 3.3. IPv4 Address Sharing | |||
| 3.4. IPv4 Pool Size Considerations . . . . . . . . . . . . . . 12 | 3.4. IPv4 Pool Size Considerations | |||
| 3.5. CE Provisioning Considerations . . . . . . . . . . . . . 14 | 3.5. CE Provisioning Considerations | |||
| 3.6. Support for Multicast . . . . . . . . . . . . . . . . . . 14 | 3.6. Support for Multicast | |||
| 4. Detailed Analysis . . . . . . . . . . . . . . . . . . . . . . 15 | 4. Detailed Analysis | |||
| 4.1. Architectural Differences . . . . . . . . . . . . . . . . 15 | 4.1. Architectural Differences | |||
| 4.1.1. Basic Comparison . . . . . . . . . . . . . . . . . . 15 | 4.1.1. Basic Comparison | |||
| 4.2. Tradeoff between Port Number Efficiency and Stateless | 4.2. Trade-Off between Port Number Efficiency and Stateless | |||
| Operation . . . . . . . . . . . . . . . . . . . . . . . . 15 | Operation | |||
| 4.3. Support for Public Server Operation . . . . . . . . . . . 18 | 4.3. Support for Public Server Operation | |||
| 4.4. Support and Implementations . . . . . . . . . . . . . . . 19 | 4.4. Support and Implementations | |||
| 4.4.1. Vendor Support . . . . . . . . . . . . . . . . . . . 19 | 4.4.1. Vendor Support | |||
| 4.4.2. Support in Cellular and Broadband Networks . . . . . 19 | 4.4.2. Support in Cellular and Broadband Networks | |||
| 4.4.3. Implementation Code Sizes . . . . . . . . . . . . . . 20 | 4.4.3. Implementation Code Sizes | |||
| 4.5. Typical Deployment and Traffic Volume Considerations . . 20 | 4.5. Typical Deployment and Traffic Volume Considerations | |||
| 4.5.1. Deployment Possibilities . . . . . . . . . . . . . . 20 | 4.5.1. Deployment Possibilities | |||
| 4.5.2. Cellular Networks with 464XLAT . . . . . . . . . . . 20 | 4.5.2. Cellular Networks with 464XLAT | |||
| 4.5.3. Wireline Networks with 464XLAT . . . . . . . . . . . 21 | 4.5.3. Wireline Networks with 464XLAT | |||
| 4.6. Load Sharing . . . . . . . . . . . . . . . . . . . . . . 21 | 4.6. Load Sharing | |||
| 4.7. Logging . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 4.7. Logging | |||
| 4.8. Optimization for IPv4-only devices/applications . . . . . 23 | 4.8. Optimization for IPv4-Only Devices and Applications | |||
| 5. Performance Comparison | ||||
| 5. Performance Comparison . . . . . . . . . . . . . . . . . . . 23 | 6. IANA Considerations | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 | 7. Security Considerations | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | 8. References | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | 8.1. Normative References | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 8.2. Informative References | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 25 | Acknowledgements | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 30 | Authors' Addresses | |||
| Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 32 | ||||
| A.1. 01 - 02 . . . . . . . . . . . . . . . . . . . . . . . . . 32 | ||||
| A.2. 02 - 03 . . . . . . . . . . . . . . . . . . . . . . . . . 33 | ||||
| A.3. 03 - 04 . . . . . . . . . . . . . . . . . . . . . . . . . 33 | ||||
| A.4. 04 - 05 . . . . . . . . . . . . . . . . . . . . . . . . . 33 | ||||
| A.5. 05 - 06 . . . . . . . . . . . . . . . . . . . . . . . . . 33 | ||||
| A.6. 06 - 00-WG Item . . . . . . . . . . . . . . . . . . . . . 33 | ||||
| A.7. 00 - 01 . . . . . . . . . . . . . . . . . . . . . . . . . 33 | ||||
| A.8. 01 - 02 . . . . . . . . . . . . . . . . . . . . . . . . . 33 | ||||
| A.9. 02 - 03 . . . . . . . . . . . . . . . . . . . . . . . . . 34 | ||||
| A.10. 03 - 04 . . . . . . . . . . . . . . . . . . . . . . . . . 34 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | ||||
| 1. Introduction | 1. Introduction | |||
| As the deployment of IPv6 continues to be prevalent, it becomes | As the deployment of IPv6 continues to be prevalent, it becomes | |||
| clearer that network operators will move to building single-stack | clearer that network operators will move to building single-stack | |||
| IPv6 core and access networks to simplify network planning and | IPv6 core and access networks to simplify network planning and | |||
| operations. However, providing customers with IPv4 services | operations. However, providing customers with IPv4 services | |||
| continues to be a requirement for the foreseeable future. To meet | continues to be a requirement for the foreseeable future. To meet | |||
| this need, the IETF has standardised a number of different IPv4aaS | this need, the IETF has standardized a number of different IPv4aaS | |||
| technologies for this [LEN2019] based on differing requirements and | technologies for this (see [LEN2019]) based on differing requirements | |||
| deployment scenarios. | and deployment scenarios. | |||
| The number of technologies that have been developed makes it time- | The number of technologies that have been developed makes it time- | |||
| consuming for a network operator to identify the most appropriate | consuming for a network operator to identify the most appropriate | |||
| mechanism for their specific deployment. This document provides a | mechanism for their specific deployment. This document provides a | |||
| comparative analysis of the most commonly used mechanisms to assist | comparative analysis of the most commonly used mechanisms to assist | |||
| operators with this problem. | operators with this problem. | |||
| Five different IPv4aaS solutions are considered. The following | Five different IPv4aaS solutions are considered: | |||
| IPv4aaS technologies are covered: | ||||
| 1. 464XLAT [RFC6877] | 1. 464XLAT [RFC6877] | |||
| 2. Dual Stack Lite [RFC6333] | 2. Dual-Stack Lite [RFC6333] | |||
| 3. lw4o6 (Lightweight 4over6) [RFC7596] | 3. Lightweight 4over6 (lw4o6) [RFC7596] | |||
| 4. MAP-E [RFC7597] | 4. Mapping of Address and Port with Encapsulation (MAP-E) [RFC7597] | |||
| 5. MAP-T [RFC7599] | ||||
| 5. Mapping of Address and Port using Translation (MAP-T) [RFC7599] | ||||
| We note that [RFC6180] gives guidelines for using IPv6 transition | We note that [RFC6180] gives guidelines for using IPv6 transition | |||
| mechanisms during IPv6 deployment addressing a much broader topic, | mechanisms during IPv6 deployment; that document addresses a much | |||
| whereas this document focuses on a small part of it. | broader topic, whereas this document focuses on a small part of it. | |||
| 2. Overview of the Technologies | 2. Overview of the Technologies | |||
| The following sections introduce the different technologies analyzed | The following sections introduce the different technologies analyzed | |||
| in this document, describing some of their most important | in this document and describe some of their most important | |||
| characteristics. | characteristics. | |||
| 2.1. 464XLAT | 2.1. 464XLAT | |||
| 464XLAT may use double translation (stateless NAT46 + stateful NAT64) | 464XLAT may use double translation (stateless NAT46 + stateful NAT64) | |||
| or single translation (stateful NAT64), depending on different | or single translation (stateful NAT64) depending on different | |||
| factors, such as the use of DNS by the applications and the | factors, such as the use of DNS by the applications and the | |||
| availability of a DNS64 function (in the host or in the service | availability of a DNS64 function (in the host or service provider | |||
| provider network). | network). | |||
| The customer-side translator (CLAT) is located in the customer's | The customer-side translator (CLAT) is located in the customer's | |||
| device, and it performs stateless NAT46 translation [RFC7915] (more | device, and it performs stateless NAT46 translation [RFC7915] (more | |||
| precisely, a stateless IP/ICMP translation from IPv4 to IPv6). | precisely, a stateless IP/ICMP translation from IPv4 to IPv6). | |||
| IPv4-embedded IPv6 addresses [RFC6052] are used for both source and | IPv4-embedded IPv6 addresses [RFC6052] are used for both source and | |||
| destination addresses. Commonly, a /96 prefix (either the | destination addresses. Commonly, a /96 prefix (either the | |||
| 64:ff9b::/96 Well-Known Prefix, or a Network-Specific Prefix) is used | 64:ff9b::/96 Well-Known Prefix (WKP) or a Network-Specific Prefix) is | |||
| as the IPv6 destination for the IPv4-embedded client traffic. | used as the IPv6 destination for the IPv4-embedded client traffic. | |||
| In deployments where NAT64 load-balancing [RFC7269] section 4.2 is | In deployments where NAT64 load balancing (see Section 4.2 of | |||
| enabled, multiple WKPs [RFC8215] may be used. | [RFC7269]) is enabled, multiple WKPs [RFC8215] may be used. | |||
| In the operator's network, the provider-side translator (PLAT) | In the operator's network, the provider-side translator (PLAT) | |||
| performs stateful NAT64 [RFC6146] to translate the traffic. The | performs stateful NAT64 [RFC6146] to translate the traffic. The | |||
| destination IPv4 address is extracted from the IPv4-embedded IPv6 | destination IPv4 address is extracted from the IPv4-embedded IPv6 | |||
| packet destination address and the source address is from a pool of | packet destination address, and the source address is from a pool of | |||
| public IPv4 addresses. | public IPv4 addresses. | |||
| Alternatively, when a dedicated /64 is not available for translation, | Alternatively, when a dedicated /64 is not available for translation, | |||
| the CLAT device uses a stateful NAT44 translation before the | the CLAT device uses a stateful NAT44 translation before the | |||
| stateless NAT46 translation. | stateless NAT46 translation. | |||
| In general, keeping state in devices close to the end-user network | In general, keeping state in devices close to the end-user network | |||
| (i.e. at the CE - Customer Edge router) is not perceived as | (i.e., at the CE (Customer Edge) router) is not perceived to be as | |||
| problematic as keeping state in the operator's network. | problematic as keeping state in the operator's network. | |||
| In typical deployments, 464XLAT is used together with DNS64 | In typical deployments, 464XLAT is used together with DNS64 | |||
| [RFC6147], see Section 3.1.2 of [RFC8683]. When an IPv6-only client | [RFC6147]; see Section 3.1.2 of [RFC8683]. When an IPv6-only client | |||
| or application communicates with an IPv4-only server, the DNS64 | or application communicates with an IPv4-only server, the DNS64 | |||
| server returns the IPv4-embedded IPv6 address of the IPv4-only | server returns the IPv4-embedded IPv6 address of the IPv4-only | |||
| server. In this case, the IPv6-only client sends out IPv6 packets, | server. In this case, the IPv6-only client sends out IPv6 packets, | |||
| and the CLAT functions as an IPv6 router and the PLAT performs a | the CLAT functions as an IPv6 router, and the PLAT performs a | |||
| stateful NAT64 for these packets. In this case, there is a single | stateful NAT64 for these packets. There is a single translation. | |||
| translation. | ||||
| Similarly, when an IPv4-only client or application communicates with | Similarly, when an IPv4-only client or application communicates with | |||
| an IPv4-only server, the CLAT will statelessly translate to IPv6 so | an IPv4-only server, the CLAT will statelessly translate to IPv6 so | |||
| it can traverse the ISP network up to the PLAT (NAT64), which in turn | it can traverse the ISP network up to the PLAT (NAT64), which in turn | |||
| will translate to IPv4. | will translate to IPv4. | |||
| Alternatively, one can say that DNS64 + stateful NAT64 is used to | Alternatively, one can say that DNS64 + stateful NAT64 is used to | |||
| carry the traffic of the IPv6-only client and the IPv4-only server, | carry the traffic of the IPv6-only client and the IPv4-only server, | |||
| and the CLAT is used only for the IPv4 traffic from applications or | and the CLAT is used only for the IPv4 traffic from applications or | |||
| devices that use literal IPv4 addresses or non-IPv6 compliant APIs. | devices that use literal IPv4 addresses or non-IPv6-compliant APIs. | |||
| Private +----------+ Translated +----------+ _______ | Private +----------+ Translated +----------+ _______ | |||
| +------+ IPv4 | CLAT | 4-6-4 | PLAT | ( IPv4 ) | +------+ IPv4 | CLAT | 4-6-4 | PLAT | ( IPv4 ) | |||
| | IPv4 |------->| Stateless|------------>| Stateful +--( Internet ) | | IPv4 |------->| Stateless|------------>| Stateful +--( Internet ) | |||
| |Device|<-------| NAT46 |<------------| NAT64 | (________) | |Device|<-------| NAT46 |<------------| NAT64 | (________) | |||
| +------+ +----------+ ^ +----------+ | +------+ +----------+ ^ +----------+ | |||
| | | | | |||
| Operator IPv6 | Operator IPv6 | |||
| network | Network | |||
| Figure 1: Overview of the 464XLAT architecture | Figure 1: Overview of the 464XLAT Architecture | |||
| Note: in mobile networks, CLAT is commonly implemented in the user's | Note: In mobile networks, the CLAT is commonly implemented in the | |||
| equipment (UE or smartphone), please refer to Figure 2 of [RFC6877]. | user equipment (UE) or smartphone; please refer to Figure 2 in | |||
| [RFC6877]. | ||||
| Often NAT64 vendors support direct communication (that is, without | Some NAT64 vendors support direct communication (that is, without | |||
| translation) between two CLATs by means of hair-pinning through the | translation) between two CLATs by means of hairpinning through the | |||
| NAT64. | NAT64. | |||
| 2.2. Dual-Stack Lite | 2.2. Dual-Stack Lite | |||
| Dual-Stack Lite (DS-Lite) [RFC6333] was the first of the considered | Dual-Stack Lite (DS-Lite) [RFC6333] was the first of the considered | |||
| transition mechanisms to be developed. DS-Lite uses a 'Basic | transition mechanisms to be developed. DS-Lite uses a Basic Bridging | |||
| Bridging BroadBand' (B4) function in the customer's CE router that | BroadBand (B4) function in the customer's CE router that encapsulates | |||
| encapsulates IPv4 in IPv6 traffic and sends it over the IPv6 native | IPv4 in IPv6 traffic and sends it over the IPv6 native service | |||
| service-provider network to an 'Address Family Transition Router' | provider network to an Address Family Transition Router (AFTR). The | |||
| (AFTR). The AFTR performs encapsulation/decapsulation of the 4in6 | AFTR performs encapsulation/decapsulation of the 4in6 [RFC2473] | |||
| [RFC2473] traffic and translates the IPv4 source address in the inner | traffic and translates the IPv4 source address in the inner IPv4 | |||
| IPv4 packet to public IPv4 source address using a stateful NAPT44 | packet to a public IPv4 source address using a stateful NAPT44 | |||
| [RFC2663] function. | [RFC2663] function. | |||
| +-------------+ | +-------------+ | |||
| Private +----------+ IPv4-in-IPv6|Stateful AFTR| | Private +----------+ IPv4-in-IPv6|Stateful AFTR| | |||
| +------+ IPv4 | B4 | tunnel |------+------+ _______ | +------+ IPv4 | B4 | Tunnel |------+------+ _______ | |||
| | IPv4 |------->| Encap./ |------------>|Encap.| | ( IPv4 ) | | IPv4 |------->| Encap./ |------------>|Encap.| | ( IPv4 ) | |||
| |Device|<-------| decap. |<------------| / | NAPT +--( Internet ) | |Device|<-------| Decap. |<------------| / | NAPT +--( Internet ) | |||
| +------+ +----------+ ^ |Decap.| 44 | (________) | +------+ +----------+ ^ |Decap.| 44 | (________) | |||
| | +------+------+ | | +------+------+ | |||
| Operator IPv6 | Operator IPv6 | |||
| network | Network | |||
| Figure 2: Overview of the DS-Lite architecture | Figure 2: Overview of the DS-Lite Architecture | |||
| Some AFTR vendors support direct communication between two B4s by | Some AFTR vendors support direct communication between two B4s by | |||
| means of hair-pinning through the AFTR. | means of hairpinning through the AFTR. | |||
| 2.3. Lightweight 4over6 | 2.3. Lightweight 4over6 | |||
| Lightweight 4over6 (lw4o6) is a variant of DS-Lite. The main | Lightweight 4over6 (lw4o6) is a variant of DS-Lite. The main | |||
| difference is that the stateful NAPT44 function is relocated from the | difference is that the stateful NAPT44 function is relocated from the | |||
| centralized AFTR to the customer's B4 element (called a lwB4). The | centralized AFTR to the customer's B4 element (called an "lwB4"). | |||
| AFTR (called a lwAFTR) function therefore only performs A+P routing | The AFTR (called an "lwAFTR") function therefore only performs A+P | |||
| [RFC6346] and 4in6 encapsulation/decapsulation. | (Address plus Port) routing [RFC6346] and 4in6 encapsulation/ | |||
| decapsulation. | ||||
| Routing to the correct client and IPv4 address sharing is achieved | Routing to the correct client and IPv4 address sharing are achieved | |||
| using the Address + Port (A+P) model [RFC6346] of provisioning each | using the A+P model [RFC6346] of provisioning each lwB4 with a unique | |||
| lwB4 with a unique tuple of IPv4 address and a unique range of | tuple of IPv4 address and a unique range of transport-layer ports. | |||
| transport layer ports. The client uses these for NAPT44. | The client uses these for NAPT44. | |||
| The lwAFTR implements a binding table, which has a per-client entry | The lwAFTR implements a binding table, which has a per-client entry | |||
| linking the customer's source IPv4 address and allocated range of | linking the customer's source IPv4 address and an allocated range of | |||
| transport layer ports to their IPv6 tunnel endpoint address. The | transport-layer ports to their IPv6 tunnel endpoint address. The | |||
| binding table allows egress traffic from customers to be validated | binding table allows egress traffic from customers to be validated | |||
| (to prevent spoofing) and ingress traffic to be correctly | (to prevent spoofing) and ingress traffic to be correctly | |||
| encapsulated and forwarded. As there needs to be a per-client entry, | encapsulated and forwarded. As there needs to be a per-client entry, | |||
| an lwAFTR implementation needs to be optimized for performing a per- | an lwAFTR implementation needs to be optimized for performing a per- | |||
| packet lookup on the binding table. | packet lookup on the binding table. | |||
| Direct communication (that is, without translation) between two lwB4s | Direct communication (that is, without translation) between two lwB4s | |||
| is performed by hair-pinning traffic through the lwAFTR. | is performed by hairpinning traffic through the lwAFTR. | |||
| +-------------+ +----------+ | +-------------+ +----------+ | |||
| Private | lwB4 | IPv4-in-IPv6| Stateless| | Private | lwB4 | IPv4-in-IPv6| Stateless| | |||
| +------+ IPv4 |------+------| tunnel | lwAFTR | _______ | +------+ IPv4 |------+------| Tunnel | lwAFTR | _______ | |||
| | IPv4 |------->| |Encap.|------------>|(encap/A+P| ( IPv4 ) | | IPv4 |------->| |Encap.|------------>|(encap/A+P| ( IPv4 ) | |||
| |Device|<-------| NAPT | / |<------------|bind. tab +--( Internet ) | |Device|<-------| NAPT | / |<------------|bind. tab +--( Internet ) | |||
| +------+ | 44 |Decap.| ^ | routing) | (________) | +------+ | 44 |Decap.| ^ | routing) | (________) | |||
| +------+------+ | +----------+ | +------+------+ | +----------+ | |||
| Operator IPv6 | Operator IPv6 | |||
| network | Network | |||
| Figure 3: Overview of the lw4o6 architecture | Figure 3: Overview of the lw4o6 Architecture | |||
| 2.4. MAP-E | 2.4. MAP-E | |||
| Like 464XLAT (Section 2.1), MAP-E and MAP-T use [RFC6052] | Like 464XLAT (Section 2.1), MAP-E and MAP-T use IPv4-embedded IPv6 | |||
| IPv4-embedded IPv6 addresses to represent IPv4 hosts outside the MAP | addresses [RFC6052] to represent IPv4 hosts outside the MAP domain. | |||
| domain. | ||||
| MAP-E and MAP-T use a stateless algorithm to embed portions of the | MAP-E and MAP-T use a stateless algorithm to embed portions of the | |||
| customer's allocated IPv4 address (or part of an address with A+P | customer's allocated IPv4 address (or part of an address with A+P | |||
| routing) into the IPv6 prefix delegated to the client. This allows | routing) into the IPv6 prefix delegated to the client. This allows | |||
| for large numbers of clients to be provisioned using a single MAP | for large numbers of clients to be provisioned using a single MAP | |||
| rule (called a MAP domain). The algorithm also allows for direct | rule (called a "MAP domain"). The algorithm also allows direct IPv4 | |||
| IPv4 peer-to-peer communication between hosts provisioned with common | peer-to-peer communication between hosts provisioned with common MAP | |||
| MAP rules. | rules. | |||
| The CE (Customer-Edge) router typically performs stateful NAPT44 | The CE router typically performs stateful NAPT44 [RFC2663] to | |||
| [RFC2663] to translate the private IPv4 source addresses and source | translate the private IPv4 source addresses and source ports into an | |||
| ports into an address and port range defined by applying the MAP rule | address and port range defined by applying the MAP rule to the | |||
| to the delegated IPv6 prefix. The client address/port allocation | delegated IPv6 prefix. The client address/port allocation size is a | |||
| size is a configuration parameter. The CE router then encapsulates | configuration parameter. The CE router then encapsulates the IPv4 | |||
| the IPv4 packet in an IPv6 packet [RFC2473] and sends it directly to | packet in an IPv6 packet [RFC2473] and sends it directly to another | |||
| another host in the MAP domain (for peer-to-peer) or to a Border | host in the MAP domain (for peer-to-peer) or to a Border Router (BR) | |||
| Router (BR) if the IPv4 destination is not covered in one of the CE's | if the IPv4 destination is not covered in one of the CE's MAP rules. | |||
| MAP rules. | ||||
| The MAP BR is provisioned with the set of MAP rules for the MAP | The MAP BR is provisioned with the set of MAP rules for the MAP | |||
| domains it serves. These rules determine how the MAP BR is to | domains it serves. These rules determine how the MAP BR is to | |||
| decapsulate traffic that it receives from client, validating the | decapsulate traffic that it receives from the client, validate the | |||
| source IPv4 address and transport layer ports assigned, as well as | source IPv4 address and transport-layer ports assigned, and calculate | |||
| how to calculate the destination IPv6 address for ingress IPv4 | the destination IPv6 address for ingress IPv4 traffic. | |||
| traffic. | ||||
| +-------------+ +----------+ | +-------------+ +----------+ | |||
| Private | MAP CE | IPv4-in-IPv6| Stateless| | Private | MAP CE | IPv4-in-IPv6| Stateless| | |||
| +------+ IPv4 |------+------| tunnel | MAP BR | _______ | +------+ IPv4 |------+------| tunnel | MAP BR | _______ | |||
| | IPv4 |------->| |Encap.|------------>|(encap/A+P| ( IPv4 ) | | IPv4 |------->| |Encap.|------------>|(encap/A+P| ( IPv4 ) | |||
| |Device|<-------| NAPT | / |<------------|algorithm +--( Internet ) | |Device|<-------| NAPT | / |<------------|algorithm +--( Internet ) | |||
| +------+ | 44 |Decap.| ^ | routing) | (________) | +------+ | 44 |Decap.| ^ | routing) | (________) | |||
| +------+------+ | +----------+ | +------+------+ | +----------+ | |||
| Operator IPv6 | Operator IPv6 | |||
| network | Network | |||
| Figure 4: Overview of the MAP-E architecture | Figure 4: Overview of the MAP-E Architecture | |||
| Some BR vendors support direct communication between two MAP CEs by | Some BR vendors support direct communication between two MAP CEs by | |||
| means of hair-pinning through the BR. | means of hairpinning through the BR. | |||
| 2.5. MAP-T | 2.5. MAP-T | |||
| MAP-T uses the same mapping algorithm as MAP-E. The major difference | MAP-T uses the same mapping algorithm as MAP-E. The major difference | |||
| is that double stateless translation (NAT46 in the CE and NAT64 in | is that double stateless translation (NAT46 in the CE and NAT64 in | |||
| the BR) is used to traverse the ISP's IPv6 single-stack network. | the BR) is used to traverse the ISP's IPv6 single-stack network. | |||
| MAP-T can also be compared to 464XLAT when there is a double | MAP-T can also be compared to 464XLAT when there is a double | |||
| translation. | translation. | |||
| A MAP CE router typically performs stateful NAPT44 to translate | A MAP CE router typically performs stateful NAPT44 to translate | |||
| traffic to a public IPv4 address and port-range calculated by | traffic to a public IPv4 address and port range calculated by | |||
| applying the provisioned Basic MAP Rule (BMR - a set of inputs to the | applying the provisioned Basic MAP Rule (BMR), which is a set of | |||
| algorithm) to the delegated IPv6 prefix. The CE then performs | inputs to the algorithm, to the delegated IPv6 prefix. The CE then | |||
| stateless translation from IPv4 to IPv6 [RFC7915]. The MAP BR is | performs stateless translation from IPv4 to IPv6 [RFC7915]. The MAP | |||
| provisioned with the same BMR as the client, enabling the received | BR is provisioned with the same BMR as the client, enabling the | |||
| IPv6 traffic to be statelessly NAT64 translated back to the public | received IPv6 traffic to be translated (using stateless NAT64) back | |||
| IPv4 source address used by the client. | to the public IPv4 source address used by the client. | |||
| Using translation instead of encapsulation also allows IPv4-only | Using translation instead of encapsulation also allows IPv4-only | |||
| nodes to correspond directly with IPv6 nodes in the MAP-T domain that | nodes to correspond directly with IPv6 nodes in the MAP-T domain that | |||
| have IPv4-embedded IPv6 addresses. | have IPv4-embedded IPv6 addresses. | |||
| +-------------+ +----------+ | +-------------+ +----------+ | |||
| Private | MAP CE | Translated | Stateless| | Private | MAP CE | Translated | Stateless| | |||
| +------+ IPv4 |------+------| 4-6-4 | MAP BR | _______ | +------+ IPv4 |------+------| 4-6-4 | MAP BR | _______ | |||
| | IPv4 |------->| |State-|------------>|(NAT64/A+P| ( IPv4 ) | | IPv4 |------->| |State-|------------>|(NAT64/A+P| ( IPv4 ) | |||
| |Device|<-------| NAPT | less |<------------|algorithm +--( Internet ) | |Device|<-------| NAPT | less |<------------|algorithm +--( Internet ) | |||
| +------+ | 44 |NAT46 | ^ | routing) | (________) | +------+ | 44 |NAT46 | ^ | routing) | (________) | |||
| +------+------+ | +----------+ | +------+------+ | +----------+ | |||
| Operator IPv6 | Operator IPv6 | |||
| network | Network | |||
| Figure 5: Overview of the MAP-T architecture | Figure 5: Overview of the MAP-T Architecture | |||
| Some BR vendors support direct communication between two MAP CEs by | Some BR vendors support direct communication between two MAP CEs by | |||
| means of hair-pinning through the BR. | means of hairpinning through the BR. | |||
| 3. High-level Architectures and their Consequences | 3. High-Level Architectures and Their Consequences | |||
| 3.1. Service Provider Network Traversal | 3.1. Service Provider Network Traversal | |||
| For the data-plane, there are two approaches for traversing the IPv6 | For the data plane, there are two approaches for traversing the IPv6 | |||
| provider network: | provider network: | |||
| * 4-6-4 translation | * 4-6-4 translation | |||
| * 4-in-6 encapsulation | * 4in6 encapsulation | |||
| +==============+=========+=========+=======+=======+=======+ | +====================+=========+=========+=======+=======+=======+ | |||
| | | 464XLAT | DS-Lite | lw4o6 | MAP-E | MAP-T | | | | 464XLAT | DS-Lite | lw4o6 | MAP-E | MAP-T | | |||
| +==============+=========+=========+=======+=======+=======+ | +====================+=========+=========+=======+=======+=======+ | |||
| | 4-6-4 trans. | X | | | | X | | | 4-6-4 translation | X | | | | X | | |||
| +--------------+---------+---------+-------+-------+-------+ | +--------------------+---------+---------+-------+-------+-------+ | |||
| | 4-6-4 encap. | | X | X | X | | | | 4in6 encapsulation | | X | X | X | | | |||
| +--------------+---------+---------+-------+-------+-------+ | +--------------------+---------+---------+-------+-------+-------+ | |||
| Table 1: Available Traversal Mechanisms | Table 1: Available Traversal Mechanisms | |||
| In the scope of this document, all of the encapsulation based | In the scope of this document, all of the encapsulation-based | |||
| mechanisms use IP-in-IP tunnelling [RFC2473]. This is a stateless | mechanisms use IP-in-IP tunneling [RFC2473]. This is a stateless | |||
| tunneling mechanism which does not require any additional overhead. | tunneling mechanism that does not require any additional overhead. | |||
| It should be noted that both of these approaches result in an | It should be noted that both of these approaches result in an | |||
| increase in the size of the packet that needs to be transported | increase in the size of the packet that needs to be transported | |||
| across the operator's network when compared to native IPv4. 4-6-4 | across the operator's network when compared to native IPv4. 4-6-4 | |||
| translation adds a 20-bytes overhead (the 20-byte IPv4 header is | translation adds a 20-byte overhead (the 20-byte IPv4 header is | |||
| replaced with a 40-byte IPv6 header). Encapsulation has a 40-byte | replaced with a 40-byte IPv6 header). Encapsulation has a 40-byte | |||
| overhead (an IPv6 header is prepended to the IPv4 header). | overhead (an IPv6 header is prepended to the IPv4 header). | |||
| The increase in packet size can become a significant problem if there | The increase in packet size can become a significant problem if there | |||
| is a link with a smaller MTU in the traffic path. This may result in | is a link with a smaller MTU in the traffic path. This may result in | |||
| traffic needing to be fragmented at the ingress point to the IPv6 | the need for traffic to be fragmented at the ingress point to the | |||
| only domain (i.e., the NAT46 or 4in6 encapsulation endpoint). It may | IPv6 only domain (i.e., the NAT46 or 4in6 encapsulation endpoint). | |||
| also result in the need to implement buffering and fragment re- | It may also result in the need to implement buffering and fragment | |||
| assembly in the PLAT/AFTR/lwAFTR/BR node. | reassembly in the PLAT/AFTR/lwAFTR/BR node. | |||
| The advice given in [RFC7597] Section 8.3.1 is applicable to all of | The advice given in Section 8.3.1 of [RFC7597] is applicable to all | |||
| these mechanisms: It is strongly recommended that the MTU in the | of these mechanisms: It is strongly recommended that the MTU in the | |||
| IPv6-only domain be well managed (it should have sufficiently large | IPv6-only domain be well managed (it should have sufficiently large | |||
| MTU to support tunneling and/or translation) and that the IPv6 MTU on | MTU to support tunneling and/or translation) and that the IPv6 MTU on | |||
| the CE WAN-side interface be set so that no fragmentation occurs | the CE WAN-side interface be set so that no fragmentation occurs | |||
| within the boundary of the IPv6-only domain. | within the boundary of the IPv6-only domain. | |||
| 3.2. Network Address Translation among the Different IPv4aaS | 3.2. Network Address Translation among the Different IPv4aaS | |||
| Technologies | Technologies | |||
| For the high-level solution of IPv6 service provider network | For the high-level solution of IPv6 service provider network | |||
| traversal, MAP-T uses double stateless translation. First at the CE | traversal, MAP-T uses double stateless translation. The first | |||
| from IPv4 to IPv6 (NAT46), and then from IPv6 to IPv4 (NAT64), at the | translation is from IPv4 to IPv6 (NAT46) at the CE, and the second | |||
| service provider network. | translation is from IPv6 to IPv4 (NAT64) at the service provider | |||
| network. | ||||
| 464XLAT may use double translation (stateless NAT46 + stateful NAT64) | 464XLAT may use double translation (stateless NAT46 + stateful NAT64) | |||
| or single translation (stateful NAT64), depending on different | or single translation (stateful NAT64) depending on different | |||
| factors, such as the use of DNS by the applications and the | factors, such as the use of DNS by the applications and the | |||
| availability of a DNS64 function (in the host or in the service | availability of a DNS64 function (in the host or in the service | |||
| provider network). For deployment guidelines, please refer to | provider network). For deployment guidelines, please refer to | |||
| [RFC8683]. | [RFC8683]. | |||
| The first step for the double translation mechanisms is a stateless | The first step for the double translation mechanisms is a stateless | |||
| NAT from IPv4 to IPv6 implemented as SIIT (Stateless IP/ICMP | NAT from IPv4 to IPv6 implemented as SIIT (Stateless IP/ICMP | |||
| Translation Algorithm) [RFC7915], which does not translate IPv4 | Translation Algorithm) [RFC7915], which does not translate IPv4 | |||
| header options and/or multicast IP/ICMP packets. With encapsulation- | header options and/or multicast IP/ICMP packets. With encapsulation- | |||
| based technologies the header is transported intact and multicast can | based technologies, the header is transported intact, and multicast | |||
| also be carried. | can also be carried. | |||
| Single and double translation results in native IPv6 traffic with a | Single and double translation results in native IPv6 traffic with a | |||
| transport layer next-header. The fields in these headers can be used | transport-layer next header. The fields in these headers can be used | |||
| for functions such as hashing across equal-cost multipaths or access | for functions such as hashing across equal-cost multipaths or Access | |||
| control list (ACL) filtering. Encapsulation technologies, in | Control List (ACL) filtering. Encapsulation technologies, in | |||
| contrast, may hinder hashing algorithms or other functions relying on | contrast, may hinder hashing algorithms or other functions relying on | |||
| header inspection. | header inspection. | |||
| Solutions using double translation can only carry port-aware IP | Solutions using double translation can only carry port-aware IP | |||
| protocols (e.g. TCP, UDP) and ICMP when they are used with IPv4 | protocols (e.g., TCP and UDP) and ICMP when they are used with IPv4 | |||
| address sharing (please refer to Section 4.3 for more details). | address sharing (please refer to Section 4.3 for more details). | |||
| Encapsulation based solutions can carry any other protocols over IP, | Encapsulation-based solutions can also carry any other protocols over | |||
| too. | IP. | |||
| An in-depth analysis of stateful NAT64 can be found in [RFC6889]. | An in-depth analysis of stateful NAT64 can be found in [RFC6889]. | |||
| As stateful NAT interferes with the port numbers, | As stateful NAT interferes with the port numbers, [NAT-SUPP] explains | |||
| [I-D.ietf-tsvwg-natsupp] explains how NATs can handle SCTP (Stream | how NATs can handle SCTP (Stream Control Transmission Protocol). | |||
| Control Transmission Protocol). | ||||
| 3.3. IPv4 Address Sharing | 3.3. IPv4 Address Sharing | |||
| As public IPv4 address exhaustion is a common motivation for | As public IPv4 address exhaustion is a common motivation for | |||
| deploying IPv6, transition technologies need to provide a solution | deploying IPv6, transition technologies need to provide a solution | |||
| for allowing public IPv4 address sharing. | that allows public IPv4 address sharing. | |||
| In order to fulfill this requirement, a stateful NAPT function is a | In order to fulfill this requirement, a stateful NAPT function is a | |||
| necessary function in all of the mechanisms. The major | necessary function in all of the mechanisms. The major | |||
| differentiator is where in the architecture this function is located. | differentiator is where in the architecture this function is located. | |||
| The solutions compared by this document fall into two categories: | The solutions compared by this document fall into two categories: | |||
| * CGN-based approaches (DS-Lite, 464XLAT) | * Approaches based on Carrier-Grade NAT (CGN) (DS-Lite, 464XLAT) | |||
| * A+P-based approaches (lw4o6, MAP-E, MAP-T) | * Approaches based on A+P (lw4o6, MAP-E, MAP-T) | |||
| In the CGN-based model, a device such as a CGN/AFTR or NAT64 performs | In the CGN-based model, a device such as a CGN/AFTR or NAT64 performs | |||
| the NAPT44 function and maintains per-session state for all of the | the NAPT44 function and maintains per-session state for all of the | |||
| active client's traffic. The customer's device does not require per- | active client's traffic. The customer's device does not require per- | |||
| session state for NAPT. | session state for NAPT. | |||
| In the A+P-based model, a device (usually a CE) performs stateful | In the A+P-based model, a device (usually a CE) performs stateful | |||
| NAPT44 and maintains per-session state only co-located devices, e.g. | NAPT44 and maintains per-session state only for co-located devices, | |||
| in the customer's home network. Here, the centralized network | e.g., in the customer's home network. Here, the centralized network | |||
| function (lwAFTR or BR) only needs to perform stateless | function (lwAFTR or BR) only needs to perform stateless | |||
| encapsulation/decapsulation or NAT64. | encapsulation/decapsulation or NAT64. | |||
| Issues related to IPv4 address sharing mechanisms are described in | Issues related to IPv4 address-sharing mechanisms are described in | |||
| [RFC6269] and should also be considered. | [RFC6269] and should also be considered. | |||
| The address sharing efficiency of the five technologies is | The address-sharing efficiency of the five technologies is | |||
| significantly different, it is discussed in Section 4.2. | significantly different and is discussed in Section 4.2. | |||
| lw4o6, MAP-E and MAP-T can also be configured without IPv4 address | Lw4o6, MAP-E, and MAP-T can also be configured without IPv4 address | |||
| sharing, see the details in Section 4.3. However, in that case, | sharing; see the details in Section 4.3. However, in that case, | |||
| there is no advantage in terms of public IPv4 address saving. In the | there is no advantage in terms of public IPv4 address saving. In the | |||
| case of 464XLAT, this can be achieved as well through EAMT (Explicit | case of 464XLAT, one-to-one mapping can also be achieved through EAMT | |||
| Address Mapping Table) [RFC7757]. | (Explicit Address Mapping Table) [RFC7757]. | |||
| Conversely, both MAP-E and MAP-T may be configured to provide more | Conversely, both MAP-E and MAP-T may be configured to provide more | |||
| than one public IPv4 address (i.e., an IPv4 prefix shorter than a | than one public IPv4 address (i.e., an address with an IPv4 prefix | |||
| /32) to customers. | shorter than a /32) to customers. | |||
| Dynamic DNS issues in address-sharing contexts and their possible | Dynamic DNS issues in address-sharing contexts and their possible | |||
| solutions using PCP (Port Control Protocol) are discussed in detail | solutions using PCP (Port Control Protocol) are discussed in detail | |||
| in [RFC7393]. | in [RFC7393]. | |||
| 3.4. IPv4 Pool Size Considerations | 3.4. IPv4 Pool Size Considerations | |||
| In this section we do some simple calculations regarding port | In this section, we do some simple calculations regarding port | |||
| numbers, however, technical limitations are not the only point to | numbers. However, technical limitations are not the only point to | |||
| consider for port sharing, there are also local regulations or BCP. | consider for port sharing; there are also local regulations and best | |||
| current practices. | ||||
| Note: under "port numbers", we mean TCP/UDP port numbers or ICMP | Note: By "port numbers", we mean TCP/UDP port numbers or ICMP | |||
| identifiers. | identifiers. | |||
| In most networks, it is possible to, using existing data about flows | In most networks, it is possible to use existing data about flows to | |||
| to CDNs/caches or other well-known IPv6-enabled destinations, | Content Delivery Networks (CDNs), caches, or other well-known | |||
| calculate the percentage of traffic that would turn into IPv6 if it | IPv6-enabled destinations to calculate the percentage of traffic that | |||
| is enabled on that network or part of it. | would turn into IPv6 if IPv6 is enabled on that network or on part of | |||
| it. | ||||
| Knowing that, it is possible to calculate the IPv4 pool size required | Knowing that, it is possible to calculate the IPv4 pool size required | |||
| for a given number of subscribers, depending on the IPv4aaS | for a given number of subscribers, depending on the IPv4aaS | |||
| technology being used. | technology being used. | |||
| According to [MIY2010], each user-device (computer, tablet, | According to [MIY2010], each user device (computer, tablet, | |||
| smartphone) behind a NAT, could simultaneously use up to 300 ports. | smartphone) behind a NAT could simultaneously use up to 300 ports. | |||
| (Table 1 of [MIY2010] lists the port number usage of various | (Table 1 of [MIY2010] lists the port number usage of various | |||
| applications. According to [REP2014] the downloading of some web | applications. According to [REP2014], the downloading of some web | |||
| pages may consume up to 200 port numbers.) If the extended NAPT | pages may consume up to 200 port numbers.) If the extended NAPT | |||
| algorithm is used, which includes the full five tuple into the | algorithm is used, which includes the full 5-tuple into the | |||
| connection tracking table, then the port numbers are reused, when the | connection tracking table, then the port numbers are reused when the | |||
| destinations are different. Therefore, we need to consider the | destinations are different. Therefore, we need to consider the | |||
| number of "port hungry" applications that are accessing the same | number of "port-hungry" applications that are accessing the same | |||
| destination simultaneously. We estimate that in the case of a | destination simultaneously. We estimate that in the case of a | |||
| residential subscriber, there will be typically no more than 4 of | residential subscriber, there will be typically no more than four | |||
| port hungry applications communicating with the same destination | port-hungry applications communicating with the same destination | |||
| simultaneously, which means a total of 1,200 ports. | simultaneously, which is a total of 1,200 ports. | |||
| If for example, 80% of the traffic is expected towards IPv6 | For example, if 80% of the traffic is expected towards IPv6 | |||
| destinations, only 20% will actually be using IPv4 ports, so in our | destinations, only 20% will actually be using IPv4 ports. Thus, in | |||
| example, that will mean 240 ports required per subscriber. | our example, 240 ports are required for each subscriber. | |||
| From the 65,535 ports available per IPv4 address, we could even | From the 65,535 ports available per IPv4 address, we could even | |||
| consider reserving 1,024 ports, in order to allow customers that need | consider reserving 1,024 ports for customers that need EAMT entries | |||
| EAMT entries for incoming connections to System Ports (0-1023, also | for incoming connections to System ports (0-1023, also called "well- | |||
| called well-known ports) [RFC7605], which means 64,511 ports actually | known ports") [RFC7605]. This means that 64,511 ports are actually | |||
| available per each IPv4 address. | available for each IPv4 address. | |||
| According to this, a /22 (1.024 public IPv4 addresses) will be | According to this, a /22 (1.024 public IPv4 addresses) will be | |||
| sufficient for over 275,000 subscribers | sufficient for over 275,000 subscribers | |||
| (1,024x64,511/240=275,246.93). | (1,024x64,511/240=275,246.93). | |||
| Similarly, a /18 (16,384 public IPv4 addresses) will be sufficient | Similarly, a /18 (16,384 public IPv4 addresses) will be sufficient | |||
| for over 4,403,940 subscribers, and so on. | for over 4,403,940 subscribers, and so on. | |||
| This is a conservative approach, which is valid in the case of | This is a conservative approach, which is valid in the case of | |||
| 464XLAT, because ports are assigned dynamically by the NAT64, so it | 464XLAT because ports are assigned dynamically by the NAT64. | |||
| is not necessary to consider if one user is actually using more or | Therefore, it is not necessary to consider if one user is actually | |||
| less ports: Average values work well. | using more or fewer ports; average values work well. | |||
| As the deployment of IPv6 progresses, the use of NAT64, and therefore | As the deployment of IPv6 progresses, the use of NAT64, and therefore | |||
| of public IPv4 addresses, decreases (more IPv6/ports, less IPv4/ | of public IPv4 addresses, decreases (more IPv6 ports, fewer IPv4 | |||
| ports), so either more subscribers can be accommodated with the same | ports). Thus, either more subscribers can be accommodated with the | |||
| number of IPv4 addresses, or some of those addressed can be retired | same number of IPv4 addresses or some of those addressed can be | |||
| from the NAT64. | retired from the NAT64. | |||
| For comparison, if dual-stack is being used, any given number of | For comparison, if dual-stack is being used, any given number of | |||
| users will require the same number of public IPv4 addresses. For | users will require the same number of public IPv4 addresses. For | |||
| instance, a /14 will provide 262,144 IPv4 public addresses for | instance, a /14 will provide 262,144 IPv4 public addresses for | |||
| 262,144 subscribers, versus 275,000 subscribers being served with | 262,144 subscribers, versus 275,000 subscribers being served with | |||
| only a /22. | only a /22. | |||
| In the other IPv4aaS technologies, this calculation will only match | In the other IPv4aaS technologies, this calculation will only match | |||
| if the assignment of ports per subscriber can be done dynamically, | if the assignment of ports per subscriber can be done dynamically, | |||
| which is not always the case (depending on the vendor | which is not always the case (depending on the vendor | |||
| implementation). | implementation). | |||
| An alternative approximation for the other IPv4aaS technologies, when | When dynamic assignment of addresses is not possible, an alternative | |||
| dynamically assignment of addresses is not possible, must ensure | approximation for the other IPv4aaS technologies must ensure a | |||
| sufficient number of ports per subscriber. That means 1,200 ports, | sufficient number of ports per subscriber. That means 1,200 ports, | |||
| and typically, it comes to 2,000 ports in many deployments. In that | and typically, it comes to 2,000 ports in many deployments. In that | |||
| case, assuming 80% of IPv6 traffic, as above, which will allow only | case, assuming 80% is IPv6 traffic (as above), only 30 subscribers | |||
| 30 subscribers per each IPv4 address, so the closer approximation to | will be allowed per each IPv4 address; thus, the closer approximation | |||
| 275,000 subscribers per our example with 464XLAT (with a /22), will | to 275,000 subscribers per our example with 464XLAT (with a /22) will | |||
| be using a /19, which serves 245,760 subscribers (a /19 has 8,192 | be using a /19, which serves 245,760 subscribers (a /19 has 8,192 | |||
| addresses, 30 subscribers with 2,000 ports each, per address). | addresses and 30 subscribers with 2,000 ports each per address). | |||
| If the CGN (in case of DS-Lite) or the CE (in case of lw4o6, MAP-E | If the CGN (in case of DS-Lite) or the CE (in case of lw4o6, MAP-E, | |||
| and MAP-T) make use of a 5-tuple for tracking the NAT connections, | and MAP-T) make use of a 5-tuple for tracking the NAT connections, | |||
| the number of ports required per subscriber can be limited as low as | the number of ports required per subscriber can be limited as low as | |||
| 4 ports per subscriber. However, the practical limit depends on the | four ports per subscriber. However, the practical limit depends on | |||
| desired limit for parallel connections that any single host behind | the desired limit for parallel connections that any single host | |||
| the NAT can have to the same address and port in Internet. Note that | behind the NAT can have to the same address and port in Internet. | |||
| it is becoming more common that applications use AJAX (Asynchronous | Note that it is becoming more common that applications use AJAX | |||
| JavaScript and XML) and similar mechanisms, so taking that extreme | (Asynchronous JavaScript and XML) and similar mechanisms, so taking | |||
| limit is probably not a safe choice. | that extreme limit is probably not a safe choice. | |||
| This extremely reduced number of ports "feature" could also be used | This feature of extremely reduced number of ports could also be used | |||
| in case the CLAT-enabled CE with 464XLAT makes use of the 5-tuple NAT | in case the CLAT-enabled CE with 464XLAT makes use of tracking the | |||
| connections tracking, and could also be further extended if the NAT64 | 5-tuple NAT connections and could also be further extended if the | |||
| also use the 5-tuple. | NAT64 also uses the 5-tuple. | |||
| Please also refer to [RFC6888] for in-depth information about the | Please also refer to [RFC6888] for in-depth information about the | |||
| requirements for sizing Carrier-Grade NAT gateways. | requirements for sizing CGN gateways. | |||
| 3.5. CE Provisioning Considerations | 3.5. CE Provisioning Considerations | |||
| All of the technologies require some provisioning of customer | All of the technologies require some provisioning of customer | |||
| devices. The table below shows which methods currently have | devices. The table below shows which methods currently have | |||
| extensions for provisioning the different mechanisms. | extensions for provisioning the different mechanisms. | |||
| +==============+=========+=========+=========+==========+===========+ | +==============+=========+=========+=========+==========+===========+ | |||
| |Provisioning | 464XLAT | DS-Lite | lw4o6 | MAP-E | MAP-T | | |Provisioning | 464XLAT | DS-Lite | lw4o6 | MAP-E | MAP-T | | |||
| |Method | | | | | | | |Method | | | | | | | |||
| skipping to change at page 14, line 32 ¶ | skipping to change at line 617 ¶ | |||
| |[RFC8658] | | | | | | | |[RFC8658] | | | | | | | |||
| +--------------+---------+---------+---------+----------+-----------+ | +--------------+---------+---------+---------+----------+-----------+ | |||
| |TR-069 | * | X | * | X | X | | |TR-069 | * | X | * | X | X | | |||
| |[TR-069] | | | | | | | |[TR-069] | | | | | | | |||
| +--------------+---------+---------+---------+----------+-----------+ | +--------------+---------+---------+---------+----------+-----------+ | |||
| |DNS64 | X | | | | | | |DNS64 | X | | | | | | |||
| |[RFC7050] | | | | | | | |[RFC7050] | | | | | | | |||
| +--------------+---------+---------+---------+----------+-----------+ | +--------------+---------+---------+---------+----------+-----------+ | |||
| |YANG [RFC7950]|[RFC8512]|[RFC8513]|[RFC8676]|[RFC8676] | [RFC8676] | | |YANG [RFC7950]|[RFC8512]|[RFC8513]|[RFC8676]|[RFC8676] | [RFC8676] | | |||
| +--------------+---------+---------+---------+----------+-----------+ | +--------------+---------+---------+---------+----------+-----------+ | |||
| |DHCP4o6 | | | X | X | | | |DHCP 4o6 | | | X | X | | | |||
| |[RFC7341] | | | | | | | |[RFC7341] | | | | | | | |||
| +--------------+---------+---------+---------+----------+-----------+ | +--------------+---------+---------+---------+----------+-----------+ | |||
| Table 2: Available Provisioning Mechanisms | Table 2: Available Provisioning Mechanisms | |||
| *: Work started at BroadBand Forum (2021). | *: Work started at Broadband Forum (2021) | |||
| X: Supported by the provisioning method. | X: Supported by the provisioning method | |||
| 3.6. Support for Multicast | 3.6. Support for Multicast | |||
| The solutions covered in this document are all intended for unicast | The solutions covered in this document are all intended for unicast | |||
| traffic. [RFC8114] describes a method for carrying encapsulated IPv4 | traffic. [RFC8114] describes a method for carrying encapsulated IPv4 | |||
| multicast traffic over an IPv6 multicast network. This could be | multicast traffic over an IPv6 multicast network. This could be | |||
| deployed in parallel to any of the operator's chosen IPv4aaS | deployed in parallel to any of the operator's chosen IPv4aaS | |||
| mechanism. | mechanism. | |||
| 4. Detailed Analysis | 4. Detailed Analysis | |||
| 4.1. Architectural Differences | 4.1. Architectural Differences | |||
| 4.1.1. Basic Comparison | 4.1.1. Basic Comparison | |||
| The five IPv4aaS technologies can be classified into 2x2=4 categories | The five IPv4aaS technologies can be classified based on two aspects: | |||
| on the basis of two aspects: | ||||
| * Technology used for service provider network traversal. It can be | * Technology used for service provider network traversal. It can be | |||
| single/double translation or encapsulation. | single/double translation or encapsulation. | |||
| * Presence or absence of NAPT44 per-flow state in the operator | * Presence or absence of per-flow state in the operator network. | |||
| network. | ||||
| +====================+=========+=========+=======+=======+=======+ | +====================+=========+=========+=======+=======+=======+ | |||
| | | 464XLAT | DS-Lite | lw4o6 | MAP-E | MAP-T | | | | 464XLAT | DS-Lite | lw4o6 | MAP-E | MAP-T | | |||
| +====================+=========+=========+=======+=======+=======+ | +====================+=========+=========+=======+=======+=======+ | |||
| | Translation (T) or | T | E | E | E | T | | | Translation (T) or | T | E | E | E | T | | |||
| | Encapsulation (E) | | | | | | | | Encapsulation (E) | | | | | | | |||
| +--------------------+---------+---------+-------+-------+-------+ | +--------------------+---------+---------+-------+-------+-------+ | |||
| | Per-flow state in | X | X | | | | | | Presence (+) of | + | + | | | | | |||
| | op. network | | | | | | | | Per-Flow State in | | | | | | | |||
| | Operator Network | | | | | | | ||||
| +--------------------+---------+---------+-------+-------+-------+ | +--------------------+---------+---------+-------+-------+-------+ | |||
| Table 3: Basic comparison among the analyzed technologies | Table 3: Basic Comparison among the Analyzed Technologies | |||
| 4.2. Tradeoff between Port Number Efficiency and Stateless Operation | 4.2. Trade-Off between Port Number Efficiency and Stateless Operation | |||
| 464XLAT and DS-Lite use stateful NAPT at the PLAT/AFTR devices, | 464XLAT and DS-Lite use stateful NAPT at the PLAT and AFTR devices, | |||
| respectively. This may cause scalability issues for the number of | respectively. This may cause scalability issues for the number of | |||
| clients or volume of traffic, but does not impose a limitation on the | clients or volume of traffic, but it does not impose a limitation on | |||
| number of ports per user, as they can be allocated dynamically on- | the number of ports per user, as they can be allocated dynamically | |||
| demand and the allocation policy can be centrally managed/adjusted. | on-demand and the allocation policy can be centrally managed and | |||
| adjusted. | ||||
| A+P based mechanisms (lw4o6, MAP-E, and MAP-T) avoid using NAPT in | A+P-based mechanisms (lw4o6, MAP-E, and MAP-T) avoid using NAPT in | |||
| the service provider network. However, this means that the number of | the service provider network. However, this means that the number of | |||
| ports provided to each user (and hence the effective IPv4 address | ports provided to each user (and hence the effective IPv4 address- | |||
| sharing ratio) must be pre-provisioned to the client. | sharing ratio) must be pre-provisioned to the client. | |||
| Changing the allocated port ranges with A+P based technologies, | Changing the allocated port ranges with A+P-based technologies | |||
| requires more planning and is likely to involve re-provisioning both | requires more planning and is likely to involve reprovisioning both | |||
| hosts and operator side equipment. It should be noted that due to | hosts and operator-side equipment. It should be noted that due to | |||
| the per-customer binding table entry used by lw4o6, a single customer | the per-customer binding table entry used by lw4o6, a single customer | |||
| can be re-provisioned (e.g., if they request a full IPv4 address) | can be reprovisioned (e.g., if they request a full IPv4 address) | |||
| without needing to change parameters for a number of customers as in | without needing to change parameters for a number of customers as in | |||
| a MAP domain. | a MAP domain. | |||
| It is also worth noting that there is a direct relationship between | It is also worth noting that there is a direct relationship between | |||
| the efficiency of customer public port-allocations and the | the efficiency of public port allocations for customers and the | |||
| corresponding logging overhead that may be necessary to meet data- | corresponding logging overhead that may be necessary to meet data- | |||
| retention requirements. This is considered in Section 4.7 below. | retention requirements. This is considered in Section 4.7. | |||
| Determining the optimal number of ports for a fixed port set is not | Determining the optimal number of ports for a fixed port set is not | |||
| an easy task, and may also be impacted by local regulatory law (and | an easy task and may also be impacted by local regulatory law (and in | |||
| in the Belgian case it is not a law but more a MoU / BCP), which may | the Belgian case, it is not a law but more a memorandum of | |||
| define a maximum number of users per IP address, and consequently a | understanding or best current practice), which may define a maximum | |||
| minimum number of ports per user. | number of users per IP address and consequently a minimum number of | |||
| ports per user. | ||||
| On the one hand, the "lack of ports" situation may cause serious | On the one hand, the "lack of ports" situation may cause serious | |||
| problems in the operation of certain applications. For example, | problems in the operation of certain applications. For example, | |||
| Miyakawa has demonstrated the consequences of the session number | Miyakawa has demonstrated the consequences of the session number | |||
| limitation due to port number shortage on the example of Google Maps | limitation due to port number shortage in the example of Google Maps | |||
| [MIY2010]. When the limit was 15, several blocks of the map were | [MIY2010]. When the limit was 15, several blocks of the map were | |||
| missing, and the map was unusable. This study also provided several | missing, and the map was unusable. This study also provided several | |||
| examples for the session numbers of different applications (the | examples for the session numbers of different applications (the | |||
| highest one was Apple's iTunes: 230-270 ports). | highest one was Apple's iTunes at 230-270 ports). | |||
| The port number consumption of different applications is highly | The port number consumption of different applications is highly | |||
| varying and e.g. in the case of web browsing it depends on several | varying. In the case of web browsing, it depends on several factors, | |||
| factors, including the choice of the web page, the web browser, and | including the choice of the web page, the web browser, and sometimes | |||
| sometimes even the operating system [REP2014]. For example, under | the operating system [REP2014]. For example, under certain | |||
| certain conditions, 120-160 ports were used (URL: sohu.com, browser: | conditions, 120-160 ports were used (URL: sohu.com, browser: Firefox | |||
| Firefox under Ubuntu Linux), and in some other cases it was only 3-12 | under Ubuntu Linux), and in some other cases, only 3-12 ports were | |||
| ports (URL: twitter.com, browser: Iceweasel under Debian Linux). | used (URL: twitter.com, browser: Iceweasel under Debian Linux). | |||
| There may be several users behind a CE router, especially in the | There may be several users behind a CE router, especially in the | |||
| broadband case (e.g. Internet is used by different members of a | broadband case (e.g., Internet is used by different members of a | |||
| family simultaneously), so sufficient ports must be allocated to | family simultaneously), so sufficient ports must be allocated to | |||
| avoid impacting user experience. | avoid impacting user experience. | |||
| In general, assigning too few source port numbers to an end user may | In general, assigning too few source port numbers to an end user may | |||
| results in unexpected and hard to debug consequences, therefore, if | result in unexpected and hard-to-debug consequences; therefore, if | |||
| the number of ports per end user is fixed, then we recommend to | the number of ports per end user is fixed, then we recommend | |||
| assign a conservatively large number of ports. E.g. the developers | assigning a conservatively large number of ports. For example, the | |||
| of Jool used 2048 ports per user in their example for MAP-T | developers of Jool used 2048 ports per user in their example for | |||
| [MEX2022]. | MAP-T [JOOL-MAPT]. | |||
| However, assigning too many ports per CE router will result in waste | However, assigning too many ports per CE router will result in waste | |||
| of public IPv4 addresses, which is a scarce and expensive resource. | of public IPv4 addresses, which are scarce and expensive resources. | |||
| Clearly this is a big advantage in the case of 464XLAT where they are | Clearly, this is a big advantage in the case of 464XLAT where they | |||
| dynamically managed, so that the number of IPv4 addresses for the | are dynamically managed so that the number of IPv4 addresses for the | |||
| sharing-pool is smaller while the availability of ports per user | sharing pool is smaller while the availability of ports per user | |||
| don't need to be pre-defined and is not a limitation for them. | doesn't need to be pre-defined and is not a limitation. | |||
| There is a direct tradeoff between the optimization of client port | There is a direct trade-off between the optimization of client port | |||
| allocations and the associated logging overhead. Section 4.7 | allocations and the associated logging overhead. Section 4.7 | |||
| discusses this in more depth. | discusses this in more depth. | |||
| We note that common CE router NAT44 implementations utilizing | We note that common NAT44 implementations utilizing Netfilter at the | |||
| Netfilter, multiplexes active sessions using a 3-tuple (source | CE router multiplex active sessions using a 3-tuple (source address, | |||
| address, destination address, and destination port). This means that | destination address, and destination port). This means that external | |||
| external source ports can be reused for unique internal source and | source ports can be reused for unique internal source and destination | |||
| destination address and port sessions. It is also noted, that | addresses and port sessions. It is also noted that Netfilter cannot | |||
| Netfilter cannot currently make use of multiple source port ranges | currently make use of multiple source port ranges (i.e., several | |||
| (i.e. several blocks of ports distributed across the total port space | blocks of ports distributed across the total port space as is common | |||
| as is common in MAP deployments), this may influence the design when | in MAP deployments). This may influence the design when using | |||
| using stateless technologies. | stateless technologies. | |||
| Stateful technologies, 464XLAT and DS-Lite (and also NAT444) can | Stateful technologies, 464XLAT, DS-Lite, and NAT444 can therefore be | |||
| therefore be much more efficient in terms of port allocation and thus | much more efficient in terms of port allocation and thus public IP | |||
| public IP address saving. The price is the stateful operation in the | address saving. The price is the stateful operation in the service | |||
| service provider network, which allegedly does not scale up well. It | provider network, which allegedly does not scale up well. It should | |||
| should be noticed that in many cases, all those factors may depend on | be noted that, in many cases, all those factors may depend on how it | |||
| how it is actually implemented. | is actually implemented. | |||
| Measurements have been started to examine the scalability of a few | Measurements have been started to examine the scalability of a few | |||
| stateful solutions in two areas: | stateful solutions in two areas: | |||
| * How their performance scales up with the number of CPU cores? | * How their performance scales up with the number of CPU cores | |||
| * To what extent their performance degrades with the number of | * To what extent their performance degrades with the number of | |||
| concurrent connections? | concurrent connections | |||
| The details of the measurements and their results are available from | The details of the measurements and their results are available from | |||
| [I-D.lencse-v6ops-transition-scalability]. | [IPv4aaS-SCALE-TECH]. | |||
| We note that some CGN-type solutions can allocate ports dynamically | We note that some CGN-type solutions can allocate ports dynamically | |||
| "on the fly". Depending on configuration, this can result in the | "on the fly". Depending on configuration, this can result in the | |||
| same customer being allocated ports from different source addresses. | same customer being allocated ports from different source addresses. | |||
| This can cause operational issues for protocols and applications that | This can cause operational issues for protocols and applications that | |||
| expect multiple flows to be sourced from the same address. E.g., | expect multiple flows to be sourced from the same address (e.g., ECMP | |||
| ECMP hashing, STUN, gaming, content delivery networks. However, it | hashing, STUN, gaming, and content delivery networks). However, it | |||
| should be noticed that this is the same problem when a network has a | should be noted that this is the same problem when a network has a | |||
| NAT44 with multiple public IPv4 addresses, or even when applications | NAT44 with multiple public IPv4 addresses, or even when applications | |||
| in a dual-stack case, behave wrongly if happy eyeballs is flapping | in a dual-stack case, behave wrongly if Happy Eyeballs is flapping | |||
| the flow address between IPv4 and IPv6. | the flow address between IPv4 and IPv6. | |||
| The consequences of IPv4 address sharing [RFC6269] may impact all | The consequences of IPv4 address sharing [RFC6269] may impact all | |||
| five technologies. However, when ports are allocated statically, | five technologies. However, when ports are allocated statically, | |||
| more customers may get ports from the same public IPv4 address, which | more customers may get ports from the same public IPv4 address, which | |||
| may results in negative consequences with higher probability, e.g. | may result in negative consequences with higher probability. For | |||
| many applications and service providers (Sony PlayStation Network, | example, many applications and service providers (Sony PlayStation | |||
| OpenDNS, etc.) permanently blocking IPv4 ranges if they detect that | Network, OpenDNS, etc.) can permanently block IPv4 ranges if they | |||
| they are used for address sharing. | detect that they are used for address sharing. | |||
| Both cases are, again, implementation dependent. | Both cases are, again, implementation-dependent. | |||
| We note that although it is not of typical use, one can do | We note that although it is not of typical use, one can do | |||
| deterministic, stateful NAT and reserve a fixed set of ports for each | deterministic, stateful NAT and reserve a fixed set of ports for each | |||
| customer, as well. | customer as well. | |||
| 4.3. Support for Public Server Operation | 4.3. Support for Public Server Operation | |||
| Mechanisms that rely on operator side per-flow state do not, by | Mechanisms that rely on operator-side per-flow state do not, by | |||
| themselves, offer a way for customers to present services on publicly | themselves, offer a way for customers to present services on publicly | |||
| accessible transport layer ports. | accessible transport-layer ports. | |||
| Port Control Protocol (PCP) [RFC6887] provides a mechanism for a | The Port Control Protocol (PCP) [RFC6887] provides a mechanism for a | |||
| client to request an external public port from a CGN device. For | client to request an external public port from a CGN device. For | |||
| server operation, it is required with NAT64/464XLAT, and it is | server operation, it is required with 464XLAT/NAT64, and it is | |||
| supported in some DS-Lite AFTR implementations. | supported in some DS-Lite AFTR implementations. | |||
| A+P based mechanisms distribute a public IPv4 address and restricted | A+P-based mechanisms distribute a public IPv4 address and restricted | |||
| range of transport layer ports to the client. In this case, it is | range of transport-layer ports to the client. In this case, it is | |||
| possible for the user to configure their device to offer a publicly | possible for the user to configure their device to offer a publicly | |||
| accessible server on one of their allocated ports. It should be | accessible server on one of their allocated ports. It should be | |||
| noted that commonly operators do not assign the Well-Known-Ports to | noted that operators commonly do not assign the well-known ports to | |||
| users (unless they are allocating a full IPv4 address), so the user | users (unless they are allocating a full IPv4 address), so the user | |||
| will need to run the service on an allocated port, or configure port | will need to run the service on an allocated port or configure port | |||
| translation. | translation. | |||
| Lw4o6, MAP-E and MAP-T may be configured to allocated clients with a | Lw4o6, MAP-E, and MAP-T may be configured to allocated clients with a | |||
| full IPv4 address, allowing exclusive use of all ports, and non-port- | full IPv4 address, allowing exclusive use of all ports and non-port- | |||
| based transport layer protocols. Thus, they may also be used to | based transport-layer protocols. Thus, they may also be used to | |||
| support server/services operation on their default ports. However, | support server/services operation on their default ports. However, | |||
| when public IPv4 addresses are assigned to the CE router without | when public IPv4 addresses are assigned to the CE router without | |||
| address sharing, obviously there is no advantage in terms of IPv4 | address sharing, there is obviously no advantage in terms of IPv4 | |||
| public addresses saving. | public addresses saving. | |||
| It is also possible to configure specific ports mapping in 464XLAT/ | It is also possible to configure specific ports mapping in 464XLAT/ | |||
| NAT64 using EAMT [RFC7757], which means that only those ports are | NAT64 using EAMT [RFC7757], which means that only those ports are | |||
| "lost" from the pool of addresses, so there is a higher maximization | "lost" from the pool of addresses, so there is a higher maximization | |||
| of the total usage of IPv4/port resources. | of the total usage of IPv4 port resources. | |||
| 4.4. Support and Implementations | 4.4. Support and Implementations | |||
| 4.4.1. Vendor Support | 4.4.1. Vendor Support | |||
| In general, router vendors support AFTR, MAP-E/T BR and NAT64. Load | In general, router vendors support AFTR, MAP-E BR, MAP-T BR, and | |||
| balancer and firewall vendors usually support NAT64 as well, while | NAT64. Vendors of load balancers and firewalls usually support NAT64 | |||
| not all of them have support for the other protocols. | as well while not all of them have support for the other protocols. | |||
| A 464XLAT client (CLAT) is implemented in Windows 10, Linux | A 464XLAT client (CLAT) is implemented in Windows 10, Linux | |||
| (including Android), Windows Mobile, Chrome OS and iOS, but it is not | (including Android), Windows Mobile, Chrome OS, and iOS, but it is | |||
| available in macOS 12.3.1. | not available in macOS 12.3.1. | |||
| The remaining four solutions are commonly deployed as functions in | The remaining four solutions are commonly deployed as functions in | |||
| the CE device only, however in general, except DS-Lite, the vendors | the CE device only; however, the vendors' support is poor in general | |||
| support is poor. | (except for DS-Lite). | |||
| The OpenWRT Linux based open-source OS designed for CE devices offers | OpenWRT is a Linux-based open-source OS designed for CE devices. It | |||
| a number of different 'opkg' packages as part of the distribution: | offers a number of different 'opkg' packages as part of the | |||
| distribution: | ||||
| * '464xlat' enables support for 464XLAT CLAT functionality | * '464xlat' enables support for 464XLAT CLAT functionality. | |||
| * 'ds-lite' enables support for DSLite B4 functionality | * 'ds-lite' enables support for DSLite B4 functionality. | |||
| * 'map' enables support for MAP-E and lw4o6 CE functionality | * 'map' enables support for MAP-E and lw4o6 CE functionality. | |||
| * 'map-t' enables support for MAP-T CE functionality | * 'map-t' enables support for MAP-T CE functionality. | |||
| At the time of publication some free open-source implementations | At the time of publication, some free open-source implementations | |||
| exist for the operator side functionality: | exist for the operator-side functionality: | |||
| * Jool [jool] (CLAT, NAT64, EAMT, MAP-T CE, MAP-T BR). | * Jool [JOOL] (CLAT, NAT64, EAMT, MAP-T CE, MAP-T BR) | |||
| * VPP/fd.io [vpp] (MAP-BR, lwAFTR, CGN, CLAT, NAT64). | * VPP/fd.io [VPP] (MAP-BR, lwAFTR, CGN, CLAT, NAT64) | |||
| * Snabb [snabb] (lwAFTR). | * Snabb [SNABB] (lwAFTR) | |||
| * AFTR [aftr] (DSLite AFTR). | * AFTR [AFTR] (DSLite AFTR) | |||
| 4.4.2. Support in Cellular and Broadband Networks | 4.4.2. Support in Cellular and Broadband Networks | |||
| Several cellular networks use 464XLAT, whereas there are no | Several cellular networks use 464XLAT, whereas there are no | |||
| deployments of the four other technologies in cellular networks, as | deployments of the four other technologies in cellular networks, as | |||
| they are neither standardised nor implemented in UE devices. | they are neither standardized nor implemented in UE devices. | |||
| In broadband networks, there are some deployments of 464XLAT, MAP-E | In broadband networks, there are some deployments of 464XLAT, MAP-E, | |||
| and MAP-T. Lw4o6 and DS-Lite have more deployments, with DS-Lite | and MAP-T. Lw4o6 and DS-Lite have more deployments, with DS-Lite | |||
| being the most common, but lw4o6 taking over in the last years. | being the most common, but deployments of lw4o6 have been rapidly | |||
| increasing in the last few years. | ||||
| Please refer to Table 2 and Table 3 of [LEN2019] for a limited set of | Please refer to Tables 2 and 3 of [LEN2019] for a limited set of | |||
| deployment information. | deployment information. | |||
| 4.4.3. Implementation Code Sizes | 4.4.3. Implementation Code Sizes | |||
| As hint to the relative complexity of the mechanisms, the following | As a hint to the relative complexity of the mechanisms, the code | |||
| code sizes are reported from the OpenWRT implementations of each | sizes reported from the OpenWRT implementations of each technology | |||
| technology are 17kB, 35kB, 15kB, 35kB, and 48kB for 464XLAT, lw4o6, | are 17 kB, 35 kB, 15 kB, 35 kB, and 48 kB for 464XLAT, lw4o6, DS- | |||
| DS-Lite, MAP-E, MAP-T, and lw4o6, respectively | Lite, MAP-E, and MAP-T, respectively (see | |||
| (https://openwrt.org/packages/start). | <https://openwrt.org/packages/start>). | |||
| We note that the support for all five technologies requires much less | We note that the support for all five technologies requires a much | |||
| code size than the total sum of the above quantities, because they | smaller code size than the total sum of the above quantities, because | |||
| contain a lot of common functions (data plane is shared among several | they contain a lot of common functions (e.g., data plane is shared | |||
| of them). | among several of them). | |||
| 4.5. Typical Deployment and Traffic Volume Considerations | 4.5. Typical Deployment and Traffic Volume Considerations | |||
| 4.5.1. Deployment Possibilities | 4.5.1. Deployment Possibilities | |||
| Theoretically, all five IPv4aaS technologies could be used together | Theoretically, all five IPv4aaS technologies could be used together | |||
| with DNS64 + stateful NAT64, as it is done in 464XLAT. In this case | with DNS64 + stateful NAT64, as is done in 464XLAT. In this case, | |||
| the CE router would treat the traffic between an IPv6-only client and | the CE router would treat the traffic between an IPv6-only client and | |||
| IPv4-only server as normal IPv6 traffic, and the stateful NAT64 | IPv4-only server as normal IPv6 traffic, and the stateful NAT64 | |||
| gateway would do a single translation, thus offloading this kind of | gateway would do a single translation, thus offloading this kind of | |||
| traffic from the IPv4aaS technology. The cost of this solution would | traffic from the IPv4aaS technology. The cost of this solution would | |||
| be the need for deploying also DNS64 + stateful NAT64. | be the need to also deploy DNS64 + stateful NAT64. | |||
| However, this has not been implemented in clients or actual | However, this has not been implemented in clients or actual | |||
| deployments, so only 464XLAT always uses this optimization and the | deployments, so only 464XLAT always uses this optimization, and the | |||
| other four solutions do not use it at all. | other four solutions do not use it at all. | |||
| 4.5.2. Cellular Networks with 464XLAT | 4.5.2. Cellular Networks with 464XLAT | |||
| Figures from existing deployments (end of 2018), show that the | Figures from existing deployments (through the end of 2018) show the | |||
| typical traffic volumes in an IPv6-only cellular network, when | typical traffic volumes in an IPv6-only cellular network when 464XLAT | |||
| 464XLAT technology is used together with DNS64, are: | technology is used together with DNS64: | |||
| * 75% of traffic is IPv6 end-to-end (no translation) | * 75% of traffic is IPv6 end-to-end (no translation). | |||
| * 24% of traffic uses DNS64 + NAT64 (1 translation) | * 24% of traffic uses DNS64 + NAT64 (one translation). | |||
| * Less than 1% of traffic uses the CLAT in addition to NAT64 (2 | * Less than 1% of traffic uses the CLAT in addition to NAT64 (two | |||
| translations), due to an IPv4 socket and/or IPv4 literal. | translations), due to an IPv4 socket and/or IPv4 literal. | |||
| Without using DNS64, 25% of the traffic would undergo double | Without using DNS64, 25% of the traffic would undergo double | |||
| translation. | translation. | |||
| 4.5.3. Wireline Networks with 464XLAT | 4.5.3. Wireline Networks with 464XLAT | |||
| Figures from several existing deployments (end of 2020), mainly with | Figures from several existing deployments (through the end of 2020), | |||
| residential customers, show that the typical traffic volumes in an | mainly with residential customers, show the ranges of typical traffic | |||
| IPv6-only network, when 464XLAT is used with DNS64, are in the | volumes in an IPv6-only network, when 464XLAT is used with DNS64: | |||
| following ranges: | ||||
| * 65%-85% of traffic is IPv6 end-to-end (no translation) | * 65%-85% of traffic is IPv6 end-to-end (no translation). | |||
| * 14%-34% of traffic uses DNS64 + NAT64 (1 translation) | * 14%-34% of traffic uses DNS64 + NAT64 (one translation). | |||
| * Less than 1-2% of traffic uses the CLAT in addition to NAT64 (2 | * Less than 1-2% of traffic uses the CLAT in addition to NAT64 (two | |||
| translations), due to an IPv4 socket and/or IPv4 literal. | translations), due to an IPv4 socket and/or IPv4 literal. | |||
| Without using DNS64, 16%-35% of the traffic would undergo double | Without using DNS64, 16%-35% of the traffic would undergo double | |||
| translation. | translation. | |||
| This data is consistent with non-public information of actual | This data is consistent with non-public information of actual | |||
| deployments, which can be easily explained. When a wireline ISP has | deployments, which can be easily explained. When a wireline ISP has | |||
| mainly residential customers, content providers and CDNs which are | mainly residential customers, content providers and CDNs that are | |||
| already IPv6 enabled (Google/Youtube, Netflix, Facebook, Akamai, etc) | already IPv6 enabled (Google/YouTube, Netflix, Facebook, Akamai, | |||
| typically account for the 65-85% of the traffic in the network, so | etc.) typically account for 65-85% of the traffic in the network. | |||
| when the subscribers are IPv6 enabled, about the same figures of | Thus, when the subscribers are IPv6 enabled, about the same | |||
| traffic will become IPv6. | percentage of traffic will become IPv6. | |||
| 4.6. Load Sharing | 4.6. Load Sharing | |||
| If multiple network-side devices are needed as PLAT/AFTR/BR for | If multiple network-side devices are needed as PLAT/AFTR/BR for | |||
| capacity, then there is a need for a load sharing mechanism. ECMP | capacity, then there is a need for a load-sharing mechanism. ECMP | |||
| (Equal-Cost Multi-Path) load sharing can be used for all | (Equal-Cost Multipath) load sharing can be used for all technologies; | |||
| technologies, however stateful technologies will be impacted by | however, stateful technologies will be impacted by changes in network | |||
| changes in network topology or device failure. | topology or device failure. | |||
| Technologies utilizing DNS64 can also distribute load across PLAT/ | Technologies utilizing DNS64 can also distribute load across PLAT/ | |||
| AFTR devices, evenly or unevenly, by using different prefixes. | AFTR devices, evenly or unevenly, by using different prefixes. | |||
| Different network specific prefixes can be distributed for | Different network-specific prefixes can be distributed for | |||
| subscribers in appropriately sized segments (like split-horizon DNS, | subscribers in appropriately sized segments (like split-horizon DNS, | |||
| also called DNS views). | also called "DNS views"). | |||
| Stateless technologies, due to the lack of per-flow state, can make | Stateless technologies, due to the lack of per-flow state, can make | |||
| use of anycast routing for load sharing and resiliency across | use of anycast routing for load sharing and resiliency across network | |||
| network-devices, both ingress and egress; flows can take asymmetric | devices, both ingress and egress; flows can take asymmetric paths | |||
| paths through the network, i.e., in through one lwAFTR/BR and out via | through the network, i.e., in through one lwAFTR/BR and out via | |||
| another. | another. | |||
| Mechanisms with centralized NAPT44 state have a number of challenges | Mechanisms with centralized NAPT44 state have a number of challenges | |||
| specifically related to scaling and resilience. As the total amount | specifically related to scaling and resilience. As the total amount | |||
| of client traffic exceeds the capacity of a single CGN instance, | of client traffic exceeds the capacity of a single CGN instance, | |||
| additional nodes are required to handle the load. As each CGN | additional nodes are required to handle the load. Each CGN maintains | |||
| maintains a stateful table of active client sessions, this table may | a stateful table of active client sessions, and this table may need | |||
| need to be syncronized between CGN instances. This is necessary for | to be synchronized between CGN instances. This is necessary for two | |||
| two reasons: | reasons: | |||
| * To prevent all active customer sessions being dropped in event of | * To prevent all active customer sessions from being dropped in the | |||
| a CGN node failure. | event of a CGN node failure. | |||
| * To ensure a matching state table entry for an active session in | * To ensure a matching state table entry for an active session in | |||
| the event of asymmetric routing through different egress and | the event of asymmetric routing through different egress and | |||
| ingress CGN nodes. | ingress CGN nodes. | |||
| 4.7. Logging | 4.7. Logging | |||
| In the case of 464XLAT and DS-Lite, the user of any given public IPv4 | In the case of 464XLAT and DS-Lite, the user of any given public IPv4 | |||
| address and port combination will vary over time, therefore, logging | address and port combination will vary over time; therefore, logging | |||
| is necessary to meet data retention laws. Each entry in the PLAT/ | is necessary to meet data-retention laws. Each entry in the PLAT/ | |||
| AFTR's generates a logging entry. As discussed in Section 4.2, a | AFTR generates a logging entry. As discussed in Section 4.2, a | |||
| client may open hundreds of sessions during common tasks such as web- | client may open hundreds of sessions during common tasks such as web | |||
| browsing, each of which needs to be logged so the overall logging | browsing, each of which needs to be logged so the overall logging | |||
| burden on the network operator is significant. In some countries, | burden on the network operator is significant. In some countries, | |||
| this level of logging is required to comply with data retention | this level of logging is required to comply with data-retention | |||
| legislation. | legislation. | |||
| One common optimization available to reduce the logging overhead is | One common optimization available to reduce the logging overhead is | |||
| the allocation of a block of ports to a client for the duration of | the allocation of a block of ports to a client for the duration of | |||
| their session. This means that a logging entry only needs to be made | their session. This means that a logging entry only needs to be made | |||
| when the client's port block is released, which dramatically reduces | when the client's port block is released, which dramatically reduces | |||
| the logging overhead. This comes as the cost of less efficient | the logging overhead. This comes as the cost of less efficient | |||
| public address sharing as clients need to be allocated a port block | public address sharing as clients need to be allocated a port block | |||
| of a fixed size regardless of the actual number of ports that they | of a fixed size regardless of the actual number of ports that they | |||
| are using. | are using. | |||
| Stateless technologies that pre-allocate the IPv4 addresses and ports | Stateless technologies that pre-allocate the IPv4 addresses and ports | |||
| only require that copies of the active MAP rules (for MAP-E and MAP- | only require that copies of the active MAP rules (for MAP-E and MAP- | |||
| T), or binding-table (for lw4o6) are retained along with timestamp | T) or binding table (for lw4o6) are retained along with timestamp | |||
| information of when they have been active. Support tools (e.g., | information of when they have been active. Support tools (e.g., | |||
| those used to serve data retention requests) may need to be updated | those used to serve data-retention requests) may need to be updated | |||
| to be aware of the mechanism in use (e.g., implementing the MAP | to be aware of the mechanism in use (e.g., implementing the MAP | |||
| algorithm so that IPv4 information can be linked to the IPv6 prefix | algorithm so that IPv4 information can be linked to the IPv6 prefix | |||
| delegated to a client). As stateless technologies do not have a | delegated to a client). Stateless technologies do not have a | |||
| centralized stateful element which customer traffic needs to pass | centralized stateful element that customer traffic needs to pass | |||
| through, so if data retention laws mandate per-session logging, there | through, so if data-retention laws mandate per-session logging, there | |||
| is no simple way of meeting this requirement with a stateless | is no simple way of meeting this requirement with a stateless | |||
| technology alone. Thus, a centralized NAPT44 model may be the only | technology alone. Thus, a centralized NAPT44 model may be the only | |||
| way to meet this requirement. | way to meet this requirement. | |||
| Deterministic CGN [RFC7422] was proposed as a solution to reduce the | Deterministic CGN [RFC7422] was proposed as a solution to reduce the | |||
| resource consumption of logging. | resource consumption of logging. | |||
| Please also refer to Section 4 of [RFC6888] for more information | Please also refer to Section 4 of [RFC6888] for more information | |||
| about requirements for logging Carrier-Grade NAT gateways. | about requirements for logging CGN gateways. | |||
| 4.8. Optimization for IPv4-only devices/applications | 4.8. Optimization for IPv4-Only Devices and Applications | |||
| When IPv4-only devices or applications are behind a CE connected with | When IPv4-only devices or applications are behind a CE connected with | |||
| IPv6-only and IPv4aaS, the IPv4-only traffic flows will necessarily, | IPv6-only and IPv4aaS, the IPv4-only traffic flows will necessarily | |||
| be encapsulated/decapsulated (in the case of DS-Lite, lw4o6 and MAP- | be encapsulated/decapsulated (in the case of DS-Lite, lw4o6, and MAP- | |||
| E) and will reach the IPv4 address of the destination, even if that | E) and will reach the IPv4 address of the destination, even if that | |||
| service supports dual-stack. This means that the traffic flow will | service supports dual-stack. This means that the traffic flow will | |||
| cross through the AFTR, lwAFTR or BR, depending on the specific | cross through the AFTR, lwAFTR, or BR, depending on the specific | |||
| transition mechanism being used. | transition mechanism being used. | |||
| Even if those services are directly connected to the operator network | Even if those services are directly connected to the operator network | |||
| (for example, CDNs, caches), or located internally (such as VoIP, | (e.g., CDNs and caches) or located internally (such as VoIP, etc.), | |||
| etc.), it is not possible to avoid that overhead. | it is not possible to avoid that overhead. | |||
| However, in the case of those mechanisms that use a NAT46 function, | However, in the case of those mechanisms that use a NAT46 function, | |||
| in the CE (464XLAT and MAP-T), it is possible to take advantage of | in the CE (464XLAT and MAP-T), it is possible to take advantage of | |||
| optimization functionalities, such as the ones described in | optimization functionalities, such as the ones described in | |||
| [I-D.ietf-v6ops-464xlat-optimization]. | [OP-464XLAT/MAP-T]. | |||
| Using those optimizations, because the NAT46 has already translated | Because the NAT46 has already translated the IPv4-only flow to IPv6 | |||
| the IPv4-only flow to IPv6, and the services are dual-stack, they can | and the services are dual-stack, using these optimizations allows the | |||
| be reached without the need to translate them back to IPv4. | services to be reached without the need to translate the flow back to | |||
| IPv4. | ||||
| 5. Performance Comparison | 5. Performance Comparison | |||
| We plan to compare the performances of the most prominent free | We plan to compare the performances of the most prominent free | |||
| software implementations of the five IPv6 transition technologies | software implementations of the five IPv6 transition technologies | |||
| using the methodology described in "Benchmarking Methodology for IPv6 | using the methodology described in "Benchmarking Methodology for IPv6 | |||
| Transition Technologies" [RFC8219]. | Transition Technologies" [RFC8219]. | |||
| The Dual DUT Setup of [RFC8219] makes it possible to use the existing | The dual Device Under Test (DUT) setup of [RFC8219] makes it possible | |||
| "Benchmarking Methodology for Network Interconnect Devices" [RFC2544] | to use the existing measurement devices compliant with "Benchmarking | |||
| compliant measurement devices, however, this solution has two kinds | Methodology for Network Interconnect Devices" [RFC2544]; however, | |||
| of limitations: | this solution has two kinds of limitations: | |||
| * Dual DUT setup has the drawback that the performances of the CE | * Dual DUT setup has the drawback that the performances of the CE | |||
| and of the ISP side device (e.g. the CLAT and the PLAT of 464XLAT) | and the ISP-side device (e.g., the CLAT and PLAT of 464XLAT) are | |||
| are measured together. In order to measure the performance of | measured together. In order to measure the performance of only | |||
| only one of them, we need to ensure that the desired one is the | one of them, we need to ensure that the desired one is the | |||
| bottleneck. | bottleneck. | |||
| * Measurements procedures for PDV and IPDV measurements are missing | * Measurement procedures for Packet Delay Variation (PDV) and Inter- | |||
| from the legacy devices, and the old measurement procedure for | Packet Delay Variation (IPDV) measurements are missing from the | |||
| Latency has been redefined in [RFC8219]. | legacy devices, and the old measurement procedure for latency has | |||
| been redefined in [RFC8219]. | ||||
| The Single DUT Setup of [RFC8219] makes it possible to benchmark the | ||||
| selected device separately, but it either requires a special Tester | ||||
| or some trick is need, if we want to use legacy Testers. An example | ||||
| for the latter is our stateless NAT64 measurements testing Througput | ||||
| and Frame Loss Rate using a legacy [RFC5180] compliant commercial | ||||
| tester [LEN2020a] | ||||
| Siitperf, an [RFC8219] compliant DPDK-based software Tester for | ||||
| benchmarking stateless NAT64 gateways has been developed recently and | ||||
| it is available from GitHub [SIITperf] as free software and | ||||
| documented in [LEN2021]. Originally, it literally followed the test | ||||
| frame format of [RFC2544] including "hard-wired" source and | ||||
| destination port numbers, and then it has been complemented with the | ||||
| random port feature required by [RFC4814]. The new version is | ||||
| documented in [LEN2020b] | ||||
| Further DPDK-based, [RFC8219] compliant software testers are being | The single DUT setup of [RFC8219] makes it possible to benchmark the | |||
| developed at the Budapest University of Technology and Economics as | selected device separately, but either special Tester is required or | |||
| student projects. They are planned to be released as free software, | some trick is needed if we want to use legacy Testers. An example | |||
| too. | for the latter is our stateless NAT64 measurements testing Throughput | |||
| and Frame Loss Rate using a legacy commercial Tester [LEN2020a] that | ||||
| is compliant with [RFC5180]. | ||||
| Information about the benchmarking tools, measurements and results | Siitperf, a DPDK-based software Tester that is compliant with | |||
| will be made available in [I-D.lencse-v6ops-transition-benchmarking]. | [RFC8219] and used for benchmarking stateless NAT64 gateways, has | |||
| been developed recently. Siitperf is available from GitHub | ||||
| [SIITPERF] as free software and is documented in [LEN2021]. | ||||
| Originally, it literally followed the test frame format of [RFC2544], | ||||
| including "hard-wired" source and destination port numbers, and then | ||||
| it was complemented with the pseudorandom port feature required by | ||||
| [RFC4814]. The new version is documented in [LEN2020b]. | ||||
| 6. Acknowledgements | Further DPDK-based software Testers that are compliant with [RFC8219] | |||
| are being developed at the Budapest University of Technology and | ||||
| Economics as student projects. They are planned to be released as | ||||
| free software, too. | ||||
| The authors would like to thank Ole Troan, Warren Kumari, Dan | Information about the benchmarking tools, measurements, and results | |||
| Romascanu, Brian Trammell, Joseph Salowey, Roman Danyliw, Erik Kline, | will be made available in [IPv4aaS-BENCHMARK-TECH]. | |||
| Lars Eggert, Zaheduzzaman Sarker, Robert Wilton, Eric Vyncke and | ||||
| Martin Duke for their review of this draft and acknowledge the inputs | ||||
| of Mark Andrews, Edwin Cordeiro, Fred Baker, Alexandre Petrescu, | ||||
| Cameron Byrne, Tore Anderson, Mikael Abrahamsson, Gert Doering, | ||||
| Satoru Matsushima, Yutianpeng (Tim), Mohamed Boucadair, Nick | ||||
| Hilliard, Joel Jaeggli, Kristian McColm, Nick Hilliard, Tom Petch, | ||||
| Yannis Nikolopoulos, Havard Eidnes, Yann-Ju Chu, Barbara Stark, | ||||
| Vasilenko Eduard, Chongfeng Xie, Henri Alves de Godoy, Magnus | ||||
| Westerlund, Michael Tuexen, Philipp S. Tiesel, Brian E Carpenter and | ||||
| Joe Touch. | ||||
| 7. IANA Considerations | 6. IANA Considerations | |||
| This document does not make any request to IANA. | This document has no IANA actions. | |||
| 8. Security Considerations | 7. Security Considerations | |||
| As discussed in section 4.7, the different technologies have varying | As discussed in Section 4.7, the different technologies have varying | |||
| logging capabilities and limitations. Care should be taken when | logging capabilities and limitations. Care should be taken when | |||
| storing, transmitting, and providing access to log entries that may | storing, transmitting, and providing access to log entries that may | |||
| be considered personally identifiable information. However, it | be considered personally identifiable information. However, it | |||
| should be noticed that those issues are not specific to the IPv4aaS | should be noted that those issues are not specific to the IPv4aaS | |||
| IPv6 transition technologies, but in general to logging | IPv6 transition technologies but apply to logging functionalities in | |||
| functionalities. | general. | |||
| For all five technologies, the CE device typically contains a DNS | For all five technologies, the CE device typically contains a DNS | |||
| proxy. However, the user may change DNS settings. If it happens and | proxy. However, the user may change DNS settings. If this happens | |||
| lw4o6, MAP-E and MAP-T are used with significantly restricted port | and lw4o6, MAP-E, and MAP-T are used with a significantly restricted | |||
| set, which is required for an efficient public IPv4 address sharing, | port set (which is required for efficient public IPv4 address | |||
| the entropy of the source ports is significantly lowered (e.g. from | sharing), the entropy of the source ports is significantly lowered | |||
| 16 bits to 10 bits, when 1024 port numbers are assigned to each | (e.g., from 16 bits to 10 bits when 1024 port numbers are assigned to | |||
| subscriber) and thus these technologies are theoretically less | each subscriber), and these technologies are thus theoretically less | |||
| resilient against cache poisoning, see [RFC5452]. However, an | resilient against cache poisoning (see [RFC5452]). However, an | |||
| efficient cache poisoning attack requires that the subscriber | efficient cache poisoning attack requires that the subscriber | |||
| operates an own caching DNS server and the attack is performed in the | operates its own caching DNS server and the attack is performed in | |||
| service provider network. Thus, we consider the chance of the | the service provider network. Thus, we consider the chance of the | |||
| successful exploitation of this vulnerability as low. | successful exploitation of this vulnerability to be low. | |||
| IPv4aaS technologies based on encapsulation have not DNSSEC | IPv4aaS technologies based on encapsulation have no DNSSEC | |||
| implications. However, those based on translation may have | implications. However, those based on translation may have | |||
| implications as discussed in Section 4.1 of [RFC8683]. | implications as discussed in Section 4.1 of [RFC8683]. | |||
| An in-depth security analysis of all five IPv6 transition | An in-depth security analysis of all five IPv6 transition | |||
| technologies and their most prominent free software implementations | technologies and their most prominent free software implementations | |||
| according to the methodology defined in [LEN2018] is planned. | according to the methodology defined in [LEN2018] is planned. | |||
| As the first step, an initial security analysis of 464XLAT was done | As the first step, an initial security analysis of 464XLAT was done | |||
| in [Azz2021]. | in [AZZ2021]. | |||
| The implementers of any of the five IPv4aaS solutions should consult | The implementers of any of the five IPv4aaS solutions should consult | |||
| the Security Considerations of the respective RFCs documenting them. | the Security Considerations of the respective RFCs documenting them. | |||
| 9. References | 8. References | |||
| 9.1. Normative References | 8.1. Normative References | |||
| [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in | [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in | |||
| IPv6 Specification", RFC 2473, DOI 10.17487/RFC2473, | IPv6 Specification", RFC 2473, DOI 10.17487/RFC2473, | |||
| December 1998, <https://www.rfc-editor.org/info/rfc2473>. | December 1998, <https://www.rfc-editor.org/info/rfc2473>. | |||
| [RFC2544] Bradner, S. and J. McQuaid, "Benchmarking Methodology for | [RFC2544] Bradner, S. and J. McQuaid, "Benchmarking Methodology for | |||
| Network Interconnect Devices", RFC 2544, | Network Interconnect Devices", RFC 2544, | |||
| DOI 10.17487/RFC2544, March 1999, | DOI 10.17487/RFC2544, March 1999, | |||
| <https://www.rfc-editor.org/info/rfc2544>. | <https://www.rfc-editor.org/info/rfc2544>. | |||
| skipping to change at page 30, line 10 ¶ | skipping to change at line 1332 ¶ | |||
| [RFC8676] Farrer, I., Ed. and M. Boucadair, Ed., "YANG Modules for | [RFC8676] Farrer, I., Ed. and M. Boucadair, Ed., "YANG Modules for | |||
| IPv4-in-IPv6 Address plus Port (A+P) Softwires", RFC 8676, | IPv4-in-IPv6 Address plus Port (A+P) Softwires", RFC 8676, | |||
| DOI 10.17487/RFC8676, November 2019, | DOI 10.17487/RFC8676, November 2019, | |||
| <https://www.rfc-editor.org/info/rfc8676>. | <https://www.rfc-editor.org/info/rfc8676>. | |||
| [RFC8683] Palet Martinez, J., "Additional Deployment Guidelines for | [RFC8683] Palet Martinez, J., "Additional Deployment Guidelines for | |||
| NAT64/464XLAT in Operator and Enterprise Networks", | NAT64/464XLAT in Operator and Enterprise Networks", | |||
| RFC 8683, DOI 10.17487/RFC8683, November 2019, | RFC 8683, DOI 10.17487/RFC8683, November 2019, | |||
| <https://www.rfc-editor.org/info/rfc8683>. | <https://www.rfc-editor.org/info/rfc8683>. | |||
| 9.2. Informative References | 8.2. Informative References | |||
| [aftr] ISC, "ISC implementation of AFTR", 2022, | [AFTR] ISC, "ISC Implementation of AFTR", | |||
| <https://www.isc.org/downloads/>. | <https://downloads.isc.org/isc/aftr/>. | |||
| [Azz2021] Al-Azzawi, A. and G. Lencse, "Identification of the | [AZZ2021] Al-Azzawi, A. and G. Lencse, "Identification of the | |||
| Possible Security Issues of the 464XLAT IPv6 Transition | Possible Security Issues of the 464XLAT IPv6 Transition | |||
| Technology", Infocommunications Journal, vol. 13, no. 4, | Technology", Infocommunications Journal, Vol. 13, No. 4, | |||
| pp. 10-18, DOI: 10.36244/ICJ.2021.4.2, December 2021, | pp. 10-18, DOI 10.36244/ICJ.2021.4.2, December 2021, | |||
| <https://www.infocommunications.hu/2021_4_2>. | <https://www.infocommunications.hu/2021_4_2>. | |||
| [I-D.ietf-tsvwg-natsupp] | [IPv4aaS-BENCHMARK-TECH] | |||
| Stewart, R. R., Tüxen, M., and I. Rüngeler, "Stream | ||||
| Control Transmission Protocol (SCTP) Network Address | ||||
| Translation Support", Work in Progress, Internet-Draft, | ||||
| draft-ietf-tsvwg-natsupp-23, 25 October 2021, | ||||
| <https://www.ietf.org/archive/id/draft-ietf-tsvwg-natsupp- | ||||
| 23.txt>. | ||||
| [I-D.ietf-v6ops-464xlat-optimization] | ||||
| Martinez, J. P. and A. D'Egidio, "464XLAT/MAT-T | ||||
| Optimization", Work in Progress, Internet-Draft, draft- | ||||
| ietf-v6ops-464xlat-optimization-03, 28 July 2020, | ||||
| <https://www.ietf.org/archive/id/draft-ietf-v6ops-464xlat- | ||||
| optimization-03.txt>. | ||||
| [I-D.lencse-v6ops-transition-benchmarking] | ||||
| Lencse, G., "Performance Analysis of IPv6 Transition | Lencse, G., "Performance Analysis of IPv6 Transition | |||
| Technologies for IPv4aaS", Work in Progress, Internet- | Technologies for IPv4aaS", Work in Progress, Internet- | |||
| Draft, draft-lencse-v6ops-transition-benchmarking-01, 2 | Draft, draft-lencse-v6ops-transition-benchmarking-01, 2 | |||
| May 2022, <https://www.ietf.org/archive/id/draft-lencse- | May 2022, <https://datatracker.ietf.org/doc/html/draft- | |||
| v6ops-transition-benchmarking-01.txt>. | lencse-v6ops-transition-benchmarking-01>. | |||
| [I-D.lencse-v6ops-transition-scalability] | [IPv4aaS-SCALE-TECH] | |||
| Lencse, G., "Scalability of IPv6 Transition Technologies | Lencse, G., "Scalability of IPv6 Transition Technologies | |||
| for IPv4aaS", Work in Progress, Internet-Draft, draft- | for IPv4aaS", Work in Progress, Internet-Draft, draft- | |||
| lencse-v6ops-transition-scalability-02, 7 March 2022, | lencse-v6ops-transition-scalability-03, 30 June 2022, | |||
| <https://www.ietf.org/archive/id/draft-lencse-v6ops- | <https://datatracker.ietf.org/doc/html/draft-lencse-v6ops- | |||
| transition-scalability-02.txt>. | transition-scalability-03>. | |||
| [jool] NIC.MX, "Open Source SIIT and NAT64 for Linux", 2022, | [JOOL] "Jool: SIIT & NAT64", <http://www.jool.mx>. | |||
| <http://www.jool.mx>. | ||||
| [JOOL-MAPT] | ||||
| "MAP-T Run", <https://www.jool.mx/en/run-mapt.html>. | ||||
| [LEN2018] Lencse, G. and Y. Kadobayashi, "Methodology for the | [LEN2018] Lencse, G. and Y. Kadobayashi, "Methodology for the | |||
| identification of potential security issues of different | identification of potential security issues of different | |||
| IPv6 transition technologies: Threat analysis of DNS64 and | IPv6 transition technologies: Threat analysis of DNS64 and | |||
| stateful NAT64", Computers & Security (Elsevier), vol. | stateful NAT64", Computers & Security, Vol. 77, No. 1, pp. | |||
| 77, no. 1, pp. 397-411, DOI: 10.1016/j.cose.2018.04.012, | 397-411, DOI 10.1016/j.cose.2018.04.012, August 2018, | |||
| 1 August 2018, | ||||
| <http://www.hit.bme.hu/~lencse/publications/ECS-2018- | <http://www.hit.bme.hu/~lencse/publications/ECS-2018- | |||
| Methodology-revised.pdf>. | Methodology-revised.pdf>. | |||
| [LEN2019] Lencse, G. and Y. Kadobayashi, "Comprehensive Survey of | [LEN2019] Lencse, G. and Y. Kadobayashi, "Comprehensive Survey of | |||
| IPv6 Transition Technologies: A Subjective Classification | IPv6 Transition Technologies: A Subjective Classification | |||
| for Security Analysis", IEICE Transactions on | for Security Analysis", IEICE Transactions on | |||
| Communications, vol. E102-B, no.10, pp. 2021-2035., DOI: | Communications, Vol. E102-B, No. 10, pp. 2021-2035, | |||
| 10.1587/transcom.2018EBR0002, 1 October 2019, | DOI 10.1587/transcom.2018EBR0002, October 2019, | |||
| <http://www.hit.bme.hu/~lencse/publications/ | <http://www.hit.bme.hu/~lencse/publications/ | |||
| e102-b_10_2021.pdf>. | e102-b_10_2021.pdf>. | |||
| [LEN2020a] Lencse, G., "Benchmarking Stateless NAT64 Implementations | [LEN2020a] Lencse, G., "Benchmarking stateless NAT64 implementations | |||
| with a Standard Tester", Telecommunication Systems, vol. | with a standard tester", Telecommunication Systems, Vol. | |||
| 75, pp. 245-257, DOI: 10.1007/s11235-020-00681-x, 15 June | 75, pp. 245-257, DOI 10.1007/s11235-020-00681-x, June | |||
| 2020, <https://link.springer.com/article/10.1007/ | 2020, <https://link.springer.com/article/10.1007/ | |||
| s11235-020-00681-x>. | s11235-020-00681-x>. | |||
| [LEN2020b] Lencse, G., "Adding RFC 4814 Random Port Feature to | [LEN2020b] Lencse, G., "Adding RFC 4814 Random Port Feature to | |||
| Siitperf: Design, Implementation and Performance | Siitperf: Design, Implementation and Performance | |||
| Estimation", International Journal of Advances in | Estimation", International Journal of Advances in | |||
| Telecommunications, Electrotechnics, Signals and Systems, | Telecommunications, Electrotechnics, Signals and Systems, | |||
| vol 9, no 3, pp. 18-26, DOI: 10.11601/ijates.v9i3.291, | Vol. 9, No. 3, pp. 18-26, DOI 10.11601/ijates.v9i3.291, | |||
| 2020, | 2020, | |||
| <http://ijates.org/index.php/ijates/article/view/291>. | <https://ijates.org/index.php/ijates/article/view/291>. | |||
| [LEN2021] Lencse, G., "Design and Implementation of a Software | [LEN2021] Lencse, G., "Design and Implementation of a Software | |||
| Tester for Benchmarking Stateless NAT64 Gateways", IEICE | Tester for Benchmarking Stateless NAT64 Gateways", IEICE | |||
| Transactions on Communications, DOI: | Transactions on Communications, Vol. E104.B, Issue 2, pp. | |||
| 10.1587/transcom.2019EBN0010, 2021, | 128-140, DOI 10.1587/transcom.2019EBN0010, 2021, | |||
| <https://www.jstage.jst.go.jp/article/transcom/E104.B/2/ | <https://doi.org/10.1587/transcom.2019EBN0010>. | |||
| E104.B_2019EBN0010/_article>. | ||||
| [MEX2022] Jool Developers, "Jool: Siit and NAT64", Documentation of | ||||
| Jool MAP-T implementation, 2022, | ||||
| <https://www.jool.mx/en/run-mapt.html>. | ||||
| [MIY2010] Miyakawa, S., "IPv4 to IPv6 transformation | [MIY2010] Miyakawa, S., "IPv4 to IPv6 Transformation Schemes", IEICE | |||
| schemes", IEICE Trans. Commun., vol.E93-B, no.5, pp. | Transactions on Communications, Vol. E93-B, Issue 5, pp. | |||
| 1078-1084, DOI:10.1587/transcom.E93.B.10, May 2010, | 1078-1084, DOI 10.1587/transcom.E93.B.1078, 2010, | |||
| <https://www.jstage.jst.go.jp/article/transcom/E93.B/5/ | <https://www.jstage.jst.go.jp/article/transcom/E93.B/5/ | |||
| E93.B_5_1078/_article>. | E93.B_5_1078/_article>. | |||
| [REP2014] Repas, S., Hajas, T., and G. Lencse, "Port number | [NAT-SUPP] Stewart, R. R., Tüxen, M., and I. Ruengeler, "Stream | |||
| consumption of the NAT64 IPv6 transition | Control Transmission Protocol (SCTP) Network Address | |||
| technology", Proc. 37th Internat. Conf. on | Translation Support", Work in Progress, Internet-Draft, | |||
| Telecommunications and Signal Processing (TSP 2014), | draft-ietf-tsvwg-natsupp-23, 25 October 2021, | |||
| Berlin, Germany, DOI: 10.1109/TSP.2015.7296411, July | <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg- | |||
| 2014, <http://www.hit.bme.hu/~lencse/publications/TSP- | natsupp-23>. | |||
| [OP-464XLAT/MAP-T] | ||||
| Palet Martinez, J. and A. D'Egidio, "464XLAT/MAT-T | ||||
| Optimization", Work in Progress, Internet-Draft, draft- | ||||
| ietf-v6ops-464xlat-optimization-03, 28 July 2020, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-v6ops- | ||||
| 464xlat-optimization-03>. | ||||
| [REP2014] Répás, S., Hajas, T., and G. Lencse, "Port Number | ||||
| Consumption of the NAT64 IPv6 Transition Technology", 37th | ||||
| International Conference on Telecommunications and Signal | ||||
| Processing, DOI 10.1109/TSP.2015.7296411, 2014, | ||||
| <http://www.hit.bme.hu/~lencse/publications/TSP- | ||||
| 2014-PC.pdf>. | 2014-PC.pdf>. | |||
| [SIITperf] Lencse, G., "Siitperf: an RFC 8219 compliant SIIT | [SIITPERF] "Siitperf: an RFC 8219 compliant SIIT (stateless NAT64) | |||
| (stateless NAT64) tester", November 2019, | tester", commit bdce0f, February 2021, | |||
| <https://github.com/lencsegabor/siitperf>. | <https://github.com/lencsegabor/siitperf>. | |||
| [snabb] Igalia, "Snabb implementation of lwAFTR", 2022, | [SNABB] "Snabb implementation of lwAFTR", commit 1ef72ce, January | |||
| <https://github.com/Igalia/snabb>. | 2022, <https://github.com/Igalia/snabb>. | |||
| [TR-069] BroadBand Forum, "TR-069: CPE WAN Management Protocol", | [TR-069] Broadband Forum, "CPE WAN Management Protocol", Technical | |||
| June 2020, <https://www.broadband- | Report TR-069, June 2020, <https://www.broadband- | |||
| forum.org/technical/download/TR-069.pdf>. | forum.org/technical/download/TR-069.pdf>. | |||
| [vpp] "VPP Implementations of IPv6-only with IPv4aaS", 2022, | [VPP] "VPP", July 2022, | |||
| <https://gerrit.fd.io/r/#/admin/projects/>. | <https://wiki.fd.io/index.php?title=VPP&oldid=11809>. | |||
| Appendix A. Change Log | ||||
| A.1. 01 - 02 | ||||
| * Ian Farrer has joined us as an author. | ||||
| * Restructuring: the description of the five IPv4aaS technologies | ||||
| was moved to a separate section. | ||||
| * More details and figures were added to the description of the five | ||||
| IPv4aaS technologies. | ||||
| * Section titled "High-level Architectures and their Consequences" | ||||
| has been completely rewritten. | ||||
| * Several additions/clarification throughout Section titled | ||||
| "Detailed Analysis". | ||||
| * Section titled "Performance Analysis" was dropped due to lack of | ||||
| results yet. | ||||
| * Word based text ported to XML. | ||||
| * Further text cleanups, added text on state sync and load | ||||
| balancing. Additional comments inline that should be considered | ||||
| for future updates. | ||||
| A.2. 02 - 03 | ||||
| * The suggestions of Mohamed Boucadair are incorporated. | ||||
| * New considerations regarding possible optimizations. | ||||
| A.3. 03 - 04 | ||||
| * Section titled "Performance Analysis" was added. It mentions our | ||||
| new benchmarking tool, siitperf, and highlights our plans. | ||||
| * Some references were updated or added. | ||||
| A.4. 04 - 05 | ||||
| * Some references were updated or added. | ||||
| A.5. 05 - 06 | ||||
| * Some references were updated or added. | ||||
| A.6. 06 - 00-WG Item | ||||
| * Stats dated and added for Broadband deployments. | ||||
| * Other clarifications and references. | ||||
| * New section: IPv4 Pool Size. | ||||
| * Typos. | ||||
| A.7. 00 - 01 | ||||
| To facilitate WGLC, the unfinished parts were moved to two new | ||||
| drafts: | ||||
| * New I-D for scale up measurements. (Including the results of | ||||
| iptables.) | ||||
| * New I-D for benchmarking measurements. (Only a stub.) | ||||
| A.8. 01 - 02 | ||||
| Update on the basis of the AD review. | ||||
| Update of the references. | ||||
| A.9. 02 - 03 | ||||
| Nits and changes from IESG review. | ||||
| Updated wrong reference to PCP. | ||||
| A.10. 03 - 04 | ||||
| Update to address the comments of further reviews. | Acknowledgements | |||
| Updated Acknowledgements. | The authors would like to thank Ole Troan, Warren Kumari, Dan | |||
| Romascanu, Brian Trammell, Joseph Salowey, Roman Danyliw, Erik Kline, | ||||
| Lars Eggert, Zaheduzzaman Sarker, Robert Wilton, Éric Vyncke and | ||||
| Martin Duke for their review of this draft and acknowledge the inputs | ||||
| of Mark Andrews, Edwin Cordeiro, Fred Baker, Alexandre Petrescu, | ||||
| Cameron Byrne, Tore Anderson, Mikael Abrahamsson, Gert Doering, | ||||
| Satoru Matsushima, Yutianpeng (Tim), Mohamed Boucadair, Nick | ||||
| Hilliard, Joel Jaeggli, Kristian McColm, Tom Petch, Yannis | ||||
| Nikolopoulos, Havard Eidnes, Yann-Ju Chu, Barbara Stark, Vasilenko | ||||
| Eduard, Chongfeng Xie, Henri Alves de Godoy, Magnus Westerlund, | ||||
| Michael Tüxen, Philipp S. Tiesel, Brian E. Carpenter, and Joe Touch. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Gabor Lencse | Gábor Lencse | |||
| Budapest University of Technology and Economics | Budapest University of Technology and Economics | |||
| Budapest | Budapest | |||
| Magyar tudosok korutja 2. | Magyar tudósok körútja 2 | |||
| H-1117 | H-1117 | |||
| Hungary | Hungary | |||
| Email: lencse@hit.bme.hu | Email: lencse@hit.bme.hu | |||
| URI: http://www.hit.bme.hu/~lencse/index_en.htm | URI: http://www.hit.bme.hu/~lencse/index_en.htm | |||
| Jordi Palet Martinez | Jordi Palet Martinez | |||
| The IPv6 Company | The IPv6 Company | |||
| Molino de la Navata, 75 | Molino de la Navata, 75 | |||
| 28420 La Navata - Galapagar Madrid | 28420 La Navata - Galapagar Madrid | |||
| Spain | Spain | |||
| End of changes. 235 change blocks. | ||||
| 666 lines changed or deleted | 565 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||