
The Need
The future growth of the Internet rests upon the ability to address
thousands of billions of devices. For example, power companies wish to
be able to poll their power meters remotely, eliminating the need to
send out a meter reader. The cable TV industry wants to connect
millions of households to the Internet via set-top devices. IP version
4 doesn't have enough addressing to handle all these applications, so
several years ago, the IETF started working on a replacement version of
IP that would scale to these volumes. The result is IP Version 6.
IPv6 uses a 128-bit address, in contrast to the 32-bit address of IPv4. Even with the current numbering densities, there will be enough addresses to sustain the Internet's growth for the forseeable future.
But there is another problem that is plaguing us today: the explosion of the Internet routing tables. Three years ago, the Internet routing table consisted of about 17,000 routes. Today, that number is over 45,000 routes. The Internet backbone routers are running out of memory to hold routing tables. IPv6 addresses this problem by using an addressing hierarchy that allows Internet service providers to aggregate many addresses into a single routing table entry. Along with this change will come a new routing protocol: the InterDomain Routing Protocol. A new protocol is needed because the current protocol, BGP-4 is tightly tied to the IPv4 addressing structure. IDRP is capable of handling multiple address formats and is a better choice for the future.
Development
IPv6 has been in development over the past 3-4 years. The resulting
design fulfills the needs of the Internet while retaining
interoperability with IPv4. The two header formats, shown in Figures 1
and 2, show the heritage and how IPv6 has been simplified. The major
change in IPv6 is that the format is fixed. This makes possible very
fast processing of the packets in routers, even to the extent of building simple silicon chips that do the processing.
| The IPv4 Header | Figure 1 |
| The IPv6 Header | Figure 2 |
IPv6 includes a version number, similar in function to IPv4's. The new fields of "Priority" and "Flow" support real-time packet streams, typically used for audio and video conferencing. The "Payload Length" indicates the size of the data contained within the IP datagram.
The "Next Header" field is similar to IPv4's protocol type field. It contains a code that indicates what header follows the IP header. Normally this would be a value of either 6 (TCP) or 17 (UDP). However, it is possible to interleave 'extension headers' between the IP header and the real payload. The extension headers implement many of the options found in IPv4.
The "Hop Count" value is the number of hops that the packet can make within the network before it must be discarded. As with IPv4, it starts at a given value and is decremented by each router in the path. If it reaches zero, the packet is discarded and an ICMP message is returned to the source system.
Finally, the IPv6 header includes the "Source Address" and "Destination Address", each of which is 128 bits.
The other fields of IPv4 either were not considered important because they hadn't been used effectively in real practice, or they have been implemented as optional "extension headers".
IPv6 Addresses
IPv6 addresses are written as eight sets of four hexadecimal digits:
FEDC:BA98:0000:0000:0000:0000.7654.3210
To make writing the addresses easier, groups of zeros that appear in the address may be replaced with double colons:
FEDC:BA98::7654:3210
Only one group of contiguous zeros may be condensed within an address. This large address space is divided into the following categories:
| Allocation | Binary Prefix |
| Reserved | 0000 0000 |
| Unassigned | 0000 0001 |
| Reserved for NSAP | 0000 001 |
| Reserved for IPX | 0000 010 |
| Unassigned | 0000 011 |
| Unassigned | 0000 1 |
| Unassigned | 0001 |
| Unassigned | 001 |
| Provider based unicast | 010 |
| Unassigned | 011 |
| Geographic-based unicast | 100 |
| Unassigned | 101 |
| Unassigned | 1111 1110 0 |
| Link local use | 1111 1110 10 |
| Site local use | 1111 1110 11 |
| Multicast | 1111 1111 |
Adding up the unassigned portions of the address space shows that we have over 70 percent of the address space available for future use, so there is room to grow.
IPv4 addresses are supported by appending the 32-bit IPv4 address to the prefix 0000:0000:0000:0000:0000:0000. To make it easier to read IPv4 addresses, it is acceptable to mix the IPv6 address format with the IPv4 dotted-quad format, so 10.31.2.5 would be represented as either:
0:0:0:0:0:0:10.31.2.5
or:
::10.31.2.5
There are two other addresses that are of interest. The Unspecified address, 0:0:0:0:0:0:0:0 (compressed to double colons (::)) is used by a station that has not yet learned, or been configured with, a regular address. The Loopback address is 0:0:0:0:0:0:0:1 (also written ::1).
Interoperability with IPv4
IPv4 stations can communicate with IPv6 stations via two mechanisms.
The first is via routers that implement both protocol stacks and
perform address conversions between the two domains. The second method
relies on the IPv6 workstation to perform the conversion through use of
two protocol stacks.
As the Internet transitions to IPv6, we'll see the IPv6 nodes using IP tunnels to connect islands of IPv6 nodes. These tunnels will carry IPv6 datagrams within an IPv4 tunnel. This allows a controlled migration to IPv6 addresses without having to have a "flag day" conversion.
Summary
IPv6 is a good step in the right direction. Extending the address space
will facilitate the construction of very large networks and open the
use of IP to many new applications.