Is life better with two protocols than it is with one? No, network operators and browser guys managed to stuff it up.
Dual stack v1: unconditional preference for IPv6: if the IPv6 did not get a response, everything was very slow. The problem were the auto-tunel techniques (6to4 and teredo).
Dual stack v2: preference table, which kinda turns off auto-tunneling.
Doing things one after another causes very bad timeouts. We need better form of failure.
The idea of a 180 second timeout was based on the conditions 20 years ago.
So we come to moderately happy eyeballs. Start off IPv4 and IPv6 at the same time, and work with the one that returns faster. But with multiple addresses, things turn out worse when something doesn’t work properly.
Chrome measures DNS response time, and makes the connection to which it gets first response.
Firefox does true parallelism (fires off dns, fires a SYN as soon as it gets back DNS response.
He measures IPv4 and IPv6 connectivity with a google ad.
There is something cultural about failure and 6to4 (10-20%).
Local inbound filters appear to be a big problem with incoming IPv6.
Everything we see says 6 is as fast as 4, but currently not as robust. He thinks the reason is the CPEs.