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>
|
||
|---|---|---|
| .. | ||
| fake.go | ||
| ifstatus_noop.go | ||
| ifstatus_windows.go | ||
| mtu_test.go | ||
| mtu.go | ||
| netstack_disabled.go | ||
| netstack_enabled.go | ||
| tstun_stub.go | ||
| tun_linux.go | ||
| tun_macos.go | ||
| tun_notwindows.go | ||
| tun_windows.go | ||
| tun.go | ||
| wrap_linux.go | ||
| wrap_noop.go | ||
| wrap_test.go | ||
| wrap.go | ||