For a while now I’ve been convinced that one of the biggest hurdles to the human race is our inability to deal with large numbers. As soon as you get to around 10,000 it all seems a bit samey. Hence the inability of creationists to understand about geological time, the inability of most people to understand cryptography, people’s willingness to do the lottery, and the bizarre acceptance of the bank bailout by everyone outside the banking cult.
For example, the odds of winning the UK national lottery are around 14,000,000 (14 million) to 1. So, if you play twice a week, you’ll probably win once every 130,000 years which, providing you believe in reincarnation, is around 1800 lifetimes. The human race hasn’t existed that long yet. These are diabolical odds but people still indulge.
I’m far from immune to this cloudy judgment. When I first learned about how the Internet worked, I was shocked to discover that Internet Addresses were 4 bytes (thats 32 bits) long. “That’s tiny!” I thought, “that means there’s an absolute maximum of 4 billion.” Technically I was right, but the fact that 18 years later
the Internet is as ubiquitous as it is, whilst still remaining limited to those paltry 32-bits of address space, shows I didn’t really know what 4 billion meant.
In fairness, we would have run out by now if the wizards behind the scenes hadn’t cast a bunch of magic spells (called things like NAT, and CIDR) to wring every bit of space out of the addresses. But we are now at the very, very low watermark level and it’s only a matter of months before we run out of addresses completely.
The Wizards were on the case though and in 1998 they created an entirely new Internet Protocol called “IP Next Generation (IPng)”, or more formally “IP version 6 (IPv6)” to replace the existing Internet Protocol (known as version 4). I was really excited at the time! It was actually a cut down version of version 4, with much of the useless stodge removed and new cool stuff like auto-configuration and encryption built-in. It also allowed for many more addresses as it used 128 bits to represent each address. At the time I remember thinking that 128 bits sounded pretty meagre. Why not 1024 bits or 2048 if we really want to future proof ourselves, I thought ?
At the time I worked at an ISP and badgered them into allowing me to hook up our network to the experimental IPv6 Internet (known as the 6bone) so that we could lead the way into the brave new world. After the initial excitement of playing with the new addresses, protocols and tools, I got bored because there was nothing to see yet. There was only one website that I could find that was on the IPv6 Internet…and it consisted of a page of rants about the problems with the new protocol. It was slow too. Really slow.
11 years later, the Internet is still running on IPv4 and, despite most people’s computers being able to use the shiny new IPv6 network, very few ISPs support it. I still don’t really understand why.
A couple of weeks ago some fear-mongering articles in the press about the paucity of IPv4 addresses rekindled my interest and I decided to get hooked up to IPv6 at home. Surely, I thought, my ISP must have IPv6 support by now. They don’t. So I had to resort to a method called “tunneling” which is how I had to do it back in 1998. But this time, things were very, very different. The IPv6 Internet exists, and works as we were promised it would! Setting up a tunnel involved registering with a free tunnel service on-line and running a single command on my Linux box. Bang – the box was pingable on both IPv4 and IPv6. I ordered a block of addresses for the other machines in my house (we have about 5) and as if by magic, they all configured themselves with their new IPv6 addresses automatically. Networking has never been this simple!
But there was something that worried me, and this is where we get back to big numbers; the number of addresses I’d been allocated. It turns out that these days IPv6 subnets are all 64-bits – what that means in simple terms is that my tunnel, which needs precisely two addresses (one for me, one for my ISP) is using up 18446744073709551616 addresses. We are wasting a number of addresses which is equal to the size of the regular IPv4 Internet, squared.
The next thing that alarmed me was that the size of the block of addresses I was given for my other 4 home machines also seemed a little large. It was a 48 bit prefix which equates to a million, billion, billion addresses. I only needed 4!
At this rate, I thought to myself, we’ll exhaust the 128 bit address space in no time! Why would these ISP’s have such a disgracefully cavalier attitude to address allocation ? Had they learned nothing from the IPv4 experience. I mean 128 bits is a lot, but it’s not that much…
After doing some reading and some very basic maths, I found the reason for their “reckless” behaviour: 128 bit numbers are enormously, vastly, adjective-defyingly huge. I could write out how big it is, but like the expression “128 bit”, it doesn’t really give much insight. The fact is that we will not run out of addresses. Ever. NAT for IPv6 doesn’t exist, because it’s just not needed. Someday everyone will have as many fully routeable IP addresses as they can eat.
As I said, big numbers are difficult to comprehend…for me and many others if not for you.
So the next time you hear a journalist, politician or banker talk about billions of anything, don’t let it lie. They don’t really understand how vast those numbers are either.
Thanks for reading this far. I would have got bored about 3 lines in. Your reward is the baby-squirrel bit. Last night Michele took me along with her to the wildlife rehab and let me hold a couple of baby squirrels while she fed them. I got to stroke them and feel their little feet. They were even cuter and more beautiful than I imagined they could be! They were really playful and snuggly too. It’s bad form to try and relate to them I know, but not too long from now they’ll be released back into the wild.