The topic is usually covered in terms of network and service providers and they themselves are not that far down the IP v6 road yet or maybe they are further than we know, but studies by Google would suggest otherwise. Either way, looking at the IP v6 issue from just the network perspective is looking at the main core area, networking. However, if you chew the IP v6 problem a little more, another flavour emerges and it starts to get a little bitter.

The biggest problem with IP v6 is not the network, it is affects everything that runs on the network. Including software. Considering the core of the Internet is the IP addressing system, then it is no surprise that we have integrated into all software and control layers. Much of our software does not know what an IP v6

address string looks like.

Why would it?

IP v6 is something I am have been trying to get to grips with for a while, but I like everybody else do not have the time as the explosive growth in capabilities have expanded my horizons as well, just as they have most other technical people's. Due to this, I have not had time to sit down and get the fine details of IP v6, this is not to say I am not aware of it and its working. I just have not got a full conceptualisation of the concept. I know all IP addresses of all the servers/switches that I work with, private and public and that probably adds up to around 100 or so addresses. Luckily I only work with server infrastructure and not desktops, I think my mind is too old to pump hundreds of client IP v6 addresses into. That is because IP is so important to what we and I do. I have yet to figure out a memory format for IP v6, I think that will take more day to day working with it.

I am building IP v6 compliance into my own systems architecture now and a number of things became apparent before I started down that road. When I consider the implications on all the other systems I run, they are quite substantial.

All my past scripts and the software we run is not IP v6 aware. Yes we will run the two in parallel, but....

How will we parse and handle all those IP v6 addresses without introducing them into all our software and more importantly into our thinking? We have to change all our database field sizes... And we have to come to terms with a new string format. From a regex perspective, IP v6 is going to make brains bleed. If you have not seen a IP v6 address format or the premetations it can assume, here is an example for you.

Any leading zeros in a group may be omitted; thus, the given example becomes


One or any number of consecutive groups of 0 value may be replaced with two colons (::):


This substitution with double-colon may be performed only once in an address, because multiple occurrences would lead to ambiguity.

For example, the illegal address notation 2001::FFD3::57ab, could represent any of the following:


Using the double-colon reduction the localhost (loopback) address, fully written as 0000:0000:0000:0000:0000:0000:0000:0001,

may be reduced to ::1 and the undetermined IPv6 address (zero value), i.e., all bits are zero, is simply ::.

For example, the addresses below are all valid and equivalent:



IP v6 is going to be a MASSIVE amount of work to bring online and it is not only the networks and providers that have to deliver and work with it, it is the entire Internet. How many lines of code are going to be need to be added to Internet and existing lines changed?

How many man hours are going to needed to enable this to happen?

An interesting real life example of this concept. Although this in NOT to say that MySQL is not already IP v6 aware, just to highlight the point. IP v6 adds an additional complexity to Internet and that is going to have a massive impact.

As per

$mysql -h shella -P33160 -ubug38247
ERROR 1130 (HY000): Host '::ffff:' is not allowed to connect to this MySQL

$mysql -h shella -P33160 -ubug38247_1
ERROR 1130 (HY000): Host '::ffff:' is not allowed to connect to this MySQL

With version 5.1 and 6.0.3 all work fine

[19 Aug 2008 15:33] Kristofer Pettersson

mysql> show grants for 'huggla'@'';
| Grants for huggla@                       |
| GRANT USAGE ON *.* TO 'huggla'@''        |
| GRANT SELECT ON `test2`.* TO 'huggla'@'' |
2 rows in set (0.01 sec)

=> Connection fails for machine on IP to connect as 'huggla'.

mysql> grant select on test2.* to 'huggla'@'::ffff:';
Query OK, 0 rows affected (0.00 sec)

=> Connection succeeds.

Seems server is per default translating all IPv4 addresses to compressed IPv6

The privilege system in itself is ignorant of IPv6, and IP numbers are compared to each
other, not as numbers but as strings (example: acl_update_db).

A quick-hackish solution is to investigate all IPs to be stored in the user- and host
tables and make sure the leading ::ffff: prefix is stripped.

Are you IP v6 aware?

Days left till the exhaustive of IP v4 addresses....