IPv6-only in a French Mobile Network

Image: Bouygues IPv6 only APN settingsQuite a number of mobile network operators around the world these days support IPv4 / IPv6 dual stack operation. That’s nice but the real goal of the exercise is to eventually end up in an IPv6-only world without any IPv4 traffic in the network. Recently, I noticed that French mobile network operator Bouygues has also switched to IPv6-only operation for mobile Internet access.

I first noticed what Bouygues was doing when I had a look at the APN settings that were automatically configured when I inserted a Bouygues SIM in a device. As can be seen in the first screenshot in this post, the ‘APN protocol’ field is set to “IPv6” rather than “IPv4” or “IPv4v6”. When in the home network in France, the device only requests IPv6 connectivity in the LTE ‘PDN Connectivity Request’ and ‘ESM Information Request’ messages. As a result the device only gets the IPv6 addresses of DNS servers and an IPv6 interface identifier in the LTE ‘Activate Default EPS Bearer Conext Request’ message. Together with the IPv6 prefix received on the user plane in an IPv6 ‘Router Advertisement’ message, the device then generates its IPv6 address.

Image: IPv6 address in Android's network statusThe seconds screenshot shows the IP addresses the mobile device uses locally. In addition to the IPv6 address, there’s a private and local IPv4 address (192.0.0.4) that never makes it to the network.

Obviously IPv6-only connectivity is of little use if a mobile device can’t reach IPv4-only servers on the Internet. And there are still plenty. To communicate with these, DNS64 and NAT64 are used to encapsulate an IPv4 address in an IPv6 address and to convert between IPv6 and IPv4 at the edge of the network. For technical details see this previous post. The final screenshot in this post shows how the DNS server returns an IPv6 address for an IPv4-only server on the Internet. The First two bytes of the IPv6 address (64:ff9b) indicate that this IPv6 address contains an IPv4 address at the end (See RFC 6052). The IPv4 address is then encoded in the last 4 bytes of the IPv6 address ’58d7:d51a’ which map to the 4 byte IPv4 address 88.215.213.26. Running a Tcpdump/Wireshark trace on a mobile device then shows only IPv6 traffic on the network interface, not a single IPv4 packet anywhere to be seen. How nice!

Image: DNS64 encapsulating an IPv4 address in an IPv6 address