draft-pauly-v6ops-happy-eyeballs-update

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