One of the challenges and sources of confusion for those learning IPv6 is the types of addresses. IPv6 has 3 main types of addresses. Those familiar with IPv4 will be already be familiar with Unicast, Multicast and Broadcast addressing. For those who aren’t, the Unicast address type is what would be used when a packet is being sent to a single host. Mulitcast, on the other hand, would be used when a packet is to be sent (or more accurately received) by multiple destinations. Another type of address that we had in IPv4 was Broadcast addresses. Broadcast addresses were sent to all hosts on the local subnet. Unicast and Multicast are the first two types of addresses that we will deal with in IPv6. The third type of IPv6 address type is the Anycast. Anycast addresses, as we’ll see in a few minutes is sort of a combination of Unicast and Multicast addressing. With Anycast, mulitple hosts listen for Anycasts destinations, but only a single host will receive and service an Anycast request.
To recap from our IPv4 experience, a Unicast IP address is a unique destination. A Unicast IP address can be either the source or destination of a packet. As such, we could expect to see a Unicast address in the source and/or destination fields of an IP header. Unicast is the most common and easiest to understand address type. Like IPv4, IPv6 is heavily dependant on Unicast addressing. IPv6 breaks the Unicast addressing up into several sub-categories. The normal category is called “Global Unicast”. Global Unicast addresses are unique for the entire scope of the Internet. This is synonymous with public IP addressing. The IPv4 equivalent of IPv6 “Global Unicast” would be any legal public (non-RFC1918) Class A, B or C address.
The next class or sub-category of IPv6 Unicast addressing is the “Site-Local” Unicast address. This is similar to RFC1918 (private) addressing. So a comparison could be drawn between IPv6 “Site-Local” addresses and the more familiar IPv4 private addresses like 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16. The interesting thing about the “Site-Local” Unicast addressing is that it has already been deprecated in IPv6. So while I am including it in this article, it is something we really should not use. IPv6 is designed to be used without NAT and does not need private addressing.
The third, and final, class of IPv6 Unicast addressing is known as “Link-Local”. In IPv4 the link-local address range was 169.254.0.0/16. If an address was not assigned and a DHCP server could not be located, a host should automatically give itself an address in this range. This range was also known as APIPA, or Automatic Private IP Addressing range. In IPv6 we actually use the “Link-Local” address along side Global addressing. This address type is used for maintenance tasks, such as neighbor discovery, that have a local scope.
The second major type of IPv6 addresses is known as Multicast. This existed in IPv4, so it is not a new concept. A packet with a Multicast destination can reach many destinations. This is similar to a radio station. A signal is sent out and radios can “tune” into the station. The signal will be received by each radio that is tuned into that frequency. With IP Multicasting, the packet will be received by each host that is choosing to listen for packets destined to a particular address. That is the basic concept but there are some efficiency mechanisms that prune back Multicasts so they are not unnecessarily delivered onto a network segment. With IP Multicasting, an IP Multicast address is only found in the destination. Packets will never be sourced from an IP Multicast address. This concept is basically the same whether we are working with IPv4 or IPv6.
The third and final major address tpe in IPv6 is Anycast. Anycast addresses, like Multicast, can be assigned to multiple hosts. Also like Multicast, an Anycast address would never be the source of a packet. An Anycast destination might be used for some type of network service that would be provided. Unlike Multicast, the network would only deliver a packet with an Anycast destination to a single destination. When a host listening for an Anycast packet responds, it would appropriately use one of its Unicast addresses as the source of the packet. Anycast addresses are actually allocated from the Unicast address space and are indistinguishable from general Unicast addresses. What makes an address an Anycast address is how it is used throughout a network.and assigned to service providing hosts.
So what happened to Broadcasts? In IPv4, a packet sent to 255.255.255.255 would be received by all hosts on the subnet. IPv6 does not have a broadcast address per se. However there is an “all-hosts” Multicast. So by definition the Multicast destination FF02::2/128 is a Multicast address. However, in practice it accomplishes the same thing as an IPv4 packet destined to 255.255.255.255.
Now that we understand the different types of addresses, we should take a quick look at how to identify IPv6 address types. By looking at the first few bits of an IPv6 address, we can quickly determine if it is a Multicast, global-Unicast or link-local Unicast.
IPv6 Multicast Address Range
IPv6 addresses starting with FF are Multicast Addresses
Unicast Address Ranges–
IPv6 Unique Local–Unicast
FC00::/7 — IPv6 address starting with FC or FD are Unique-Local
IPv6 Link Local Address Range–Unicast
FE80::/10 — IPv6 addresses starting with FE80-FEBF are Link Local Addresses
IPv6 Site Local Address Range–Unicast (no longer used)
FEC0::/10 — IPv6 addresses starting with FEC are Site Local Addresses
IPv6 Global Address Range–Unicast
2000::/3 — This one is much easier to see in binary.
0010 0000 0000 0000 (range 001x xxxx xxxx xxxx)
IPv6 addresses starting with 2xxx-3xxx are Global Unicast addresses
Special Case Addresses
:: — Unspecified-similar to 0.0.0.0 in IPv4
::1 — Loopback-similar 127.0.0.1 in IPv4
All other IPv6 addresses are reserved.
There are a lot of references to IPv6 addressing and address types. Personally, I think it is one of the confusing but simple topics that we need to master in order to understand this new protocol.