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?

1 Like
while IFS=":" read -r UUID DEVICE
do if [ "${DEVICE}" = "eno1" ]; then break; fi
done < <(nmcli -g UUID,DEVICE connection show)
nmcli connection modify ${UUID} \
    ethtool.feature-rx-udp-gro-forwarding on \
    ethtool.feature-rx-gro-list off
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

You don’t need any script since NetworkManager provides native support for those settings and the above code should modify the connection that matches the interface mentioned by the OP.

Oh, the settings are permanently applied?

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…