Get Ready to Run IPv6 (Whether You Want to or Not)
Lately, I have been spending a lot of time with the Windows Vista beta, trying to learn all about its inner workings and about all of the new features. One of the neatest features introduced in Windows Vista is a new peer networking feature. The basic idea behind this feature is that when you are traveling, you can collaborate with those who you are meeting with by forming an ad-hoc wireless network, and then using special collaboration tools to securely share information over that ad-hoc network. The technology isn’t just limited to wireless networks though. Even in a corporate environment in which all of the computers are a part of a domain, users will be able to create special workgroups that allow them to collaborate with other members of their group. The way that Microsoft has implemented this new technology is something to see, and I eventually hope to be able to write a full length article on the subject.
In the process of researching this new peer to peer networking technology, I made a rather horrifying discovery. The new Windows peer networking technology requires IPv6. I have personally tried to use this technology with IPv6 disabled and it just doesn’t work. I have also heard unsubstantiated rumors that IPv6 may become a requirement for some other pieces of Windows Vista’s networking architecture.
What is IPv6?
Before I get into all of the nitty gritty details regarding why IPv6 is a requirement, I want to talk briefly about what IPv6 is for the benefit of those who may not have been exposed to it before. As you probably know, the Internet is based on the IP protocol. The current implementation of the IP protocol is version 4 (sometimes referred to as IPv4).
IPv4 works remarkably well, but it does have some major shortcomings. For starters, IPv4 was invented in the 1970s. At that time, nobody ever anticipated that the protocol would be required to do some of the things that it is being used for today (such as supporting a global network of millions of computers and transporting everything from data, to voice, to video). There is also no security built into the IPv4 protocol, so security has been retrofitted through add on protocols such as IPSec.
The main problem with the IPv4 protocol however is that it supports a limited number of IP addresses. Years before the Internet ever became a mainstream technology, the world was already running out of IP addresses. Network Address Translation (NAT) was invented to help circumvent the IP address shortage. This is a technology in which computers on a private network use private addresses to communicate with each other inside the network, but share one public IP address for all Internet communications. In case you are wondering, the IPv4 protocol supports a total of about 4.3 billion IP addresses. That sounds like a lot, but remember that there are 6.5 billion people in the world, and many of them have more than one device (a computer at work, a computer at home, an Internet enabled cell phone, etc.). IPv6 by comparison supports roughly 50 octillion IP addresses.
Why is IPv6 Required?
OK, obviously, IPv6 is a good idea, but you might wonder why some parts of Windows Vista require it when IPv4 is still alive and well. There are several reasons for the requirement. Some of the reasons are political and others are technical.
As for the political reasons, Microsoft has been pushing for companies to adopt IPv6 since Windows 2000. Obviously, IPv6 hasn’t taken off yet (at least not in the United States), although it has been available for many years. There are those however that believe the transition is long over due. For example, the United States federal government has mandated that all federal agencies must make the transition to IPv6 by June of 2008. In an effort to make the transition easier for the government and for others, Microsoft has enabled IPv6 by default in Windows Vista. Since most people expect IPv6 to be the protocol of the future, Microsoft has based at least some of Vista’s new networking features on this protocol.
I mentioned that there are some technical reasons driving the requirement for some of Vista’s networking components to use IPv6. The new peer networking component is a perfect example of this. As I explained earlier, one of the main reasons that Microsoft has created Vista’s peer networking feature is to allow people to create ad-hoc wireless networks through which they can collaborate on projects. This might sound simple at first, but there are some serious challenges associated with ad-hoc networks.
One of the biggest challenges is name resolution. Typically, when you access a resource on a corporate network or on the Internet, you specify the resource by using some sort of name. On the Internet, this name is often a Universal Resource Locater (URL). On a corporate network, you might use a mapped network drive or a universal naming convention. The problem is that all of the methods that I just described typically make use of DNS for host name resolution. If you form an ad-hoc network with five other people at a conference though, the only network resources that you have at your disposal are what ever happens to be running on each person’s laptop. Even if one of the people in the group happened to have the DNS services running on a laptop, the other machines are not configured to automatically use the available DNS server. Unless the people who are collaborating happen to be IT professionals, there is a good chance that no one in the group would know how to perform the necessary configuration any way.
When Microsoft created Vista’s peer networking component, one of their goals was to make it easy for anyone to transition between corporate networks and ad-hoc networks. As such, the development team worked under the assumption that people other than IT professionals would want to use the peer networking feature and that external resources such as DNS servers and DHCP servers would not be available.
This is where IPv6 comes into play. IPv6 supports discovery of services in a way that makes ad-hoc collaboration possible. For example, let’s assume that a group of people want to form an ad-hoc network and communicate using the collaboration services. As the network is formed, one person in the group launches an application that is designed to integrate with the collaboration services. As soon as the collaboration services start, they transmit a multicast message to everyone on the ad-hoc network notifying them of the service’s availability.
On the flip side though, clients in the group can also use a discovery protocol to locate services that have been made available to the group. In this situation, a client sends a probe message in multicast format across the ad-hoc network. This probe may indicate a preferred target service or a preferred scope. If a host is running a target service that matches the probe, then it sends a probe response directly to the client who initiated the probe. If the client needs to know the name of the target service, they can also send a multicast resolution request across the ad-hoc network.
As you can see, the functionality that I described above is very different from anything that is commonly used today. Microsoft has taken advantage of the capabilities of IPv6 to create such functionality.
How Difficult is IPv6 to Setup?
The first time that you take a good, hard look at implementing IPv6, it will probably seem like a nightmare scenario. After all, most current DHCP servers are not designed to automatically distribute IPv6 addresses. Likewise, your routers may lack the capability to forward IPv6 packets. Even if you choose the configure IPv6 manually, the address format is nothing like what you are probably used to.
There is a bit of good news though. In Vista, IPv6 is self configuring (at least to some extent). Microsoft has designed Windows Vista so that if you do not manually assign the machine an IPv6 address and the machine does not acquire an IPv6 address from a DHCP server, a unique IPv6 address will be derived from the machine’s unique signature. This automatically derived IP address probably isn’t suitable for all purposes, but it will suffice for communications across ad-hoc networks.
One Last Thing
In the section above, I mentioned potential hardware incompatibilities as one of the potential obstacles to IPv6 adoption. It’s beyond the scope of this article, but I wanted to at least mention that Microsoft offers a technology called Teredo. Teredo helps with the transition from IPv4 to IPv6 by allowing IPv6 packets to be encapsulated in IPv4 UDP packets. This allows IPv6 traffic to flow across NAT routers and things like that.
Although many companies may be slow to adopt Vista, I believe that an eventual shift to IPv6 is inevitable. There is potentially a steep learning curve in store for anyone who decides to perform a complete transition from IPv4 to IPv6. However, Microsoft has designed Vista so that IPv6 can co-exist with IPv4 indefinitely.