Logical Addressing with IPv6
Covers the motivation for IPv6, its address architecture, notation, and advantages over IPv4.
Learning Goals
- Explain the limitations of IPv4 that motivated the development of IPv6
- Interpret IPv6 addresses using hexadecimal notation and standard compression rules
- Differentiate major IPv6 address types such as unicast, multicast, and anycast
- Compare IPv4 and IPv6 in terms of address space, header design, and deployment considerations
- Identify suitable IPv6 address formats for different communication requirements
The explosive growth of the internet — from a research network connecting a few thousand hosts to a global infrastructure serving billions of devices — exposed fundamental limitations in Internet Protocol version 4 (IPv4). Its 32-bit address space, once considered vast, has been fully allocated. Internet Protocol version 6 (IPv6) was designed as the long-term successor to IPv4, expanding the address space to 128 bits and introducing architectural improvements in header design, auto-configuration, and built-in security support .
This lesson explores the motivations behind IPv6, its hexadecimal notation and compression rules, the major address types (unicast, multicast, and anycast), a direct comparison with IPv4, and guidance on selecting the appropriate IPv6 address format for different communication scenarios.
Footnotes
-
IPv4 Address Exhaustion - Wikipedia - Documents the depletion of the global IPv4 address pool, IANA allocation timeline, and RIR exhaustion dates. ↩
IPv6 Addresses Explained | Cisco CCNA 200-301
Why IPv6? The Limitations of IPv4
IPv4 was standardized in 1981 (RFC 791) with a 32-bit address space yielding total addresses. Several factors drove this pool to exhaustion 2:
-
Address Exhaustion: The Internet Assigned Numbers Authority (IANA) allocated its last blocks of IPv4 addresses to Regional Internet Registries (RIRs) in February 2011. All five RIRs have since reached exhaustion of their free pools. With billions of smartphones, IoT sensors, and cloud instances joining the internet, 4.3 billion addresses are fundamentally insufficient .
-
NAT Complexity: Network Address Translation (NAT) was introduced as a workaround for address scarcity. While NAT extended IPv4's lifespan, it breaks the end-to-end connectivity principle of the internet, complicates peer-to-peer applications, VoIP, and online gaming, and adds processing overhead on every packet traversing the NAT device.
-
Inefficient Header Processing: The IPv4 header contains a variable-length options field and a header checksum that must be recalculated at every router hop, adding latency. The fragmentation fields in the IPv4 header further complicate router processing.
-
Limited Security and Auto-configuration: IPv4 was not designed with built-in security (IPsec is optional) or stateless address auto-configuration. Features like DHCP had to be layered on separately.
IPv6 addresses all of these issues with a fundamentally redesigned protocol.
Footnotes
-
IPv4 Address Exhaustion - Wikipedia - Documents the depletion of the global IPv4 address pool, IANA allocation timeline, and RIR exhaustion dates. ↩ ↩2
-
IPv4 Exhaustion Explained: Causes, Impacts, and Solutions - ServerMania - Comprehensive overview of IPv4 exhaustion, NAT workarounds, and the push toward IPv6 adoption. ↩
IPv6 Address Structure and Notation
An IPv6 address is 128 bits long, written as eight groups of four hexadecimal digits separated by colons. Each group is called a hextet (also known as a "quartet" or "hex group") .
Full notation example:
This address is unwieldy, so two compression rules make it more manageable:
Rule 1: Omit Leading Zeros
Within any hextet, leading zeros can be dropped. At least one digit must remain.
Rule 2: Replace Consecutive All-Zero Hextets with ::
A single contiguous sequence of one or more all-zero hextets can be replaced by a double colon (::) — but this can only be used once in any address, to avoid ambiguity.
These rules shorten only the representation; the underlying address is always 128 bits .
Footnotes
-
IPv6 Address Representation - NetworkAcademy.IO - Detailed explanation of IPv6 hexadecimal notation, the two compression rules (leading zero omission and double colon), and expansion procedures. ↩ ↩2
Compressing and Expanding an IPv6 Address
- 1Step 1
Full form: fe80:0000:0000:0000:020c:29ff:fe9a:0001
- 2Step 2
fe80:0:0:0:20c:29ff:fe9a:1 Each hextet's leading zeros are dropped. Note that '0000' becomes '0' (at least one digit must remain).
- 3Step 3
fe80::20c:29ff:fe9a:1 The three consecutive all-zero hextets (0:0:0) are replaced with a single '::'.
- 4Step 4
Count the existing hextets (here: fe80, 20c, 29ff, fe9a, 1 = 5 hextets). Since IPv6 must have 8 hextets, the '::' represents 8 − 5 = 3 groups of 0000. Expand back to: fe80:0000:0000:0000:020c:29ff:fe9a:0001
The Double Colon Can Only Appear Once
The '::' notation can only be used once per address. If it appeared twice (e.g., 2001::db8::1), it would be impossible to determine how many zero groups each '::' replaces. If there are two separate runs of zero hextets, you may only compress the longer one (or either one if they are equal length).
IPv6 Address Types
Unlike IPv4, which uses unicast, broadcast, and multicast, IPv6 eliminates broadcast entirely and introduces anycast as a first-class address type. The three primary types of IPv6 addresses are 2:
1. Unicast — One-to-One
A packet sent to a unicast address is delivered to exactly one interface. IPv6 defines several unicast scopes:
| Unicast Type | Prefix | Scope | Purpose |
|---|---|---|---|
| Global Unicast (GUA) | 2000::/3 | Global (Internet) | Publicly routable; equivalent to a public IPv4 address. Assigned by ISPs. |
| Link-Local | fe80::/10 | Single link (LAN) | Automatically configured on every IPv6 interface. Used for neighbor discovery and routing protocol communication. Cannot be routed beyond the local link. |
| Unique Local (ULA) | fc00::/7 (typically fd00::/8) | Organization-internal | Analogous to RFC 1918 private IPv4 addresses. Routable within an organization but not on the public internet. |
| Loopback | ::1/128 | Local host | Equivalent to IPv4's 127.0.0.1. Traffic never leaves the device. |
| Unspecified | ::/128 | N/A | Indicates the absence of an address (e.g., used by a host before obtaining an address via DHCP or SLAAC). |
2. Multicast — One-to-Many
A packet sent to a multicast address is delivered to all interfaces that have joined that multicast group. IPv6 multicast addresses begin with ff00::/8. Notable multicast addresses include:
ff02::1— All nodes on the local linkff02::2— All routers on the local linkff02::1:ff00:0/104— Solicited-node multicast (used in Neighbor Discovery)
IPv6 uses multicast where IPv4 used broadcast (e.g., ARP is replaced by Neighbor Solicitation using multicast).
3. Anycast — One-to-Nearest
A packet sent to an anycast address is delivered to the nearest interface (by routing distance) configured with that address. Anycast is commonly used for load-balanced DNS servers and content delivery network (CDN) nodes.
Footnotes
-
IPv6 Address Types - IPCisco - Covers all IPv6 address types including global unicast, link-local, unique local, multicast, anycast, and special addresses with prefix details. ↩
-
FAQ on IPv6 Adoption and IPv4 Exhaustion - Internet Society - Internet Society's authoritative FAQ on IPv6 deployment status, transition strategies, and the relationship between IPv4 exhaustion and IPv6 adoption. ↩
How to identify an IPv6 address type by its prefix:
| First Hex Digits | Address Type |
|---|---|
2xxx or 3xxx | Global Unicast (2000::/3) |
fe80 | Link-Local Unicast |
fc or fd | Unique Local Address |
ff | Multicast |
::1 | Loopback |
:: | Unspecified |
Quick rule: If it starts with 2 or 3, it's globally routable. If it starts with fe80, it's link-local. If it starts with ff, it's multicast.
IPv4 vs. IPv6: A Comprehensive Comparison
The differences between IPv4 and IPv6 extend far beyond address length. IPv6 was a ground-up redesign that addressed performance, security, and configurability concerns 2:
| Feature | IPv4 | IPv6 |
|---|---|---|
| Address Length | 32 bits | 128 bits |
| Address Space | ||
| Notation | Dotted-decimal (192.168.1.1) | Colon-hexadecimal (2001:db8::1) |
| Header Size | Variable (20–60 bytes) | Fixed (40 bytes) |
| Header Checksum | Yes (recalculated at every hop) | Removed (relies on Layer 2 and Layer 4 checksums) |
| Fragmentation | By routers and senders | Only by the sender (uses Path MTU Discovery) |
| Broadcast | Supported (255.255.255.255) | Eliminated — replaced by multicast |
| Auto-configuration | Requires DHCP | Built-in SLAAC (Stateless Address Auto-Configuration) |
| IPsec | Optional | Mandatory specification (though not always enforced) |
| NAT Requirement | Common (due to address scarcity) | Generally unnecessary (abundant address space) |
| ARP | Uses ARP (broadcast-based) | Uses NDP — Neighbor Discovery Protocol (multicast-based) |
Footnotes
-
IPv4 Exhaustion Explained: Causes, Impacts, and Solutions - ServerMania - Comprehensive overview of IPv4 exhaustion, NAT workarounds, and the push toward IPv6 adoption. ↩
-
Navigating the IPv4 to IPv6 Transition - IR - Enterprise guide on IPv6 transition strategies including dual stack, tunneling, and translation mechanisms, with IPv4 vs IPv6 header and design comparisons. ↩
IPv4 vs. IPv6 Address Space (Logarithmic Scale)
Approximate number of addresses expressed as powers of 2
IPv6 Header Simplification
One of IPv6's most significant engineering improvements is its streamlined, fixed-length header. The IPv4 header has 12 mandatory fields plus a variable-length options field; the IPv6 base header has only 8 fields in a fixed 40-byte structure :
Key improvements:
- No header checksum: Eliminates the need for recalculation at every router hop, reducing processing overhead.
- No fragmentation fields in the base header: Fragmentation is handled end-to-end using extension headers, so intermediate routers never fragment packets.
- Extension headers: Optional functionality (like fragmentation, routing, authentication) is placed in chained extension headers referenced via the Next Header field, keeping the base header compact and fast to process.
- Flow Label: A new 20-bit field allows routers to identify and provide special handling for specific traffic flows (e.g., real-time video) without deep packet inspection.
Footnotes
-
Navigating the IPv4 to IPv6 Transition - IR - Enterprise guide on IPv6 transition strategies including dual stack, tunneling, and translation mechanisms, with IPv4 vs IPv6 header and design comparisons. ↩
IPv6 Does Not Eliminate NAT — But Makes It Optional
With addresses, every device can have a globally unique address, removing the primary reason for NAT. However, some organizations still deploy NAT66 (IPv6-to-IPv6 NAT) for policy reasons. Additionally, during the transition period, NAT64 translates between IPv6 and IPv4 networks to ensure backward compatibility.
The Road from IPv4 to IPv6
IPv4 Standardized (RFC 791)
1981IPv4 defined with 32-bit addresses. The internet had fewer than 300 hosts."
CIDR Introduced (RFC 1519)
1993Classless Inter-Domain Routing replaced wasteful classful addressing, extending IPv4's usable lifespan."
NAT Deployed Widely (RFC 1631)
1996Network Address Translation allowed private networks to share public IPv4 addresses, further delaying exhaustion."
IPv6 Standardized (RFC 2460)
1998IPv6 formally specified with 128-bit addresses, simplified headers, and mandatory IPsec support."
IANA IPv4 Pool Exhausted
2011IANA allocated its last /8 blocks to the five RIRs. All regions subsequently exhausted their free pools."
IPv6 Deployment Accelerates
2017–PresentMajor networks (Google, Facebook, Comcast) report over 40% IPv6 traffic. Dual-stack deployment becomes the standard transition strategy."
IPv6 Frequently Asked Questions
Knowledge Check
What is the primary technical limitation of IPv4 that motivated the creation of IPv6?