Eric Stewart: Running Off At The Mouth

IPv6: The What and Why Not Right Now

by Eric Stewart on Jun.19, 2011, under Internet Service Providers, Networking, Technology

This is a long one – there’s a lot of ground to cover.  It’s also written from the perspective of trying to make it as approachable by someone who is not a computer nerd, so there are points where the average geek might start disagreeing with “Yeah, but … ”  Also,this article may become subjected to significant changes in the future, if I reread it and come up with better ways to communicate what I’m trying to explain.

First though, some reference explanations:

  • site provider: When I refer to a site provider, I’m referring mostly to something along the lines of a website, or possibly a gaming service like PSN.
  • service provider: An ISP, or more accurately Internet Service Provider.  A company that provides the home user access to the Internet.
  • consumer: The average home user, or someone who pulls information/services from the Internet.  In other words, a customer of a service provider.  Perhaps a business, but from the aspect of utilizing the Internet as a resource to pull information from, rather than from the aspect of the previously mentioned site provider.

What is IP?  What is IPv4?

So the core protocol of the Internet is IP.  But not just IP – it’s more accurately now termed IPv4 (Internet Protocol version 4).  In IP based networks, every system that connects (one way or the other) has an address.  For example, this site at this moment is supposedly at 184.173.206.160.  My Verizon FiOS router is currently at 173.6510.24 (externally).  The computer I’m sitting at has a private IP (which I will explain what a private IP is later, unless you want to click on that link) of 192.168.1.2.

These addresses are converted from binary – yes, that annoying sequence of ones and zeros geeks talk about occasionally, where an individual zero or one is called a ‘bit’.  Being human, we do tend to like things in simpler terms, so we convert the 32-bit binary:

11000000.10101000.00000001.00000010

(which, as you see, is four groups of eight bits, making it 32 bits long) to something that takes up less space and tends to roll off the tongue a little easier (192.168.1.2), “decimalizing” the numbers.  We also arrange IP addresses in to (what in the binary version would be a group of eight characters) “octets,” separated by a dot (.).

Tangent: A geek could go on at this point, and lecture about networks, subnets, and host portions of an address.  For simplicity’s sake, realize that there are two portions of the address, and that usually (though we can get super complex and say not always) that the network portion of an IPv4 address is covered (depending on how the network is defined) by the first through third octets (usually written with trailing zeros for the rest of the octet, like 182.168.1.0 – this address, in this example, is not a host address but a network address/definition), and the actual host portion of the IP is the ending second through fourth octets (again, depending on network definition).

There’s a limit to the number of IPv4 addresses.  See, each octet has first mathematical limits of numbers ranging from 0-255.  If you counted from address 0.0.0.0 through 255.255.255.255, you’d get a number 2^32 (for those not familiar with the symbol, that’s 2 to the exponent/power of 32 – 2, multiplied by 2, 32 times – and hey!  There’s the number 32 again).  This number isn’t so large – I can fit it in a line here:

4,294,967,296

That’s a big number.  Over 4 billion!  But wait … is it really?

Address Issues And The Current Solutions

No, it’s not really that big a number any more.  This is the number of addresses (we’re ignoring private networks) available worldwide.  Let’s just take some of those numbers now and multiply it all out, using a word problem (yeah, sorry, this is gonna give you flashbacks to grade school):

There are (or was, at some point) 307,006,550 people in the US (we could argue that there are well over 6 billion people in the world, but they don’t all have to have a network address … right?).  Just for the sake of argument, let’s say each one has a computer.  And maybe each one has a smart phone – yea, those smart phones have web access, so they need an address somewhere along the line.  And these addresses need to be unique.  But wait – a lot of people have computers not only at home, but at work, too!  So that’s another computer per person.  Already, we’re at:

921,019,650

Okay – still not convinced that there’s a problem?  Let’s do it this way.  1/4 of the planet (1.5 billion people, because the biased folks among you would say “well not everyone has access to a computer or needs that access”) in the same situation?  Think that’s not out of the question?  that’s 4.5 billion addresses.  Hmm.  that’s a bigger number than 2^32.  OOPS!

Here’s where it gets even more annoying

Not all of those 2^32 addresses are available.  Realize that, by definition, when a network is defined (I.E. you have some address space and either you use it all as one big network, or you subnet it), the first and last potential addresses are used to do certain things within the protocol definition: the first one defines the network, and can’t be used as an actual address; and the last one is used to broadcast to all IPs on a network … and again, can’t be used as an address.

Okay, so, for every network, you lose a couple of IPs.  No biggie.

Also I have yet to see a network (outside of point-to-point, specially subnetted connections) that actually uses all of the available addresses, either.  So there’s considerable loss where a company owns public address space but doesn’t use a good portion of it.

