The exhaustion of the 32-bit IPv4 address space—which provides only approximately 4.3 billion unique public addresses—has made modern enterprise networking increasingly complex. While Network Address Translation (NAT) extended the lifespan of IPv4 by allowing thousands of internal hosts to hide behind a single public IP, NAT breaks end-to-end network transparency, complicates peer-to-peer applications, and introduces stateful tracking overhead on firewalls.
Internet Protocol version 6 (IPv6) resolves the address exhaustion crisis with a 128-bit address space, providing 340 undecillion ($3.4 \times 10^{38}$) unique addresses. Beyond address abundance, IPv6 introduces cleaner packet headers, eliminates broadcast traffic, and features automated, stateless address configuration.
IPv6 Address Representation and Compression Rules
An IPv6 address is written as eight groups of four hexadecimal digits (16 bits per group, known as a hextet), separated by colons:
2001:0db8:0000:0000:0000:0000:0042:0001
To make addresses manageable for network administrators, RFC 5952 establishes two mandatory compression rules:
- Omit Leading Zeros: Within any 16-bit hextet, leading zeros can be omitted. (e.g.
:0db8:becomes:db8:, and:0042:becomes:42:). - Compress Consecutive Hextets of Zeros (Double Colon
::): A single contiguous sequence of one or more all-zero hextets can be replaced with a double colon (::). This rule can only be applied once per address to preserve mathematical reversibility.
2001:db8::42:1
Core IPv6 Address Scopes
Unlike IPv4 where an interface typically possesses only a single IP address, an IPv6-enabled interface simultaneously maintains multiple addresses across distinct Address Scopes:
| Address Scope Type | Prefix / Range | Scope & Operational Purpose |
|---|---|---|
| Global Unicast Address (GUA) | 2000::/3 (typically 2001:: or 2002::) |
Publicly routable across the global internet (analogous to public IPv4). Every host with a GUA has direct, end-to-end connectivity without NAT. |
| Link-Local Address (LLA) | fe80::/10 (commonly fe80::/64) |
Mandatory on every IPv6 interface. Used strictly for local communications on the physical link (same broadcast domain/VLAN). Never routed by routers. Used for neighbor discovery, routing protocol peering (OSPFv3, BGP), and default gateway next-hops. |
| Unique Local Address (ULA) | fc00::/7 (commonly fd00::/8) |
Routable only within an enterprise organization or private VPN fabric. Analogous to RFC 1918 private IPv4 space (10.0.0.0/8). Not routable on the public internet. |
| Multicast | ff00::/8 |
Used to deliver packets to multiple destinations simultaneously. Replaces IPv4 broadcast. (e.g. ff02::1 = All Nodes on link, ff02::2 = All Routers on link). |
| Loopback | ::1/128 |
Local host software loopback (analogous to 127.0.0.1). |
Global Unicast Address (GUA) Structure
A standard enterprise Global Unicast address conforms to a clean, hierarchical structure:
- Global Routing Prefix (typically
/48): Assigned by the upstream ISP or Regional Internet Registry (RIR) to identify the specific enterprise organization. - Subnet ID (16 bits, extending prefix to
/64): Managed by internal network engineers to allocate up to 65,536 distinct subnets within the enterprise. - Interface ID (64 bits): Identifies the specific host interface on that subnet (generated via SLAAC, random generation, or manual assignment).
/64. While variable-length subnetting is mathematically possible, breaking the /64 boundary breaks core automated features including Stateless Address Autoconfiguration (SLAAC) and Mobile IPv6.Stateless Address Autoconfiguration (SLAAC) & NDP
IPv6 eliminates dependency on a dedicated DHCP server through Stateless Address Autoconfiguration (SLAAC), governed by the Neighbor Discovery Protocol (NDP) running over ICMPv6:
- Router Solicitation (RS - ICMPv6 Type 133): Upon link initialization, the host generates its Link-Local address (
fe80::...) and multicasts an RS packet toff02::2(All-Routers) asking local routers for subnet parameters. - Router Advertisement (RA - ICMPv6 Type 134): The local router replies with an RA packet (sent to
ff02::1All-Nodes) containing:- The 64-bit network prefix (e.g.
2001:db8:acad:1::/64). - Default gateway link-local address.
- Address lifecycle timers (Preferred and Valid lifetimes).
- Configuration flags (e.g. M-flag for Managed DHCPv6 or O-flag for Other DNS options via Stateless DHCPv6).
- The 64-bit network prefix (e.g.
- Interface ID Generation: The host combines the advertised
/64prefix with its own 64-bit Interface ID. This can be derived from the hardware MAC address using the legacy Modified EUI-64 process (inverting the 7th bit and insertingFF:FEinto the center), or modern privacy extensions (RFC 4941 / RFC 7217) which generate stable, cryptographically randomized Interface IDs to prevent physical device tracking. - Duplicate Address Detection (DAD): Before activating the new address, the host sends a Neighbor Solicitation (NS) for its own candidate address. If no Neighbor Advertisement (NA) is received within the timeout, the host confirms the address is unique and begins transmission.
Inspecting IPv6 Configuration on Hosts
ip -6 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2001:db8:acad:1:5054:ff:fe12:3456/64 scope global dynamic mngtmpaddr
valid_lft 86395sec preferred_lft 14395sec
inet6 fe80::5054:ff:fe12:3456/64 scope link
valid_lft forever preferred_lft forever
Summary
IPv6 is far more than an expanded address space. By structuring networks around clean /64 subnets, leveraging distinct Link-Local scopes for local router interactions, and employing ICMPv6 Neighbor Discovery for automatic SLAAC provisioning, IPv6 establishes an efficient, scalable, and NAT-free networking architecture.