Infrastructure & Networking

What is IPv6?

IPv6, Internet Protocol version 6, is the most recent version of the Internet Protocol, the fundamental communication standard governing how data is addressed and routed across the internet. Developed by the Internet Engineering Task Force and standardised in RFC 2460 in 1998, later updated by RFC 8200 in 2017, IPv6 was designed primarily to solve the address exhaustion problem of IPv4 by providing a vastly larger address space while simultaneously improving routing efficiency, security, and network configuration.

Where IPv4 uses 32-bit addresses providing approximately 4.3 billion unique addresses IPv6 uses 128-bit addresses providing 2¹²⁸, approximately 340 undecillion, unique addresses. 340 undecillion is 340 followed by 36 zeros, a number so large that assigning a unique IPv6 address to every atom on the surface of the earth would consume only a small fraction of the available space. IPv6’s address space is for all practical purposes inexhaustible, the address scarcity that necessitates NAT, address trading markets, and careful allocation planning for IPv4 simply does not exist with IPv6.

IPv6 adoption has been gradual, more than two decades after standardisation IPv4 still carries the majority of internet traffic, though IPv6 traffic has grown substantially. Google reports that approximately 40-45% of traffic to its services arrives over IPv6 as of recent measurements. Major internet service providers, mobile networks, and cloud platforms have deployed IPv6, but a significant portion of internet infrastructure remains IPv4-only, necessitating dual-stack deployments that support both protocols simultaneously.

IPv6 address format

IPv6 addresses look and behave differently from IPv4 addresses, the format reflects the much larger address space and the hexadecimal encoding used to represent 128-bit values compactly.

Full notation: a full IPv6 address consists of eight groups of four hexadecimal digits separated by colons. Each group represents 16 bits, four hexadecimal digits each representing 4 bits. The complete address is 8 × 16 = 128 bits.

2001:0db8:85a3:0000:0000:8a2e:0370:7334: a full IPv6 address in its uncompressed form. Each of the eight groups contains exactly four hexadecimal digits. Hexadecimal digits include the numbers 0-9 and letters a-f, 2001, 0db8, 85a3 are three of the eight groups in the example address.

Leading zero compression: leading zeros within each group can be omitted without ambiguity. 0db8 becomes db8. 0000 becomes 0. 0370 becomes 370. Applying leading zero compression to the example address, 2001:db8:85a3:0:0:8a2e:370:7334.

Double-colon compression: one or more consecutive groups of all zeros can be replaced with ::: a double colon. This compression can only be used once per address, using it twice would create ambiguity about how many zero groups each :: represents. 2001:db8:85a3:0:0:8a2e:370:7334 contains two consecutive zero groups, compressing them gives 2001:db8:85a3::8a2e:370:7334.

The all-zeros address 0000:0000:0000:0000:0000:0000:0000:0000 compresses to ::. The loopback address 0000:0000:0000:0000:0000:0000:0000:0001 compresses to ::1.

IPv4-mapped IPv6 addresses: a notation that represents IPv4 addresses within the IPv6 address space. ::ffff:93.184.216.34: the last 32 bits are an IPv4 address, preceded by ::ffff:. IPv4-mapped addresses are used internally by operating systems to handle IPv4 connections in IPv6 socket APIs, allowing applications written for IPv6 to accept IPv4 connections without separate code paths.

IPv6 address types

IPv6 defines several categories of addresses, each serving specific networking purposes.

Unicast addresses: identify a single network interface. A packet sent to a unicast address is delivered to exactly one interface. Global unicast addresses, routable on the public internet, begin with the prefix 2000::/3: the first three bits are 001. Most public IPv6 addresses are global unicast addresses.

Link-local addresses: automatically configured on every IPv6 interface, begin with fe80::/10. Link-local addresses are valid only on the local network segment, they are not routable beyond the local link. A device can always communicate with other devices on the same network segment using link-local addresses even without any external address configuration. Link-local addresses serve functions analogous to the 169.254.0.0/16 range in IPv4.

Loopback address: ::1: the single IPv6 loopback address equivalent to 127.0.0.1 in IPv4. Traffic sent to ::1 is delivered to the same device, never transmitted on the network. Used for local communication between processes on the same device, a web server listening on ::1 accepts connections only from processes on the same machine.