This is a biggie, and it’s not something you can easily fix.  The best you can do has already been done, and it basically changed how the geeks thought about network addressing.  It was easy though, because very little really had to change (outside of how routers worked) and made more sense.

All it did was gain the Internet (IPv4, anyway) just a little more time.

I mentioned private networks.  A private network is one that has addresses that the rest of the Internet won’t publicly route (routing being how the Internet in general figures out where information is supposed to go).  Internally, a company may route a private network, but once they pass it to their service provider, their provider is going to drop it like it’s hot.  And possibly cut off your access is until you stop passing them what they consider to be “non-routable addresses”.

We aren’t even going to talk about all of the private address spaces as an example – just the biggest one (though you’re more likely to come into contact with the smallest, 192.168.*.*).  See, any IP/network starting with 10. is considered private.  Yeah, at the first octet, where there are supposedly available values from 0-255, someone decided that one of those values was never going to be publicly available.  That’s 2^24 possible addresses, gone.  By definition, well more than 16.7 million addresses (actually, it’s closer to 17.9 million when you count all the other address spaces that have been defined as private) will never be available as public IP addresses.

But That’s Solution Number 1, And Reason 1 That IPv6 Won’t Be Rushed Into Just Yet

See, someone figured out that not everyone needs a public IP address. On the simple side, your PCs (because it’s likely you have more than one) in your home don’t need someone in the middle of nowhere to initiate contact with them.  You do not run a web server, and even something like Skype uses a publicly addressed system to manage the contact between two home users.  So, using the idea of network address translation (to appease the geeks, and myself, a lot of people call it NAT, but honestly a majority of cases – like your home router – are using PAT, or port address translation), you have your home network using a private address space, but your router has a public address that it presents to the rest of the Internet, masquerading your internal network as coming from one IP (well, most of the time – I’ve actually come across at least one case of “nested NAT”, where the home network was a private network, doing NAT to the ISP’s private network, that eventually went out to a public address somewhere along the line).

While this is not without issues (there are just so many things that work better when a computer is using a public address), it is probably the biggest thing that the Internet (running on IPv4) uses to avoid address exhaustion.

Again, all this really does is gain the Internet some time.

The only way to really fix things is to throw out what you’re using and get something that solves all your problems.

However, this is easier said than done, since IPv6 has a host of problems all its own.

IPv6: What Is It?

Well, it’s a replacement protocol.  I could teach a whole class about protocol stacks and whatnot, but ideally IPv6 is supposed to replace IPv4 in the “IP” portion of what’s known as the TCP/IP stack.

Remember that IPv4 used 32 bits to make up an address?  Well, that limited us to just over 4 billion addresses.  IPv6 added a few more bits.  96 of them, actually, for a total of 128.  So, address space wise, supposedly you have somewhere in the neighborhood of 2^128 addresses to use.  This is an obscenely large number.  Wikipedia says it’s around 340 undecillion.  After some Googling, this is what I found:

340,282,366,920,938,463,463,374,607,431,768,211,456

Like I said, an obscenely large number of possible addresses.

But the amazing features of IPv6 don’t stop there.  In the original specification, the default “network” portion of the address (the initial part of the address that defines the network) is the first 64 bits.  That’s a whole 32 bits more than IPv4 had for the number of available addresses!  That’s

18,446,744,073,709,551,616

possible networks, with that many hosts (well, give or take an address or two for protocol use) in each of those networks!  You could easily give each human being on the planet a network of their own and have networks to spare!

So – why haven’t we switch to it?!  There’s no reason to not go right to it!

Well, Actually, There Are Things Holding Up Progress

And chances are I’m not going to be able to cover all of them.  Also, some of them may be of my own wild imagination.

IPv6 Is Not Backwards Compatible

Turns out this is a bigger deal than you’d think.  You basically have to do considerable work either upgrading the software that runs routers with versions that are capable of running IPv6 (and, it turns out, IPv4 at the same time), or replace those routers with new ones that can do so.  There’s really no magic switch to flip to make the current Internet sudden run IPv6, and IPv4 isn’t going away any time soon.

The guys that came up with IPv6 had their reasons initially for not including backwards compatibility; but since initially developing it, they have admitted that the biggest mistake was not including IPv4 compatibility in IPv6.  It’s unavoidable, and the common advice: Run IPv4 and IPv6 simultaneously – and separately.

The People Currently On The Internet With IPv4 Have No Reason To Force IPv6

Think about it.  You (as a site provider) provide services to your customers/visitors via IPv4.  You have your addresses … why would you need to switch?  The service providers have used a variety of methods (including NAT/PAT) to provide acceptable access to the Internet to their customers; there’s no reason to force the customers (at possible considerable expense to the company, since the company would have to most likely replace much of the equipment at the customers’ homes) to use IPv6 at all.

