Internet Protocol v6 is Reality
On IPv6 addressing and your computer's readiness for it
by Lewis Berman *
For years, the Internet has run on the network-layer protocol IPv4 (Internet Protocol, Version 4). This is the standard that enables network packets to be routed anywhere in the world or, as the case may be, from your home computer to your wireless printer. We have effectively run out of IPv4 addresses, as the Internet is much bigger than anyone dreamed 25 years ago and there are all manner of hand-held and embedded Internet-capable devices. Enter IPv6. The slow transition to IPv6 has begun, with sites such as Facebook and Google providing IPv6 destinations and devices such as Xbox providing implementations. On June 8, 2011, leading internet service providers (ISP's) and web sites participated together in World IPv6 Day "for a successful global-scale trial" of IPv6. You can test your computer's IPv6 connectivity by directing your browser to test-ipv6.com.
Old-style IPv4 addresses are 32 bits in length, allowing in theory about 4 billion possible unique addresses. Each address is expressed as a series of four 8-bit bytes (a.k.a. octets) in the following familiar form:
The first part, often the first two octets, identifies the network, while the remainder identifies the network interface and therefore the computer it belongs to. An IPv6 address is 128 bits long, four times the length of an IPv4 address, allowing [you guess] unique addresses. [Hint: the answer is not 65,536 x 4.] The address is expressed as a sequence of 16 octets:
For convenience, you can skip a sequence of zeroes in the address when you express it, so that
becomes FF01::101. This particular address has a network prefix, FF, that makes it a multicast address, meaning that all devices on the same network link receive and accept the packet. (This prefix expressed in bits is 11111111.) Most IPv6 addresses are global unicast, meaning that packets are addressed to a particular computer or device somewhere on the global network. The prefix FF80 designates packets to be link-local unicast, that is, directed to a specific network interface on the local link, regardless of the local link's global prefix. The old IPv4 loopback address, 127.0.0.1, directing packets to remain within the same device, is 0::1 in IPv6. An IPv6 address may contain an IPv4 address, where the IPv4 address is the last 32 bits of the 128-bit IPv6 address.
Finally, there is the idea of an anycast address. An IPv6 address is assigned to more than one network interface, typically belonging to different servers. A packet sent to an anycast address is routed to the nearest interface with that address, where "nearest" is determined by the routing protocol - for example, the smallest number of hops. Any means that any single router will receive and respond to the the packet. A worldwide organization may employ this scheme, minimizing the round-trip time for packets and distributing packet traffic via a kind of geographic load balancing.
The standard for IPv6 addresses is set forth in RFC4291. An excellent resource page provides descriptions of addressing and many more aspects of IPv6. The topic of IPv6 will be covered in this Spring term's TCP/IP Architecture course, CS 730, Thursday evenings at 5:30 pm in Timonium, starting Jaunary 19th.
Hopefully, your guess as to the possible number of IPv6 addresses was 2^128, or about 3.4x10^38.
* Many thanks to Unallocated Space and Mike Cramer in particular for information and links that contributed to this article. Please check out this unique "hacker space," Mike's series of IPv6 talks in particular.