This obsoletes RFC 6555 Happy Eyeballs Success with Dual-Stack Hosts, by refining the Happy Eyeballs algorithm.

Here are a few features:

  • Queries for AAAA and A records to the DNS are dispatched asychronously. A slight preference is given to AAAA by waiting 50ms after the A record response has come
    • When multiple addresses of DNS server are given, we prefer v6. First send queries over IPv6 and if they don’t receive responses, send over v4.
  • Sort the addresses we’ve got, and then attempt connections one by one.
    • This sorting can be done based on historical RTTs observed the client
    • Address families can be alternated in this list
  • Connection attempts to multiple addresses happen in parallel. When one of them succeeds (usually meaning TCP handshake completing), other connections should be dropped.
    • The starting of next connection attempt can be delayed, called the connection attempt delay. Recommended default is 250ms.