IPv6 transition mechanism: Difference between revisions

Content deleted Content added
m Transport Relay Translation: Typo fixing, replaced: addres → address
fix typo
 
(14 intermediate revisions by 6 users not shown)
Line 4:
An '''IPv6 transition mechanism''' is a technology that facilitates the [[IPv6 deployment|transitioning]] of the [[Internet]] from the [[Internet Protocol version 4]] (IPv4) infrastructure in use since 1983 to the successor addressing and routing system of [[IPv6|Internet Protocol Version 6]] (IPv6). As IPv4 and IPv6 networks are not directly interoperable, transition technologies are designed to permit hosts on either network type to communicate with any other host.
 
To meet its technical criteria, IPv6 must have a straightforward transition plan from the current IPv4.<ref name="RFC1726">{{Cite IETF |title=Technical Criteria for Choosing IP The Next Generation (IPng) |rfc=1726 |last1=Partridge |first1=C. |last2=Kastenholz |first2=F. |date=December 1994 }}</ref> The [[Internet Engineering Task Force]] (IETF) conducts working groups and discussions through the IETF [[Internet Draft]]s and [[Request for Comments]] processes to develop these transition technologies towardstoward that goal. Some basic IPv6 transition mechanisms are defined in RFC 4213.
 
==Stateless IP/ICMP Translation==
Line 17:
==6rd==
{{Main|IPv6 rapid deployment}}
6rd was developed by [[Rémi Després]].<ref>{{Cite IETF|rfc=5569}}</ref><ref>{{Cite web |title=IETF RFC 5569 - IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) |url=https://www.researchgate.net/publication/262571770}}</ref> It is a mechanism to facilitate rapid deployment of the IPv6 service across [[IPv4]] infrastructures of Internet service providers ([[Internet service provider|ISP]]s). It uses stateless address mappings between [[IPv4]] and [[IPv6]] addresses, and transmits [[IPv6]] packets across automatic tunnels that follow the same optimized routes between customer nodes as [[IPv4]] packets.<ref>{{Cite web |title=IPv6 Rapid Deployment |url=https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/interface/configuration/xe-16-10/ir-xe-16-10-book/ip6-6rd-tunls-xe.pdf}}</ref>
 
It was used for an early large deployment of an IPv6 service with native addresses during 2007 (RFC 5569<ref name=RFC5569>{{Cite IETF |title=IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) |rfc=5569 |last1=Despres |first1=R. |date=January 2010 }}</ref>). The standard-track specification of the protocol is in RFC 5969.<ref name=RFC5969>{{Cite IETF |title=IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) – Protocol Specification |rfc=5969 |last1=Troan |first1=O. |date=August 2010 }}</ref>
The standard-track specification of the protocol is in RFC 5969.<ref name=RFC5969>{{Cite IETF |title=IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) – Protocol Specification |rfc=5969 |last1=Troan |first1=O. |date=August 2010 }}</ref>
 
==Transport Relay Translation==
The '''Transport Relay Translation''' ('''TRT''') method acts as an intermediate device between two hosts. The function of the translator is to convert IPV6 into IPV4 addresses and vice versa. TRT accomplishes this translation through IP address mapping and a custom IP address.{{Ref RFC|3142}}
 
