Sunday, January 30, 2011

Why hasn't IPv6 been deployed yet?

A lot of articles talk about why IPv6 is needed, and some talk about why IPv6 is great even if it's not needed. Many people are concerned that IPv6 has not yet been deployed. But one question I've discussed several times recently but have never read in print: why hasn't IPv6 been deployed? There are a lot of reasons.

Compatibility


When IPv6 was designed, it wasn't perfectly compatible with IPv4. That is, when one switches to a "pure" IPv6 model, the existing Internet becomes inaccessible.

Most other software upgrades try hard to retain compatibility. For example, when one language of the web, HTTP, was upgraded from 1.0 to 1.1, a lot of care was taken to ensure backwards compatibility. Any web browser or web server that talked the newer version could also talk the older version. This made the upgrade seemless. Only after upgraded clients became uniquitous did server administrators start taking advantage of the features of the new version. An upgraded device is certainly no worse off than without the upgrade. Even today, ancient web servers written in the old way can continue to provide web content without modification.

IPv6 doesn't automatically maintain compatibility. If one "simply" upgrades from IPv4 to IPv6 without additional effort, one loses access to the current IPv4 Internet. The IPv6 answers to this problem are "dual-stack" or "IPv4 gateways". In the first case, the prospective IPv6 user must maintain an IPv4 infrastructure in parallel to the new IPv6. In the second case, the prospective IPv6 network administrator must maintain a translation device between the IPv6 and the IPv4 world. While this works, it requires additional effort.

Effort


IPv6 requires a lot of additional effort. The home computer user or corporate user won't have much to do, but the various network infrastructure people have to learn new protocols, replace or upgrade equipment that doesn't support IPv6, and replace or upgrade applications that don't support IPv6. This is not an effort that is worthwhile without a mandate or other strong incentive.

No central authority mandating IPv6


Other major software upgrades have happened because an authority forced the issue. For example, one of my older coworkers told me that the upgrade to Ipv4 was mandated to occur on a certain day. After that day, the old version would no longer be supported. The US government controlled the Internet at the time, and it was primarily used for research, so such pronouncements were possible. No one has the authority to do that today.

Incentive


When new Internet addresses run out, existing devices on the Internet will not immediately be inconvenienced. On that looming date, it will gradually become more difficult to add more devices, although partial workarounds (such as HTTP/1.1 and NAT) are now well-established. But the Internet will not immediately "break". It will be business as usual for most existing devices.

Meanwhile, there are no significant resources that are IPv6-only today. Until there is a significant resource that is IPv6-only, or IPv4 is in danger of "breaking", IPv4 is good enough for most people.

But until most people have IPv6 a site would be crazy to make itself IPv6 only.

This is a classic chicken-and-egg problem. No one wants to upgrade because no one has upgraded.

The classic way the software world fixes this kind of problem is by sneaking in the upgrade using an easy, backwards compatible upgrade. Except, as above, the IPv6 upgrade is neither easy nor backwards compatible.

Another way to fix this is for one or more large entities to sacrifice and take the first step. The US government is trying to do this. But it's too little, too late.

Hardware support


Even in 2011, there are plenty of new devices being sold that do not support IPv6. These include network routers, switches, firewalls, and more esoteric devices such as sensors, digital matrix switches, fileserver appliances, and others. Each IPv4-only device sold is making the problem a little worse. How can we upgrade if we have to throw away all these investments?

Application support


For an IPv6 upgrade to be compelling, one doesn't just need support at end user stations and the routers, switches, and other network gear. One also needs support in applications.

That means that if I run some kind of application, either as an end user or as a server administrator, I need all my applications to work correctly after the IPv6 upgrade.

Unfortunately, many applications are not IPv6-ready, themselves. So even if I am prepared to go to the effort to upgrade, how can I do so if all the software I use won't work? The software authors don't feel the incentive to upgrade any more than anyone else does.

Conclusion


We are in trouble. Some of these problems might have been solvable 10 years ago, had they been recognized. At this point, it's too late. The Internet will almost certainly go through a protracted period of having IPv4 addresses depleted but IPv6 not yet widely deployed.