IPv6 Frequently Asked Questions

General

1. How do I create an IPv6 version of the tool? 2. Which IPv6 stacks are supported? 3. What does "IP_ADD_MEMBERSHIP: No such device" mean? 4. Why does RAT say "Could not initialize Mbus: Is multicast enabled?" 5. Why does RAT/VIC complain: "setsockopt IP_ADD_MEMBERSHIP: Can't assign requested address"

Windows

1. The MBone tools don't work on Windows 2. The MBone tools don't receive multicast ipv6 on Windows XP 3. Why do I get an abort message when I quit the tools when using Windows 2000? 4. I built the tools on Windows 2000 but they give a setsockopt error on startup, whats wrong?


General

1. How do I create an IPv6 version of the tool?

In some cases there are ipv6 binaries of the tools, but in general you will need rebuild the tools from source (either from the source provided, or from the CVS - for the latest versions).

UNIX: For each part of a package (the common library and the actual tool, not tcl/tk) you will need to run:

  ./configure --enable-ipv6

(For BSD Kame replace it with --enable-kame-ipv6) and then proceed with the make.

WIN: Select the appropriate build configuration and build.

2. Which IPv6 stacks are supported?

The following IPv6 stacks are supported:

  1.  Microsoft IPv6 Implementation for XP/2003
  2.  Microsoft IPv6 Technical Preview for Windows 2000*
  3.  Microsoft Research IPv6 Implementation (MSRIPv6) version4 for NT4
  4. Thomson CSF Musica Stack (not publicly available)
  5.  IPv6 for Linux
  6.  IPv6 for Solaris 8
  7.  Kame Project for FreeBSD

*help on building the tools with Windows 2000 is contained elsewhere in this FAQ

1. What does "IP_ADD_MEMBERSHIP: No such device" mean?

It means that the tool is trying to use multicast but the network interface doesn't support it There are two likely causes:

  • Your machine doesn't have multicast support enabled. For example, on Linux and FreeBSD it is possible to compile a kernel which doesn't support multicast.
  • You don't have a route for multicast traffic. Some systems don't add this by default, and you need to run.
  route add -net 224.0.0.0 netmask 224.0.0.0 eth0

(or similar). If you wish to use RAT in unicast mode only, it is possible to add the multicast route on the loopback interface.

2. Why does RAT say "Could not initialize Mbus: Is multicast enabled?"

See previous question?.

3. Why does RAT/VIC complain: "setsockopt IP_ADD_MEMBERSHIP: Can't assign requested address"

On machines with no IPv4 interface or no IPv4 multicast route the Mbus fails to start. This is because the default mbus address is a multicast IPv4 address: 224.255.222.239 port 47000. However it is simply cured by editing the mbus init file in $HOME/.mbus and altering the following line from: ADDRESS=224.255.222.239 to: ADDRESS=ff01::1 Restart the applications and they will now use the node local scoped IPv6 address ff01::1 again using the port 47000.

Windows

1. The MBone tools don't work on Windows

You should be able to ping your own host without using the whole address name, ie

  ping6 machinename

If you cannot, then make sure you're domain is set correctly by checking that the following key in the registry is set:

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\domain

You will also need your hostname in the DNS or in the host file (\windows\system32\drivers\etc\hosts): e.g. add a line

  IPv6_address_of_host	your.hostname.domain

You can obtain your ipv6 address using  netsh:

  netsh interface ipv6 show address

or

  ipv6 -v if

It will generate a load of output - scroll back and locate the interface you are using (e.g it may be "local area connection" if you're running native) and put the global address associated with it in your hosts file.

2. The MBone tools can't receive multicast IPv6 on Windows XP

  1. You need to install Service Pack 1 (SP1).
  2. Also note that if you've tested Microsoft's  threedegrees P2P ipv6 app (which includes the Windows XP Peer-to-Peer Update (Q810007))- You will need to disable the IPv6 Internet Connection Firewall that is installed default with Q810007. This may be done on per port/protocol basis:
  netsh firewall set adapter "Your_interface_name" port port#=enable protocol=udp

Where you replace Your_interface_name with the name of your adapter (see previous question), and replace port# with the actual port number. If you want RTP and RTCP you you'll have issue two enable commands - one for the data port and one for the RTCP port. A simpler approach is to totally disable the ICF on the particular interface you're using:

  netsh firewall set adapter "Your_interface_name" filtering=disable

3. Why do I get an abort message when I quit the tools when using Windows 2000?

The abort messages relates to the failure of the setsockopt function when applying the IPV6_DROP_MEMBERSHIP option to the socket. We have been unable to get this to work on Windows 2000. The offical Microsoft line is that the IPV6 options are not supported on Windows 2000. For more information see the following MSDN documentation:  Platform SDK: Windows Sockets 2 - Socket Options

4. I built the tools on Windows 2000 but they give a setsockopt error on startup, whats wrong?

The problem relates to the incorrect size of the ipv6_mreq structure, passed as the 3rd parameter in setsockopt(IPV6_ADD_MEMBERSHIP,...) . The header files distributed in the MSDN Technology Preview define ipv6_mreq so that it is 2 byte aligned, while wship6.dll and tcpip6.sys were compiled with header files that defined mreq_size as 8 byte aligned. This makes a difference in the size of ipv6_mreq because the 4 byte ipv6mr_interface field (u_int) is allocated 8 bytes and therefore the size of ipv6_mreq increases from 20 to 24 bytes. The problem can be fixed by forcing ipv6_mreq in tpipv6.h to 8 byte alignment. This problem is specific to Windows 2000 and is not evident in Windows XP.