Title
Direkt zum Seiteninhalt

TSO und LRO bei vSphere

Virtualisierung

TSO und LRO bei vSphere
Sowohl bei virtuellen Maschinen, als auch bei dem Hypervisor kann man TSO (Transmission (TCP) Segmentation Offload) und LRO (Large Receive Offload) aktivieren. TSO wird häufig auch LSO (Large Segmentation Offload) genannt.
TSO ermöglicht einem TCP/IP-Stapel das Senden sehr großer Datenblöcke (bis zu 64 KByte), obgleich die maximale Übertragungseinheit (Maximum Transmission Unit, MTU) der Schnittstelle kleiner ist. Der Netzwerkadapter trennt anschließend den großen Datenblock in Datenblöcke mit MTU-Größe und stellt eine angepasste Kopie der einleitenden TCP/IP-Header voran. Bei der Übertragung von vielen Datenpaketen muss man die Framesize (Paketgröße) beachten, die von allen beteiligten Komponenten wie Netzwerkkarten, Switches oder Router unterstützt werden. Große Daten werden also in kleinere Pakete (1448 Byte Daten + Header) aufgeteilt, um übers Netzwerk übertragen werden zu können. Das nennt man Segmentierung und belastet eine CPU recht stark. Wird das Aufteilen beim Senden aber von einer Netzwerkkarte übernommen, so nennt man es TSO, beim Empfangen LRO.
Ein VMkernel-Port nutzt standardmäßig TSO und eine MTU von 1.500. Wenn Sie einen VMkernel-Port erstellen, wird für diesen automatisch TSO eingerichtet. Auf der Kommandozeile können Sie das mit dem Befehl
esxcfg-vmknic -l überprüfen. In der Spalte TSO steht dann ein Wert von 64 KByte also 65.535 Byte.
Die MTU und auch TSO einer oder mehrerer Netzwerkkarten an einem vSwitch können auch über die grafische Oberfläche mit dem vSphere oder Web Client eingerichtet werden. Dabei muss man den physischen Adaptertyp beachten, da nicht alle vom ESXi Server unterstützten Adapter das können.
Laut VMware muss ein virtueller Switch für TSO mit folgenden Adapter(n) bestückt sein:

  • Intel PRO/1000 with a MAC type of 82544 or greater

  • Broadcom BCM5700 series card, chip type 5702 or greater (except 5705_A0)

Achten Sie darauf, dass Sie am vSwitch keine Karten betreiben, die TSO nicht unterstützen, weil sonst TSO für den gesamten vSwitch abgeschaltet wird.
Um TSO nutzen zu können, muss es am Host, der VM und im Betriebssystem der VM aktiv sein.

TSO und LRO beim ESXi
Standardmäßig ist TSO beim ESXi Host aktiviert. Über den Reiter Konfiguration à Erweiterte Einstellungen kann TSO ebenfalls aktiviert (1) oder deaktiviert (0) werden.











Die Einstellungen zu LRO findet man in dem Fenster (alphabetisch sortiert) unter anderem bei Net.VmklnxLROEnabled, Net.LROxxx, Net.TcpipDefLROMaxLength und Net.TcpipLRONoDelayAck. Beachten Sie dabei, dass der Wert für Net.VmklnxLROEnabled auf „1" gesetzt werden muss, damit LRO aktiv ist. Bei dem Eintrag Net.VmklnxLROMaxAggr kann der Standardwert „6" auf „12" erhöht werden, um ggf. eine höhere Performance zu erreichen. Erst nach einem Neustart des Hosts werden die eingetragenen Änderungen wirksam.

TSO für VMs aktivieren

Auch von einigen Betriebssystemen wird die TSO-Technik unterstützt. Microsoft rät bei Windows 2000 und XP allerdings davon ab. Als virtuelle Maschine muss das unterstützte Betriebssystem eine VMXNET 2 (ERWEITERT)- oder VMXNET 3-Karte haben. Beachten Sie, dass der veraltete VMXNET 2 (ERWEITERT) Adapter ab der Version 6 von vSphere nicht mehr genommen werden soll. VMware gibt in seinen Unterlagen nur vier Betriebssysteme an, bei denen TSO dann automatisch aktiviert ist:

  • Microsoft Windows 2003 Enterprise Edition SP2 (32 und 64 Bit) und höher

  • Red Hat Enterprise Linux 4 (64 Bit)

  • Red Hat Enterprise Linux 5 (32 und 64 Bit) und höher

  • SUSE Linux Enterprise Server 10 (32 und 64 Bit) und höher

Überprüfen können Sie das im Betriebssystem der VM bei den Netzwerkkarteneinstellungen für IPv4 und IPv6:




LRO für VMs aktivieren
Auch bei den VM-Betriebssystemen ist LRO normalerweise nicht aktiviert. Um das nachzuholen, damit die VM eingehende Pakete zu größeren Puffern zusammenzufasst, gehen Sie wie folgt vor:
1. Öffnen Sie im Gastbetriebssystem eine Eingabeaufforderung und geben Sie folgenden Befehl ein:
netsh int tcp show global











2. In der Ausgabe (hier 2012 Server) kann man den Status der globalen TCP-Parameter sehen. Der Eintrag „Zustand der Empfangssegmentzusammenfügung: enabled" deutet auf ein aktiviertes LRO hin.
3. Sollte hier „disabled" stehen, so kann LRO mit folgendem Befehl aktiviert werden: netsh int tcp set global rsc=enabled
4. Auch beim Netzwerkadapter können die Einstellungen zu LRO bearbeitet werden:

5. Unter Windows wird die LRO-Technologie auch als „Empfangsseitige Zusammenfügung (Receive Side Coalescing, RSC)" oder, wie in diesem Fall als „Receive Segment Coalescing" bezeichnet.

Falls Probleme bei einer VM diesbezüglich auftauchen, überprüfen Sie Folgendes:

  • Gastbetriebssystem ist Windows Server 2012 oder höher?

  • VM ist kompatibel mit ESXi 6.0 oder höher?

  • Treiber des VMXNET3 Adapters ist 1.6.6.0 oder höher?

  • LRO ist global im Gastbetriebssystem aktiviert?

Sollte alles nichts helfen, versuchen Sie die folgende Zeile in die Konfigurationsdatei der ausgeschalteten VM hinzuzufügen:
ethernetx.features="0x2"
wobei „x" eine Zahl, beginnend von 0 an ist. Für den ersten Adapter wäre der Eintrag also ethernet0.features="0x2".

Besonderheiten bei Server 2008

TSO und LRO können unter Windows Server 2008 auch zu niedrigeren Netzwerkleistungen führen. Hier kann es helfen, TSO zu deaktivieren. Gehen Sie dazu wie folgt vor:

  • Öffnen Sie als Administrator einen Command-Prompt.

  • Geben Sie folgenden Befehl ein:

netsh int tcp set global chimney=disabled

  • Starten Sie das Betriebssystem der VM neu.

Überprüfen Sie den TSO-Eintrag in der Registry:

  • Starten Sie als Administrator regedit.exe

  • Navigieren Sie zum Schlüssel HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\

  • Überprüfen Sie den Eintrag „DisableTaskOffload". Sollte dieser nicht existieren, legen Sie ihn als DWord (32-Bit) an.

  • Übergeben Sie als Wert „1", um TSO zu deaktivieren.


Zurück zum Seiteninhalt