Connecting to the 6bone with the
Microsoft Research IPv6 Release

The first thing you need is for someone already on the 6bone to setup a tunnel for you. You need to find a contact person for a 6bone site topologically near you, and ask them. The only way I know to do this is by perusing the 6bone registry. See http://www.6bone.net/6bone_hookup.html and ftp://whois.6bone.net/6bone/6bone.db.gz. If you do connect to the 6bone, then you should create the appropriate entries in the 6bone registry to describe your connection. See http://www.6bone.net/RIPE-registry.html.

Once you have a tunnel, there are three things you will know:

  1. The IPv4 address of the 6bone node to which you are connecting.
  2. The IPv4 address of your node, which you are connecting to the 6bone. Your 6bone contact needs to know this, so he can setup the tunnel to you.
  3. The IPv6 address prefix that your 6bone connection has given you.

So to make this concrete, we have a machine connected to the 6bone via NWNET. I am using the following values:

  1. 192.220.249.249 - the IPv4 address of the machine at NWNET.
  2. 131.107.65.121 - the IPv4 address of my 6bone machine here at Microsoft Research.
  3. 3ffe:a00:6::/48 - the address prefix assigned to Microsoft Research by NWNET.

(Note if you tried to use these values, you could set up a tunnel to NWNET, but they wouldn’t have a tunnel back to you and so it wouldn’t work. You need to get your own values from your own 6bone contact.)

From the address prefix, you derive an IPv6 address to assign to your machine. It’s pretty much up to you how you do that, but I like to use the IPv4 address as the interface identifier for tunnels. So continuing the example, my IPv6 address is 3ffe:a00:6::131.107.65.121, which can also be written as 3ffe:a00:6::836b:4179.

Once you have these values, you need to hack the registry to set up a configured tunnel. In every other respect the Microsoft Research IPv6 stack is completely self-configuring, but configured tunnels need manual configuration. And we don’t have a nice GUI way to do it, so you need to use regedt32.

  1. Under HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip6\Parameters, create a key called ConfiguredTunnels.
  2. Under ConfiguredTunnels, create a value called Addresses which is REG_MULTI_SZ and has as value your IPv6 address. For example in my case, 3ffe:a00:6::131.107.65.121. (Yes, you can assign multiple addresses here if you want, that’s why it’s REG_MULTI_SZ instead of REG_SZ.)
  3. Also under ConfiguredTunnels, create a key called 0. Under 0, create a value called V4Address which is REG_SZ and has as value your 6bone connection’s v4 address. In my case, 192.220.249.249.

There are some other options for configured tunnels (see the readme), and you can create more numbered keys to create more configured tunnels, but for a simple hookup to the 6bone this is all you need.

To check that you’ve configured the tunnel correctly, first use the "ipv6 if 2" command. Interface #2 is the pseudo-interface used for configured and automatic tunnels. It should show something like:

Interface 2:
  link-level address: 0.0.0.0
    preferred address 3ffe:a00:6::836b:4179/128, infinite/infinite
    preferred address ::131.107.65.121/96, infinite/infinite
  link MTU 1480 (true link MTU 1480)
  current hop limit 128
  reachable time 0ms (base 0ms)
  retransmission interval 0s
  DAD transmits 0
Then try the "ipv6 rl" command, to show the default router list. Your 6bone connection should be a default router for your machine. It should show something like:
2: :: lifetime 4294967295s
Finally, try pinging other machines on the 6bone. For example, ping6 3ffe:a00:6::836b:4179
ping6 ipv6.research.microsoft.com
The 6bone registry contains the names of other 6bone machines.