You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/net
James Tucker e1e22785b4 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>
4 weeks ago
..
art all: fix new lint warnings from bumping staticcheck 3 months ago
captivedetection net/captivedetection: set Timeout on net.Dialer (#13613) 2 months ago
connstats {net/connstats,wgengine/magicsock}: fix packet counting in connstats 1 month ago
dns net/dns: fix blank lines being added to resolv.conf on OpenBSD (#13928) 4 weeks ago
dnscache net/dnscache: don't fall back to an IPv6 dial if we don't have IPv6 2 months ago
dnsfallback {control,net}: close idle connections of custom transports 4 months ago
flowtrack net/flowtrack: fix, test String method 5 months ago
ipset go.mod: bump bart 5 months ago
ktimeout net/ktimeout: add a package to set TCP user timeout 9 months ago
memnet net/memnet: export the network name (#9111) 1 year ago
netaddr all: update copyright and license headers 2 years ago
netcheck net/netcheck: ensure prior preferred DERP is always in netchecks 4 weeks ago
neterror net/neterror, wgengine/magicsock: use UDP GSO and GRO on Linux (#7791) 2 years ago
netkernelconf ipn/{ipnlocal,localapi},net/netkernelconf,client/tailscale,cmd/containerboot: optionally enable UDP GRO forwarding for containers (#12410) 6 months ago
netknob all: update copyright and license headers 2 years ago
netmon all: fix new lint warnings from bumping staticcheck 3 months ago
netns net/netns: remove some logspam by avoiding logging parse errors due to unspecified addresses 4 months ago
netstat all: add test for package comments, fix, add comments as needed 5 months ago
netutil {ipn,net,tsnet}: use tsaddr helpers 2 months ago
packet wgengine/magicsock: actually use AF_PACKET socket for raw disco 3 months ago
ping net/ping: fix ICMP echo code field to 0 1 year ago
portmapper net/portmapper: don't treat 0.0.0.0 as a valid IP 2 months ago
proxymux all: cleanup unused code, part 1 (#10661) 11 months ago
routetable net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 7 months ago
socks5 net/socks5: support UDP 4 months ago
sockstats net/sockstats: quiet some log spam in release builds 2 months ago
speedtest all: update copyright and license headers 2 years ago
stun ci: enable checklocks workflow for specific packages 5 months ago
stunserver all: use Go 1.22 range-over-int 7 months ago
tcpinfo all: use Go 1.22 range-over-int 7 months ago
tlsdial net/tlsdial: call out firewalls blocking Tailscale in health warnings (#13840) 1 month ago
tsaddr net/tsaddr: add WithoutExitRoutes and IsExitRoute 2 months ago
tsdial {control,net}: close idle connections of custom transports 4 months ago
tshttpproxy all: use Go 1.22 range-over-int 7 months ago
tstun net/tstun: use /10 as subnet for TAP mode; read IP from netmap 1 month ago
wsconn go.{mod,sum}: migrate from nhooyr.io/websocket to github.com/coder/websocket 3 months ago