IPv6 Address Types: Global, Link-Local, Multicast Explained
Learn the different types of IPv6 addresses: global unicast for the Internet, link-local for LANs, multicast for groups, and more.
IPv6 addresses work differently than IPv4 in how they deliver packets. Understanding these differences matters when you're debugging network issues or designing systems.
TL;DR - Quick Summary
Key Points:
- IPv6 uses unicast (one-to-one), multicast (one-to-many), and anycast (one-to-nearest) — no broadcast
- Global unicast (2xxx/3xxx) for Internet, link-local (fe80::) for local segments, ULA (fd00::) for private networks
- Multicast (ffxx::) replaces broadcast; solicited-node multicast makes neighbor discovery efficient
- Link-local addresses require zone IDs like
fe80::1%eth0to specify the interface
Skip to: Global Unicast | Multicast | Quick Reference
Three Delivery Methods#
IPv6 uses three fundamental delivery models:
- Unicast: One sender to one receiver. The standard way to communicate with a specific host.
- Multicast: One sender to multiple receivers. Efficient for group communication.
- Anycast: One sender to the nearest receiver in a group. Used for load balancing and redundancy.
No Broadcast in IPv6
IPv6 eliminates broadcast entirely. Where IPv4 would broadcast to all hosts (like ARP requests flooding your network), IPv6 uses targeted multicast. This reduces unnecessary traffic and improves network efficiency.
Unicast Addresses#
Every unicast address identifies exactly one network interface. Send a packet to that address, and exactly one host receives it.
Global Unicast Addresses (2000::/3)#
These are your public IPv6 addresses, routable across the entire Internet. If an address starts with 2 or 3, it's a global unicast address.
2001:0db8:85a3:0000:0000:8a2e:0370:7334
│ │ │ │
│ │ │ └─ Interface ID (64 bits)
│ │ └──────────────── Subnet ID (16 bits)
│ └────────────────────────── Site Prefix (48 bits)
└──────────────────────────────────── Global Routing PrefixThe typical structure splits a /48 allocation like this:
| Bits | Component | Purpose |
|---|---|---|
| 0-47 | Global Routing Prefix | Your allocation from your ISP or RIR |
| 48-63 | Subnet ID | 65,536 subnets per site |
| 64-127 | Interface ID | Generated from MAC address or randomized |
Real providers typically assign a /48 to sites, a /56 to small businesses, or a /64 to residential users. Each /64 subnet contains 18 quintillion addresses, which is why you subnet on /64 boundaries.
Documentation Addresses
The prefix 2001:db8::/32 exists only for documentation and examples. Don't use these addresses in production. Every example in RFCs uses 2001:db8 for a reason—they won't conflict with real networks.
Link-Local Addresses (fe80::/10)#
Every IPv6 interface automatically generates a link-local address when you enable IPv6. These addresses work only on the local network segment and never get routed.
fe80::1
fe80::a1b2:c3d4:e5f6:7890Link-local addresses are mandatory for IPv6 to function. Neighbor Discovery, Router Solicitation, and other core protocols require them. Your interface might not have a global address, but it will always have a link-local address.
Zone IDs: Specifying the Interface#
Since fe80::1 could exist on every interface, you need to specify which interface you mean:
ping6 fe80::1%eth0 # Linux
ping6 fe80::1%en0 # macOS
ping fe80::1%12 # Windows (use interface index)The % symbol precedes the zone ID. On Linux and macOS, use the interface name. On Windows, use the interface index from netsh interface ipv6 show interface.
Unique Local Addresses (fc00::/7)#
Think of these as IPv6's version of RFC 1918 private addresses. They're not globally routable, making them suitable for internal networks.
In practice, you'll see fd00::/8 addresses because the fc00::/8 range requires central allocation that was never implemented. Generate the 40-bit global ID randomly:
fd 3a:c7b1:29f4 :0001:0000:0000:0000:0001
│ └──────────┘ │ └──────────────────┘
│ │ │ │
│ │ │ └─ Interface ID (64 bits)
│ │ └─────────────── Subnet ID (16 bits)
│ └──────────────────────── Random Global ID (40 bits)
└──────────────────────────────── ULA prefix (fd = locally assigned)When you generate that 40-bit identifier randomly, you minimize collision risk if two networks merge later. Don't just use fd00::1 everywhere.
Special Addresses#
Two addresses have unique purposes:
Loopback (::1): Send packets to yourself. The IPv6 equivalent of 127.0.0.1. Traffic to ::1 never leaves the host.
Unspecified (::): Represents the absence of an address. Hosts use :: as a source address during DHCPv6 or when they haven't configured an address yet. You can't send packets to ::.
Multicast Addresses (ff00::/8)#
Every address starting with ff is multicast. The packet goes to every interface that joined that multicast group.
Address Structure#
ff 0 2 : 0000:0000:0000:0000:0001
│ │ │ └──────────────────────┘
│ │ │ │
│ │ │ └─ Group ID (112 bits)
│ │ └──────────────── Scope (4 bits)
│ └─────────────────── Flags (4 bits)
└────────────────────── Multicast prefixThe scope field determines how far the multicast packet travels:
| Scope | Value | Range |
|---|---|---|
| Interface-local | 1 | This interface only |
| Link-local | 2 | Local network segment |
| Admin-local | 4 | Administrative boundary |
| Site-local | 5 | Organization site |
| Organization-local | 8 | Multiple sites in org |
| Global | e | Entire Internet |
Essential Multicast Groups#
Several multicast addresses serve critical functions:
| Address | Purpose |
|---|---|
ff02::1 | All nodes on the link (replaces IPv4 broadcast) |
ff02::2 | All routers on the link |
ff02::5 | All OSPF routers |
ff02::6 | All OSPF designated routers |
ff02::9 | All RIP routers |
ff02::1:2 | All DHCPv6 servers/relays |
ff02::fb | mDNSv6 (multicast DNS) |
Solicited-Node Multicast#
This mechanism makes neighbor discovery efficient. Instead of asking every host "who has this IP?" (like ARP), IPv6 asks a small multicast group.
Every unicast address automatically generates a corresponding solicited-node multicast address:
Unicast: 2001:db8:1234:5678::abcd:ef12:3456
└────┬─────┘
│
(last 24 bits)
│
Solicited-Node: ff02::1:ff12:3456 ────────┘When a host needs to resolve 2001:db8:1234:5678::abcd:ef12:3456, it sends a Neighbor Solicitation to ff02::1:ff12:3456. Only hosts with addresses ending in 12:3456 process the request. This dramatically reduces multicast overhead compared to broadcasting to every host.
Anycast Addresses#
Anycast addresses look identical to unicast addresses—there's no special prefix. The difference is configuration: you assign the same address to multiple interfaces, and routing delivers packets to the topologically nearest one.
Common Use Cases#
DNS Root Servers: All 13 root server letters (a.root-servers.net through m.root-servers.net) use anycast. The same IP addresses exist at hundreds of locations worldwide. Your query reaches whichever root server is closest.
CDN Edge Servers: Content delivery networks use anycast to route users to nearby cache servers. Same address, different geographic locations.
6to4 Relay Routers: The address 192.88.99.1 (IPv4) and 2002:c058:6301:: (IPv6) are anycast addresses for 6to4 relays.
Subnet-Router Anycast#
Every subnet automatically has a reserved anycast address with the interface identifier set to zero:
Subnet: 2001:db8:1234:5678::/64
Subnet-Router: 2001:db8:1234:5678::Routers on that subnet should respond to this address. In practice, it's rarely used.
Quick Reference: Identifying Address Types#
Look at the first few characters to identify any IPv6 address:
| Starts with | Type | Scope |
|---|---|---|
::1 | Loopback | Host-local |
:: | Unspecified | N/A |
fe80: | Link-local unicast | Link-local |
fc00: or fd00: | Unique local unicast | Private |
ff00: through ffff: | Multicast | Varies (check 2nd digit) |
2... or 3... | Global unicast | Internet |
Everything else is either reserved or not yet assigned.
Checking Your Addresses#
See what addresses your system has configured:
Display IPv6 addresses configured on your system:
Linux:
ip -6 addr showThis command lists all IPv6 addresses assigned to each network interface.
macOS:
ifconfig | grep inet6This filters interface configuration to show only IPv6 addresses.
Windows:
netsh interface ipv6 show addressesThis displays all configured IPv6 addresses with interface details.
You'll typically see:
- Multiple link-local addresses (
fe80::), one per interface - One or more global unicast addresses if you have IPv6 connectivity
- The loopback address
::1on the loopback interface - Several multicast group memberships (usually not displayed by default)
Testing Multicast#
Send an ICMPv6 echo request to all nodes on your local link:
# Replace eth0 with your interface name
ping6 ff02::1%eth0This sends a multicast ping to all IPv6-enabled devices on the local network segment. You'll get replies from every device, which is useful for discovery but can be noisy on large networks.
Check if routers are present:
ping6 ff02::2%eth0This targets the all-routers multicast group. Only routers should respond to this address.
Validate Address Types
Use the IPv6 Validator to check any address. Enter an address and instantly see its type, scope, and whether it's valid. Useful when troubleshooting configurations.
Practical Implications#
Different address types affect how you design networks and troubleshoot issues:
Security policies: Filter global unicast at your firewall, but link-local must pass through for neighbor discovery. Blocking fe80::/10 breaks IPv6 entirely.
Application binding: Servers that bind to :: listen on all addresses (like 0.0.0.0 in IPv4). Binding to ::1 restricts to localhost only.
Routing tables: Link-local addresses appear as next-hops in routing tables, which confuses people used to IPv4. This is normal—routers use link-local addresses for stability since they never change.
DNS: Only publish global unicast addresses in DNS. Never publish link-local or unique local addresses in public DNS zones.
Understanding these address types isn't academic—it's necessary for configuring firewalls, debugging connectivity, and designing networks that actually work.
Related Articles#
- IPv6 Fundamentals - Understanding the basics of IPv6 addressing and why it matters
- IPv6 Subnetting Guide - Learn how to efficiently divide your IPv6 address space
- IPv6 Security Best Practices - Secure your IPv6 network against common threats and vulnerabilities
Validate Address Types
Use the IPv6 Validator to check any address. Enter an address and instantly see its type, scope, and whether it's valid. Useful when troubleshooting configurations.