Get started with IPv6 addressing

IPv6, which stands for Internet Protocol Version 6, is the most recent version of the Internet Protocol (IP), the set of rules that dictates how data is sent across the internet. Developed by the Internet Engineering Task Force (IETF) to replace IPv4, the previous version, IPv6 addresses the limitations of IPv4, primarily by providing a significantly larger address space.

Expanded Address Space

IPv4 uses a 32-bit addressing scheme, which allows for about 4.3 billion unique addresses. This was sufficient in the early days of the internet but became inadequate due to the explosive growth of the internet and the number of connected devices. IPv6, with its 128-bit address length, increases the number of available addresses to approximately 340 undecillion (3.4×10^38), effectively solving the address exhaustion problem.

Image source: CloudDNS

Simplified Network Configuration

IPv6 includes features like stateless address autoconfiguration (SLAAC), which allows devices to automatically generate their own addresses using a combination of locally available information and router advertisements. This simplification can reduce the need for manual configuration or the use of DHCP (Dynamic Host Configuration Protocol).

Improved Performance and Security

IPv6 was designed to improve upon IPv4 in several ways, including performance optimizations in packet processing and built-in security features. IPsec, which provides confidentiality, data integrity, and authentication, is built into the core specifications of IPv6, making these security measures mandatory rather than optional.

Multicast and Anycast Addressing

Along with unicast IPv6 natively supports multicast and anycast addressing, improving the efficiency of network resource utilization. Multicast allows the transmission of a packet to multiple destinations in a single send operation:

While anycast addresses enable packets to be sent to any one of a group of nodes, typically the one closest to the source:

No More NAT (Network Address Translation)

IPv6 eliminates the need for NAT, a technology used in IPv4 to extend the address space by translating private addresses to public addresses.

Image source: Wikipedia

NAT can complicate internet communication and hinder the end-to-end connectivity principle of the internet. With IPv6's vast address space, every device can have a unique public IP address, thus simplifying networking and improving performance.

Compatibility Challenges

Transitioning from IPv4 to IPv6 introduces compatibility challenges, as the two protocols are not directly interoperable. This necessitates transition mechanisms such as dual stack (where systems run both IPv4 and IPv6), tunneling (encapsulating IPv6 traffic within IPv4 packets), and translation (converting between IPv4 and IPv6 packets), to ensure smooth communication during the transition period.

IPv6 represents a significant advancement in the development of the internet, addressing the critical issue of IP address exhaustion and laying the foundation for future internet growth and innovation. Despite its clear benefits, the transition to IPv6 has been gradual, requiring updates to infrastructure, software, and hardware to fully support the new protocol.


An IPv6 address consists of 128 bits, typically represented as eight groups of four hexadecimal digits, with the groups separated by colons. Here is an example:


Image source: Wikipedia

Representation Rules

To make IPv6 addresses easier to read and write, there are a couple of rules that can be applied to compress the representation:

  1. Leading Zeros: Any leading zeros in a group can be omitted. For example, 0042 can be written as 42, and 0A00 can be written as A00.

  2. Zero Compression: One or more groups of consecutive zeros can be replaced by a double colon (::). This compression can only be used once in an address to prevent ambiguity. For example, the address 2001:0db8:0000:0000:0000:0000:1428:57ab can be compressed to 2001:0db8::1428:57ab.


An IPv6 address might initially appear as 2001:0db8:85a3:0000:0000:8a2e:0370:7334, but applying the rule for leading zeros and zero compression, it could be represented more succinctly as 2001:db8:85a3::8a2e:370:7334.

The design of IPv6 addresses, with their extensive address space and flexible representation, ensures scalability and flexibility for the internet's future growth, accommodating an ever-increasing number of devices and services.

Structure of IPv6 Unicast Address

The structure of a unicast IPv6 address, which is designed to identify a single interface in a network, is complex and capable of accommodating various addressing needs. Unicast addresses in IPv6 are categorized into several types, each serving different purposes and having a specific structure.

1. Global Unicast Addresses

These addresses are analogous to public IPv4 addresses and are globally routable and reachable on the IPv6 portion of the Internet.

  • Format: The structure of a global unicast address typically includes several fields: a global routing prefix (which is assigned to a site), a subnet ID (which identifies a specific subnet within the site), and an interface ID (which identifies a specific interface within the subnet).

    Image source: Cisco

  • Example Structure: 2001:0db8:85a3::8a2e:0370:7334

    • The first 48 bits (e.g., 2001:0db8:85a3) can represent the global routing prefix.

    • The next 16 bits (e.g., 0000) could be used for the subnet ID.

    • The last 64 bits (e.g., 8a2e:0370:7334) are typically the interface ID, often generated from the device's MAC address using the EUI-64 format, although other methods can also be used.

Used for communication between nodes on the same link (direct network segment) and not routable beyond that link.

  • Format: Starts with the prefix FE80::/10, followed by 54 bits set to zero, and the last 64 bits typically form the interface ID.

  • Example: FE80::8a2e:0370:7334

3. Unique Local Addresses (ULA)

Designed for local communications, typically within a site or between a limited number of sites, ULAs are not intended to be routable on the global Internet.

  • Format: Begins with the prefix FC00::/7, although the most commonly used range starts with FD00::/8. This is followed by a 40-bit global ID (creating a unique prefix), a 16-bit subnet ID, and a 64-bit interface ID.

  • Example: FD00:0db8:85a3::8a2e:0370:7334

Interface ID

For many types of unicast IPv6 addresses, the last 64 bits of the address are used as the interface ID. This part is used to uniquely identify an interface on a network. It can be automatically generated from the MAC address of the interface using a method called EUI-64, although other methods, including manual assignment and random generation, are also used.

Special IPv6 Addresses

Apart from the common types mentioned above, there are special-purpose addresses, like the loopback address (::1) for addressing a device itself, and the unspecified address (::) used in certain initializing communications.

IPv6's unicast addressing architecture is designed to be flexible, accommodating a range of networking scenarios from small local networks to expansive global internets. This structure supports efficient, hierarchical address allocation and routing, addressing the scalability and performance issues faced by IPv4.


  1. Wikipedia: IPv6

  2. Habr: Что такое и зачем нужен IPV6? Разбор