Estimation of IPv6 Brokenness

Using a technique first proposed by Tore Anderson (and with Tore's help), this page contains data about IPv6 brokenness, this is the risk of losing users/customers when a web site goes dual-stack and publishes both a A and a AAAA for the same URL.

The technique is to embed in the original IPv4-only page an IFRAME with three very small (1x1 pixel) transparent images which are:

  1. IPv4-only: fetched over IPv4 explicitely (from a FQDN with A only)
  2. Dual-stack: fetched over IPv4 or IPv6 (from a FQDN with A and AAAA, so, the client decides which protocol statck)
  3. IPv6-only: fetched over IPv6 explicitely (from a FQDN with AAAA)
By counting how many images were fetched over IPv4-only and comparing with the dual-stack fetches, we can measure: 0) { $brokenness = round(100 * ($line['n4'] - $line['n46']) / $line['n'], 2) ; $ipv6_success = round(100*$line['n6']/$line['n'], 2) ; } else { $brokenness = 'N/A' ; $ipv6_success = 'N/A' ; } if ($line['n6'] > 0) $preferred_pct = round(100*$line['n6_preferred']/$line['n6'], 2) ; else $preferred_pct = 'N/A' ; print("") ; print("") ; } Display("select min(date) as first_date, sum(n) as n, sum(n4) as n4, sum(n6) as n6, sum(n46) as n46, sum(n6_preferred) as n6_preferred from brokeness where true $filter","ever") ; Display("select min(date) as first_date, sum(n) as n, sum(n4) as n4, sum(n6) as n6, sum(n46) as n46, sum(n6_preferred) as n6_preferred from brokeness where date >= date_sub(current_date(), interval 1 month) $filter","last month") ; Display("select min(date) as first_date, sum(n) as n, sum(n4) as n4, sum(n6) as n6, sum(n46) as n46, sum(n6_preferred) as n6_preferred from brokeness where date >= date_sub(current_date(), interval 1 week) $filter","last week") ; Display("select min(date) as first_date, sum(n) as n, sum(n4) as n4, sum(n6) as n6, sum(n46) as n46, sum(n6_preferred) as n6_preferred from brokeness where date = date_sub(current_date(), interval 1 day) $filter","yesterday") ; ?>
DateSample sizeIPv4-onlyDual-stackIPv6-onlyIPv6 brokennessIPv6 availabilityIPv6 preferred
Since $date
$line[first_date]
$line[n]$line[n4]$line[n46]$line[n6]$brokenness %$ipv6_success %$preferred_pct %

Please note that the data is processing once per European night, so, data is always delayed by one day.

Broken user-agents are also collected, you can have a look; as well as broken ASN, you can have a look.

What about my own web site?

Feel free to add this IPv6 brokenness to your existing IPv4-only web site by adding the following HTML tag on any of your web page
<iframe src="http://test4.vyncke.org/testv6/linkgen-www.example.org.php" width="1" height="1" frameborder="0"></iframe>
Of course, you have to replace www.example.org by the FQDN of your web site ;-)

Once, done, you can go to this page to see brokenness result for your site (computed daily around midnight CET):
http://test4.vyncke.org/testv6/index.php?site=www.example.org


Written by Eric Vyncke (evyncke@cisco.com) October 2010