Der 35-Watt-Mitbewohner (Teil 3): Mittelerde und der digitale Infarkt
Es sollte ein entspannter Abend werden. Ich hatte meine Freundin endlich überzeugt, die Lord of the Rings Extended Version mit mir zu schauen. Die Stimmung war gut und die Elben marschierten gerade in Helms Klamm ein. Doch pünktlich gegen 22 Uhr war plötzlich Schicht im Schacht.
Das komplette LAN war tot. Kein Stream am Fernseher und kein Internet am PC. Das Merkwürdige dabei war, dass das WLAN der Fritzbox 7690 noch einwandfrei funktionierte. Nur alles, was am Kabel hing, war komplett lahmgelegt.
Der Verdacht im Serverschrank
Da ich erst vor Kurzem den Lenovo M920q in Betrieb genommen hatte, war er natürlich sofort mein Hauptverdächtiger. Meine erste Vermutung war ein falsch konfigurierter Docker Container. Ich dachte an Probleme mit macvlan oder einem Container im Network Host Mode, der vielleicht einen Loop verursacht.
Ich deaktivierte einen verdächtigen Container und hatte erst einmal zwei Tage Ruhe. Ich dachte schon, das Problem wäre erledigt. Doch dann passierte es wieder: Mitten im Film war das LAN weg. Erst als ich das Netzwerkkabel am Lenovo zog, beruhigte sich das gesamte Netzwerk sofort wieder.
Die Spurensuche in den Kernel Logs
Ich habe mich also per SSH auf den Proxmox Host geschaltet und die Logs durchsucht:
dmesg -T | grep -i e1000e
Dort fand ich im Sekundentakt Fehlermeldungen:
e1000e 0000:00:1f.6 nic0: Detected Hardware Unit Hang
TDH <52>
TDT <73>
next_to_use <73>
next_to_clean <52>

Technisch gesehen ist das ein Problem mit den Ring Buffern der Netzwerkkarte. Man kann sich das wie ein Förderband vorstellen. Das System legt Pakete hinten drauf (TDT - Transmit Descriptor Tail) und die Karte verschickt sie vorne (TDH - Transmit Descriptor Head).
In meinem Fall sah man im Log:
- TDH (Head): 52
- TDT (Tail): 73
Das bedeutet, dass das System zwar Pakete einreiht, aber die Hardware sie vorne nicht mehr abarbeitet. Die Netzwerkkarte ist intern einfach eingefroren. Weil der Server über eine Bridge fest im LAN hängt, verstopft dieser Hänger den gesamten Switch Port der Fritzbox und reißt das restliche Kabelnetzwerk mit in den Abgrund.
Warum passiert das Ganze?
Der Grund ist ein Feature namens EEE (Energy Efficient Ethernet), auch bekannt als IEEE 802.3az. Die Intel i219-LM Karte versucht Strom zu sparen, wenn wenig los ist. In Kombination mit Virtualisierung unter Proxmox wacht sie aber manchmal nicht mehr richtig auf. Das führt zu Timing-Problemen und endet im Hardware Unit Hang.
Die Lösung für das Problem
Ich habe drei Stufen angewendet, um den Lenovo wieder stabil zu bekommen:
1. Treiber-Optionen anpassen
Unter /etc/modprobe.d/e1000e.conf habe ich folgende Zeile eingefügt:
options e1000e InterruptThrottleRate=0,0,0 EEE=0
Dies deaktiviert Energy Efficient Ethernet und das Interrupt Throttling auf Treiberebene.
2. Offloading deaktivieren
Das sogenannte Offloading sind Funktionen, bei denen die Karte der CPU Arbeit abnimmt (TSO, GSO, GRO). Das klingt erstmal gut, führt aber oft zu Problemen:
ethtool -K nic0 tso off gso off gro off
3. Systemd Service erstellen
Damit diese Einstellungen nach jedem Neustart erhalten bleiben, habe ich einen Systemd Service erstellt:
/etc/systemd/system/nic-stable.service:
[Unit]
Description=Disable NIC offloading and EEE for stability
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -K nic0 tso off gso off gro off
ExecStart=/usr/sbin/ethtool -s nic0 eee off
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Dann aktiviert:
systemctl daemon-reload
systemctl enable nic-stable.service
systemctl start nic-stable.service
Noch eine initramfs-Aktualisierung, damit die Modprobe-Config geladen wird:
update-initramfs -u
Fazit der Rettungsaktion
Es war kein Fehler von Proxmox oder der Fritzbox. Es war schlicht die Hardware, die beim Energiesparen den Faden verloren hat. Die Fritzbox sieht davon übrigens nichts, weil das Problem auf Layer 2 passiert die Netzwerkkarte hängt einfach, bevor überhaupt IP-Pakete verschickt werden können.
Seit diesen Anpassungen läuft das System ohne einen einzigen Aussetzer. Wir konnten Lord of the Rings endlich ohne Unterbrechung zu Ende schauen. Falls euer LAN also mal ohne Grund weg ist, werft einen Blick in die Kernel Logs des Servers:
dmesg -T | tail -100
Oft ist es nur eine Karte, die etwas zu tief geschlafen hat. 🛌💤