#IPv6 on the Nokia #N900 and #Facebook

After a bunch of political blog posts, I’m on a roll of technology blog posts. Perhaps it is just part of my way of decompressing. Anyway, today I am writing about IPv6. IPv6 is Version 6 of the Internet Protocol. Currently, most people use Version 4 of the Internet Protocol.

The way this works is each device on the Internet is assigned a special number. Often these number are represented as four numbers between 0 and 255 and there are special rules about what numbers can be used which way. Essentially this limits the number of devices that can connect to the Internet to around four billion. While four billion might sound like a lot, keep in mind that every year more and more cellphones get connected to the Internet and in 2007 over a billion cellphones were sold. Unless something is done, we will soon run out of internet addresses.

One thing that has been done is to use Network Address Translation, or NAT. Certain Internet Addresses are reserved for special uses. For example, I suspect many people reading this blog post are using the Internet Address 192.168.1.100. That is an address that many people use on their home networks. Then, using NAT, the address gets translated when it goes out to the Internet. For most people, this is sufficient. It does make it more difficult from people on the Internet to access the home computer. In most cases this is a good thing in that it provides an added layer of protection. But, in some cases it isn’t so great.

To make it so that more addresses would be available, people came up with Version 6 of the Internet Protocol. The problem is that it isn’t widely used, or even that widely supported. My internet connection does not natively support IPv6. To get IPv6 connectivity, I run a tunnel to Freenet6. This provides me with a large block of IPv6 addresses I can use on my home network. I’ve been using IPv6 for a while for various tests. People who want to test IPv6 are welcome to visit a test blog I have with IPv6. If it doesn’t come up, you probably don’t have working IPv6.

The Nokia N900 does not support IPv6 out of the box. However, there is an enhanced kernel you can run that does support IPv6. By loading the kernel and restarting my N900, it came up with a valid IPv6 address. By running ifconfig from a command prompt with root privileges I could find the IPv6 address. Using ping6 I could ping to make sure that IPv6 was working. In my case, the first thing I did was ping ::1 which is the default local IPv6 address for any machine. This worked without a hitch. Then, I tried pinging ipv6.google.com. This is a Google server that only runs IPv6 and has worked nicely for me. Unfortunately, after about eight packages were sent, ping6 stopped responding.

I brought up the default browser on the N900, and could not get to any IPv6 sites. However, Google Chromium and Firefox on the N900 both support IPv6 and I could connect to IPv6 based webservers.

I also tested ssh and sshd. From my N900, I could connect to other servers with ssh over IPv6. I could also connect to my N900 with ssh over IPv6 from machines around the Internet.

I also did a little testing of MediaTomb, a uPnP service on my Linux server. Unfortunately, it does not appear to support IPv6. I am curious about whether some of the other uPnP programs I’ve been experimenting with can do anything interesting with IPv6.

Around the same time, I found a very interesting application. IPv6 Over Facebook. It is an example of RFC 5514, IPv6 over Social Networks. I haven’t been able to do anything particularly interesting with it yet, other than some simple tests. However, it serves its goal of being a good educational tool about IPv6.



ipv6, originally uploaded by Aldon.

To complete the process, I have tried to ping the N900 from my Facebook IPv6 address. Given the very high latency of the network, I don’t know yet if the pings will make it.

So, that’s my geek activity of the day. Are you playing with IPv6? On the N900? On Facebook? On other interesting devices? Got other ideas for fun experiments?