One thing I’ve learned after more than 25 years in technology is that there’s no point in pursuing anything that user’s don’t understand or don’t like. You need to back and make a better solution, learn from the experience and try again. This has proven to be very important for IPv6 too. Early trials with dual stack services on the Internet caused bad user experiences, something the service providers could not afford. This is why they either turned off IPv6 on their web server or moved IPv6 services to a different host name. Dan Wing and Andrew Yourtchenko have spearheaded finding a solution to this problem, something that was tested in large scale during the World IPv6 Day in 2011. Let’s talk Happy Eyeballs!
The basic problem: two ways to reach the same service – and one of them not working
The problem found was rather simple. A network client software looks for addresses for a given host – let’s call it coolstuff.example.com. The DNS lookup result in two addresses – one IPv4 and one IPv6. Following the old standards that wish to push migration to IPv6, the client first connects over IPv6. If the IPv6 connection works all is fine.
We are still in the early days of IPv6, so many IPv6 connections is provided over various tunnels. They’re not fast and in some cases also blocked by firewalls. The local machine believes it has a working IPv6 connection, but it has not. In this case, the IPv6 connection will fail. Unfortunately it takes time for the web browser to realize this failure – up to 19 seconds in many cases.
19 seconds are eons of time for a super surfer on the net. During 19 seconds, he has left the non-responsive web server and gone elsewhere, probably many sites away. In good cases, the browser failed over and succeeded in setting up an IPv4 connection, but that did not give the user a good impression of a responsive and alert web site.
Two things happened. The network manager was forced to disable IPv6 on the local network since having it enabled by default, which Windows did, caused a lot of issues. The company delivering the cool service did not want their users to get this poor impression of their service, so they also disabled IPv6. None of these actions help the IPv6 movement and the Internet transition to IPv6. Houston, we have a problem.
The solution: Dual connections over dual stacks, pick the winner!
To get IPv6 back in action, the IPv6 team in the IETF needed to come up with a solution. The problem was actually documented in one of the first RFCs more than 10 years ago, so it was nothing new. Dan Wing and Andrew Yourtchenko, both at Cisco, spearheaded the work and wrote the document called Happy Eyeballs – now RFC 6555. In this document, they propose a solution that, a bit simplified, suggests that applications connect simultaneously over IPv4 and IPv6. By measuring the connection time the application can choose the fastest connection and stay with it. No more waiting for failover.
This has been implemented with different algorithms during some time. At the World IPv6 Day the whole Internet participated in testing the success of Happy Eyeballs – and it worked. More research is ongoing and we’ll probably see improvements in new releases of software and operating systems. Apple OS/X Snow Lion implemented something similar in Safari, as did Microsoft and Google in their web browsers. The result was so good so that this year, many large services will add IPv6 and keep it up . That’s what the World IPv6 Launch is all about.
It’s not only about the web – it’s about all applications
Note that this is not only about the web, even though that’s been the playground for testing. This problem affects all applications that make connections from a dual stack client to a dual stack host. Applications that are written in house as well as your apps on the smart phone and on your laptop. Basically all apps that use the network.
Mark Townsley writes about Happy Eyeballs on the Cisco blog:
The more robust the network is, the more people will connect, and the more people who connect, the more robust network becomes. Happy Eyeballs is among the key innovations necessary to keep the Internet going and growing, fueling the next wave of growth fueled by IPv6.
Important check list:
- If your company writes internal applications, developers need to be aware of this RFC
- Make sure that web browsers support Happy Eyeballs
- Remember that TCP/IP is now both IPv4 and IPv6 by default!
Thanks to the world IPv6 day testing, you can safely publish web services on dual stack. Do it!
- Happy eyeballs RFC 6555
- RFC 6556: Testing Eyeball Happiness, Fred Baker
- Geoff Houston: Presentation about Happy Eyeballs at Ripe 64: Analyzing dual stack behavior and IPv6 quality