Feb 172012
Spend 30 minutes with IPv6 every Friday!

Where the LAMP doesn't shine - MySQL and PHP needs to improve the IPv6 support soon.

Web applications are of course a big issue when it comes to IPv6 migration. Will they continue to work as you turn on the IPv6 stack in your server? This Friday, I’m guiding you through the world of LAMP – the Linux, Apache, Mysql and PHP platform that is very common. Even if you are using another platform, I’m asking you to spend 30 minutes on IPv6 and read on – many issues are generic and the comments and issues here will help you to review your platform, regardless if it’s .NET, Java or something much cooler. The big question is – is the LAMP ready for IPv6 action? Kindly take me by the hand as I lead you through the 128 bit development jungle!

It is important to understand how far networking have reached into the core infrastructure of your computing infrastructure. Very few apps doesn’t use the network – even applications used for totally different tasks may check for updates or verify your license over the network. In this article I’ll try to look into the world of web applications based on my personal view – applications and frameworks I use myself or my customers use. The important issue is to realize how far they have gotten during many years of IPv6 and if they’re treating IPv6 on an equal basis as IPv4.

Making an application IPv6-compatible

The first step is to make sure that your application can understand and handle IPv6 addresses. Even if the application itself does not handle any network connections or only IPv4 connections – addresses may appear. A dual stack web proxy that fronts an IPv4 web server cluster will send IPv6 in the headers – and your statistics software need to understand it. An IPv4 SIP phone  or SIP proxy will get messages from IPv6 devices – and the Via: headers and other headers will include IPv6 addresses. There are tons of examples. Be prepared for IPv6 addresses everywhere.

The second step is to make the application listen to IPv6. This means not only handle IPv6 listening or outbound sockets. The app needs to check for AAAA addresses in DNS, support IPv6 in Access Control Lists, IPv6 in X.509 certificates, IPv6 in LDAP structures – IPv6 everywhere.

The third step is to check your application’s eco-system. Many applications interact with a lot of other systems – databases, directory servers, authentication systems and other applications over TCP/IP with HTTP, XML-RPC, SOAP, RPC, Corba or other methods. Not all of these will be IPv6 ready, but as they move forward and migrate – can you handle it.

Before you deploy, check the security infrastructure. Firewall, IPtables, PF and VPNs. Do these understand the issues with IPv6 – both single stack and dual stack?

Test your application in both dual stack and IPv6 single stack environments. Make sure that the application doesn’t suffer from any issues related to Happy Eyeballs for outbound connections. And finally, be proud to have an application that supports all of the network, not just the old IPv4 part.

The LAMP doesn’t shine – it still needs more IPv6 bits!

The LAMP infrastructure – Linux, Apache, MySQL and PHP – is the base for millions of web applications. An Open Source infrastructure used by many commercial applications as well as large public services on the Internet.

Linux has good IPv6 support since a long time, as documented in the Linux IPv6 Howto. The problem with LInux and IPv6 lies in the lack of IPv6 configuration options in the user interfaces, but that should not affect your server (which often operates without a windowing system).


Apache HTTPD, the web server,  has had IPv6 support for a long time. A modular piece of software like Apache where you have modules from the core distribution and modules from other sources. Even if the core distribution supports IPv6  it doesn’t mean that all modules support IPv6. You still have to check, but in general the Apache team has made a good job of IPv6 support.

Mysql lacks IPv6 support for connections and many other parts. There are some functions that was introduced in version 5.6 and there are rumors that version 6 will have improved IPv6 support.
PHP seems to be at the same state in the IPv6 migration. There are some functions that support IPv6 and an external pear library for IPv6 addresses. This doesn’t mean that PHP can’t be run on IPv6 servers, just that PHP by itself doesn’t seem to support setting up IPv6 connections to backend services and that PHP lacks the needed functions to compare and manager IPv6 addresses.

To summarize, the LAMP platform still has a lot of work to do before it’s fully IPv6 compatible. We need to be able to manage ACLs and database records in PHP with IPv6 addresses, use PHP to connect to IPv6 servers and run the full platform on IPv6. If you use these tools, please help us to put some pressure on Mysql and PHP – or why not contribute code?

PHP Frameworks – Code Igniter, PHPmyAdmin, PHPmaker

Even if PHP and MySQL fix their IPv6 support, we need to look at the tools we use. I use Code Igniter for web application development. It’s a MVC framework for PHP applications using MySQL. There’s no IPv6 support in the network related parts today. In addition, I need to check the great admin tool PHPmyAdmin and the super-cool Windows application PHPmaker that I use to generate some administration sites. In fact, I have a lot of checking to do, so I’ll let you explore on your own from now.

Go out on the great web and explore the documentation of the tools you use. In some cases, like Python, you will be positively surprised. In other, you will realize that there is still functionality missing. Don’t give up, send feedback and help your vendors and projects to migrate to IPv6!

Have a great Friday!