Ich möchte deaktivierenTCP-Offloading(TOE) auf meinen Debian-Servern. Ich würde so etwas verwenden wie:
ethtool -K …
Ich habe jedoch einige Wünsche: Ist es möglich, es sauber in Debian zu integrieren?
Dort steht: nein rc.local
, ich möchte auch Pseudo-RC-Scripting vermeiden.
Ich würde vermuten, dass es die Installation ethtool
und Verwendung des pre-up.d/hook ist, der TOE mithilfe von Optionen von dekonfiguriert /etc/network/interfaces
.
Ich möchte alle meine (zukünftigen) Server mithilfe von FAI generisch dekonfigurieren (da FAI bereits vorhanden ist – und gewünscht wird!).
Was ist mit Toe-Optionen, die auf manchen Hardware-Komponenten nicht unterstützt werden? Wird die Netzwerkverbindung fehlschlagen, wenn eine nicht vorhandene Option deaktiviert werden soll? Ich denke, es sollte robust genug sein, dies nicht zu tun, aber das scheint auch nicht die von mir gewünschte Lösung zu sein.
Das führt zu einer großen Unübersichtlichkeit der Konfiguration, da es derzeit 11 Optionen gibt! Die Verwendung mehrerer Netzwerkkarten riecht für mich nach einer fehleranfälligen Vorgehensweise.
Gibt es keine allgemeinere Lösung? Ich denke an ein Sysctl, habe aber noch keins gefunden. Mein Wunsch war:
echo 0 > /proc/sys/net/core/enable_tcp_offloading
PS: Ich bin ziemlich überrascht, dass meine "neuere Hardware" standardmäßig TOE aktiviert hat, weilDas.
Antwort1
Unter Debian stellt das ethtool
Paket jetzt ein if-up.d
Skript bereit, das Optionen zum Offloading (und andere ethtool
Einstellungen) implementiert.
Sie müssen lediglich dieses Paket installieren und der Schnittstelle in Zeilen wie diese hinzufügen /etc/network/interfaces
.
auto eth0
iface eth0 inet static
address 10.0.3.1/255.255.248.0
gateway 10.0.2.10
offload-tx off
offload-sg off
offload-tso off
Antwort2
Heureka! Habe „meine“ Lösung gefunden!
Ich stelle einfach meine eigeneZehen deaktivierenSkript in/etc/netzwerk/if-up.d/wodurch das TCP-Offloading vollständig deaktiviert wird.
Als Bonus habe ich hinzugefügt:/etc/Netzwerk/Schnittstellen-Option, die dies deaktiviert.
#!/bin/bash
RUN=true
case "${IF_NO_TOE,,}" in
no|off|false|disable|disabled)
RUN=false
;;
esac
if [ "$MODE" = start -a "$RUN" = true ]; then
TOE_OPTIONS="rx tx sg tso ufo gso gro lro rxvlan txvlan rxhash"
for TOE_OPTION in $TOE_OPTIONS; do
/sbin/ethtool --offload "$IFACE" "$TOE_OPTION" off &>/dev/null || true
done
fi
Antwort3
Abseits vom Thema (irgendwie), aber ich bin hier gelandet, als ich versuchte herauszufinden, wie man das Gleiche für einige RHEL6-Server macht. Wenn also jemand nach dem gleichen für RHEL/CentOS/Fedora-ähnliche Distributionen sucht, finden Sie die AntwortHier.
Antwort4
Wenn Sie ein System verwenden, dasNetplan(zB Ubuntu) um das Netzwerk zu konfigurieren, dann können Sie eineNetplan-Postup-Skriptum das Offloading zu konfigurieren. Wie bereits in einemAntwortzu einer anderen Frage.
Sie erstellen im folgenden Verzeichnis ein Skript mit einem Namen, dem eine Zahl vorangestellt ist, um die Ladereihenfolge anzugeben. Das Skript /etc/networkd-dispatcher/routable.d/40-offloading-config
ist beispielsweise ausführbar und Eigentum von root. So schalten Sie beispielsweise TCP Segment Offloading auf eth0 aus:
#!/bin/sh
/sbin/ethtool -K eth0 tso off