Happy Eyeballs


Happy Eyeballs is an algorithm published by the IETF which can make dual-stack applications more responsive to users by attempting to connect using both IPv4 and IPv6 at the same time, thus avoiding the usual problems faced by users with imperfect IPv6 connections or setups.
Happy Eyeballs is designed to address the problem that many IPv6 networks are unreachable from parts of the Internet, and applications trying to reach those networks will appear unresponsive, thus frustrating users. Happy Eyeballs solves this problem by determining which transport would be better used for a particular connection by trying them both in parallel. The algorithm and its requirements are described in RFC 8305, "Happy Eyeballs Version 2: Better Connectivity Using Concurrency". The name "happy eyeballs" derives from the term "eyeball" to describe endpoints which represent human Internet end-users, as opposed to servers.
An application that uses a Happy Eyeballs algorithm checks both IPv4 and IPv6 connectivity and uses the first connection that is returned. The addresses are often chosen from the DNS with a round-robin algorithm. Implementations of Happy Eyeballs stacks exist in Google's Chrome web browser, Opera 12.10, Firefox version 13, OS X, cURL and OpenBSD.
Happy Eyeball testing was part of World IPv6 Day in 2011.
The Happy Eyeballs algorithm can also be used for choosing between other types of transport protocols, such as between TCP and SCTP.