Lazy Eye Inspection: Capturing the State of Happy Eyeballs Implementations

Source code for local framework and online testing tool

Paper (Preprint) got accepted for publication at ACM IMC 2025.

Authors

Patrick Sattler, Matthias Kirstein, Lars Wüstrich, Johannes Zirngibl, Georg Carle

Abstract

Happy Eyeballs (HE) started out by describing a mechanism that prefers IPv6 connections while ensuring a fast fallback to IPv4 when IPv6 fails. The IETF is currently working on the third version of HE. While the standards include recommendations for HE parameters choices, it is up to the client and OS to implement HE. In this paper we investigate the state of HE in various clients, particularly web browsers and recursive resolvers. We introduce a framework to analyze and measure client’s HE implementations and parameter choices. According to our evaluation, only Safari supports all HE features. Safari is also the only client implementation in our study that uses a dynamic IPv4 connection attempt delay, a resolution delay, and interlaces addresses. We further show that problems with the DNS A record lookup can even delay and interrupt the network connectivity despite a fully functional IPv6 setup with Chrome and Firefox. We publish our testbed measurement framework and a web-based tool to test HE properties on arbitrary browsers.

Local Testbed Framework

Online Test Tools

We will make our online test tool available to the public when double-blind restrictions are lifted. You can find a video of a testrun with our tool below.

Safari Test Run

Safari test run showing its inconsistent HE behavior. In this example Safari uses an apparent connection attempt delay (CAD) of 250ms.

Overview of Browser Results

Browser Version IPv6 Preferred CAD AAAA first1 RD Impl. Num IPv4 Used Num IPv6 Used Addr. Selection Local/Webtest Consistency
Google Chrome 130.0 Yes 300ms Yes No2 1 1 No Yes
Chromium 130.0 Yes 300ms Yes No2 1 1 No Yes
Microsoft Edge 130.0 Yes 300ms Yes No 1 1 No Yes
Mozilla Firefox 132.0 Yes 250ms No No 1 1 No Mostly3
Safari 17.6 Yes 50ms - 2s Yes Yes all all Yes No4
Mobile Browsers (No Addresses selection tests available with our website testing)
Mobile Safari 17.6 & 18.1 Yes 50ms - 1s Yes Yes - - - -
Google Chrome Mobile 127.0 & 130.0 Yes 300ms No No - - - -
Mozilla Firefox Mobile 125.0, 128.0, & 131.0 Yes 300ms No No - - - -
Command Line Tools (Wget does not perform any type of HE)
curl 7.88.1 Yes 200ms Yes No 1 1 No -
wget 1.21.3 Yes - No No 0 1 No -

1 May also be influenced by the operating system’s stub resolver except for Chromium-based browsers which use their own stub resolver.
2 Chromium and Chrome offer a feature flag to enable this feature. Possibly in future this will be enabled by default for all Chromium-based browsers.
3 The observed multiple CAD values for Mozilla Firefox. Nevertheless, 250ms was the dominating value.
4 Safari uses a dynamic approach. We could not determine scenarios or configurations which trigger a specific result.