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.