3 minute read

IPv6 is an upgrade to the IPv4 protocol, designed to solve address exhaustion.

Its development began in December 1998 when Steve Deering and Robert Hinden, employees of Cisco and Nokia published a formal specification of the protocol.

Designed by Steve Deering of Xerox PARC IPv6 is intended to replace IPv4, whose limit on the number of allowable network addresses is beginning to restrict the growth of the Internet and its use. The new standard seeks to improve the service globally; for example, providing future phone cells and mobile devices with their own permanent addresses.

IPv4 allows 4 294 967 296 (2^32) addresses. In 2010, less than 10% of IPs remained unassigned. In the week of February 3, 2011, the IANA (International Internet Agency for Assigned Numbers) released the latest block of available addresses (33 million) to the organization in charge of assigning IPs in Asia, a market that is booming and will soon consume them all.

IPv6 supports 340 282 366 920 938 463 463 374 607 431 768 211 456 (2^128 or 340 sextillion addresses), about 6.7 × 1017 (670 trillion) of addresses per square millimeter of the surface of the Earth.

Changes and new features

Stateless Address Autoconfiguration (SLAAC)

IPv6 nodes can configure themselves automatically when connected to an IPv6 routed network using ICMPv6 router discovery messages. The first time they are connected to a network, the node sends a link-local “router request” (RS: Router Solicitation) using multicast requesting the configuration parameters; and if the routers are configured for this, they will respond to this request with a “router advertisement” (RA: router advertisement) that contains the network layer configuration parameters.

If stateless address autoconfiguration is not suitable for an application, either the Dynamic Host Configuration Protocol for IPv6 (DHCPv6) can be used or the nodes can be configured statically.

Larger address space

The main advantage of IPv6 over IPv4 is its larger address space. The size of an IPv6 address is 128 bits, compared to 32 bits in IPv4. The address space therefore has 2^128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 addresses (approximately 3.4×10^38). Some blocks of this space and some specific addresses are reserved for special uses.

While this address space is very large, it was not the intent of the designers of IPv6 to assure geographical saturation with usable addresses. Rather, the longer addresses simplify allocation of addresses, enable efficient route aggregation, and allow implementation of special addressing features. In IPv4, complex Classless Inter-Domain Routing (CIDR) methods were developed to make the best use of the small address space. The standard size of a subnet in IPv6 is 2^64 addresses, about four billion times the size of the entire IPv4 address space. Thus, actual address space utilization will be small in IPv6, but network management and routing efficiency are improved by the large subnet space and hierarchical route aggregation.

Simplified processing by routers

The packet header in IPv6 is simpler than the IPv4 header. Many rarely used fields have been moved to optional header extensions.

With the simplified IPv6 packet header the process of packet forwarding by routers has been simplified. Although IPv6 packet headers are at least twice the size of IPv4 packet headers, processing of packets that only contain the base IPv6 header by routers may, in some case, be more efficient, because less processing is required in routers due to the headers being aligned to match common word sizes.

However, many devices implement IPv6 support in software (as opposed to hardware), thus resulting in very bad packet processing performance. Additionally, for many implementations, the use of Extension Headers causes packets to be processed by a router’s CPU, leading to poor performance or even security issues.

Moreover, an IPv6 header does not include a checksum. The IPv4 header checksum is calculated for the IPv4 header, and has to be recalculated by routers every time the time to live (called hop limit in the IPv6 protocol) is reduced by one.

The absence of a checksum in the IPv6 header furthers the end-to-end principle of Internet design, which envisioned that most processing in the network occurs in the leaf nodes.

Integrity protection for the data that is encapsulated in the IPv6 packet is assumed to be assured by both the link layer or error detection in higher-layer protocols, namely the Transmission Control Protocol (TCP) and the User Datagram Protocol (UDP) on the transport layer. Thus, while IPv4 allowed UDP datagram headers to have no checksum (indicated by 0 in the header field), IPv6 requires a checksum in UDP headers.

IPv6 routers do not perform IP fragmentation. IPv6 hosts are required to either perform path MTU discovery, perform end-to-end fragmentation, or to send packets no larger than the default maximum transmission unit (MTU), which is 1280 octets.