Sunday, June 7, 2015

ipv6 is almost here

A few months ago we ran out of new IPv4 block to assign. That basically means we're out of IPv4 addresses. We need more! MOAR!!!! In order to get more (or moar) we need to move to IPv6 which is the next generation internet protocol (IPv5 was skipped because it opened a rift in space time and caused Vint Cerf to lose all his hair so they never deployed it). The trouble with IPv6 is that it's not compatible with IPv4. You can run both IPv6 and IPv6 at the same time but they are fundamentally separate networks. As a result of this incompatibility IPv6 has caught on like a house on fire. That is,  if the the house was made completely out of asbestos and at the bottom of a lake. IPv6 has been around since 1998 and was used by less than 1% of people up until 2013. More people have played Space Smilies.

Adoption is starting to pick up speed now according to google's IPv6 adoption statistics. IPv6 adoption is somewhere between 6% and 7%. It's growing so rapidly I've had to update these numbers since I've been writing this blog post! For comparison, the number of people who use Macintosh computers to access the internet is also somewhere in this range. 6% is also much higher than the number of people who use Linux to access the internet which tends to be in the 2%-3% range.

In Belgium the adoption rate is >30%. In the US it's about 15%. In Canada it's .. Yeah, let's just ignore Canada for now.

The rate of growth is accelerating. IPv6's adoption rate was around 2% at the start of 2014 and ~5% at the end. We're not even half way through 2015 and the IPv6 adoption rate is tickling 7%. Hurray!

But so what?

Well, I don't make enemies lightly, but one of my staunchest foes has been a technology called NAT. I first met this beast of a protocol while working on Myster. Myster is a p2p program I wrote from about 1999 to 2008.

NAT was created because even back in the old days of the 1990s we were running out of IP addressess. People has multiple computers that they wanted to use on one internet connection. Most of the time these tended to be larger organizations that had entire office buildings full of machines that were all networked together and wanted to be on the internet but there was no way to get enough IP addressed for them all.

NAT allows you to to share one internet connection (and one IP address) for a very large number of computers. NAT is all over the place. Odds are very good that you are using NAT right now in your router. Heck, I am using NAT right now and NAT is my mortal enemy. That is to say I hope it's mortal. There's one large problem with NAT: it breaks the internet.

Sure you and I both use the internet with NAT and everything seems ok, but that's a bit of a lie. The portion of the internet you use with a web browser works fine. Things like voice-over-ip and video games have issues. Not to mention the hundreds of programs that never were. You can't miss what you never had.

Each IP address is like a phone number. If you're sharing a single phone number between people then when the phone ring it's not obvious who the call is for. For computers it means that incoming connections tend to get dropped unless you go through the pain of saying which type of connection should be answered by which computer. The same isn't true for outgoing connections which is why surfing the web works fine. (kowabunga dude!)

In practice NAT is so common that most programs work around it. Skype, for example, is one HUGE work around for these kinds of problems. Skype is so crafty in getting around network restrictions that it sometimes acts more like a piece of malware. However, we are still losing out on cool technologies that can't exist because of NAT. Quite a few of these fall under the umbrella of p2p applications.

Peer to peer has gotten a bad reputation for its association with copyright infringement. This is not a completely deserved association. While peer to peer programs like Napster were used to pirate music, peer to peer itself is the fundamental technology that makes the internet so awesome.

Theoretically, every computer on the internet is a peer. Every computer has its own address and can communicate directly to each other without having to go through some intermediary. Given that this is the nature of the internet then why do we have this problem:

NAT is the reason.

IPv6 theoretically solves the NAT problem by making it possible for everyone and their toaster to have their very own IP address. This in turn means that individual devices can directly talk to each other on the internet. This in turn means that for the first time since about 1995 we will have a peer to peer internet. Think of all the new programs we could make!

If anyone is thinking of building a p2p startup company, this is the time to do it. It will still take about 5 years before the internet is close to ready for a new p2p application so best start now. Did I ever tell our about my p2p application Myster? Next time I'll tell you how it works and how I'd like to enhance it to give it new features.