RSS und VMQ

Die Begriffe RSS und VMQ laufen einem häufig über den Weg, wenn es um den Punkt der Netzwerkoptimierung geht. Leider stelle ich immer wieder fest, dass die Bedeutungen dieser Begriffe und die damit verbundene Technologie nicht hinreichend bekannt ist. Deswegen möchte ich die Gelegenheit nutzen und hier zum Einen erklären was genau RSS und VMQ ist, aber zum Anderen auch die Abgrenzungen und vor allem die Vorteile dieser Technologien beschreiben. Beide Technologien sind nicht ganz trivial zu erklären, deswegen fangen wir ganz langsam an.

Was passiert bei Netzwerktraffic ohne RSS und VMQ?

Der Netzwerktraffic der von außen unseren physikalischen Rechner erreicht wird von der Netzwerkkarte an den CPU-Core 0 weitergeleitet und dort gerechnet. Das geschieht mit dem gesamten Traffic. Es wird immer und ausschließlich auf Core 0 gerechnet, unabhängig davon, ob mehrere Core zu Verfügung stehen würden. Im schlimmsten Fall haben wir bei einer 4-Core Maschine 3 Cores mit 0% Last und einen Core mit 100% Last. Im folgenden Bild ist dieses Verhalten dargestellt:

ohneRSS

Auf den ersten Blick scheint das nicht so kritisch zu sein, schließlich hat mein System ja 4 Cores und selbst wenn 1 Core unter Last steht, habe ich ja noch 3 weitere Cores, die die restliche Arbeit des Systems übernehmen können. Dies ist im Prinzip richtig, der eine Core, der extrem unter Last steht, wird nicht das ganze System in die Knie zwingen, aber wir haben hier ein ganz anderes Problem. Spätestens beim Einsatz von Netzwerkkarten jenseits der 1 GBit/s Grenze, nämlich 10 GBit/s-Karten und größere, welche heute fast schon Standard sind, kommt die CPU an Ihre Grenzen. In verschiedenen Tests haben wir herausgefunden, dass ein Core unter optimalen Bedingungen ungefähr 8 GBit/s verkraften kann. Im Normalfall pendelt sich dieser Wert bei 6 GBit/s ein. Somit ist ein Rechner ohne jegliche RSS- und VMQ Funktionalität gar nicht in der Lage einen 10 GBit/s Datenstream komplett zu verarbeiten und auszunutzen.

 

Wie kann RSS hier helfen?

RSS (Receive Side Scaling) ist ein Mechanismus, der es ermöglicht, anhand von sogenannten RSS-Queues den Netzwerktraffic eben nicht nur auf Core 0 rechnen zu lassen, sondern den Datenverkehr auf alle vorhandenen Cores zu verteilen. Wie viele Cores tatsächlich genutzt werden hängt davon ab, wieviele Queues die Netzwerkkarte realisieren kann. Es lohnt sich also beim Kauf einer Netzwerkkarte mit RSS-Funktionalität mal nachzufragen, wie viele RSS-Queues unterstützt werden. Im folgenden Bild sehen wir, wie der Netzwerktraffic über die Queues auf die einzelnen Cores verteilt wird:

RSS

Hierdurch umgehen wir die Limitierung der CPU Cores und können somit bei einer eingehenden 10 GBit/s-Verbindung auch die vollen 10 GBit/s verarbeiten. RSS sollte heutzutage in jedem physikalischen Server eingesetzt werden, damit die Server die entsprechende Leistung liefern können. Einen tief technischen Einblick zu RSS bekomme man auf dieser Microsoftseite.

 

Was ist VMQ und worin liegen die Unterschiede zu RSS?

Bei VMQ wird die Komplexität nochmal drastisch gesteigert. In einer virtuellen Umgebung kommt ein Problem dazu, welches sich mit RSS nicht lösen lässt – der virtuelle Switch. Es bringt keinen Vorteil, wenn der Netzwerkverkehr auf mehrere Cores in meinem physikalischen Server verteilt wird und ich durch den Einsatz eines virtuellen Switches die entsprechenden virtuellen Maschinen nicht diesen Queues zuordnen kann. Um eben genau so eine Queue zu etablieren, die zwischen der Netzwerkkarten und der virtuellen Maschine fungiert, setzt man auf VMQ. Im Prinzip ist also VMQ eine Art erweitertes RSS. Es funktioniert ähnlich, aber doch irgendwie anders.

Wichtig zu wissen ist, dass sich diese beiden Technologien gegeneinander ausschließen. Ich kann also nicht RSS und VMQ auf der selben Netzwerkkarte einsetzen! Innerhalb eines Server, der unterschiedliche Netzwerkkarten für unterschiedliche Funktionen hat ist dies kein Problem, dort kann z.B. RSS auf den Netzwerkkarten für den Hosttraffic aktiviert werden und VMQ auf den Netzwerkkarten der virtuellen Gastsysteme. Beides zusammen auf einer Netzwerkkarten funktioniert jedoch nicht.

VMQ

Auf der Zeichnung ist zu erkennen, dass es für die VM1 und VM2 eine Queue gibt, durch die der Netzwerkverkehr direkt adressiert wird. Der enorme Vorteil ist, dass dieser Verkehr im virtuellen Switch nicht erst durch den Routing Code geschleust werden muss, sondern direkt über den VMBus an die virtuellen Maschinen weitergereicht wird.

Wer bei der Einrichtung eines virtuellen Switches schon mal den Haken “Allow management operating system to share this network adapter” angehakt hat, wird wissen, dass er damit das converged Networking für den Hostadapter aktiviert hat. Das bedeutet, dass in diesem Fall auch der Hosttraffic durch den virtuellen Switch läuft. Auch hierfür wird dann eine VMQ eingerichtet, die den Traffic direkt zu der Host vNIC weiterreicht. Zusätzlich gibt es eine Default Queue, die für den restlichen Traffic bzw. den initialen Traffic, der noch keiner VMQ zugeordnet ist.

 

Unterschied von statischem und dynamischem VMQ?

In dem oberen Bild ist statisches VMQ zu sehen. Jede Queue ist einem Core fest zugeordnet. Es werden somit viele Pozessoren mit Aufgaben belegt, obwohl eventuell eine CPU auch mehrere Queues verarbeiten könnten. An dieser Stelle kommt dynamisches VMQ zum Einsatz. Bei dynamischem VMQ werden die Cores nacheinander angesprochen. Erst wenn ein Core seinen maximalen “Füllgrad” erreicht hat, schwenkt eine VMQ auf den nächsten Core. Somit kann eine noch bessere Auslastung des Systems gewährleistet werden. Da folgende Bild soll dies veranschaulichen:

dynVMQ

 

Das sollte es mit grundlegenden Informationen zu RSS und VMQ fürs Erste gewesen sein. Sicherlich kann man in diese Themen noch viel tiefer eintauchen, aber ich wollte mit diesem Artikel vorerst das grundsätzliche Verständnis für die beiden Technologien rüberbringen. In einem der nächsten Blogartikel werde ich die Themen vRSS und SR-IOV behandeln und einen Ausblick darauf geben, welche zusätzlichen Technologien in diesem Bereich in der nächsten Windows Server Versionen auf uns warten.

One thought on “RSS und VMQ

  1. Hallo Thomas,
    du hattest mal einen Artikel angekündigt, der sich mit dem Thema SR-IOV beschäftigen sollte.
    Gibt es den irgendwo oder bist du einfach noch nicht dazu gekommen 😉
    Viele Grüße
    Roland

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.