
Wenn ich etwas von einem Windows-Server (qemu kvm) auf einen neuen Linux-Server (Bare Metal) im selben Netzwerk hochlade, ist die Geschwindigkeit sehr langsam (etwa 1/100 von dem, was für den 1-GBit/s-Uplink möglich sein sollte). Uploads auf alle anderen Maschinen (einschließlich anderer Linux-Server) im Netzwerk laufen mit voller Geschwindigkeit. Und sobald ich einen solchen Upload auf eine andere Maschine starte, während ein Upload auf den problematischen Linux-Server noch läuft, werden beide Uploads schnell (der vorher langsame Upload erhöht sich also auf etwa 50 % der Geschwindigkeit des Uplinks, während der andere startet und auch auf dieser Geschwindigkeit bleibt). Sobald der „andere Upload“ beendet ist, fällt der vorherige Upload auf den neuen problematischen Server auf seine sehr langsame Geschwindigkeit ab.
Dies scheint für den gesamten Datenverkehr (SSH, HTTP, SMB) der Fall zu sein, während kein anderer Rechner im Netzwerk das Problem hat. Alle anderen Rechner im Netzwerk laden also ohne Probleme mit voller Geschwindigkeit auf den neuen Server hoch. Es scheint sogar, dass der Linux-Bare-Metal-Host ebenfalls keine Probleme hat.
Zwischen beiden Servern befinden sich zwei Netgear 1/10GBit/s-Switches, aber keine VLANs oder andere spezielle Konfigurationen. Ich habe einige typische KVM-Host/Gast-Workarounds ausprobiert (tx/rx-Offload, LSO, anderer virtueller Adapter, ...), aber ohne jegliche Änderung. Wenn ich mir die TCPdumps auf Quelle, Ziel und Host ansehe, sehe ich auch nichts, was nicht stimmt. Also kein Paketverlust oder andere Probleme, die ich identifizieren konnte (obwohl ich hier kein Experte bin).
Da ich so etwas noch nie gesehen habe, ist meine Hauptfrage, bevor ich etwas anderes sage: Mit was für einem Problem habe ich es hier überhaupt zu tun?
Antwort1
Meine erste Vermutung wäre, dass etwas mit der Ethernet-Autonegotiation zwischen der Windows-VM und der Baremetal-Linux-Box nicht stimmt, was dazu führt, dass der „Port“ der Windows-VM auf ein niedrigeres Niveau aushandelt, wie etwa 10M statt 100M oder 1G. Wenn die Windows-VM auf einen anderen Server hochlädt, besteht das Autonegotiation-Problem nicht (oder wird vielmehr außer Kraft gesetzt, solange die Verbindung zum anderen Server aktiv ist) und der Port verwendet 1G.