mirror of
https://github.com/tailscale/tailscale.git
synced 2026-06-03 21:01:54 +08:00
Add four control-plane node attributes that let us disable UDP GSO/GRO
on the magicsock UDP socket and UDP/TCP GRO on the Tailscale TUN
device.
These complement the pre-existing TS_DEBUG_DISABLE_UDP_{GRO,GSO} and
TS_TUN_DISABLE_{UDP,TCP}_GRO envknobs. They exist so we can mitigate
upstream Linux kernel regressions on a deployed fleet without
requiring a client release, after two incidents (#13041, #19777) where
buggy kernel patches landed upstream and the fix took an excessively
long time to reach downstream distros.
Knob changes are reacted to in setNetworkMapInternal / SetNetworkMap via
a comparison against a cached "last applied" value and only an actual
transition triggers work: magicsock Rebind()+ReSTUN for UDP,
ApplyGROKnobs for TUN. The TUN side is gated by buildfeatures.HasGRO and
is one-way (wireguard-go GRO disablement is sticky); re-enabling
requires a client restart.
Updates #13041
Updates #19777
Change-Id: I802993070afa659cc06809bb0bfbb7f8a0cdb273
Signed-off-by: James Tucker <james@tailscale.com>
|
||
|---|---|---|
| .. | ||
| blockforever_conn.go | ||
| debughttp.go | ||
| debugknobs_stubs.go | ||
| debugknobs.go | ||
| derp_test.go | ||
| derp.go | ||
| disco_atomic_test.go | ||
| disco_atomic.go | ||
| discopingpurpose_string.go | ||
| endpoint_default.go | ||
| endpoint_stub.go | ||
| endpoint_test.go | ||
| endpoint_tracker_test.go | ||
| endpoint_tracker.go | ||
| endpoint.go | ||
| magicsock_default.go | ||
| magicsock_linux_test.go | ||
| magicsock_linux.go | ||
| magicsock_notplan9.go | ||
| magicsock_plan9.go | ||
| magicsock_test.go | ||
| magicsock.go | ||
| peermap_test.go | ||
| peermap.go | ||
| peermtu_darwin.go | ||
| peermtu_linux.go | ||
| peermtu_stubs.go | ||
| peermtu_unix.go | ||
| peermtu.go | ||
| rebinding_conn.go | ||
| relaymanager_test.go | ||
| relaymanager.go | ||