Rambling here abouts...

Saturday, April 6, 2013

Just Another Pretty Protocol

http://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Cat_5.jpg/300px-Cat_5.jpg


So where i've been all week? I was attending some internal training on IPv6. The awesome company I work for does some terrific training on all manner of of things, and this was a 'dry run' for one of their new offerings, and a chance for me to fill in some knowledge gaps. If you want to know more about them e-mail me.

To bring the non-techies here up to speed. There are all these wonderful bits and bytes whirling around this thing we call the internet. The way all the machines that pass them around know how to get all those cat pictures (and porn!) to you is by the addresses contained in those groups of bytes (called packets). The definition of what those addresses are is known as a protocol. To greatly simplify, every PC, android phone, and MAC on the internet has an address - that is how the other machines on the internet know how to get stuff to you. Back when I had no grey in my hair, the industry agreed that such addresses would look like this:
192.168.1.101
Each number between the dots there can take a value of 0-255, ignoring 'special' numbers like 0, or 254-255, that means that all the possible addresses encompass the range from:
0.0.0.0 - 255.255.255.255
That leaves the range of possible addresses of something like 4,294,967,296 unique addresses using this protocol call 'IPv4' or Internet Protocol version 4. This sounds good, except when you take into account that there are a few ranges of 'special' addresses that are unusable or reserved for special uses. Count in the explosion of internet ready devices, and you can see that in today's world, all those addresses will soon be used up. In fact, Around April 15, 2011 the last of the addresses were given to the sub-level  agencies that dole them out to the internet providers and other interested parties.

Now one solution to this problem is the ad-hoc one that is already happening. Most people reach the internet from behind a router (the box with all the pretty blinking lights). When you connect, that router gives you an internet address to work with. No, that address is not one of the 4 billion mentioned above. It is an address for just your local network. When you send stuff to the internet, your router will wrap your packets in another source address that it gets from your provider. The web site at the other end will use the router's address in the wrapped packet to know how to send you the packets that make up all those lovely cat pictures (or porn!). This wrapping process is known as NAT or Network Address Translation.

Since internet address are getting scarce  and frankly you are just not paying your provider enough money, chances are the address your router is getting is probably not one of the sacred 4 billion either. Instead, your router is probably getting a NAT address for a subnet that the provider creates for you and your neighbors. This method of wrapping an address in another address, itself wrapped in another address, can proceed up many levels, until you get to a top level router somewhere in the bowels of your provider's infrastructure that is one of the worthy few with a 'real' address.

So, you are still getting your cat pictures (and porn!) and will get them for the foreseeable future with your internet provider taking care of it - what's the problem? The problem is, that every time a NAT is wrapped, the ensuing packet takes up space on the internet, slowing everything down. The second problem is the routers at every level have to do this wrapping and unwraping for every packet that passes through them. Even though these routers are highly optimized to do this, it takes time. Finally, The way NAT is structured, the routers can only handle a certain number of clients behind them. After that, certain parts of the protocol become 'shared' among the pool of users, and the packets (and cat pictures / porn!) slow down, or streams (like cat videos) just get dropped and have to restart.

The solution to this problem is a new protocol called IPv6. This is not really that new a protocol. The pointy heads had it defined back in 1996. What is new is that the industry is starting to roll out this new protocol now. Source providers like Google and Microsoft are starting to stand up servers using this new protocol, and the people that build the infrastructure are also starting to roll out live hardware using the new protocol. In fact, chances are that the router that you are currently using (as well as your current PC) has hardware that supports IPv6. This protocol uses 128 bits of address. To illustrate the difference, an IPv6 address looks like this:
2001:0db8:85a3:0042:1000:8a2e:0370:7334
 That means that problem of address exhaustion now goes away for the foreseeable future. This is illustrated by this IPv6 Exhaustion Counter. The problem with the rollout is similar to the Y2K problem - it's the software. The complexity of how to make the transition mostly transparent to end users (both corporate and private) is non-trivial. As you would expect, that is what the pay us the big bucks for, and I will leave the discussion of that for another time.


No comments:

Post a Comment