For quite a few years, the need to update the primary protocol used by the Internet – the Internet Protocol or IP – has been apparent and has been becoming increasingly urgent. There are a number of reasons why a protocol designed in the 1970s is inadequate for the 21st Century, but addressing capacity is the really urgent issue. I think it’s amazing that IPv4 [I have no idea what happened to versions 1 to 3] has lasted so long.
But IPv6 is going to fix everything …
The next generation of Internet Protocol is version 6. Again, I have no idea what happened to IPv5, but a Google search is entertaining. IPv6 was defined in 1996 and, since then, its deployment has very slowly progressed. The challenge is that IPv6 is not directly backwards compatible with IPv4. In effect, the new protocol defines a separate parallel network. The transition is accommodated by the definition of “tunneling” mechanisms and dual-stack protocol implementations.
The need for more Internet address space is clear. When IPv4 was defined, the only things that needed IP addresses were computers and they were big expensive things, so there were relatively few of them in existence. The designers felt that the ability to define over 4 billion addresses was more than generous. However, nowadays, there is an explosion in Internet connected devices. I just did a quick “stock check” in my house, counting how many devices I could think of that are likely to need an IP address. I got to 18. And there are only two of us and I would say we are not an overly high-tech household. So, that is 9 addresses each. If everyone in the western world alone is using addresses at that rate, the capacity of IPv4 is already blown. I guess that it only holds together because a number of tricks have been employed to extend capacity – like Network Address Translation [NAT].
IPv6′s addressing scheme is designed to be “future proof”. This is a term that I always view with skepticism. Remember a famous man saying that he could think of no reason why a PC would ever need more than 640K of memory? However, in this case, I think the term is justified. Even if every person on the planet consumed a billion IPv6 addresses, its capacity would hardly be used at all. We should be OK until we join the Pan-Galactic Federation of Planets.
I said that IPv6 deployment has slowly progressed, but that is set to speed up. Leading Internet firms [Facebook, Google, Microsoft Bing and Yahoo] have set 6 June as the World “IPv6 launch day”, pledging to enable IPv6 on their main websites from that date.
What this means to you, if you are an embedded software developer, is that any connected device that you design needs to support IPv6 from Day 1. This is not a big problem, as most suppliers of networking stacks can provide both IPv6 and dual stack support. This includes the networking support for our own Nucleus RTOS, which has had IPv6 support for some considerable time.
Looking at the take-up of IPv6 thus far, from an embedded software supplier’s perspective, there is an interesting irony. One of the ways that IPv4 has been “stretched” is the use of Network Address Translation, which is commonly used in home Wi-Fi networks. The idea is that all the devices in the local network have different IP addresses, but they are private to the local network. Only a single public IP address is presented to the Internet by the router. IPv6 is finding favor from manufacturers of home networking equipment not because of address space concerns. The attraction is the “plug and play” capabilities of IPv6, which remove the need for a DHCP server and make the network more user friendly.
One last word, when sourcing IPv6 support, ensure that the stack you are using is fully validated. Look out for the IPv6 Ready logo provided by the IPv6 Ready Group; there is also USGv6 certification given by the US government.
[With acknowledgment to my colleague Tammy Leino, who provided the initial input and advice for this posting.]