Skip to content

464XLAT: IPv4 Service over Core Networks

This documentation is still being edited and may differ from the actual version.

This is extra reading. You do not need 464XLAT to configure the current Flet’H modes. This page is useful when you need to distinguish IPv4-in-IPv6 encapsulation from IPv4/IPv6 translation.

Short version: 464XLAT does not place a complete IPv4 packet inside an IPv6 tunnel. It translates IPv4 into IPv6 at the customer side, carries the translated packet across an IPv6-only network, and translates it back to IPv4 at the provider side.

For most end users, 464XLAT is almost invisible: existing IPv4 applications continue to connect normally. One of the few observable clues is a local-only IPv4 compatibility address on the phone or device. Some implementations show 192.0.0.2, which can look very similar to DS-Lite.

This is because both 464XLAT and DS-Lite can use the 192.0.0.0/29 IPv4 Service Continuity Prefix. The address is not sent onto the access network as a public IPv4 address, and seeing it does not mean that 464XLAT and DS-Lite use the same transport mechanism.

464XLAT is normally not a user-controlled switch. A mobile operator provisions 464XLAT capability through carrier settings. When the network actually provides an IPv6-only data session, the device can enable CLAT while the network provides PLAT/NAT64.

On iOS, this device-side capability configuration is carried in the carrier settings bundle (.ipcc). After unpacking it, an APN entry in carrier.plist may contain settings such as:

<key>apn</key>
<string>spmode.ne.jp</string>
<key>DefaultProtocolMask</key>
<integer>3</integer>
<key>AllowedProtocolMask</key>
<integer>3</integer>
<key>enableXLAT464</key>
<true/>

This is NTT DOCOMO’s configuration for spmode.ne.jp. Protocol mask 3 permits both IPv4 and IPv6, so it does not force every connection to be IPv6-only. enableXLAT464 provisions 464XLAT capability on iOS; the device can start its local CLAT when the network actually assigns only IPv6. The operator network must still provide PLAT/NAT64.

464XLAT combines two translators with different roles:

[ private IPv4 client ] -- IPv4 --> [ CLAT ] -- IPv6 --> [ PLAT ] -- IPv4 --> [ IPv4 Internet ]
stateless XLAT stateful NAT64
  • CLAT (customer-side translator) runs on an end device or customer router. It performs stateless, algorithmic translation between IPv4 and IPv6.
  • PLAT (provider-side translator) runs in the provider network. Its stateful NAT64 maps many IPv6 users onto the provider’s IPv4 address pool.

Return traffic follows the reverse path through the PLAT and CLAT. Native IPv6 traffic uses IPv6 directly and does not need either translation.

RFC 6877 describes 464XLAT as providing limited IPv4 connectivity. It is suited to clients initiating connections to IPv4 servers, but it is not a substitute for a publicly reachable IPv4 address, unrestricted inbound IPv4, or general peer-to-peer IPv4 connectivity.

With NAT64 and DNS64 alone, an IPv6-capable application can reach an IPv4-only server through a synthesized AAAA record. A local IPv4 compatibility path is still needed when:

  • an application connects to an IPv4 literal such as 192.0.2.1;
  • an application only creates IPv4 sockets; or
  • an IPv4-only device sits behind the CLAT.

The CLAT accepts that IPv4 traffic and translates it before sending it to the PLAT. 464XLAT therefore does not require DNS64. When DNS64 is present, IPv6-capable applications can bypass the CLAT and use a single NAT64 translation at the PLAT.

How it differs from other IPv4-over-IPv6 methods

Section titled “How it differs from other IPv4-over-IPv6 methods”
MethodWhat crosses the IPv6 networkWhere connection state mainly livesCurrently supported by Flet’H
DS-LiteA complete IPv4 packet inside an outer IPv6 headerProvider AFTRYes
MAP-EA complete IPv4 packet inside an outer IPv6 header; rules determine the IPv4 address and port setThe mapping itself does not require per-flow state at the providerYes
IPIP6H / IPIP6HPA complete IPv4 packet inside an outer IPv6 headerDepends on the provider’s static-IP serviceYes
464XLATA translated IPv6 packet; the original IPv4 header is not retainedStateful NAT64 at the provider PLATNo

DS-Lite, MAP-E, and IPIP6 retain the original IPv4 packet and add an outer IPv6 header. 464XLAT rewrites the IP header, so the IPv6 segment carries one translated IPv6 packet. All of these methods use IPv6 infrastructure to provide IPv4 connectivity, but they differ in encapsulation, address semantics, and where the provider must keep state.

464XLAT has no direct relationship to Flet’H.