require_once '../ipv6status/auth.php' ;
mysql_connect('localhost', $db_user, $db_password)
or die("Cannot connect to the database:".mysql_error()) ;
mysql_select_db($db_db) ;
if (isset($_REQUEST['site']) and $_REQUEST['site'] != '') {
$site = mysql_real_escape_string(trim($_REQUEST['site'])) ;
$filter = " and site = '$site' " ;
} else {
$filter = '' ;
$site = '' ;
}
?>
Estimation of IPv6 Brokenness
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:
IPv4-only: fetched over IPv4 explicitely (from a FQDN with A only)
Dual-stack: fetched over IPv4 or IPv6 (from a FQDN with A and AAAA, so, the client decides which protocol statck)
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:
IPv6 brokenness: how many users failed to fetched the dual-stack image, assuming that the failure is because they have tried to get the image over IPv6; this is
a good indicator of how many users will experiment time-out/failure is your web site has a AAAA for its generic URL www.example.org rather than www6.example.org;
IPv6 availability: how many users can actually use IPv6;
IPv6 preference: comparing dual-stack with IPv6-only images, this gives how many users prefer to use IPv6 when given the choice.
") ;
}
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") ;
?>
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
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