This post is the continuation of my crash course on IPv6. You might want to check out part 1 here before continuing.
Auto-Configuration, Local Addresses and Router Advertisements
IPv6 has auto-configuration functionality built that doesn't require a configuration server in the network as in IPv4. When the stack is started, the first thing it does is generate a local IP address that starts with fe80 as described above. Marc Blanchet describes how the 64 bit host part of the IP address are generated from the 48 bit MAC address of the adapter or a random number. I couldn't observe that on my Windows Vista machine, however, they might go for the random number and not the MAC address.
Another new functionality in IPv6 are router advertisements. This way, devices in the network automatically learn of routers in the network and which other networks can be reached via them. A router can also define itself as a default gateway. If a node finds a default gateway it will send all packets not destined for the local network to the default gateway router.
As link local addresses can't be used to communicate with hosts outside the local network, routers also advertise the information required for a host to automatically configure a global IP address that can be used to communicate with hosts on the other side of this router. As a consequence, interfaces of a host configured for IPv6 usually have at least two IP addresses: A link local address and a a global unicast address. This is different to IPv4 where each interface usually has only one IP address. A side note: While a single IP address per interface is the default in IPv4 it's still possible to configure several IP addresses on an interface with different subnet masks and gateways. This, however it the exception rather than the norm.
Since subnets have 2^64 addressable hosts, routing on layer 3 in branch networks such as companies is no longer necessary. In practice, however, some logical and physical separation on layer 3 might be desired. For this, local IP addresses can be on-net and off-net. In case a local address is off-net a node sends packets to a bridge device.
One thing that is not auto-configured is the DNS (Domain Name System) server's IP address. This server is required to translate a domain name (e.g. www.wirelessmoves.com) into an IP address. That's a pity because in practice this means that auto-configuration is incomplete and the DNS server's IP address has to be acquired by some other means, typically via DHCP. More on that in the next post.
There we go, this is the end of part 2, more coming up in the next post.
A good web based tutorial with audio and graphics is funded by the EU and available here: http://www.6deploy.eu/index.php?page=e-learning
After implementing IPv6, the next question is how can v6 and v4 co-exist ?
Note that v4-only applications (and v4 websites, etc) will keep running for a long time in the future, while v6 is the only way to solve address shortage and handle mobility properly (among many other v6 features).
Hence my pointer to Marc’s book section 16.4 and the gogoNET social network; both address these important v4/v6 co-existence and transition issues quite well.
One way to get IPv6 with a static v6 address running on a PC uses the gogo6 client demo on the Freenet6 IPv6 global network. The same gogo6 PC client has been ported to mobile terminals, and it uses tunnelling of v6 packets inside v4 to traverse existing v4 networks along the way.
Download the free PC v6 client from http://gogoware.gogo6.com/4105/about.asp
My ISP here in Paris (Free) actually provides IPv6 in parallel to IPv4. Yesterday, I installed DD-WRT on my WiFi router that is connected to the Freebox DSL modem. I then configured it to bridge all IPv6 traffic directly (bypassing all NAT and router) to the local LAN and WiFi. Suprisingly, the Macbook immediately “learned” it had an IPv6 address, and further connections to google in my web browser were automatically using IPv6 – of course most other sites are still v4, but I find the “parallel existance” works seamlessly and completely invisible to end users. On Windows XP I had to manually enable v6 and then it worked fine as well.