ping6.net
Fundamentals

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.

ping6.netJanuary 20, 20249 min read
IPv6address typesunicastmulticastlink-localanycast

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%eth0 to 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 Prefix

The typical structure splits a /48 allocation like this:

BitsComponentPurpose
0-47Global Routing PrefixYour allocation from your ISP or RIR
48-63Subnet ID65,536 subnets per site
64-127Interface IDGenerated 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.

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:7890

Link-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 prefix

The scope field determines how far the multicast packet travels:

ScopeValueRange
Interface-local1This interface only
Link-local2Local network segment
Admin-local4Administrative boundary
Site-local5Organization site
Organization-local8Multiple sites in org
GlobaleEntire Internet

Essential Multicast Groups#

Several multicast addresses serve critical functions:

AddressPurpose
ff02::1All nodes on the link (replaces IPv4 broadcast)
ff02::2All routers on the link
ff02::5All OSPF routers
ff02::6All OSPF designated routers
ff02::9All RIP routers
ff02::1:2All DHCPv6 servers/relays
ff02::fbmDNSv6 (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 withTypeScope
::1LoopbackHost-local
::UnspecifiedN/A
fe80:Link-local unicastLink-local
fc00: or fd00:Unique local unicastPrivate
ff00: through ffff:MulticastVaries (check 2nd digit)
2... or 3...Global unicastInternet

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 show

This command lists all IPv6 addresses assigned to each network interface.

macOS:

ifconfig | grep inet6

This filters interface configuration to show only IPv6 addresses.

Windows:

netsh interface ipv6 show addresses

This 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 ::1 on 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%eth0

This 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%eth0

This 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.

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.