Exploring IPv6
The Internet is running out of addresses and something needs to be done. At least that’s the idea behind IPv6, the next generation of the Internet Protocol. So, as a sort of day off for Columbus Day, I spent the day exploring IPv6 and here’s what I found.
First, let me explain a little bit about how the Internet works. There is this thing called the Internet Protocol. Basically, it is how messages are sent from one computer to another. For example, I might send a message from my laptop up to a Webserver somewhere saying, send me the webpage I’m looking for. Of course to do all of this, you need addresses, and, as will everything else on computers, it boils down to numbers.
Version 4 of the Internet Protocol uses a 32 bit number for every address. That means there can only be about four billion addresses for every device on the Internet. There are some tricks, such as having every computer on your home network share the same address, sort of like how people in the same house share the same physical mailing address. Yet as more people use computers and as people start connecting to the Internet from cellphones, game consoles, and even household devices like televisions, refrigerators, alarm systems or toasters, we are going to need more than 4 billion addresses.
So, instead of using 32 bits for an Internet address like they did in Version 4, Version 6 now uses 128 bits. To put that in a language a little closer to English, that’s about 340 undecillion. A undecillion is like a million, billion, billion, billion, the sort of number that fascinates my daughter.
Let’s make things a little more complicated. These days, computers often have two different types of addresses. One is a global address and one is a local address. Every computer on my network has a local address. It uses that local address to talk with my router which has a single global address. The router looks at the messages coming in and translates them from the global address to the appropriate local address. This idea of local and global addresses applies to both IPv4 and IPv6.
But, enough of the numbers and the different types of addresses. What does it take to get IPv6 up and running? My laptop is running Windows Vista and already had IPv6 running on it. However, it currently only has local addresses. This meant that if I could figure out how to get the different computers on my network to recognize each other’s IPv6 addresses, I would be in good shape. My desktop is running Windows NT which I don’t believe I can get to run IPv6, so I left that out of the mix. I have a Linux server which supports IPv6. My wife’s desktop runs Windows XP which should support IPv6 as well. Even more interestingly, I connect via a virtual private network (VPN) to another network, and the VPN started using IPv6, which is what piqued my interest in the first place.
So, let’s talk a little bit about the IPv6 addresses. In good old IPv4, addresses were broken into four eight bit numbers separated by periods. There are some special addresses saved to be local addresses. The most common start with 192.168, so if you ever see an IP address that starts with 192.168, that’s why. IPv6 addresses are broken into eight sixteen bit numbers, and these numbers are separated by colons. These sixteen bit number are represented in base sixteen, which means you get letters A through F added into the address. If the address begins with FE80, it is a local address. In addition, if there are a bunch of sixteen bit numbers that are just zero, you collapse all of that to be just two colons, and you can drop the leading zeros.
So, one of my IPv6 addresses is fe80:0000:0000:0000:eceb:8bbd:78c5:0636. A shorter version of that would be fe80::eceb:8bbd:78c5:636. That’s still a pretty long address. Now, to make things more complicated, on Windows, you want to add a percent sign, and an interface number to specify which interface to use, since, in theory, you could have the same address on multiple interfaces. These interfaces might be virtual networks, IP tunnels (more on that later), different network cards, and so on. In my case, the IP address ended up being fe80::eceb:8bbd:78c5:636%35
One of the things that I wanted to do was use an IP address to share files between windows machines. From a command prompt, you can use commands like ‘NET USE’ and ‘NET VIEW’ to find and connect to other computers. With this, you can use an IP address or a computer name. Unfortunately, you cannot use an IPv6 address. As I tried to work on this, I kept getting a system error 123. Essentially, this was because you can’t use colons in your computer names or addresses. You can get around this by putting the IPv6 address and a computer name in your ‘hosts’ file or in your local DNS server if you have one. However, that didn’t get past the issues of sharing files between Windows machines.
The next thing I tried to do was set up a tunnel. The idea is that while my router doesn’t support IPv6, and I’m not sure if you service provider does, I can tunnel the traffic over IPv4 out to a router that is connected to an IPv6 backbone. There are several good tunnel providers. The first one I heard about was SixXS. I signed up and started loading the configuration software on my linux server. However, the application process at SixXS requires review by a human being and it took several hours for them to get back to me, so in the interim, I tried out go6.net. They use a different tool call TSP, which I loaded and managed to get running nicely on my Linux box. In theory, you should be able to use Gateway program they provide for Windows as well. I tried the gateway. It would connect, stay connected for about thirty seconds and then timeout and drop.
It took a little tweaking to get working. I changed the userid and password to the ones I had signed up with go6.net. I changed the server to broker.freenet6.net, changed the host_type to router, the prefix_len to 64, the if_prefix to eth0, to route out to my primary Ethernet card, and it started working. At least after a few starts and stops of the tspc service.
With that, I started testing my IPv6 connections. I went to ipv6.google.com and kame.net. You can only get to ipv6.google.com if you have an IPv6 connection working. Kame.net has a turtle at the top of the screen. If you are connected via IPv6, the turtle dances. Also, going to go6.net displays the IP address you are coming from, whether it is an IPv4 or IPv6 address. So, I’ve verified that IPv6 is working for me, across the TSP tunnel.
I also configured my Vista Laptop and my wife’s XP Desktop to be part of the subnet that I’m getting from TSP. On the Vista Laptop, I managed to get Firefox to communicate nicely with various IPv6 based websites. However, I had some problems with Google Chrome doing the same. I had various problems with Chrome finding the right IPv6 address. When it does work, it works nicely. The XP box, however, had difficulties doing any sort of connection, other than pinging. I also tried IRC from my linux box, over IPv6, and that worked.
So, there are a bunch of things that need to be done before we are ready to move to IPv6. However, if you’re a real geek and want something fun to experiment with, set up an IPv6 tunnel. Try a few different applications to see what you can get to work. If you test IPv6, let me know.
great advice
Submitted by Anonymous on Tue, 10/14/2008 - 12:25. span>A few years back I met one of the ipv6 pioneers in LA, he has been hosting conferences with government/commercial leaders for years to prepare them for the ipv6 leap. The best thing he told me about ipv6 is that the faster connection time would remove lag from the system, making it possible for musicians to record together in real time from different locations. Think of what live events in virtual worlds would be like without lag factor!