With IPv6, pretty much the smallest subnet ever used is a /64 network, like the one above. This means that there are still 64 bits for usable IP address inside that one subnet. That means that the purpose of having larger subnets, like a /48, is almost entirely for organizational purposes or routing so that you can split them up into small /64s, not size like the case was with IPv4. You’ll notice that even when we do Point-to-Point links with IPv6, we still use a /64 because that is the standard for IPv6. There has been some debate over whether to use a /64 or a /127 for point-to-point links, and different people do it different ways, but for the purpose of our labs, we’ll stick to the standard of never going smaller than a /64 subnet.
Address Configuration with IPv6
One of the biggest changes you run into early with IPv6 is the change in how hosts auto configure themselves in an IPv6 network. With IPv4, we setup a DHCP server which hands out IP addresses to the hosts and tells them information about the network, such as the default gateway and DNS servers. With IPv6, DHCP is still used for providing some of that information, but not as much as it did in IPv4. Most of the configuration, however, is done with what is called Router Advertisements, or RAs for short. Routers are setup to automatically send out periodic updates to every host on a subnet, whether it has a connected IP or not. These RAs contain information about the network, specifically the subnet prefix and length, as well as where the router is on the network. The host then uses Stateless Address Autoconfiguration or SLAAC to assign itself and IP on the network that is unique from every other host on the network. We’ll not go into details of how that works, here, but it uses information from the MAC address to calculate a new IPv6 address for itself.
As I mentioned earlier, DHCP is still used with IPv6. The most important function of DHCP is to provide hosts with the DNS servers for the network, but if configured, it also can provide other numerous options the same way it does in IPv4. When configuring the routers, you can actually provide instructions in the RAs to make hosts use the DHCP server for configuring an IP address, but in most cases SLAAC does the job well enough for us.
Link Local Addressing
Link local addresses were already used in IPv4, but with IPv6 they become much more widely used and important. A link local address is an address that the host assigns itself when it doesn’t have another routable address. For IPv4, these addresses fall into the subnet 169.254.0.00/16. You’ll notice these addresses in IPv4 specifically when a host sends out a DHCP request and doesn’t get a reply. The host will then just configure itself with an address on that subnet, so it is still able to communicate with other hosts who have link local addresses despite not having a configured IP address.
Similar to IPv4, IPv6 uses link local addresses in the subnet fe80::/10. The major difference, however, is that with IPv6, link local addresses are required on an interface for communication between hosts, even when the interface has another configured IP on the interface. This means that when you run a command like “ip a”, on interfaces that you have configured IPv6, there will be at least 2 addresses: One address that was configured statically, through SLAAC, or through DHCP, and then another on the subnet fe80::/10 that is the link local address.