The Case for IPv6
February 22nd, 2010
0IPv4 has served us well. It got the internet off the ground. It’s time to move on.
It’s a common joke made amongst network engineers that the internet was an experiment that escaped the lab before it was finished. The first time I heard that was from Paul Vixie during a talk at USENIX around 1995 or so. The most recent time I heard it was from Vint Cerf during a talk about IPv6. I find it funny because it’s kinda true. When the addressing scheme for IPv4 was decided, it was still an experiment in a lab, and the designers of the protocol figured they would have an opportunity to change the addressing at a future date. Then the internet became wildly popular and took off beyond anyone’s wildest imagination. We’re rapidly running out of available IP addresses. According to Weekly Routing Table Report, 90% of the available IPv4 address space has been allocated and 81.2% of that allocated address space is in use. Only 20% of the world is currently connected to the internet. Recently, IANA (Internet Assigned Numbers Authority), the organization responsible for managing the global IP address space, allocated 1.0.0.0/8 and 27.0.0.0/8 to APNIC (Asia Pacific Network Information Center), the entity responsible for allocating IP addresses the Asia-Pacific region. What’s interesting about this is 1.0.0.0/8 has addresses that have historically been used by some vendors as junk, default, or example addresses, e.g., 1.1.1.1, 1.2.3.4, etc. Whoever is assigned addresses from those blocks is in for some interesting traffic problems. There is an interesting thread on the NANOG (North American Network Operators Group) mailing list about this, if you’re interested in reading it. There are a couple particularly interesting posts. In an effort to de-bogon ise 1.0.0.0/8, APNIC asked RIPE (the European equivalent of APNIC) announce a few of the prefixes from the the block to collect data. The results were interesting. As we continue to run out of address space, we will run into more of these types of interesting problems.
What to do? Fortunately, some smart people have been thinking about these problems for some time. IPv6 is the next generation protocol meant to replace the current IPv4. Amongst many other features, it has a much larger address space than IPv4: 2^128 vs 2^32 addresses. IPv6 has been defined since 1998, yet as stated in the wikipedia article, a recent study shows that less than 1% of internet addresses use IPv6 in any given country. But how do you go about re-addressing the internet, a network with 2,189,070,784 addresses being announced? It turns out to be a hard problem. You can’t just shut down the internet, renumber everything, and just turn it back on. The internet is a network of networks with no centralized control. For those not familiar with the concepts, there’s a handy video to explain. So what do we do? You deploy IPv6 gradually. The idea is to run IPv4 and IPv6 in a dual-stack mode, but there are some problems with this from a network engineering standpoint. Routing tables for the internet take up memory and CPU on routers. Is a service provider supposed to go out and buy all new equipment to handle both sets of routing tables? That’s an expensive proposition, especially when you’re probably not going to need all that extra capacity for the life of the router. Being a large service provider with 100s or even 1000s of devices, renumbering is a large engineering problem, especially wehen there is the expectation that you are always up and available.
There is hope. Providers are starting to offer IPv6 services. Comcast is rolling out an IPv6 trial to some of their customers. Google added IPv6 service to YouTube. Hurricane Electric is one of the largest providers of commercial-grade IPv6 internet service. Being a small company is advantageous, which is why I want to move in the direction of offering IPv6 services earlier rather than later. If we engineer with IPv6 in mind, it becomes a simple problem.
Related Posts
Author
0 Comments Leave a comment
Leave a comment
Allowed Tags
_emphasis_
*strong*
??citation??
-deleted text-
+inserted text+
^superscript^
~subscript~
@code@
Add code using a GIST
gist: gistid
Your comment preview
Reply to comment