IPv6 — the address space that doesn't run out
12 min
IPv4 has 4.3 billion addresses. The world has 30 billion connected devices. The math doesn't work. IPv6 is the fix: 128-bit addresses (3.4 × 10^38 of them) plus a redesign that removes some of IPv4's biggest pain points. Every modern device is dual-stack today — you need both.
The address
128 bits, written as eight groups of 4 hex digits separated by colons:
2001:0db8:0001:0000:0000:0000:0000:0001
Two compression rules make this less awful:
- Leading zeros in a group can be dropped:
2001:db8:1:0:0:0:0:1. - One run of consecutive all-zero groups can collapse to
:::2001:db8:1::1.
Only one :: per address (else ambiguous).
| IPv6 | IPv4 equivalent |
|---|---|
| ::1 | 127.0.0.1 loopback |
| :: | 0.0.0.0 unspecified |
| fe80::/10 | 169.254/16 link-local |
| 2000::/3 | Global unicast (public) |
| fc00::/7 | Unique local (private, RFC 4193) |
| ff00::/8 | Multicast — replaces broadcast |
What's gone, what's new
Gone: broadcast (replaced by all-nodes multicast ff02::1), ARP (replaced by Neighbor Discovery Protocol on ICMPv6), NAT (mostly — every device gets its own public address).
New:
- SLAAC (Stateless Address Auto-Configuration) — host listens to a router advertisement, learns the /64 prefix, generates the host portion itself, gets a working public address with no DHCP server.
- NDP (Neighbor Discovery) — combines ARP + router solicitation + autoconfig in a single ICMPv6-based protocol.
- Mandatory link-local — every interface has a
fe80::/10address automatically, even without any other config.
The /64 rule
Every IPv6 subnet is /64. Always. Not because the protocol requires it, but because SLAAC requires it. The lower 64 bits are the interface identifier, generated either by EUI-64 (from the MAC) or by random (modern privacy-preserving default).
This means you don't carve subnets by host count anymore. Even a point-to-point link gets a /64. It feels wasteful — until you realize a /64 has 18 quintillion addresses and you have several quintillion /64s available.
Address types per scope
| Type | Scope | When to use |
|---|---|---|
| Link-local fe80::/10 | One link | Automatic; required; used by NDP, RA, OSPFv3 |
| Unique local fc00::/7 | Private — your org | Internal traffic that should not leak to the internet |
| Global unicast 2000::/3 | Whole internet | Public-facing services |
| Multicast ff00::/8 | Group | All-nodes, all-routers, MLD |
| Anycast | One of many | Identical address on multiple servers; routed to nearest |
Dual stack — the practical reality
Every modern OS, router, and switch runs both IPv4 and IPv6 simultaneously. A host with two stacks tries IPv6 first (per RFC 8305 "Happy Eyeballs"), falls back to IPv4 if needed. Network operators must:
- Configure IPv6 on every interface alongside IPv4.
- Run a routing protocol that supports both (OSPFv3 / IS-IS / BGP).
- Update ACLs, firewall rules, monitoring, DNS to know both.
Cisco IOS:
[object Object]What to remember
- 128-bit addresses; compress with leading-zero strip and one
::. - Every subnet is a /64. Always.
- No broadcast (use multicast), no ARP (use NDP), often no NAT.
- SLAAC lets hosts auto-configure from a router advertisement.
- Dual-stack is the norm. Run both, prefer IPv6 with IPv4 fallback.