Three years after World IPv6 Day

It’s been over 1,000 days since the Internet Society’s World IPv6 Day and a lot of positive things have happened in that world of IPv6 content delivery. At CloudFlare we have not been sitting still either. Providing IPv6 access is core to our services and each and every customer has full IPv4 and IPv6 services available when their website is CloudFlare enabled.

Starting three months ago CloudFlare moved to make IPv6 enabled the default setting for all new accounts and for existing accounts that had simply sat on the default settings mode. This resulted in an uptick in the IPv6 traffic stats from our network and was noticed globally. Our support issues have been near zero; which makes sense as the previous three years has been a fantastic proving ground for IPv6 networking.

IPv6 is here today and it works.

But it's still not widely used. It's time for that to change.

20% of the IPv6 web uses CloudFlare IPv6

Looking at the top one million web sites tracked by Alexa we see that around 7% are accessible using IPv6. Of that 7% a full 20% are accessible using IPv6 because they are CloudFlare customers with IPv6 enabled.

We hope and expect that both those percentages will grow over time.

The web logfile problem

However some complex sites, that use the origin server IP address within their codebase, have had issues enabling IPv6.

Many sites log the IP address of the visitor when a web page is accessed. This has caused some interesting headaches when migrating to IPv6. Why? Because when software developers hardcode a 4-byte IPv4-address into a database they will have a near-impossible time dealing with at 16-byte IPv6 address. Take a look at this IETF style graphic showing the overall size of the two addressing schemes.

IPv4 (32 bits)
+----+----+
|####|####|
+----+----+

IPv6 (128 bits)

+----+----+----+----+----+----+----+----+

|####|####|####|####|####|####|####|####|

+----+----+----+----+----+----+----+----+

When a developer uses a string (or character) area to store the IP address there’s a string length issue.

In IPv4, the maximum length could be represented by the IP address 255.255.255.255 (which is 15 bytes long). For IPv6 the address could be FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF (which is 39 bytes long). Some programming languages and databases can be string length agnostic; however most aren’t.

Pseudo IPv4 to the (Temporary) Rescue

As a stopgap measure CloudFlare has introduced a pseudo IPv4 address that is mapped from the real IPv6 address and can be used in place of the IPv6. It's not a perfect solution and software and databases are going to have to be upgraded to support IPv6, but in the meantime this pseudo IPv4 address can be used where an IPv4 format address is expected.

Going forward

This workaround is now available for every CloudFlare customer and we promise to persuade as many of our users who have chosen to disable IPv6 to enable IPv6 fully. Those few remaining sites will want to be part of the new Internet.

Happy third anniversary World IPv6 Day!