The address, for example, if packets are to be transmitted from an IPv6 address ({{IPaddr|fec0:0:0:1::|64}}) to an IPv4 address ({{IPaddr|10.1.1.1}}) would read as {{IPaddr|fec0:0:0:1::10.1.1.1}}. The packets are routed towardstoward the translator firstly through an IPv6/TCP protocol and then from the translator to the IPv4 host through an IPv4/TCP protocol.<ref>{{cite web |last1=Shanmugaraja |first1=P. |title=Design and Implementation of Transport Relay Translator and its security Mitigations |url=https://www.researchgate.net/publication/290350020 |website=researchgate.net |publisher=Research Gate |access-date=28 June 2024}}</ref>
 
TRT employs a similar operation to DNS translation between AAAA and A records known as ''[[DNS_ALGDNS ALG]]''.{{Ref RFC|2694}}
 
==NAT64==
{{main article|NAT64}}
[[Image:NAT64.svg|thumb|NAT64 and DNS64]]
[[NAT64]] is a mechanism to allow IPv6 hosts to communicate with IPv4 servers. The NAT64 server is the endpoint for at least one IPv4 address and an IPv6 network segment of 32-bits, e.g., {{IPaddr|64:ff9b::|96}}.{{Ref RFC|6052}} The IPv6 client embeds the IPv4 address with which it wishes to communicate using these bits, and sends its packets to the resulting address. The NAT64 server then creates a [[Network address translation|NAT]]-mapping between the IPv6 and the IPv4 address, allowing them to communicate.{{Ref RFC|6146}}
Line 38 ⟶ 37:
 
There are two noticeable issues with this transition mechanism:
* It only works for cases where DNS is used to find the remote host address,; if IPv4 literals are used the DNS64 server will never be involved.
* Because the DNS64 server needs to return records not specified by the ___domain owner, [[DNSSEC]] validation against the [[DNSSEC#Deployment at the DNS root|root]] will fail in cases where the DNS server doing the translation is not the ___domain owner's server.
 
Line 53 ⟶ 52:
 
;Implementations
* [[Unbound (DNS server)|Unbound]] dnsDNS server via the dns64 module <ref>{{cite web|url=https://github.com/NLnetLabs/unbound/blob/master/doc/README.DNS64|title=README.DNS64|website=[[GitHub]]|access-date=2024-04-07|archive-date=2024-04-07|archive-url=https://web.archive.org/web/20240407205104/https://github.com/NLnetLabs/unbound/blob/master/doc/README.DNS64|url-status=live}}</ref>
* [[OpenWrt]] via unbound opkg packages.
 
==ISATAP==
Line 66 ⟶ 65:
464XLAT{{ref RFC|6877}} allows clients on IPv6-only networks to access IPv4-only Internet services.<ref>{{cite news|title=Video: 464XLAT Live Demo at World IPv6 Congress in Paris|date=3 April 2013|newspaper=[[Internet Society]]|url=http://www.internetsociety.org/deploy360/blog/2013/04/video-464xlat-live-demo-at-world-ipv6-congress-in-paris/|last1=Žorž|first1=Jan|access-date=5 August 2013|archive-date=13 September 2017|archive-url=https://web.archive.org/web/20170913134101/http://www.internetsociety.org/deploy360/blog/2013/04/video-464xlat-live-demo-at-world-ipv6-congress-in-paris/|url-status=live}}</ref><ref>{{cite web|title=464XLAT – A Solution for Providing IPv4 Services Over and IPv6-only Network|publisher=[[T-Mobile USA]]|access-date=5 August 2013|url=https://sites.google.com/site/tmoipv6/464xlat|archive-date=12 November 2020|archive-url=https://web.archive.org/web/20201112031924/https://sites.google.com/site/tmoipv6/464xlat|url-status=dead}}</ref>
 
The client uses a SIIT translator to convert packets from IPv4 to IPv6. These are then sent to a [[NAT64]] translator which translates them from IPv6 back into IPv4 and on to an IPv4-only server. The client translator may be implemented on the client itself or on an intermediate device and is known as the CLAT (Customer-side transLATor). The NAT64 translator, or PLAT (Provider-side transLATor), must be able to reach both the server and the client (through the CLAT). The use of NAT64 limits connections to a client-serverclient–server model using UDP, TCP, and ICMP.
 
;Implementations
Line 74 ⟶ 73:
*[[Android (operating system)|Android]] includes a native implementation of CLAT since [[Android Jelly Bean|Jelly Bean]] 4.3, released in 2013.<ref>{{Cite web |last=Drown |first=Dan |title=What is Android CLAT? |url=https://github.com/toreanderson/clatd |access-date=January 15, 2023 |website=Dan's Notes |archive-date=December 17, 2022 |archive-url=https://web.archive.org/web/20221217201141/https://github.com/toreanderson/clatd |url-status=live }}</ref>
* [[Windows 10]] has a native WWAN-only implementation of 464XLAT for desktop and mobile since the [[Windows 10 version 1703|2017 Creators Update]].<ref>{{cite web |last1=Havey |first1=Daniel |last2=Balasubramanian |first2=Praveen |date=February 14, 2019 |title=Core Network Stack Features in the Creators Update for Windows 10 |url=https://techcommunity.microsoft.com/t5/Networking-Blog/Core-Network-Stack-Features-in-the-Creators-Update-for-Windows/ba-p/339676 |access-date=January 15, 2023 |website=[[Microsoft]] Networking Blog |archive-date=February 1, 2023 |archive-url=https://web.archive.org/web/20230201204557/https://techcommunity.microsoft.com/t5/networking-blog/core-network-stack-features-in-the-creators-update-for-windows/ba-p/339676 |url-status=live }}</ref>
* [[Windows 11]] (24H2) has the same implementation as Windows 10. A future version will extend CLAT support to other network devices (currently limited to WWAN). The implementation will use RFC 7050 (ipv4only.arpa DNS query), RFC 8781 (PREF64, and RFC 8925 (DHCP Option 108) standard .<ref>{{cite web |access-date=March 7, 2024 |url=https://techcommunity.microsoft.com/t5/networking-blog/windows-11-plans-to-expand-clat-support/ba-p/4078173 |title=Windows 11 Plans to Expand CLAT Support |website=[[Microsoft]] Networking Blog |archive-date=March 8, 2024 |archive-url=https://web.archive.org/web/20240308105450/https://techcommunity.microsoft.com/t5/networking-blog/windows-11-plans-to-expand-clat-support/ba-p/4078173 |url-status=live }}</ref>
* [[macOS]] starts to have native CLAT support in Ventura, released in 2022.<ref>{{cite web |title=Twitter
|access-date=27 June 2022|url=https://twitter.com/Oskar456/status/1541509105898164225}}</ref>
Line 80 ⟶ 79:
|access-date=5 November 2018|url=https://www.ietf.org/mail-archive/web/v6ops/current/msg30153.html}}</ref> Additionally, Apple requires all apps submitted to the [[App Store (iOS)|App Store]] to work on IPv6 networks.<ref>{{cite web|last1=van Beijnum|first1=Iljitsch|title=Apple to iOS devs: IPv6-only cell service is coming soon, get your apps ready|url=https://arstechnica.com/apple/2015/06/apple-to-ios-devs-ipv6-only-cell-service-is-coming-soon-get-your-apps-ready/|website=Ars Technica|access-date=2 July 2016|date=2015-06-16|archive-date=2016-06-28|archive-url=https://web.archive.org/web/20160628114602/http://arstechnica.com/apple/2015/06/apple-to-ios-devs-ipv6-only-cell-service-is-coming-soon-get-your-apps-ready/|url-status=live}}</ref>
* clatd is a CLAT implementation for [[Linux]].<ref>{{Cite web |last1=Anderson |first1=Tore |date=May 20, 2019 |title=clatd |url=https://github.com/toreanderson/clatd |access-date=January 15, 2023 |website=[[GitHub]] |archive-date=December 17, 2022 |archive-url=https://web.archive.org/web/20221217201141/https://github.com/toreanderson/clatd |url-status=live }}</ref>
* [[Network Manager]] (WIP):<ref>{{Cite web |last1=StrodlrStrodl|first1=Mary|date=Jan 12, 2025 |title=Add support for CLAT using a BPF program|url=https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2107 |access-date=February 6, 2025 |website=[[GitLab]]|url-status=live}}</ref> :
* [[OpenWRT]] linux OS for routers has optional support for clat via the 464xlat package .<ref>{{cite web| title=OpenWrt Wiki package: 464xlat|url=https://openwrt.org/packages/pkgdata/464xlat|website=OpenWrt|access-date=1 April 2024}}</ref>
* [[FreeBSD]] has implemented NAT64 CLAT since Release 12.1.<ref>{{Cite web |last=Baoi |first=Danilo G. |date=June 19, 2021 |title=FreeBSD 12.1-RELEASE Release Notes |url=https://www.freebsd.org/releases/12.1R/relnotes/ |website=FreeBSD |access-date=January 15, 2023 |archive-date=January 15, 2023 |archive-url=https://web.archive.org/web/20230115224443/https://www.freebsd.org/releases/12.1R/relnotes/ |url-status=live }}</ref>
 
Line 95 ⟶ 94:
''V4-via-v6'' routing<ref>{{Cite IETF|title=IPv4 routes with an IPv6 next hop|draft=draft-chroboczek-intarea-v4-via-v6-03|last1=Chroboczek|first1=Juliusz|last2=Kumari|first2=Warren|last3=Høiland-Jørgensen|first3=Toke|date=Jan 2025}}</ref> is a technique where IPv4 addresses are assigned to end hosts only while intermediate routers are only assigned IPv6 addresses. IPv4 routes are propagated as usual, and no packet translation or encapsulation is employed, but use an IPv6 next hop. V4-via-v6 reduces the amount of management required, since the core network only needs to be assigned IPv6 addresses, but still requires that the core network be able to forward IPv4 packets.
 
V4-via-v6 is defined for the [[Border Gateway Protocol]] (BGP)<ref>{{Cite IETF|title=Advertising IPv4 Network Layer Reachability Information with an IPv6 Next Hop|rfc=5549|last1=Le Faucheur|first1=François|last2=Rosen|first2=Eric|date=May 2009}}</ref> and the [[Babel (protocol)|Babel routing protocol]].<ref>{{Cite IETF|rfc=9229|title=Pv4 Routes with an IPv6 Next Hop in the Babel Routing Protocol|last1=Chroboczek|first1=Juliusz|date=May 2022}}</ref> It has been implemented in the [[Bird Internet routing daemon]]<ref>{{Cite web |last=Rammhold |first=Andreas |date=December 15, 2020 |title=[RFC] Babel: Add v4viav6 Support |url=https://bird.network.cz/pipermail/bird-users/2020-December/015082.html |access-date=2023-01-15 |website=BIRD Internet Routing Daemon |archive-date=2022-12-29 |archive-url=https://web.archive.org/web/20221229084844/https://bird.network.cz/pipermail/bird-users/2020-December/015082.html |url-status=live }}</ref> and in [[Babel (protocol)#Implementations|''babeld'']].<ref>{{Cite web |last=Chroboczek |first=Juliusz |date=May 5, 2022 |title=[Babel-users] ANNOUNCE: babeld-1.12 |url=https://alioth-lists.debian.net/pipermail/babel-users/2022-May/003963.html |access-date=2023-01-15 |website=Debian Alioth Lists |archive-date=2022-12-29 |archive-url=https://web.archive.org/web/20221229084813/https://alioth-lists.debian.net/pipermail/babel-users/2022-May/003963.html |url-status=live }}</ref>
 
==MAP==
Line 126 ⟶ 125:
*[https://downloads.isc.org/isc/aftr/ Address Family Transition Router (AFTR)], a DS-Lite implementation
*[https://code.google.com/p/fabfi/wiki/niit niit] Linux Kernel device that allow transmission of IPv4 unicast traffic through an IPv6 network
*[http://www.ivi2.org/IVI/ IVI] {{Webarchive|url=https://web.archive.org/web/20150319154837/http://www.ivi2.org/IVI/ |date=2015-03-19 }} IPv4/IPv6 packet translation implementation as a Linux kernel(2.6 only) patch
*[[Microsoft Forefront Unified Access Gateway]], a reverse proxy and VPN solution that implements DNS64 and NAT64
*[[BIND]], Berkeley Internet Name Domain DNS server, implements DNS64 since version 9.8