Building IPv6 Applications
December 31st, 2008
IPv6 deployment has long been hampered by a ‘chicken or the egg’ problem – next-generation networks deployment is very slow without compelling new applications, and applications aren’t built without networks. Is porting applications so difficult? Jim Bound, CTO of the IPv6 Forum states that:
“Porting applications to support IPv6 is not a complex programming task, industry finding the business case to redirect engineering resources for the investment is the challenge, and we continue to face this chicken-or-the-egg paradigm for wider deployment of IPv6 applications”
For companies that have found the business case, such as vendors to DoD, it’s still difficult to find developers with experience, exact requirements, and hard to even define what exactly is an “IPv6-ready” application. The US Federal government and DoD have been moving ahead with IPv6 IT infrastructure procurement, but they haven’t defined what they want for IPv6 applications to the vendor community. At Command Information, as part of our Command Ready service and R&D, we have been creating IPv6 applications for our industry clients. We have also been holding a training class on IPv6 for application developers so our developers can help spread IPv6 programming knowledge around the US tech base and stimulate IPv6 uptake. I’m going to try and distill a few lessons learned from that experience here and over a few posts.
First – Here is how we define an IPv6 application:
IPv6-Capable software should able to accurately transmit, receive, process, and function correctly using the Internet Protocol Version 6 (IPv6). Specifically:
1) All user functions (data plane) of the application which utilize an IP network service comply with the IETF guidelines for data exchange over Internet Protocol Version 6 (IPv6) Standard (RFC 2460)
2) Unless sold as an “IPv6-Only” product, this IPv6-capable software is “fully dual stacked” to maintain interoperability with IPv4. Specifically, the software is able to operate on/coexist on a network supporting IPv4 only, IPv6 only, or a network supporting both IPv4 and IPv6.
3) Each software item delivered is supported by the vendor/developer’s IPv6 technical support.
This statement covers functions of the application, any supporting applications, control plane network services the application calls such as RPC or DNS, and any remote management or software update functions used by the vendor/developer’s software. If some functions work in IPv6 while other require IPv4, then the application is considered “partially dual stacked” with IPv4 dependencies.
Second – what is missing in many software packages? I asked Yanick Pouffary, a fellow IPv6 Forum Fellow, and in her opinion,
“All applications are not made equal. For most applications porting to IPv6 is straight forward, replacing IPv4 calls [such as “sockaddr_in”] by expanded IPv6 calls [such as gethostbyaddr()] , and for others it is a little more involving especially if the application deals with network protocols. Please note that many vendors provide tools to locate where the necessary code changes need to occur. It is also strongly recommended that while an application is being updated to support IPv6 to make this application transport agnostic to future-proof that application.”
I agree with Yanick that “All applications are not made equal.” It has been very straightforward for us to IPv6-enable many simple software packages we’ve worked on where the network simply provides transport. However, we’ve created network management and security software that was very complex to transition because of its very specific interaction with IP. Another issue is implementation quality - In my experience a lot of software claiming to be “IPv6 complaint” still has shortcomings such as:
· Incomplete implementations that leave IPv4 dependencies
· Lack of good user interfaces/GUIs for IPv6
· Partial functionality in IPv6 - often application implement only one interface or function in IPv6, others still in IPv4-only
· Poor documentation and support for IPv6 features
· Fail to function in an “IPv6-dominant” environment because of IPv4 dependencies
In closing this New Year’s Eve post I’d like to say that in the last year we have been able to find good IPv6 –ready application in virtually every category of common enterprise applications such as VOIP, VTC, workgroup collaboration, supply chain management, asset tracking, building automation & sensors, online storage, IPTV & VOD, surveillance cameras, etc…
In the next post, next year, we’ll explore a bit more detail on how to create, test, and prove IPv6 applications, what are the subtle and difficult parts, and how we engineer IPv6-Optimized applications.






