Last week we dug into the whys and wherefores of using IPv6. Today we're going to learn all about how to understand IPv6 addressing by breaking it down into nice understandable chunks, and we'll cover some shortcuts for writing IPv6 addresses. You'll be able to look at an IPv6 address and understand exactly what it does.
In the olden days, it was possible to skate over understanding the binary math behind IPv4 addresses by memorizing the various classes and their address ranges. That won't work for IPv6. Get yourself an IP address calculator and learn how work out the conversions and calculations, or IPv6 will forever remain a mystery. ipv6calc is an excellent one that runs on Linux/Unix. A bit of Googling will uncover an abundance of Web-based IP calculators and converters.
IPv6 Address Types
Increasing the IP address pool was one of the major forces behind developing IPv6. It uses a 128-bit address, meaning that we have a maximum of 2¹²⁸ addresses available, or 340,282,366,920,938,463,463,374,607,431,768,211,456, or enough to give multiple IP addresses to every grain of sand on the planet. So our friendly old 32-bit IPv4 dotted-quads don't do the job anymore; these newfangled IPs require eight 16-bit hexadecimal colon-delimited blocks. So not only are they longer, they use numbers and letters. At first glance, those mondo IPv6 addresses look like impenetrable secret code:
We'll dissect this in a moment and learn that's it not such a scary thing, but first let's look at the different types of IPv6 addressing.
Under IPv4 we have the old familiar unicast, broadcast and multicast addresses. In IPv6 we have unicast, multicast and anycast. With IPv6 the broadcast addresses are not used anymore, because they are replaced with multicast addressing.
This is similar to the unicast address in IPv4 – a single address identifying a single interface. There are four types of unicast addresses:
- Global unicast addresses, which are conventional, publicly routable address, just like conventional IPv4 publicly routable addresses.
- Link-local addresses are akin to the private, non-routable addresses in IPv4 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). They are not meant to be routed, but confined to a single network segment. Link-local addresses mean you can easily throw together a temporary LAN, such as for conferences or meetings, or set up a permanent small LAN the easy way.
- Unique local addresses are also meant for private addressing, with the addition of being unique, so that joining two subnets does not cause address collisions.
- Special addresses are loopback addresses, IPv4-address mapped spaces, and 6-to-4 addresses for crossing from an IPv4 network to an IPv6 network.
If you read about site-localIPv6 addresses, which are related to link-local, these have been deprecated, so you don't need to bother with them.
Multicast in IPv6 is similar to the old IPv4 broadcast address a packet sent to a multicast address is delivered to every interface in a group. The IPv6 difference is it's targeted instead of annoying every single host on the segment with broadcast blather, only hosts who are members of the multicast group receive the multicast packets. IPv6 multicast is routable, and routers will not forward multicast packets unless there are members of the multicast groups to forward the packets to. Anyone who has ever suffered from broadcast storms will appreciate this mightily.
An anycast address is a single address assigned to multiple nodes. A packet sent to an anycast address is then delivered to the first available node. This is a slick way to provide both load-balancing and automatic failover. The idea of anycast has been around for a long time; it was proposed for inclusion in IPv4 but it never happened.
Several of the DNS root servers use a router-based anycast implementation, which is really a shared unicast addressing scheme. (While there are only thirteen authoritative root server names, the total number of actual servers is considerably larger, and they are spread all over the globe.) The same IP address is assigned to multiple interfaces, and then multiple routing tables entries are needed to move everything along.
IPv6 anycast addresses contain fields that identify them as anycast, so all you need to do is configure your network interfaces appropriately. The IPv6 protocol itself takes care of getting the packets to their final destinations. It's a lot simpler to administer than shared unicast addressing.