Last time, I talked about the need for IPv6. On this installment, I will explain what is included in IPv6 and how it solves the problems from IPv4. Let’s recap:
Internet Protocol version 4 came out in 1981. To identify hosts connected at layer three, IP addresses were used. IPv4’s addressing convention allows for a little over four billion addresses (what seemed like an un-reachable number). In 2011, the world ran out of IPv4 addresses (despite efforts to stall the issue). As such a new version of Internet Protocol was created – IPv6 (further reading: yes, I know it should be IPv5).
How does IPv6 solve this addressing problem? Simple: use more bits for addressing. Whereas IPv4 uses 32-bit addresses (allowing 232 addresses), IPv6 uses 128-bit addresses. How many possible addresses is that? 2128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 (or 3.4 x 1038). To put that into perspective: there are more addresses in IPv6 than there are stars in the observable universe (1023). We could assign a billion IP address to every star in the known universe and still have more than half of the address space in IPv6 leftover.
When you get a chance to completely rebuild something, though, generally it is a good idea to fix any problems or issues seen in the last iteration. IPv6, therefore, has numerous other changes that improve upon IPv4.
Multicast is a large focus of IPv6. Similar to broadcasting, multicasting is using one address to send a packet to multiple recipients. The benefit of using multicast instead of broadcast is saving CPU cycles on the network. Example:
My computer just turned on and needs to find out information about the network to which it is connected. Where is the default gateway? What is the subnet? Where is the DNS server?
In response to the above scenario, my computer can send a broadcast asking for the default gateway. By doing so, every computer on the same subnet will process the packet. With IPv6, the other option is to send a multicast to all routers. This way, if my computer is connected to a large subnet, I can save the time of other computers by sending a packet only to routers even when I don’t know their address!
Additionally, due to the large address space in IPv6, every host can have a unique address at boot without needing DHCP. How many of you have ever run into DHCP issues? DHCP is generally tough with IPv4, because the DHCP host must communicate (generally across layer three boundaries) with a host that has no layer three address. With IPv6, every host has a link local address out of the box (further reading: How to make a link local address in IPv6). This unique link local address simplifies the DHCP process.
Lastly, IPv6 was also constructed with routers in mind. Therefore, many decisions were made with router processing in mind. For example, an IPv4 header has 14 sections while an IPv6 header only has eight (shown below). IPv6 also does away with fragmenting of packets, instead packets can range in size up to 4GB. No fragments means less processing with large packets.
With all the improvements that IPv6 brings to the stack, it’s no wonder I titled this blog “The Future of Network Addressing”. Sadly, though, IPv6 has not taken the world by storm. Due to the efforts to mitigate the exhaustion of the IPv4 address space, the world has not completed the transition to IPv6. See for yourself.
Some day, though, we will move forward. We will finally have enough addresses for all the stars in the known universe. Some day.
See you next time!