# IPv6 brokenness and DNS whitelisting

In the field of IPv6 deployment, IPv6 brokenness was bad behavior seen in early tunneled or dual stack IPv6 deployments where unreliable or bogus IPv6 connectivity is chosen in preference to working IPv4 connectivity. This often resulted in long delays in web page loading, where the user had to wait for each attempted IPv6 connection to time out before the IPv4 connection was tried. These timeouts ranged from being near-instantaneous in the best cases, to taking anywhere between four seconds to three minutes.
IPv6 brokenness is now generally regarded as a solved problem for almost all practical purposes, following improvements at both the transport and application layers.

## Brokenness

As of May 2011, IPv6 brokenness as measured by instrumenting a set of mainstream Norwegian websites was down to ~0.015%, most of which was caused by older versions of Mac OS X which would often prefer non-working IPv6 connectivity when it was not justified. This behavior was fixed in Mac OS X 10.6.5, and is likely to decline further as Mac OS X 10.6.5 and subsequent versions roll out to a wider audience. However, there was no upgrade path for PowerPC-based Macs.
The main remaining problem for Mac OS X was the presence of rogue routers, such as wrongly configured Windows Internet Connection Sharing devices pretending to have IPv6 connectivity, while 6to4 tunneled IPv6 traffic is blocked at a firewall. Another problem was pre-10.50 versions of Opera.
Following World IPv6 Day in July 2011, there were reports of a substantial reduction in IPv6 brokenness as a result of that experiment. In the year following the trial, but prior to the World IPv6 Launch date, brokenness levels were reported to have risen slowly back upwards again towards 0.03%.

## DNS allowlisting

Google, a major provider of services on the Internet, experimented with using a type of DNS allowlisting on a per-ISP basis to prevent this until the World IPv6 Launch. In the DNS allowlisting approach, ISPs are determined from DNS lookup source IP addresses by correlating them with network prefixes derived from routing tables. There is an IETF draft entitled "IPv6 AAAA DNS Allowlisting Implications" that describes the issues around allowlisting. AAAA records are only sent to ISPs that can demonstrate that they are providing reliable IPv6 to their customers. Other ISPs are sent only A records, thus preventing users from attempting to connect over IPv6 when hostnames are used instead of ipv6-addresses.
Numerous concerns were raised about the practicality of DNS allowlisting as a long-term large-scale solution, such as scalability and maintenance issues relating to the maintenance of large numbers of bilateral agreements. In 2010, several of the major web service providers met to discuss pooling their DNS allowlisting information in an attempt to avoid these scaling problems.

## Problem resolution

It appears that no major content providers eventually ended up using the allowlisting approach, given that all that had previously declared an interest began serving AAAA records to generic DNS queries following World IPv6 Launch Day. Google now provides AAAA records to all DNS servers except for those on a limited list of subnets which Google excludes from AAAA record service.
As of 2017, IPv6 brokenness is now generally regarded as a non-problem. This is due to two factors: firstly, IPv6 transport is much improved, so that the underlying error rate is much reduced, and secondly, that common applications such as web browsers now use fast fallback methods such as the "Happy Eyeballs" algorithm to select whichever protocol works best. Some operating system vendors have rolled fast fallback algorithms into their higher-level network stack APIs, thus making the solution available for all programs that use those APIs to make connections.