In the networking field, things change so very quickly that it is hard to keep up. Most notably, we can point to the current IPv4 addressing issues we are facing on the internet today. The current IPv4 addressing model has served us well, but when it was initially being developed 40 or so years ago, none of the researchers could have possibly imagined a future where so many individuals, organizations, and devices would require an IP Address on a daily, almost hourly, basis. Thus, we hit the first of the largest hurdles in internetworking in the history of the technology: 4,294,967,296 unique addresses are just not enough.
This situation was compounded by making poor decisions in issuing the address in the first place, and by the fact that many scopes of these addresses are or have been reserved for private or "well known" use. This change was never expected. The industry, relying on short term solutions has managed to delay the inevitable, with tools like Network Address Translation and Variable Length Subnet Masks (in the form of Classless Interdomain Routing), but the end of the road is coming. We need a permanent solution. We have a permanent solution: IPv6.
How to Identify an IPv6 Address
The IPv6 protocol stack changes the rules. Specifically, it raises the number of total issuable IP Address to 340,282,366,920,938,463,463,374,607,431,768,211,456. This is accomplished by utilizing a 128-bit addressing scheme. This is not meant to imply that changing the total number of available addresses to an astonishingly huge number is the only improvement IPv6 brings us, but other improvements are not part of the scope of this discussion. We will initially focus on how these massive numbers are formatted and simplified.
IPv4 relies on a dotted-decimal notation, where four blocks of 8-bits are represented with their decimal equivalent divided by periods, IPv6 addresses look much different. An IPv6 address is represented by 16 individual 16-bit blocks represented by a 4-digit hexadecimal number separated by colons. This format is referred to as a "colon-hexadecimal" format rather than "dotted-decimal." The colon-hexadecimal format looks like this:
This is a large number to remember or configure, but IPv6 has some tricks that can make things simpler.
- Leading Zero Suppression Not all zeros can be removed but "leading" or "insignificant" zeros can be. This means that each 16-bit boundary must have at least one numeric placeholder:
- Zero CompressionAny contiguous sequence of 16-bit blocks with a value of zero can be "compressed" to "::". The double-colon represents that this Compress Method has been employed. It is vital to note that this process can only be used once in any given address. This prevents the address from becoming ambiguous:
These two methods of address simplification result in addresses that are more manageable. In the example provided, we have gone from 32 numbers with colons to 10 numbers separated by colons.
Types of IPv6 Addresses
The next difference between IPv4 and IPv6 is the address types. IPv6 addresses fall into several categories to include:
- Unicast IPv6 addresses are
used to specify a single interface.
Data packets sent to a unicast
destination will travel to the
destination host via a direct
line of communication.
- ::/128 Unspecified Address tells us that an application is listening for incoming connections on all available interfaces.
- ::/0 Default Route unicast route address that corresponds to 0.0.0.0/0 in IPv4
- ::1/128 Local Address unicast local host address that corresponds to 127.0.0.1/32
- FE80::/10 Local AddressLink Local prefix that is only valid on a unique single link
- Multicast IPv6 addresses are used to send IPv6 messages to a group of nodes rather than to every node on broadcast segment or to just one node via unicast. The prefix used for IPv6 addresses is FF00::/8.
- FF01::1All nodes (interface-local)
- FF02::1All nodes (link-local)
- FF02::9RIP routers (link-local)
- FF02::A EIGRP routers (link-local)
- Anycast IPv6 addresses are used to cover the middle ground between unicast addresses and multicast addresses. Anycast will deliver messages to any one node in a multicast group.
Note that IPv6 does not implement broadcast addressing. The typical functions we had with broadcast are now part of the IPv6 Multicast all-nodes link-local multicast group FF02::1.
IPv6 Address Auto-configuration
A highly useful aspect of IPv6 is its ability to automatically configure itself without the use of a Stateful configuration protocol, like Dynamic Host Configuration Protocol for IPv6 (DHCPv6). By default, an IPv6 host can configure a link-local address for each interface. By using router discovery, a host can also determine the addresses of routers, additional addresses, and other configuration parameters. Auto-configured addresses exist in one or more of the following states:
- Tentative signifies that the address in the process of being verified as unique. This verification takes place during the Duplicate Address Detection (DAD) process.
- Preferred signifies that uniqueness has been verified. A node can send and receive unicast traffic to and from a preferred address.
- Deprecated signifies an address is valid, but it is not recommended for new communication. Existing communication sessions can continue to use deprecated addresses. This node can send and receive unicast traffic to and from deprecated addresses.
- Valid signifies an address that can be used to send and receive traffic. This state covers both deprecated and preferred states.
- Invalid signifies an address that cannot send or receive unicast traffic. An address enters the invalid state after the 'valid lifetime expires'. The valid lifetime value is advertised in the Router Advertisement Message.
Auto-configuration is often used to support network "renumbering." Under IPv6, networks can be renumbered by having routers specify an expiration interval for network prefixes when auto-configuration is configured. Later, they can send a new prefix to tell devices to regenerate their IPv6 addresses. Devices can actually maintain the old “deprecated” address for a while and then move over to the new address, thus allowing the network to continue to operate during the renumbering process.
Duplicate Address Detection
When we discussed IPv6 address auto-configuration, we mentioned that the assignment of a unicast IPv6 address to an interface involves an internal test for the uniqueness of that address. This is accomplished by using both Neighbor Solicitation and Neighbor Advertisement messages. We mentioned that during the process of establishing uniqueness an address will be in the tentative state.
The node obtaining the IPv6 address will join the solicited-node multicast address for the tentative address and then sends neighbor solicitations, while using the tentative address as the target address and the unspecified address (::/128) as source address. The node will also join the all-hosts multicast address (FF02::1); this is so that it will be able to receive any Neighbor Advertisements.
If a node receives a neighbor solicitation with its own tentative address as the target address, then that address is not considered unique. The same is true if the node receives a neighbor advertisement with its tentative address as the source of the advertisement. Only after having successfully establishing that an address is unique may it be assigned and used by an interface. At this point the address state will transition from Tentative to Valid.
IPv6 was initially developed in the mid 1990's. This means that it has existed for almost two decades. So why hasn't it been widely implemented across the globe? Organizations have been slow to accept IPv6 because many of the short term solutions that have been created (like NAT) are so incredibly efficient and cost effective compared to transitioning to IPv6 that the favored position has been not to adopt the technology. However, change is the one universal constant, and when it comes to networking technology, every new device and operating system that has been released in the last decade supports IPv6 and makes the case to transition more appetizing. And now, a growing number of network engineers are realizing that the advantages of IPv6 are beginning to outweigh the difficulties and cost of making the leap from IPv4.