By James Hanback
The skies overhead are calm and blue. The birds are singing. The world seems to have clicked into place. You now know what an IP version 6 (IPv6) address is and how to format it. No one outside of a certification exam has quizzed you on the particulars of the IPv6 standard, and your boss doesn’t even know how to connect to the Wi-Fi, so it’s time to kick back and bask in the glow of your soon-to-be-certified skills because you know everything you need to know about IPv6.
Or so you thought.
There’s a storm coming your way. Clouds are rolling in from the west, and pretty soon this calm, clear day will become overcast. Or maybe it’ll become unicast, or multicast, or anycast. And how would you recognize it, anyway? We haven’t covered those terms yet. So, here goes:
There are three general types of addresses within the IPv6 address space: unicast addresses, multicast addresses, and anycast addresses. Similar to an IP version 4 (IPv4) unicast address, an IPv6 unicast address identifies a single host on an IPv6 network. Unicast addresses are therefore typically known as “one-to-one” addresses. Similar to an IPv4 multicast address, an IPv6 multicast address is used to send traffic to all devices that are part of the same multicast group. Multicast addresses are therefore typically known as “one-to-many” addresses. Anycast addresses, which are not present in IPv4, are used to send packets to the closest device that is configured with the specified anycast address. Anycast addresses are therefore understood to be “one-to-nearest” addresses.
Because a unicast address is a “one-to-one” address, network devices use a unicast address as a destination address for traffic that is intended for a specific host. In other words, if you as a network administrator want to determine whether an IPv6 file server is alive and connected to the network, you can choose to ping that server’s unicast IPv6 address in the same way you’d ping its unicast IPv4 address on an IPv4 network. Unicast addresses make up the bulk of the IPv6 address space. In fact, almost any IPv6 address that does not begin with a hexadecimal value of FF is a unicast IPv6 address (we’ll discuss addresses that begin with FF later).
There are several different types of IPv6 unicast addresses, including global unicast addresses, unique local unicast addresses (ULAs), and link-local unicast addresses. To put it in more familiar terms, a global unicast address is equivalent to a publicly routable IPv4 address—the type of address you assign to an interface when you want that interface to operate directly on the Internet. The first three bits of a global unicast IPv6 address are always 001. The fourth bit can be either a 0 or a 1. Therefore, a global unicast address will always begin with either a hexadecimal value of 2 (0010) or a hexadecimal value of 3 (0011). The IPv6 address of 2001::1 is an example of a global unicast address. That particular address is included in a range of IPv6 addresses that is reserved for Internet Engineering Task Force (IETF) protocol assignments.
A ULA is equivalent to an IPv4 RFC-1918 address, or private address. ULAs, which are defined in RFC-4193, are assigned to hosts that do not send traffic directly on the Internet. For example, hosts that sit behind a firewall on a private company’s IPv6 network will most likely be assigned unicast addresses from the ULA address space. It is possible for two different organizations to use the same ULA address range, just as they might with an RFC-1918 address range, because ULA address spaces are not officially assigned to any organization and are not routable over the Internet. The first seven bits of a ULA are always 1111110, which means the eighth bit can be either a 0 or a 1. Therefore, a ULA will always begin with the hexadecimal values of either FC (11111100) or FD (11111101). The IPv6 address of FC01::1 is an example of a ULA.
The simplest way to understand an IPv6 link-local unicast address is to equate it with an RFC-3927 IPv4 address, which is to say that IPv6 link-local addresses are a range of addresses similar in purpose to the 169.254.0.0/16 IPv4 range that is automatically assigned by a Microsoft Windows computer when no manual IPv4 addressing is configured and no automatic IPv4 addressing mechanism, such as Dynamic Host Configuration Protocol (DHCP), is in place. In the Windows world, these IPv4 addresses are known as Automatic Private IP Addressing (APIPA) addresses.
In IPv4, link-local addresses are optional. In IPv6, every IPv6 interface is required to have a link-local address in addition to any other IPv6 addresses that might be manually or automatically configured on the interface. Traffic that is sent to a link-local address cannot be routed. Therefore, only devices on the same link can communicate with an IPv6 link-local address. Typically, IPv6 devices use their link-local addresses as source addresses when sending a neighbor solicitation message (more on that later).
The first eight bits of a link-local address are always 11111110, which is the binary equivalent of the hexadecimal value of FE. The next four bits can be any binary value in the range from 1000 through 1011. Thus a link-local address will always begin with one of the following values: FE8 (111111101000), FE9 (111111101001), FEA (111111101010), or FEB (111111101011).
Common IPv4 multicast addresses, such as the All Hosts address of 224.0.0.1, actually have IPv6 equivalents, such as FF02:0000:0000:0000:0000:0000:0000:0001, otherwise known as FF02:0:0:0:0:0:0:1, or FF02::1. You might recognize old FF02::1 as the example IPv6 address we used last time. Remember that multicast addresses are “one-to-many” addresses because one host’s transmission is received by many hosts within the multicast group. The following convenient table breaks down some common IPv4 multicast addresses and their IPv6 equivalents:
Multicast Address |
IPv4 |
IPv6 |
All Hosts |
224.0.0.1 |
FF02::1 |
All Routers |
224.0.0.2 |
FF02::2 |
All OSPF Routers |
224.0.0.5 |
FF02::5 |
All OSPF DRs |
224.0.0.6 |
FF02::6 |
All RIP Routers (except RIPv1) |
224.0.0.9 |
FF02::9 |
All EIGRP Routers |
224.0.0.10 |
FF02::A |
Based on the information above, you might have noticed that the first hexadecimal quartet of each IPv6 multicast address contains the same value: FF02, which is the hexadecimal equivalent of the 16-bit binary value of 1111111100000010. However, the IPv6 multicast address space is not restricted to those first 16 bits. The first eight bits of an IPv6 multicast address are always 1s, or 11111111. Therefore, an IPv6 multicast address will always begin with the hexadecimal value of FF. An IPv6 address that begins with anything other than FF is a unicast address of some type.
There are some differences between how IPv6 uses multicast addresses when compared to IPv4. For example, when an IPv6 host on a local area network (LAN) wants to communicate with another host on the same LAN for the first time, the first host sends a neighbor solicitation to the All Hosts address of FF02::1 from its own link-local address. The neighbor solicitation contains the second host’s IPv6 address. By contrast, an IPv4 host in the same situation sends an Address Resolution Protocol (ARP) request to the IPv4 segment’s broadcast address. IPv6 uses multicast addresses to accomplish many tasks similar to those for which IPv4 uses broadcast addresses.
Where IPv6 completely departs from IPv4 in terms of address types is in its use of anycast addresses, which do not exist in IPv4. Anycast addresses are globally routable and share the same address space as IPv6 unicast addresses; they are therefore visually indistinguishable from unicast addresses. The only difference between a unicast address and an anycast address is that an anycast address is configured on multiple hosts. Each of those hosts is typically located on a different service provider or behind a different router interface. A packet that is sent to an anycast address is routed to the nearest interface that has been configured with that address as determined by the router, which is why anycast addresses are called “one-to-nearest” addresses. Anycast addresses can thus be used to load balance IPv6 traffic across service providers.
Finally, there are two special IPv6 addresses that could technically be considered types all their own. You might remember a little address known as the loopback address, or 127.0.0.1, from your halcyon days of IPv4 addressing. The loopback address is a host-only address used for testing the Transmission Control Protocol/Internet Protocol (TCP/IP) stack. IPv6 uses an address of ::1, or 0:0:0:0:0:0:0:1, for this same purpose.
Additionally, there is an IPv6 equivalent to the IPv4 address of 0.0.0.0 that is used by DHCP clients as part of the process for obtaining an address from a DHCP server. The IPv6 address of 0:0:0:0:0:0:0:0, which is typically written as ::, is used to request an IPv6 address from a DHCP version 6 (DHCPv6) server.
Now you know not only how to recognize an IPv6 address when you see one, but also how to recognize the types of IPv6 addresses. The cloudiness of this particular storm has blown away to once again reveal the clear, blue sky of comprehension. Alas, the calm is fleeting. For on the horizon I see another storm brewing. Yes, you know what an IPv6 address looks like. Yes, you know how to determine the types of IPv6 addresses. But there’s one important component missing when you compare what you know about IPv4 addressing to what you now know about IPv6 addressing, and that’s subnetting.
In the third part of this series, we’ll explore IPv6 subnets and how they differ from what you know about and practice in IPv4 subnetting.