The maximum number of IP addresses that can be created using IPv4 is 4,300,000,000. While this number must have seemed very large when IPv4 was developed, it now represents a fraction of the potential human users of the Internet. While the Dynamic Host Configuration Protocol (DHCP) has alleviated the address availability problem, by leasing out addresses dynamically instead of assigning them statically, the “always connected, always available” broadband world will consume these leases in the long-term. In addition, with the introduction of “smart spaces” filled with embedded devices with their own IP address, one human may potentially be associated with dozens if not hundreds of different devices. So, one key requirement for an improved IP is the ability to massively increase the pool of available IP addresses.
A related requirement has arisen by the effective breaking of end-to-end communication through the introduction of Network Address Translation (NAT). Like DHCP, NAT was introduced to alleviate the IP address availability problem, by assigning a router a public routable IP address, while assigning all hosts behind the router a private nonroutable IP address. This reduced the number of public IP addresses required by organizations to connect their hosts to the Internet. NAT also shielded private computers from attacks originating from the Internet, because their IP addresses were nonroutable. However, NAT also made it impossible to perform machine-to-machine authentication, because the router running NAT software essentially acts as a proxy for the client system. Thus, while security initiatives like the IP Security Protocol (IPSec) that require source and destination IP addresses can be used for integrity checking, using NAT can potentially break IPSec. Another requirement for an improved IP is to remove the reliance on NAT for building secure networks.
A more practical problem also exists at the hardware level for IPv4 routers—because routing tables are growing exponentially, as new networks are added to the Internet the physical memory capacity of many routers to hold and process this information is limited. If the routing structure is not simplified, many routers may simply fail to route any packets correctly.
IPv6 attempts to address the core issues of the small IP address space, end-to-end communication, and the unwelcome mass of routing data. IPv6 is based on a 128-bit address space, rather than a 32-bit address space, providing a large pool of addresses for future computer systems and embedded devices to utilize. The 128 bits are divided into 8×16 byte integers expressed using hexadecimal (for example, 1072:3B:BED3:1:0:2:220:B6EB). In addition, end-to-end communications can be preserved by the use of flow labels that can be used to identify the true end parties for a specific real-time communication.
Routing has been dramatically overhauled to ensure that addresses and routes can be more efficiently stored and utilized.
IPv6 has been supported by Sun since Solaris 8 in the form of a dual stack, whereby IPv4 and IPv6 traffic can be supported on a single network. This ensures that new applications requiring the use of IPv6 can coexist alongside legacy IPv4 applications. In the following sections, we will examine each of the key areas of IPv6 and discuss their implementation in Solaris.