During the OpenStack summit recently in Sydney, my colleague and I went looking for interesting conference sessions to drop in on. One of those was a talk on IPv6 (Internet Protocol version 6 – the most recent version of the communications protocol that provides an identification and location system for computers on networks and routes traffic across the internet).
While I’ve used IPv6 for a number of years, it’s always interesting to get additional information, especially if it’s being given by someone that knows a little more about it than you do.
Before we get into anything, I’m sure everyone has heard of IPv4 and IPv6, but what actually are they and why does it go from 4 to 6 and not 4 to 5 to 6 you may ask?
Well, back in the 1970s they created what was called ‘Internet Stream Protocol’ or simply put ‘ST’. This was originally made to stream video and voice data. However, this was purely experimental and due to it never being released for public use, not many people have heard about it or are aware of it. To top it all off, what would be called ‘IPv5’ also relied on the same 32bit addressing that IPv4 used.
Why is there such a big fuss about IPv6? Why can’t we just stick to IPv4 and it’s 32bit addresses? It’s been working for years, so what’s the big deal?
Well, the primary reason for this is that IPv4 does not have enough total addresses to give everyone currently living on Earth an IPv4 address. IPv4 has a maximum address limit of roughly 4.294 billion, which while it seems like a huge number, the world’s population is now at 7.6 billion.
With millions of new devices appearing online each year, we were always going to run out of addresses and we already have. There are only a handful of regions that still have unallocated
IPv4 address spacing and the number of unallocated addresses are… tiny. The largest holder of unallocated IPv4 being AFRNIC and they only have 0.7645 of a /8 remaining. There are 16,777,216 addresses within an IPv4’s /8, this means that AFRNIC only has around 12 million addresses left.
This is exactly what IPv6 is for. Unlike IPv4, IPv6 is a 128 bit address with a total number of 340,282,366,920,938,463,463,374,607,431,768,211,456, that’s just over 340 undecillion addresses. That should keep us in the clear for at least a few years!
While work first started on IPv6 in 1994, it was known as IPng (Internet Protocol Next Generation) until 1996. We saw the first IPv6 deployments start on the internet in 2000 and continue during the 2000s.
As time goes by, the number of devices running IPv6 will increase, which means more and more companies will have to roll out IPv6. Most companies will roll out IPv6 on their client facing infrastructure, like load balancers. This means that while you can connect using IPv4 and IPv6, most of them will continue to use IPv4 for their internal networks.
One such company that didn’t follow this norm is Facebook.
Like most companies, Facebook run IPv4 and IPv6 for their client-facing machines. However, instead of running their internal network on IPv4 and merely using IPv6 at the ‘front gate’, they use IPv6 for their internal network and only use IPv4 at the ‘front gate’.
This is exactly what we are planning to do at atmail. We plan to have our internal networks running native and purely IPv6, while only using IPv4 at our ‘front gate’ and edge systems that will have to communicate with other servers external to our own environments.
This would be for systems such as MX, where some people may not have an IPv6 entry for their MX records. Failure to run both until IPv4 is 100% retired will result in your systems being unable to communicate with systems that do not have IPv6.
This does allow us to be IPv6-ready and will ensure that as time goes on and people connect via IPv6 more than IPv4, we won’t see any issues with users unable to use our services.
Another nifty fact about IPv6 is that every IPv6 address is actually a WAN connection. Simply put, when you connect to the internet using IPv4, you’re most likely running a NAT behind your router, so while your router IP is on the internet as “126.96.36.199”, your device would have an internal access behind your router of something like ‘192.168.1.2’. IPv6 has the ability to directly connect to the internet, as such, and can also use IPv6 to directly speak to our servers behind our load balancers using native IPv6 instead of having to tunnel our connection via a load balancer.