tailscale/net/dns/resolver
Brad Fitzpatrick 53a2f63658 net/dns/resolver: race well-known resolvers less aggressively
Instead of blasting away at all upstream resolvers at the same time,
make a timing plan upon reconfiguration and have each upstream have an
associated start delay, depending on the overall forwarding config.

So now if you have two or four upstream Google or Cloudflare DNS
servers (e.g. two IPv4 and two IPv6), we now usually only send a
query, not four.

This is especially nice on iOS where we start fewer DoH queries and
thus fewer HTTP/1 requests (because we still disable HTTP/2 on iOS),
fewer sockets, fewer goroutines, and fewer associated HTTP buffers,
etc, saving overall memory burstiness.

Fixes #2436
Updates tailscale/corp#2250
Updates tailscale/corp#2238

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-25 20:45:47 -07:00
..
doh_test.go net/dns/resolver: fall back to IPv6 for well-known DoH servers if v4 fails 2021-07-21 12:45:25 -07:00
forwarder.go net/dns/resolver: race well-known resolvers less aggressively 2021-07-25 20:45:47 -07:00
macios_ext.go net/dns{,/resolver}: refactor DNS forwarder, send out of right link on macOS/iOS 2021-06-23 16:04:10 -07:00
neterr_darwin.go net/dns/resolver: permit larger max responses, signal truncation 2021-06-08 19:29:12 -04:00
neterr_other.go net/dns/resolver: fmt item 2021-06-27 23:57:55 -07:00
neterr_windows.go net/dns/resolver: permit larger max responses, signal truncation 2021-06-08 19:29:12 -04:00
tsdns_server_test.go net/dns/resolver: clamp EDNS size 2021-06-25 08:56:34 -04:00
tsdns_test.go net/dns/resolver: clamp EDNS size 2021-06-25 08:56:34 -04:00
tsdns.go net/dns/resolver: race well-known resolvers less aggressively 2021-07-25 20:45:47 -07:00