Happy Eyeballs (also called Fast Fallback) is an algorithm published by the IETF which can make dual-stack applications (those that understand both IPv4 and IPv6) more responsive to users by attempting to connect using both IPv4 and IPv6 at the same time (preferring IPv6), 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 (with a preference for IPv6) 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.
- Dan Wing and Andrew Yourtchenko. "Happy Eyeballs: Improving User Experiences with IPv6 and SCTP". Internet Protocol Journal, vol.13 n.3. Retrieved 2012-01-15. CS1 maint: discouraged parameter (link)
- Schinazi, David; Pauly, Tommy (December 2017). Happy Eyeballs Version 2: Better Connectivity Using Concurrency. doi:10.17487/RFC8305. RFC 8305.
- "Definition of eyeballs". Cambridge Business English Dictionary. Cambridge University Press. Retrieved 2014-12-05. CS1 maint: discouraged parameter (link)
- Daniel Stenberg. "getaddrinfo with round robin DNS and happy eyeballs". daniel.haxx.se. Retrieved 2012-01-15. CS1 maint: discouraged parameter (link)
- OS X El Capitan implementation is biased towards ipv6 with a 25 ms headstart, previously from OS X Lion to OS X Yosemite it used the fastest connection with no protocol preference, according to David Schinazi. "[v6ops] Apple and IPv6 - Happy Eyeballs". www.ietf.org. Retrieved 2016-02-02. CS1 maint: discouraged parameter (link)
- Daniel Stenberg. "curl vs Wget". daniel.haxx.se. Retrieved 2016-03-06. CS1 maint: discouraged parameter (link)
- "unwind(8); 'happy eyeballs'".
- Mark Townsley (2011-06-07). "Happy Eyeballs for World IPv6 Day". blogs.cisco.com. Retrieved 2012-01-15. CS1 maint: discouraged parameter (link)
- Naeem, Khademi; Anna, Brunstrom; Per, Hurtig; Karl-Johan, Grinnemo (July 21, 2016). "Happy Eyeballs for Transport Selection". tools.ietf.org. Retrieved 2017-01-09.