An Update to Happy Eyeballs Tommy Pauly, Apple David Schinazi, Apple IETF 98 v6ops March 2017 Chicago, USA draft-pauly-v6ops-happy-eyeballs-update Agenda • Hostname Resolution • Measurements • Underlying DNS Transport • Sorting Addresses • Connection Attempts • DNS Updates • Next Steps draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 2 Hostname Resolution • RFC 6555 does not describe how to query DNS • example mentions getaddrinfo() draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 3 Hostname Resolution getaddrinfo() AAAA Start DNS IPv6 SYN Start TCP A Done IPv4 SYN draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 4 Hostname Resolution getaddrinfo() AAAA IPv6 SYN Wasted Time Start TCP Start DNS A Done IPv4 SYN draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 5 Hostname Resolution Asynchronous AAAA Start TCP IPv6 SYN Start DNS Done A Start TCP IPv4 SYN draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 6 Hostname Resolution Asynchronous IPv6 SYN AAAA Start TCP Done Start DNS A draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 7 Hostname Resolution • AAAA received first → start IPv6 SYN • • A records added to list when received A received first → start 50ms timer • AAAA received before then → start IPv6 SYN • timer fires → start IPv4 SYN draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 8 Hostname Resolution • Why is this important? • DNS timeouts / retransmissions are common • Synchronous networking calls on a single thread are not compatible with Happy Eyeballs draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 9 Measurements Percentage (PDF) Number of Queries Sent per DNS Question draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 10 Measurements Percentage (CDF) DNS Response Latency (ms) draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 11 Underlying DNS Transport • Prefer IPv6 when sending DNS queries • Both A and AAAA • Some networks will have IPv6 DNS closer to user draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 12 Sorting Addresses • Destination Address Selection — RFC 6724 • Rule 8.5 — leverage historical data • RTT • Used addresses draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 13 Sorting Addresses RFC 6724 Updated Happy Eyeballs AAAA AAAA AAAA A AAAA AAAA AAAA AAAA A AAAA A A A A A A draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 14 Connection Attempts • Walk entire list of addresses • Start next attempt after µRT T + 4 RT T draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 15 Connection Attempts Connected Address Index 100 Percentage (PDF) 92.2% 75 50 25 7.2% 0.6% 0 1 2 3+ draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 16 DNS Updates • • DNS results are dynamic • Asynchronous DNS • Long-lived queries / DNS push • TTL expiry React accordingly • Insert new addresses into sorted list • Remove deleted addresses only if not started yet draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 17 Next Steps • Several possible approaches: • Update RFC 6555 (Standards Track) • New standard with different name • Informational draft-pauly-v6ops-happy-eyeballs-update / David Schinazi / v6ops / IETF 98 / 18
© Copyright 2026 Paperzz