Unique local addresses: fc00::/7: the IPv6 equivalent of private address ranges in IPv4. Unique local addresses are routable within an organisation’s network but not on the public internet. The prefix fd00::/8 is the most commonly used unique local range, organisations configure the next 40 bits randomly to create a globally unique local prefix that minimises collision risk if two networks with unique local addresses are merged.

Multicast addresses: ff00::/8: addresses for one-to-many communication. A packet sent to a multicast address is delivered to all devices that have joined that multicast group. IPv6 uses multicast extensively for network discovery and management, functions that IPv4 implemented through broadcast or separate protocols. There is no broadcast in IPv6, broadcast-like functionality is implemented through specific multicast groups.

Anycast addresses: the same address assigned to multiple interfaces, a packet sent to an anycast address is delivered to the nearest interface with that address according to routing metrics. Anycast is a regular unicast address assigned to multiple devices, no special address format distinguishes anycast from unicast. Used by CDN networks, DNS root servers, and other distributed infrastructure to route requests to the nearest available server.

Minimises collision risk if two networks with unique local addresses are merged.

Multicast addresses: ff00::/8: addresses for one-to-many communication. A packet sent to a multicast address is delivered to all devices that have joined that multicast group. IPv6 uses multicast extensively for network discovery and management, functions that IPv4 implemented through broadcast or separate protocols. There is no broadcast in IPv6, broadcast-like functionality is implemented through specific multicast groups.

Anycast addresses: the same address assigned to multiple interfaces, a packet sent to an anycast address is delivered to the nearest interface with that address according to routing metrics. Anycast is a regular unicast address assigned to multiple devices, no special address format distinguishes anycast from unicast. Used by CDN networks, DNS root servers, and other distributed infrastructure to route requests to the nearest available server.

IPv6 improvements over IPv4

IPv6 incorporates several improvements beyond the expanded address space, addressing limitations in IPv4 that became apparent over decades of deployment.

Simplified header format: the IPv6 packet header has fewer fields than IPv4 and is fixed-length, unlike IPv4’s variable-length header. Simplified headers reduce router processing overhead, routers process IPv6 headers faster than IPv4 headers. Fields present in IPv4 headers but not in IPv6 include checksum, eliminated because higher-level protocols provide error checking, fragmentation fields, moved to extension headers and handled differently, and options fields, replaced by extension headers.

Extension headers: IPv6 uses extension headers to provide optional features, rather than including rarely-used option fields in the main header. Extension headers are chained after the main IPv6 header, only inserted when needed. Hop-by-Hop Options, Destination Options, Routing, Fragment, Authentication, and Encapsulating Security Payload are extension header types. Routers process only the main IPv6 header for forwarding, extension headers are processed only at the destination or at specific intermediate nodes, reducing router processing load.

No fragmentation at routers: IPv4 allows routers to fragment packets that are too large for the next network segment. IPv6 does not permit fragmentation at intermediate routers, only the sending device can fragment packets. Sending devices use path MTU discovery to determine the minimum MTU along the path and send packets that fit within that MTU. Eliminating router fragmentation simplifies router processing and avoids fragmentation-based security vulnerabilities.

Stateless address autoconfiguration, SLAAC: IPv6 devices can automatically configure their own globally routable addresses without DHCP servers. SLAAC uses the network prefix advertised by routers, combined with the device’s own identifier derived from its MAC address or a random value, to generate a globally unique address. SLAAC simplifies network configuration for devices that join a network, particularly valuable for IoT devices and mobile devices.

Mandatory IPsec support: the original IPv6 specification required that all IPv6 implementations support IPsec, the Internet Protocol Security suite for encrypted and authenticated IP communication. While the requirement has been softened in later specifications IPv6 was designed with security integration as a core consideration rather than an afterthought.

IPv6 adoption and dual-stack deployment

IPv6 adoption has been gradual despite years of advocacy, the existing IPv4 infrastructure and the cost and complexity of transition have slowed deployment.

