I don’t see a viable path from our current situation to a natural inevitability where IPv6 can be thought of as properly adopted: where deploying or signing up IPv6-only clients or services would be a sane and realistic thing to do.
In our current situation on the public Internet, IPv4 support is mandatory, but IPv6 is optional. Servers have to support IPv4 because without it, IPv4-only clients would not reach them. They don’t have to support IPv6 because IPv6-only clients incapable of reaching the IPv4 Internet are not a phenomenon yet. Similarly, clients have to support IPv4 (or emulate it), because without it, IPv4-only servers would be unreachable. They don’t have to support IPv6 because IPv6-only servers incapable of being reached by the IPv4 Internet are not a thing yet. These constraints are logically self-enforcing: clients will have to continue to support IPv4 because servers do and vice versa.
How do we get from this situation to one where IPv6 reachability can be taken as a given for all servers and clients on the public Internet? At the moment, the incentive to set up IPv6 isn’t there yet, apart from a warm feeling administrators may feel that they are preparing for something, we are assured, is going to come in handy in the future. The death of the IPv4 address space has been greatly exaggerated, or rather, we’ve kept it on life support by hacking in a number of workarounds such as NAT and re-allocating smaller and smaller subnets, departing from our earlier notions of class based allocation. We’re constantly warned that the gig is very much up: any moment now, the last IPv4 address will be handed out, and from then on, we’ll be thankful for having set up our IPv6 support ahead of time because we’re going to need it right away.
But are we really going to need IPv6 right away? Is it even going to be possible to use it right away, or ever, despite IPv4 address depletion?
Can we implement IPv6 support now, so that it’s “ready to go” once we need it? A lot of ISPs, software/hardware vendors and server administrators are working on this right now, despite the lack of immediate benefit, because it’s the “right thing”. DNS servers, web servers, and client ISP connections supporting IPv6 are popping up all over the place: you can even say there are lots of them. Not the whole Internet, but enough of them to represent a significant effort and expenditure. The trouble with this is, it’s never going to be complete. Only a practical 100% deployment is going to satisfy the pre-requisite for any sane ISP or service provider to provide an IPv6-only service. Let’s say 90% of servers and clients are super-responsible and do the “right thing”. We will still have to rely on IPv4 everywhere lest people be stuck on a subset of the Internet where not quite everything is reachable. Nobody would knowingly sign up to a service that limits access to 10% of the Internet, so nobody is going to offer it, and there will be no more incentive for administrators and ISPs to continue rolling out than there already is.
Perhaps, then, will we be forced, by a “big crisis” in which the world suddenly has to scramble to implement IPv6 all-at-once in a massive panic bigger than Y2K? Let’s assume the depletion of IPv4 addresses happens, and it’s sudden. Panic stations! What do we do? The problem is, we can’t just switch to IPv6 only: that would still cut off new clients from large sections of the Internet, or cut off new servers from large numbers of clients. A big crisis is going to bring us no quicker out of the stalemate of there being no incentive to implement IPv6 until everybody else does, and any one group brute-forcing people into going IPv6-only before the rest of the Internet is ready will just be inflicting unnecessary pain. So we scramble to find other solutions. More stop-gaps. We find other IPs and we NAT huge numbers of clients or servers behind them. We’ve already started: NAT64 is a sophisticated way of giving IPv6-only services the ability to talk to the IPv4 Internet. The trouble with this is, these solutions which are intended as stop-gap solutions end up becoming the new Internet: the new way people do things. IPv6 is well and good, but we need the stop-gap solutions for the real Internet, which continues to need people to be able to talk IPv4. We end up with a situation where IPv4 addresses have depleted and we are still no closer to being able to sign up or deploy true IPv6-only clients or services, still thinking of our current situation or crazy NAT and other technologies as a temporary transitional period until people get IPv6 implemented. And a segment of the Internet still continues to ignore IPv6 because they still don’t need to.
And I’m reminded of another failed standard that everybody thought was going to be the next big thing: XHTML. Specifically, a full transition to XHTML on the public web – where we didn’t have to make it HTML-compatible and serve it as text/html – never happened, because support for it never eventuated, and support for it never eventuated because nobody stopped making it HTML-compatible because it wouldn’t have been supported. Oh, how we hoped that, for example, Microsoft would just implement it because it was a “good thing” to do. But they felt no incentive to do so, understandably enough.
In that case, smart engineers and innovators realised the mistake of trying to bootstrap everybody onto a non-backwards-compatible standard and started work on something saner – an extension to HTML that was fully backwards-compatible, requiring no “leap of faith” transitional moment. That new standard was HTML5. And the world adopted it enthusiastically, never needing to worry about adopting a new standard before the world at large could actually benefit from it.
Is IPv6 going to suffer a similar collapse? If not, why not? How is it actually going to be possible to let go of IPv4 and all IPv4-supporting transition mechanisms and reach the point where we can deploy IPv6-only hosts on the public Internet? I’m not a qualified network engineer but I do sense there may be a gap in strategy here.