Internet Protocol version 6 (IPv6) is the most recent version of the Internet Protocol (IP), the communications protocol that provides an identification and location system for computers on networks and routes traffic across the Internet. IPv6 was developed by the Internet Engineering Task Force (IETF) to deal with the long-anticipated problem of IPv4 address exhaustion, and is intended to replace IPv4. In December 1998, IPv6 became a Draft Standard for the IETF, which subsequently ratified it as an Internet Standard on 14 July 2017.
Devices on the Internet are assigned a unique IP address for identification and location definition. With the rapid growth of the Internet after commercialization in the 1990s, it became evident that far more addresses would be needed to connect devices than the IPv4 address space had available. By 1998, the IETF had formalized the successor protocol. IPv6 uses 128-bit addresses, theoretically allowing 2128, or approximately 3.4×1038 total addresses. The actual number is slightly smaller, as multiple ranges are reserved for special use or completely excluded from use. The two protocols are not designed to be interoperable, and thus direct communication between them is impossible, complicating the move to IPv6. However, several transition mechanisms have been devised to rectify this.
IPv6 provides other technical benefits in addition to a larger addressing space. In particular, it permits hierarchical address allocation methods that facilitate route aggregation across the Internet, and thus limit the expansion of routing tables. The use of multicast addressing is expanded and simplified, and provides additional optimization for the delivery of services. Device mobility, security, and configuration aspects have been considered in the design of the protocol.
IPv6 addresses are represented as eight groups of four hexadecimal digits each, separated by colons. The full representation may be shortened; for example, 2001:0db8:0000:0000:0000:8a2e:0370:7334 becomes 2001:db8::8a2e:370:7334.
- 1 IPv6 Fundamentals
- 2 IPv4 Address representation and interpretation
- 3 IPv6 Address representation and interpretation
- 4 IPv6 Address Types
- 5 Unicast Global Addresses
- 6 Unicast site-local addresses (FC80::/48)
- 7 Unicast link-local addresses (FE80::/64)
- 8 Neighbor Discovery Protocol and Dynamic Address Assignment
Explanation of the IPv6 address space and other fundamentals.
The main difference of IPv6 over IPv4 is the extended address space, that is roughly 8*10^28 times larger. The reason for address space extension is caused by the IPv4 address exhaustion that became reality in 2011 when IANA allocated the last block of addresses to a regional address authority.
Every endpoint on the Internet requires a unique IP address to realize point-to-point connections. As of 2014, already more than 10*10^9 devices are connected to the Internet. To bypass the fact that there are not enough IPv4 addresses available, technologies like Network Address Translation (NAT) are used. NAT connects full TCP/IP networks using a single registered IPv4 address to the Internet.
IPv4 Address representation and interpretation
An IPv4 address is composed of 4 decimal byte values in the so called dot-decimal notation. There are three IPv4 address types (the examples assume a netmask of 255.255.0.0):
Network address: The least significant bytes (depending on the netmask) are 0. Typically not used in real communication. It is used to describe a network address range.
Broadcast address is used to communicate with all hosts on a network. It can be obtained by performing a bitwise OR operation between the bit complement of the subnet mask and the host's IP address.
Host address: any address between 10.41.0.1 and 10.41.255.254. Host addresses identify a specific host on an IP network and have to be unique.
IPv6 Address representation and interpretation
An IPv6 address consists of 16 bytes organized in blocks of two bytes separated by : The most significant change in representation is the hexadecimal notation. Example:
IPv6 addresses often contain fields of zeros. RFC5952 allows two methods to compress the textual representation to increase readability. Zero Compression replaces an arbitrary number of consecutive 16-bit groups of zeros with an additional:
Leading zeros within a 16-bit field can be omitted:
IPv6 Address Types
In the following section you will find a list of the various address types used in IPv6. The netIF_SetOption function allows you to change the unicast link-local address and a static address (which will typically a unicast global address).
Unicast Global Addresses
IPv6 unicast global addresses are similar to IPv4 public addresses. They are globally routable. The structure of an IPv6 unicast global address creates a three-level topology of public and site information and the local host interface.
Unicast site-local addresses (FC80::/48)
IPv6 unicast site-local addresses are similar to IPv4 private addresses. The scope of a site-local address is the intercommunication between subnets on an organization's site.
Addresses in the link-local prefix are only valid and unique on a single link. Within this prefix only one subnet is allocated (54 zero bits), yielding an effective format of fe80::/64. The least significant 64 bits are usually chosen as the interface hardware address constructed in modified EUI-64 format. It can be derived from an Ethernet MAC address.
Unicast loopback address:
Neighbor Discovery Protocol and Dynamic Address Assignment
The Neighbor Discovery Protocol (NDP) mainly replaces ARP known from IPv4. The main advantage is that it operates on the ICMP layer and is less dependent on the physical layer.
Rather than using e.g. MAC addresses, NDP uses the link local address. This also allows endpoints to keep router associations even if the global prefix of the network is changed. Link detection is also handled by NDP detecting full or partial link failures or routing failures.
Stateless Address Autoconfiguration (SLAAC) is part of NDP and mostly replaces dynamic address assignment technologies from IPv4 networks like DHCP and Auto-IP. SLAAC assigns the link-local address to an interface and uses this to assign a global IP. Typically this is a unicast address type. Main difference to DHCP is that after a router solicitation (a broadcast on the local network to discover available routers), SLAAC self-assigns an IP address using modified EUI-64. The Duplicate Address Detection tests this new address for duplicates on the network. DHCPv6 can replicate the stateful address assignment trough a single authority on the network to replace or extend SLAAC. It is similar to DHCP on IPv4 networks also advertising additional information like time servers, name servers and bootfile servers which would be missing using SLAAC only.