summaryrefslogtreecommitdiffhomepage
path: root/control/controlhttp/controlhttpserver/controlhttpserver.go
diff options
context:
space:
mode:
authorJames Tucker <james@tailscale.com>2024-10-30 11:31:36 -0700
committerJames Tucker <jftucker@gmail.com>2024-10-30 17:19:26 -0700
commite1e22785b4cdef300ca89206f307f867ba262c6e (patch)
treec4ddeddac2d45707dfee041758504522e24e4160 /control/controlhttp/controlhttpserver/controlhttpserver.go
parentf81348a16b6dd8705cd75379daf3b7490185e841 (diff)
downloadtailscale-e1e22785b4cdef300ca89206f307f867ba262c6e.tar.xz
tailscale-e1e22785b4cdef300ca89206f307f867ba262c6e.zip
net/netcheck: ensure prior preferred DERP is always in netchecks
In an environment with unstable latency, such as upstream bufferbloat, there are cases where a full netcheck could drop the prior preferred DERP (likely home DERP) from future netcheck probe plans. This will then likely result in a home DERP having a missing sample on the next incremental netcheck, ultimately resulting in a home DERP move. This change does not fix our overall response to highly unstable latency, but it is an incremental improvement to prevent single spurious samples during a full netcheck from alone triggering a flapping condition, as now the prior changes to include historical latency will still provide the desired resistance, and the home DERP should not move unless latency is consistently worse over a 5 minute period. Note that there is a nomenclature and semantics issue remaining in the difference between a report preferred DERP and a home DERP. A report preferred DERP is aspirational, it is what will be picked as a home DERP if a home DERP connection needs to be established. A nodes home DERP may be different than a recent preferred DERP, in which case a lot of netcheck logic is fallible. In future enhancements much of the DERP move logic should move to consider the home DERP, rather than recent report preferred DERP. Updates #8603 Updates #13969 Signed-off-by: James Tucker <james@tailscale.com>
Diffstat (limited to 'control/controlhttp/controlhttpserver/controlhttpserver.go')
0 files changed, 0 insertions, 0 deletions