Loading learning content...
In the vast expanse of the IPv6 address space—340 undecillion addresses strong—unicast addresses represent the workhorse of everyday network communication. A unicast address identifies exactly one network interface on exactly one node, enabling the fundamental point-to-point communication that underpins virtually all network interactions.
While this concept seems straightforward (after all, IPv4 also has unicast addresses), IPv6 reimagines unicast addressing with a sophisticated scope hierarchy, multiple simultaneous addresses per interface, and built-in address types that eliminate the need for complex supplementary protocols. Understanding IPv6 unicast addressing isn't merely about learning a new format—it's about grasping a fundamentally different addressing philosophy.
By completing this page, you will understand the complete unicast address hierarchy—from link-local addresses that never leave a single network segment to global unicast addresses routable across the entire Internet. You'll learn why every IPv6 interface has at least two addresses, how address scope affects routing decisions, and why this architecture solves problems that plagued IPv4 for decades.
A unicast address in IPv6 identifies a single network interface. When a packet is sent to a unicast destination, it is delivered to exactly that one interface—no copies, no duplication, no ambiguity. This one-to-one delivery model is the foundation upon which reliable network communication is built.
Fundamental Properties of Unicast Addresses:
Unique Interface Identification: Each unicast address uniquely identifies one interface within its scope. No two active interfaces can share the same unicast address in the same scope.
Single Delivery Guarantee: The network makes a single delivery attempt to exactly one destination. Unlike multicast (one-to-many) or broadcast (one-to-all), unicast traffic follows a single path to a single recipient.
Bidirectional Communication Enablement: Unicast addresses serve as both source and destination addresses, enabling two-way communication—the source address in a request becomes the destination address in the response.
Routing Table Foundation: Network routing tables are fundamentally organized around unicast prefixes. Even when handling multicast or anycast traffic, routers use unicast addresses for next-hop identification.
Unlike IPv4, where an interface typically has one address, every IPv6 interface has multiple simultaneous addresses: at minimum a link-local address (mandatory) and typically a global unicast address. This multi-address architecture enables features impossible in IPv4, including address deprecation for graceful transitions, privacy extensions for tracking prevention, and temporary addresses for security.
Understanding Address Scope:
The revolutionary aspect of IPv6 unicast addressing is the scope concept. Unlike IPv4, where an address is simply 'valid' or 'invalid', IPv6 unicast addresses have validity limited to specific topological regions:
This scope hierarchy isn't mere categorization—it fundamentally affects routing behavior. A link-local address cannot appear as source or destination in a packet crossing a router. This architectural constraint eliminates entire classes of configuration errors and security vulnerabilities.
| Address Type | Prefix | Scope | Typical Use Case | Routable Across Links? |
|---|---|---|---|---|
| Loopback | ::1/128 | Interface-local | Local host communication | No (never leaves interface) |
| Link-Local | fe80::/10 | Link-local | Neighbor discovery, DHCPv6, routing protocols | No (confined to segment) |
| Unique Local (ULA) | fc00::/7 (fd00::/8 used) | Organization/Site | Private networks, internal services | No (by policy, not enforced) |
| Global Unicast | 2000::/3 | Global | Internet-routable communication | Yes (fully routable) |
Link-local addresses (prefix fe80::/10) represent one of IPv6's most elegant design decisions. Every IPv6-enabled interface automatically generates a link-local address upon activation—no manual configuration, no DHCP, no infrastructure dependency. This self-configuration capability ensures that IPv6 devices can always communicate with their immediate neighbors, regardless of whether global addressing infrastructure exists.
Link-Local Address Structure:
fe80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX
├────────────────────┤├──────────────────┤
64-bit Prefix 64-bit Interface ID
(always fe80::/64) (derived from interface)
The prefix is always fe80::/64 (despite the technical /10 allocation, only fe80::/64 is used in practice). The interface identifier is typically derived from the interface's MAC address using the EUI-64 algorithm or generated randomly for privacy.
To create an interface identifier from a 48-bit MAC address: (1) Split the MAC in half. (2) Insert 'fffe' in the middle. (3) Flip the 7th bit (Universal/Local bit). Example: MAC 00:1a:2b:3c:4d:5e becomes Interface ID 021a:2bff:fe3c:4d5e. The resulting link-local address: fe80::21a:2bff:fe3c:4d5e.
Why Link-Local Addresses Matter:
Bootstrap Dependency: Link-local addresses enable all other IPv6 configuration. Neighbor Discovery Protocol (NDP), which replaces ARP and enables router discovery, operates entirely over link-local addresses. DHCPv6 client-server communication uses link-local addresses. Without link-local addresses, an interface cannot configure itself.
Router Communication: All routing protocols (OSPFv3, IS-IS, EIGRP for IPv6, BGP peering) use link-local addresses for next-hop identification. This provides stability—even if global prefixes change, routing adjacencies remain intact because link-local addresses are permanent.
Infrastructure Independence: In a network outage affecting global address allocation, devices retain local connectivity. Network management, troubleshooting, and recovery operations can proceed using link-local communication.
Attack Surface Reduction: Link-local addresses are unreachable from outside the local network segment. An attacker cannot directly target link-local addresses from the Internet, providing inherent security for local control plane traffic.
fe80::1%eth0) to disambiguate. This zone ID is purely local and has no network-wide meaning.When you ping a link-local address, you must specify the outgoing interface: ping fe80::1%eth0. Without the zone ID, the system cannot determine which physical segment to use. This is a common source of confusion for administrators new to IPv6. The zone ID syntax varies by operating system: Linux uses %interface-name, Windows uses %interface-index.
Global Unicast Addresses (GUAs) are the IPv6 equivalent of IPv4 public addresses—they are globally unique, routable across the entire Internet, and serve as the primary addresses for Internet communication. Allocated from the 2000::/3 range, GUAs currently represent the vast majority of assigned IPv6 address space.
Global Unicast Address Structure:
┌───────────────────────────────────────────────────────┐
│ 128 bits total │
├──────────────────────────┬────────────────────────────┤
│ 48-64 bits │ 64 bits │
│ Global Routing Prefix │ Interface Identifier │
├─────────────┬────────────┼────────────────────────────┤
│ n bits │ 64-n bits │ │
│ Provider │ Site │ Host Portion │
│ Prefix │ Prefix │ │
└─────────────┴────────────┴────────────────────────────┘
The standard allocation follows a hierarchical model:
| Entity | Typical Prefix Length | Number of /64 Subnets | Purpose |
|---|---|---|---|
| RIR Allocation | /12 | 4,503,599,627,370,496 | Regional address pool management |
| Large ISP | /32 | 4,294,967,296 | Provider infrastructure and customer allocation |
| Small ISP/Enterprise | /36 | 268,435,456 | Medium-scale network addressing |
| Standard Site | /48 | 65,536 | Complete organizational network |
| Small Site | /56 | 256 | Small office/home office |
| Single Subnet | /64 | 1 | Individual network segment |
The /64 Subnet Boundary:
A critical architectural decision in IPv6 is the fixed 64-bit interface identifier. The first 64 bits define the network (routing prefix); the last 64 bits identify the interface. This division is not arbitrary—it enables:
Stateless Address Autoconfiguration (SLAAC): Hosts can automatically generate complete addresses by combining a router-advertised /64 prefix with their self-generated interface ID. No address server required.
Privacy Extensions (RFC 4941): Hosts can generate random, temporary interface IDs for outgoing connections, preventing long-term tracking while maintaining the same network prefix.
Stable Identifiers (RFC 7217): Hosts can generate stable-but-unpredictable interface IDs that remain consistent per-network while resisting tracking across networks.
Standardized Autoconfiguration: With a fixed /64 boundary, all autoconfiguration mechanisms—SLAAC, DHCPv6, privacy extensions—work identically regardless of the prefix hierarchy above the /64 boundary.
You may encounter debates about using longer prefixes (e.g., /126 for point-to-point links). While technically possible, this breaks SLAAC, privacy extensions, and many IPv6 features. The overwhelming consensus and best practice is: always use /64 for all subnets, even point-to-point links. The address space is large enough that 'saving' addresses by using longer prefixes provides negligible benefit while creating operational complexity.
Example Global Unicast Address Breakdown:
Consider the address 2001:0db8:85a3:0042:0000:8a2e:0370:7334:
In this example:
2001:db8::/32 might be the ISP's allocation2001:db8:85a3::/48 might be the customer's site allocation2001:db8:85a3:42::/64 is the specific subnetUnique Local Addresses (ULAs), defined in RFC 4193, provide IPv6's equivalent of IPv4 private address space (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). However, ULAs incorporate lessons learned from IPv4's private addressing experience, addressing the collision and uniqueness problems that plague private IPv4 networks.
ULA Address Structure:
┌─────────────────────────────────────────────────────────────┐
│ 128 bits │
├────────┬───┬───────────────────┬────────────────────────────┤
│ 7 bits │1 │ 40 bits │ 64 bits │
│ FC │L │ Global ID │ 64 bits │
│ Prefix │bit│ (random) │ Subnet ID + Interface ID │
├────────┴───┴───────────────────┼──────────┬─────────────────┤
│ 48 bits │ 16 bits │ 64 bits │
│ /48 Prefix │ Subnet │ Interface ID │
└────────────────────────────────┴──────────┴─────────────────┘
To create a proper ULA prefix: (1) Generate a cryptographically random 40-bit value. (2) Prepend 'fd' to get your /48 prefix (e.g., fd12:3456:789a::/48). Never use predictable values like fd00::, fd01::, or similar. The randomness prevents collisions when networks merge. Online ULA generators can create compliant prefixes for you.
Why ULAs Solve IPv4 Private Address Problems:
Collision Prevention: With 40 random bits, the probability of two independently-generated ULA prefixes colliding is approximately 1 in 1 trillion. Compare this to IPv4, where nearly every organization uses 10.0.0.0/8 or 192.168.0.0/16, causing guaranteed conflicts in mergers and VPNs.
Global Uniqueness (Probabilistic): While not registered centrally, properly-generated ULAs are globally unique with overwhelming probability. This enables network mergers without renumbering—a significant operational advantage.
Proper Scoping: ULAs are explicitly not globally routable. Unlike IPv4 private addresses, which rely on ISP filtering to prevent leakage, ULAs have a distinct prefix (fd::/8) that makes filtering decisions unambiguous.
Persistence Across Provider Changes: Organizations can use their ULA prefix indefinitely, regardless of ISP changes. Internal services addressed via ULA don't require renumbering when global prefixes change.
A common misconception is that ULAs require NAT66 for Internet access. This misunderstands IPv6 architecture. The correct approach: assign both GUA (for Internet) and ULA (for internal stability) addresses to hosts. Hosts use GUA for external communication and ULA for internal communication. No translation needed—just proper source address selection.
Beyond the primary unicast categories, IPv6 defines several special-purpose unicast addresses with unique behaviors and strict usage constraints. Understanding these addresses prevents configuration errors and clarifies diagnostic output.
The Loopback Address (::1):
The IPv6 loopback address is ::1 (or fully expanded, 0000:0000:0000:0000:0000:0000:0000:0001). This is the equivalent of IPv4's 127.0.0.1. Packets addressed to ::1 never leave the local machine—they are processed entirely within the network stack.
Key characteristics:
::1 as source or destination appearing on a network is erroneouslo on Linux, Loopback Pseudo-Interface on Windows)The Unspecified Address (::):
The all-zeros address :: (or 0:0:0:0:0:0:0:0) is the unspecified address. It indicates the absence of an address rather than a real destination.
Uses:
::/0)The unspecified address is never valid as a destination address in a transmitted packet or as a source address after initialization completes.
| Address | Name | Purpose | Scope | RFC |
|---|---|---|---|---|
| ::1/128 | Loopback | Local host communication | Interface-local | RFC 4291 |
| ::/128 | Unspecified | Absence of address | N/A | RFC 4291 |
| ::ffff:0:0/96 | IPv4-Mapped IPv6 | Represent IPv4 in IPv6 format | N/A | RFC 4291 |
| 64:ff9b::/96 | IPv4/IPv6 Translation | NAT64/DNS64 translation | Global | RFC 6052 |
| 100::/64 | Discard-Only | Black hole routing | Global | RFC 6666 |
| 2001:db8::/32 | Documentation | Examples and documentation | N/A | RFC 3849 |
IPv4-Mapped IPv6 Addresses:
The prefix ::ffff:0:0/96 contains IPv4-mapped IPv6 addresses, used internally by dual-stack implementations to represent IPv4 addresses in IPv6 format. For example, the IPv4 address 192.0.2.1 maps to ::ffff:192.0.2.1 (or ::ffff:c000:0201 in pure hex).
These addresses:
The Documentation Prefix (2001:db8::/32):
This prefix is reserved exclusively for documentation, examples, and instructional materials. Using it in production networks is incorrect—these addresses should never appear in real routing tables or network configurations. When you see 2001:db8:: in examples, it's intentionally non-routable to prevent confusion with real addresses.
Site-local addresses (fec0::/10) were originally defined for organization-internal use, similar to IPv4 private addresses. They were deprecated in RFC 3879 due to ambiguous scope definition—what constitutes a 'site' was never clearly specified. Unique Local Addresses (ULAs) replaced site-local addresses. Encountering fec0::/10 addresses indicates legacy configurations that should be migrated to ULAs.
The 64-bit interface identifier in unicast addresses can be generated through multiple methods, each with different properties regarding stability, privacy, and security. Understanding these methods is essential for network architecture and troubleshooting.
Method 1: EUI-64 (Modified MAC Address)
The traditional approach derives the interface identifier from the Ethernet MAC address:
00:1a:2b:3c:4d:5eff:fe in the middle: 00:1a:2b:ff:fe:3c:4d:5e02:1a:2b:ff:fe:3c:4d:5e021a:2bff:fe3c:4d5eAdvantages: Stable, predictable, easy to correlate with MAC addresses for troubleshooting.
Disadvantages: Enables tracking across networks (privacy concern), reveals device vendor (OUI prefix), fails when no MAC exists (tunnels, virtual interfaces).
Method 2: Privacy Extensions (RFC 4941)
To prevent tracking, hosts can generate temporary, random interface identifiers that change periodically:
Advantages: Prevents long-term tracking, hides MAC address, changes identity over time.
Disadvantages: Breaks connection stability for long-lived sessions, complicates logging/auditing, may interact poorly with poorly-designed firewalls.
Method 3: Stable Semantically Opaque IIDs (RFC 7217)
A balanced approach generating identifiers that are:
The algorithm: IID = Hash(Prefix, Interface_Name, Network_ID, DAD_Counter, Secret_Key)
This provides stability for local administration while preventing cross-network tracking.
| Method | Stability | Privacy | Trackable Across Networks | Predictable | RFC |
|---|---|---|---|---|---|
| EUI-64 (MAC-based) | High | Poor | Yes | Yes | RFC 4291 |
| Privacy/Temporary | Low (rotates) | High | No | No | RFC 4941 |
| Stable Opaque IID | Per-network | Good | No | No | RFC 7217 |
| Manual/Static | High | Variable | Depends | Depends | N/A |
| DHCPv6 | Policy-based | Policy-based | Policy-based | Policy-based | RFC 8415 |
Modern operating systems (Windows 10+, recent Linux kernels, macOS) default to RFC 7217 stable opaque identifiers or a combination with temporary addresses. EUI-64 is increasingly rare as the default. If you see ff:fe in interface identifiers during troubleshooting, you're likely looking at legacy behavior or explicitly configured EUI-64 generation.
With multiple addresses per interface, IPv6 hosts must select which source address to use for outgoing packets. This process, defined in RFC 6724, follows a sophisticated algorithm ensuring optimal address pairing.
The Fundamental Rule: Prefer source addresses that match the destination's scope and characteristics.
RFC 6724 Selection Rules (Simplified):
A misconfigured network can leave hosts without appropriate source addresses. If a host has only link-local addresses but attempts to reach a global destination, the connection fails—not because of routing, but because no valid source address exists. This commonly occurs when SLAAC or DHCPv6 fails, leaving only link-local addresses operational.
Policy Table Customization:
The default RFC 6724 policy table can be customized to implement organizational preferences. Common customizations include:
On Linux, the policy table is configured in /etc/gai.conf. On Windows, netsh interface ipv6 show prefixpolicies displays the current table.
Understanding source address selection is essential for troubleshooting connectivity problems, security configurations, and multi-homed network designs.
We have traversed the complete landscape of IPv6 unicast addressing—from the automatically-generated link-local addresses that bootstrap all IPv6 communication, through the globally-routable addresses that enable Internet connectivity, to the privacy-preserving mechanisms that protect user identity. Let's consolidate this knowledge:
You now possess comprehensive understanding of IPv6 unicast addressing—the addressing type that handles the vast majority of network traffic. Next, we'll explore multicast addresses, where IPv6's elegance truly shines: enabling efficient one-to-many communication without the broadcast storms and inefficiencies of IPv4.