tailscale/net/tstun
James Tucker 25b8ed8d9e control/controlknobs,net/{batching,tstun},wgengine: add nodecaps to disable UDP & TUN GRO/GSO
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>
2026-05-27 17:10:14 -07:00
..
fake.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
ifstatus_noop.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
ifstatus_windows.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
mtu_test.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
mtu.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
netstack_disabled.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
netstack_enabled.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
tstun_stub.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
tun_linux.go clientupdate,net/tstun: add support for OpenWrt 25.12.0 using apk (#18545) 2026-03-05 13:39:07 -05:00
tun_macos.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
tun_notwindows.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
tun_windows.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
tun.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
wrap_linux.go control/controlknobs,net/{batching,tstun},wgengine: add nodecaps to disable UDP & TUN GRO/GSO 2026-05-27 17:10:14 -07:00
wrap_noop.go control/controlknobs,net/{batching,tstun},wgengine: add nodecaps to disable UDP & TUN GRO/GSO 2026-05-27 17:10:14 -07:00
wrap_test.go all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
wrap.go wgengine, all: remove LazyWG, use wireguard-go callback API for on-demand peers 2026-04-29 19:46:19 -07:00