Or: Why IPv6 failed
(This post is about Internet Protocol, the communications protocol that the Internet runs on.)
(Rant alert! I’m trying to be nice on this blog, but I can’t seem to make this post much less mean than it is.)
The successor to IPv4 is not IPv6. It might be IPv7, or it might be IPv8, or it might be FacebookTrackingIPv1. But it is not IPv6.
Why? Because IPv6 has never had a workable migration plan. It offers no path to a world in which you don’t need an IPv4 address. You can’t get there from here.
This was not an accident. It was a deliberate decision, made for political reasons I’m not smart enough to comprehend.
Daniel Bernstein predicted its failure <https://cr.yp.to/djbdns/ipv6mess.html> early on, over 15 years ago. He spelled out the exact reason it would fail. Nothing has happened since then to prove him wrong.
A lot of internet traffic is now IPv6, but that is not the right measure of its success. We all still need IPv4 addresses, so it has failed to fix what is by far the most important problem that (we innocently assumed) it was intended to fix.
I shall now spend two minutes inventing IPv6.001. It fixes the problems with IPv6.
ADDRESS SCHEME: IPv6.001 uses the same 128-bit addresses as IPv6, except that the first 232 addresses are called “IPv4-compatible” addresses, and correspond to the IPv4 addresses.
PACKET FORMAT: If the source and destination address are both IPv4-compatible, an IPv6.001 packet looks exactly like an IPv4 packet. Otherwise, it looks exactly like an IPv6 packet.
ROUTING: If the destination address is IPv4-compatible, then the packet is routed as if it were an IPv4 packet having the corresponding IPv4 destination address. Otherwise, it is routed as if it were an IPv6 packet.
HOW TO MIGRATE TO IPv6.001: Do nothing special for 5 or 10 years. Just update your software and hardware as usual, to versions that support IPv6.001. It will work automatically.
Granted, this is not a complete specification. But IPv6.001’s problems are solvable, whereas IPv6’s are not.