Verizon FiOS hasn’t deployed it to residential homes; Hostgator (where this site is hosted from) doesn’t provide hosted sites through IPv6 yet because CPanel (a software package that automates hosted site management) doesn’t quite have it ready yet.  So not even this site (at the time of publication) is available via IPv6.

Because of delays like this, and the lack of any backwards compatibility, even when service providers like Verizon start providing IPv6 access to their customers, they will also have to continue provide IPv4 (either simultaneously or through one of the many transition mechanisms, many of which aren’t standardized yet and often get abandoned for newer, more capable options).

Some Software May Need Upgrading, And Some Software May Never Be Compatible

All of the major computer operating systems in use have managed to become IPv6 capable (at least as of more recent revisions).  In theory, most other software should be operating at higher level protocols anyway, and leave which version of IP to use to something that operates further down the stack.  Theory is not reality though.

It Disturbs My Calm

I might be making this one up, but it occurred to me the other day.

As someone who has my hands on several servers on different networks on a regular basis, I can rattle off relevant IPs like some weird savant.  They’re easy to remember – four numbers separated by three dots.  But when they came up with IPv6, they changed from utilizing a decimal notation to a hexadecimal notation (where groups of four bits can be represented by a single digit that includes 0-9 and even A-F), that uses four digits for two octets, separated by colons.  And then there are additional rules that allow one to shorten the address.  So, an IP like:

2001:0db8:85a3:0000:0000:8a2e:0370:7334

Can be represented by

2001:db8:85a3:0:0:8a2e:370:7334

(since leading zeros can be removed) but also by:

2001:db8:85a3::8a2e:370:7334

(as a single sequence of groups of continual zeros can be replaced with a double colon – made more confusing in that this is can only be done once, and the number of groups is not limited; in this example it’s two, but for a network definition it could be seven).

Now, say that.  Rolls right off the tongue, right?  Easy to remember, right?

NOT.

Defenders of IPv6 would say that addresses aren’t something people should concern themselves with – particularly since the protocol has built-in methods for automatic address assignment; get your dynamic DNS working properly and everything else will work out properly.

“Don’t tell me how to run my network and get off my lawn!”

It Hasn’t Been Tested By Time

The Internet isn’t secure.  Sorry, but there are people out there that go out of their way to poke and prod computers, operating systems, and software – and even protocols themselves – in an effort to figure out how they can get access to things they’re not supposed to.  And while the protocol itself was designed with security in mind, who’s to say they didn’t miss something?  And you can bet money that a given implementation (be it from an OS or a software package) of IPv6 might just have holes in it someone could use to take over a system.

But Progress Shouldn’t Be Avoided

It is needed.  Service providers need to figure out how they’re going to start providing the average home user access to the Internet (both via IPv4 or IPv6).  The easiest way, I think, would be for the cable routers to just be able to route IPv6 and do PAT for IPv4 (possibly using a transition mechanism for IPv4 only devices and old Operating Systems – which you know some grandma in the middle of nowhere is still using – to access the IPv6 Internet).  It won’t be easy, though, and for many, many years providers are likely going to have to figure out how to change transition methods regularly, until the far distant future day when IPv4 is a quaint oddity rather than the norm – where the translation from IPv4 to IPv6 ends up taking place on the site provider’s end, rather than the consumer/service provider end.  I actually expect to see IPv6.9 well before that happens, honestly, but it’s time to start moving forward.

The Internet was an incredible implementation of an idea.  It allowed the planet to connect in a way that has become so pervasive that there’s even a form of addiction to it.  It’s lasted (in technology terms, anyway) a very long time – basic concepts started in the 1960s, while widespread and commercial use began to explode in the 1980s, well over 20 years ago.  There’s probably a better analogy than this (and many folks hate using car analogies for Internet concepts), but the best I can do is to say:

IPv4 has driven the Internet so effectively, for so long, that it’s like the wheel.  You can’t come up with anything better for moving a ground-based vehicle from point A to point B that still comes into contact with the ground.  However, what’s needed now is a hovercraft.  That’s IPv6.

Oh, and IPv5?  Consider it an unused experiment, not worth discussion.

:,

Hi! Did you get all the way down here and not find an answer to your question? The two preferred options for contacting me are:
  • Twitter: Just start your Twitter message with @BotFodder and I'll respond to it when I see it.
  • Reply to the post: Register (if you haven't already) on the site, submit your question as a comment to the blog post, and I'll reply as a comment.

Leave a Reply

You must be logged in to post a comment.