By Yanick Pouffary
As you transition your network from IPv4 to IPv6, it's tempting to focus only on upgrading the network hardware that carries Internet traffic. But IPv6 will impact software, too, from server and desktop operating systems, to office-productivity suites and email programs, to web services, management software and security tools. IPv6 impacts your entire IT ecosystem, which means all of your applications must be readied for the new protocol.
Enabling your software for IPv6 offers many similar advantages as enabling your network for the new protocol (see my previous blog, 5 practical reasons to plan you IPv6 transition early):
- You won’t need to worry about running out of IP addresses
- You can position your organization for continued growth and innovation
- It makes it easier to tap emerging markets already on the IPv6 Internet
- Your developers can build more robust and portable code
- You can achieve better end-to-end security
Why enabling software for IPv6 is important
The big reason for IPv6-enabling your software is that it future-proofs your enterprise. In other words, it allows your applications to work regardless of the network protocol that’s deployed: IPv4 or IPv6.
When enabling software for IPv6, you want to first ask your software vendors for IPv6-enabled versions of their applications. Most modern application software should support both IPv4 and IPv6, and many vendors, like HP, already offer applications that can operate over both network protocols.
And for internally developed applications, you need to enhance your application to support IPv6.
I explain two ways you can do this later in the post.
Not all applications are made equal
The good news is that most modern applications are IP version–agnostic. That is to say, they use APIs which hide the specifics of a given IP address family. This is also true for most applications that connect using only host names and solely transmit and receive data.
However, applications that use older APIs, such as the C language, are exposed to the IP version they operate over. These applications need to be modified to also work with IPv6. Similarly, applications that connect using a specific IP address family, which set specific IP options or even store or display IP addresses etc., can only operate on networks using that specific IP version.
There are two ways to IPv6-enable your applications
The first approach is to have separate logic for IPv4 and IPv6, thus leaving the IPv4 code path mainly untouched. This approach causes the least disruption to the existing IPv4 logic flow, but introduces more complexity, since the application now has to deal with two logic loops with complex race conditions and error recovery mechanisms between these two logic loops.
The second approach is to create a combined IPv4/IPv6 logic, which ensures operation regardless of the IP version used on the network.
The second approach requires that you recode your applications to connect through a host name, instead of a specific IP address. This makes your apps transparent to network protocols. The “Name resolution lookup” process will determine which protocol should be used for communication. This approach allows your applications to operate regardless of changes that occur at the network level.
You can use IPv6-porting tools to find the code that you need to update. An example of such tool is the open source IPv6Finder for C/C++ source code, which identifies the section of your applications which need to be modified.
Time is on your side, but don’t wait too long
Realistically, IPv4 and IPv6 will need to coexist on networks until IPv4 is fully phased out. This is good news, because it will give you time to carefully enhance existing applications one at a time, as well as build new applications for IPv6.
Have you given consideration to how IPv6 will impact your applications? Do you have any specific questions or concerns? I’d love to hear your thoughts.
And for insight on how to plan for and begin your IPv6 transition, explore HP's IPv6 Consulting Services.
Yanick Pouffary is HP Distinguished Technologist; Chief Architect, HP Technology Services Office of the CTO; and HP IPv6 Global Leader.