TCP-Offloading deaktivieren {vollständig, allgemein und einfach}

TCP-Offloading deaktivieren {vollständig, allgemein und einfach}

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 ethtoolund 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 ethtoolPaket jetzt ein if-up.dSkript bereit, das Optionen zum Offloading (und andere ethtoolEinstellungen) 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-configist 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

verwandte Informationen