Dual-stack operation: the predominant IPv6 deployment model. Dual-stack systems support both IPv4 and IPv6 simultaneously, publishing both A records and AAAA records in DNS, maintaining both IPv4 and IPv6 interfaces, and accepting connections over either protocol. A browser connecting to a dual-stack server uses the Happy Eyeballs algorithm, RFC 6555, to prefer IPv6 while falling back to IPv4 if IPv6 connection establishment is slow or fails.

Dual-stack deployment allows gradual IPv6 adoption, adding IPv6 support without removing IPv4, maintaining compatibility with IPv4-only clients and networks. The majority of public internet services that have deployed IPv6 use dual-stack rather than IPv6-only deployments.

ISP and mobile network deployment: major internet service providers and mobile network operators have been significant drivers of IPv6 adoption. T-Mobile USA, Verizon Wireless, and other mobile carriers assign IPv6 addresses to mobile devices by default, often using IPv4-only through CGNAT for legacy compatibility. IPv6-capable mobile networks are a major contributor to the growing proportion of IPv6 internet traffic.

Cloud and CDN deployment: major cloud providers, AWS, Google Cloud, Azure, and CDN providers, Cloudflare, Fastly, Akamai, support IPv6. Cloudflare enables IPv6 for all customers by default, any domain proxied through Cloudflare receives an IPv6 address and responds to IPv6 connections even if the origin server is IPv4-only. This IPv6 proxy capability accelerates IPv6 deployment for websites without requiring IPv6 at the origin.

IPv6 in web infrastructure

IPv6 affects web infrastructure configuration, servers, load balancers, CDNs, and redirect management platforms all need IPv6 support for comprehensive accessibility.

DNS AAAA records: publishing AAAA records alongside A records enables browsers and other clients to connect over IPv6. A dual-stack web server should have both an A record, example.com A 93.184.216.34: and an AAAA record, example.com AAAA 2606:2800:220:1:248:1893:25c8:1946: in DNS. Browsers that support IPv6 and are on IPv6-capable networks prefer the AAAA record and connect over IPv6, falling back to IPv4 via the A record if IPv6 fails.

Server and application IPv6 configuration: web servers must be configured to listen on IPv6 interfaces alongside IPv4. Nginx configured to listen on [::]:443 accepts HTTPS connections on all IPv6 interfaces, the square brackets around :: denote an IPv6 address in URL and configuration syntax. Apache configuration similarly requires explicit IPv6 Listen directives. Applications that construct URLs from server-observed IP addresses must handle IPv6 address formatting correctly, IPv6 addresses in URLs require square bracket notation, https://[2001:db8::1]/path.

SSL certificates and IPv6: SSL certificates are issued for domain names, not IP addresses, so IPv6 deployment does not change certificate requirements. SNI works identically for IPv6 connections, the server presents the appropriate certificate based on the SNI hostname regardless of whether the connection uses IPv4 or IPv6. Let’s Encrypt issues certificates identically for domains accessible over IPv4 or IPv6, no special IPv6 certificate handling is required.

IPv6 and redirects

IPv6 interacts with redirect management in ways parallel to IPv4, but with considerations specific to dual-stack deployments.

IPv6 AAAA records for redirect domains: redirect source domains should publish AAAA records alongside A records, pointing to the redirect management platform’s IPv6 addresses. IPv6 clients attempting to reach a redirect source domain that has no AAAA record fall back to IPv4, a functional but suboptimal path. Publishing AAAA records for redirect domains ensures IPv6 clients connect over IPv6 for redirect responses, receiving faster, lower-latency responses from IPv6 infrastructure.

Dual-stack redirect infrastructure: redirect management platforms should serve redirect responses over both IPv4 and IPv6. A platform that is IPv4-only cannot serve redirect responses to IPv6-only clients, a growing category as IPv6 deployment expands. Dual-stack redirect infrastructure ensures redirect functionality regardless of the client’s protocol preference.

IP address geolocation with IPv6: geo-redirect implementations that determine user location from IP address must handle IPv6 addresses. IPv6 geolocation databases are less comprehensive than IPv4 geolocation databases, IPv6 deployment is newer and regional assignment patterns differ from IPv4. Geo-redirect implementations should handle cases where IPv6 geolocation returns no result, falling back to a default destination rather than failing.

Related terms

Related terms

Ready to keep every link alive?

Ready to keep every link alive?

Ready to keep every link alive?