IPv6 Multihoming From Windows 8.1 Draft 1

It’s quite exciting topic 🙂

Multihoming is when a host or network is connected to one or more (multiple) Internet Service Provider (ISP) or we can say it has multiple up links.

As by know there are few RFC for multihoming approach such as from  RFC7157. Try to read it for list of scenarios and also techniques. For know I just want to achieve  load balancing over the multiple up-links,  or at least have fail over.

At first I decided to have topology like the diagram below, two ISP connected to a single home router, the host then can connect to this router and will be assigned at least two IPv6 addresses from only one network interface.

multihoming-1

I was able to make the packet can be routed to either OpenWrt1 or OpenWrt2 from OpenWrt based on the source address of the IPv6 but I can’t seem to do that from the Windows host. For know I’m not sure whether the cause was from OS limitation or not, indeed I’m not familiar on Windows routing. Will try later on linux OS.

So I came up with new topology, two routers each connected to a single ISP. The IPv6 connection from is Freenet6.

ipv6-2-ip

What you need to setup this lab environment are:

0. Warning: This guide might works on Windows only. Your IPv6 will be different from this as it is globally unique.

1. VirtualBox – https://www.virtualbox.org ( I use version 4.2.16 r86992)

2.  OpenWrt image – https://dl.dropboxusercontent.com/u/60626137/OpenWrt/openwrt.vdi  (this is VirtualBox image that was converted by me from Barrier Breaker x86 generic. We are going to use it as routers.

I won’t discuss on how to setup VirtualBox here in detail, please follow tutorial from http://wiki.openwrt.org/doc/howto/virtualbox.

Create 2 guest VM of OpenWrt, both have 2 Adapters one is Host Only and the other one bridged to connect to host OS for internet connection.

I highly recommend you to set serial port, later easy to SSH the guest OS from Putty.

virtualbox

To access from Putty, just select Serial and the serial line is Port file path that you have configured Eg: \\.\pipe\VBOX\OpenWrt1

Now we are going to setup any of the image as Router 1,

Try ping 8.8.8.8 to see if there is internet connection, if have then you can proceed.

Configure our br-lan interface to have 192.168.1.1/24 network.

Install gw6c for our global IPv6 address.  Please follow steps from here http://wiki.openwrt.org/doc/howto/ipv6#tsp_tunneling with just a minor difference, don’t start the gw6c process yet.

For this lab I don’t want the router to advertise the IPv6 stateless autoconfiguration to br-lan. This can be optional because later on this post I let the guest Windows’ firewall to block the packet.

 

Save the conf and start the gw6c process by issuing /etc/init.d/gw6c start.

depending on what prefix you receive, mine is 2001:05c0:1101:4b00::1/64. We need to re -route the address and routing table from lo to br-lan interface. Change the IP accordingly.

ping google to see if IPv6 is working.

3.  Now the crucial part, download Windows 8.1 evaluation from Microsoft http://www.microsoft.com/en-us/evalcenter/evaluate-windows-8-1-enterprise.

Install it into VirtualBox, again I won’t tell discuss in details just Google if you don’t get how to do it. It should be fairly easy. Make sure to add 2 network host only adapters.

After installation succeded, let’s configure our network. You may setup IPv4 but I don’t show it here because our target is just multihoming of IPv6. Open Control panel -> Network Sharing Center -> Change Adapter Settings.

windows-8.1-setup-adapter

Renaming the adapter can help identifying which one is connected to which router. Uncheck other boxes except Internet Protocol Version 6 / Version 4. For the interface metric set it 1. The IPv6 address I choose ::10 and the gateway is the IPv6 of Router 1  br-lan interface.

Same goes for Adapter 2.

Okay now verify that we have IPv6 connectivity from Windows 8.1

If ping is working, test ping by difference IP source.

If both pings are positive, it’s mean both IP address can be used to access networks.

You should have at least have fail over, try to determine which adapter is active by tracert.

Shutdown, or make the network interface of the active router down. Ping google again (try twice).

You might wish to disable router advertisement and solicitation for inbound rules.

firewall-router-ads

At best you might get load balancing over the two interface, It works flawlessly for IPv4 I can tell because I use this tool. But for IPv6 still on my test sometimes work.

My test result.

both-adapters

From the screenshot above I can tell that both adapter sending packets.

Packet captured from Wireshark: https://dl.dropboxusercontent.com/u/60626137/OpenWrt/packet_win8_ipv6_2nic.pcapng