Tailscale with transport layer offload optimisation

I just set my machine to work as exit-node and Tailscale gives a notification:

Warning: UDP GRO forwarding is suboptimally configured on eno1, UDP forwarding throughput capability will increase with a configuration change.
See Performance best practices · Tailscale Docs

Which lead to this page explaining it: Performance best practices · Tailscale Docs

short quote:

Tailscale version 1.54 or later used with a Linux 6.2 or later kernel enables UDP throughput improvements using transport layer offloads. If a Linux device is acting as an exit node or subnet router, ensure the following network device configuration is in place for the best results:…

But on Silverblue we do not have networkd-dispatcher, how can we configure this permanently?

2 Likes
while IFS=":" read -r UUID DEVICE
do if [ "${DEVICE}" = "eno1" ]; then break; fi
done < <(nmcli -g UUID,DEVICE connection show)
sudo nmcli connection modify ${UUID} \
    ethtool.feature-rx-udp-gro-forwarding on \
    ethtool.feature-rx-gro-list off
sudo nmcli connection up ${UUID}

nm-settings: Description of settings and properties of NetworkManager connection profiles for nmcli | NetworkManager File Formats | Man Pages | ManKier

1 Like

NetworkManager has /etc/NetworkManager/dispatcher.d which could probably be used for this purpose. See NetworkManager-dispatcher: NetworkManager Reference Manual

The script from @vgaetera (or similar) in that directory would probably work.

1 Like

Oh, the settings are permanently applied?

1 Like

Do you mean we can run that command once from a terminal and that’s all? It will persist after a reboot?

As far as I can see that code requires to be run as a script… so we do need a script… even if you only need to run it once…

Yes.

Not really, you can copy-paste the entire block of code to the terminal as is.

1 Like