diff options
| author | James Tucker <james@tailscale.com> | 2024-10-30 11:31:36 -0700 |
|---|---|---|
| committer | James Tucker <jftucker@gmail.com> | 2024-10-30 17:19:26 -0700 |
| commit | e1e22785b4cdef300ca89206f307f867ba262c6e (patch) | |
| tree | c4ddeddac2d45707dfee041758504522e24e4160 /control/controlhttp/controlhttpserver/controlhttpserver.go | |
| parent | f81348a16b6dd8705cd75379daf3b7490185e841 (diff) | |
| download | tailscale-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
