VMware ist eine nette Virtualisierungslösung. Allerdings kann es unter bestimmten Umständen Probleme geben bei der Kommunikation zwischen Host- und Gastbetriebssystem. Ursache sind Probleme mit der TCP-Offload-Funktionalität. Das Symptom dieses Problems ist eine sehr langsame Verbindung zwischen Host- und Gastsystem. Auffallen kann dies, wenn man Dateien zwischen den beiden Systemen überträgt. Komischerweise sind beide Systeme aber nach außen hin (ins Netzwerk) mit voller Geschwindigkeit zu erreichen.
Falsche Netzwerkkarte im virtuellen Gastsystem
Es kann sein, dass die Standard Netzwerkkarte, die von VMware für das Gastsystem gesetzt wird nicht korrekt funktioniert. VMware verwendet die AMD PCnet Netzwerkkarte.
Um dies zu ändern muss man die *.vmx-Datei bearbeiten und den Eintrag der Netzwerkkarte auf z.B. Intels E1000 umstellen:
ethernet0.virtualDev = "e1000"
Problem: Scalable Networking Pack
Wie im Artikel von Microsoft Support unter offene Probleme beschrieben, kann es auch Probleme mit dem Scalable Networking Pack für Windows 2003 kommen. Microsoft empfiehlt die TCP-Chimney-Offloading-Funktionalität zu deaktivieren. Dazu muss man in der Eingabeaufforderung folgendes eingeben:
netsh int ip set chimney disabled
TCP Offload von Netzwerkkarten
In meinem Fall war es die Netzwerkkarte, die die langsame Kommunikation zwischen beiden Systemen verursachte. Zum Beheben muss man in der Treiberkonfiguration Large Send Offload deaktivieren. Je nach Netzwerkkartenhersteller kann die Bezeichnung auch anders lauten.
Hinweis: Evtl. muss der Server neu gestartet werden!
Problembehebung unter Linux
Auch mit Linux als Hostsystem kann dieses Problem auftreten. Hier kann man TCP-Offload mit ethtool ausschalten.
# ethtool -k eth0 Offload parameters for eth0: rx-checksumming: on tx-checksumming: on scatter-gather: on tcp segmentation offload: on
Hier sieht man das TCP-Segmentation an ist. Mit dem folgenden Befehl lässt sich die Checksummen- und TCP-Offload-Funktion ausschalten:
# ethtool -K eth0 sg off rx off tx off tso off
Weitere Ursachen wären mir nicht bekannt. Falls jemand doch noch eine Fehlerquelle ausfindig gemacht hat, bitte als Kommentar posten. Man lernt nie aus…