Today is World IPv6 Day. That’s the day a number of Internet heavyweights are testing out their readiness for the next version of IP, the networking protocol that serves as the foundation for the Internet.
The current version of the IP protocol, called IPv4, suffers from a serious weakness: it gives computers addresses that are only 32 bits long, which means that there are only 232, or around 4 billion, possible addresses. That seemed like a large amount when the Internet was just an academic research network back in the 1970s. But on a planet with 7 billion people, it’s beginning to feel a little cramped. IPv6 uses 128-bit addresses, and 2128 is such an enormous number that the world will never again have to worry about running out of address space.
The IPv6 transition has been widely portrayed as inevitable, with some outlets falsely claiming that it will soon be impossible to add a new device to the Internet without an IPv6 address. But it’s not so obvious that this is true. There’s no doubt that it would be beneficial to move the Internet to IPv6, but the transition faces a massive collective action problem. Indeed, I’m starting to suspect that the collective action problem may be so severe that the transition might not happen at all.
To understand the problem, we have to first get into the technical weeds a bit. Network administrators have long used a technology called Network Address Translation to allow multiple client computers to share a single IP address. This is the technology that allows your WiFi router to share your single cable or DSL connection among all the devices in your house. As the name suggests, NAT works by assigning a “private” IP address to each device inside your network, and then “translating” between the public and private IP address spaces.
Network administrators hate NATs because it breaks one of the Internet’s most elegant features: the ability for any two hosts on the network to connect to one another. But the ability to share IP addresses is so useful that the technology has proliferated. And most applications are now designed to gracefully handle working behind a NAT.
Which bring us to the IPv6 transition. The plan is for hosts to gradually transition from using IPv4 addresses to IPv6 addresses. The challenge, though, is that people on the IPv4 network want to be able to talk to people on the IPv6 network, and vice-versa. Getting from IPv6 to IPv4 is no problem; the IPv6 spec allocates a block of IPv6 addresses (of which there’s no shortage) to correspond to IPv4 addresses. But going the other way is hard, because the IPv4 protocol has no way of addressing more than 232 distinct addresses.
There is a mind-boggling array of methods for dealing with this problem, and I couldn’t explain them all to you if I wanted to. But conceptually, there are two options. One is to use what amounts to a huge NAT to translate between IPv6 and IPv4. Every IPv6 host is given a corresponding IPv4 address (which it might share with many others). The IPv4 host communicates with this address, and there’s a gateway that automatically translates these packets between the IPv4 and IPv6 protocols. Under this approach, the IPv4 host can be blissfully unaware it’s talking to an IPv6 host, because all it knows about is the IPv4 address of the gateway.
The other approach is to have hosts be “dual stacked,” meaning that they’re simultaneously maintaining two different (possibly virtual) network connections with two different addresses. Dual-stacked hosts send IPv6 packets to other hosts on the new network, but fall back to IPv4 to communicate with hosts that are only on that network.
Now, the key thing to realize about these methods is that under either approach, IPv4 hosts have zero incentive to switch to IPv6. There are enough IPv4-only hosts around that every IPv6 host will want to find a way to continue communicating on the IPv4 network. And that’s another way of saying that an IPv4 network that ignores the transition won’t face any negative consequences for doing so for a long time. Moreover, under either scheme, every IPv6 host still needs to have an IPv4 address, so switching to IPv6 doesn’t even do much to economize on scarce IPv4 addresses. True, under the NAT-based approach, multiple IPv6 hosts share a single IPv4 address. But most of those address savings can be achieved simply by adopting a regular old IPv4 NAT. If anything, adopting IPv6 just makes things unnecessarily complicated.
To put things another way, no IPv4 host will begin to experience negative consequences from dragging its feet until IPv6 hosts start dropping IPv4 support. And this will happen only after the vast majority of IPv4 hosts have migrated. Given that running two parallel networks is more expensive than running an IPv4 network only, the rational thing to do is to wait for other people to go first.
No one wants to say this because it really is in everyone’s interest for the transition to occur. But it’s not hard to read between the lines. Here, for example, a commentator says “You have to make the transition. It is better to do that sooner than later because it demonstrates that you are a modern, well organised company that is visible on the modern infrastructure of the internet.” This is complete nonsense. The overwhelming majority of users have no idea what IPv6 is and won’t even notice when a company they do business with makes the switch.
So we may be in for a decade-long period wherein everyone talks about the IPv6 transition but only a handful of large companies actually do anything about it. If I’m right, then one of two things will happen. One possibility is that networking elites will eventually realize that the gradual approach is hopeless and lobby for the stiffer medicine of a legislative mandate. The other possibility is that we’ll discover that IPv4 isn’t as bad as we thought, and learn to live with four billion addresses indefinitely. In my next post I’ll examine how we might do that.