NPAR - NIC Partitionierung

Diese Seite beschreibt die Funktion von 10 GBit-karte, diese in mehrere virtuelle Karten aufzuteilen um z.B. Bandbreiten zu steuern. Diese Funktion ist wichtig, wenn Sie z.B. in virtuellen Umgebungen mehrere Hosts haben und z.B. TCP/IP-Netzwerkverkehr und iSCSI-Verkehr über den gleichen Port betreiben. 10 GBit ist zwar viel aber wenn ein Dienst den Port komplett belegt, dann ist der andere Dienst auch mit betroffen. Daher ist eine Priorisierung erforderlich. Die klassische QoS-Steuerung funktioniert aber nur für Pakete der im gleichen Netzwerksegment, d.h. über eine Netzwerkkarte lässt sich für TCP/IP hier etwas steuern. Aber gerade virtuelle Maschinen haben ja keine eigene dedizierte Karte, sondern nutzen einen Link zu einem virtuellen Switch der seinerseits dann mit einen Hostadapter an das physikalische LAN angeschlossen ist. Und dieser Adapter kann auch von anderen VMs oder dem Host selbst als Storage-Anbindung genutzt wird.

Physik, real und virtuell

Wenn es um Netzwerkkommunikation geht, wird meist nur die Geschwindigkeit in Form einer Bandbreite beschriebe. Meine ersten übertragenen Bits WAN waren BTX (1200/75Bit/s) über 300Baud Akustikkoppler, 2400er Modems, die sagenhaften Zyxel mit 33600Bit/s. Heute ist DSL mit 6000Kbit schon beinahe "langsam" und per LTE schon mehr möglich. Auch im LAN sind wir von den frühen ArcNET-Karten (2,5MBit) über 10Base2/10BaseT dann sehr schnell bei 10, 100 oder gar Gigabit gelandet. Und immer gibt es den Bedarf nach "mehr" und "besser", so dass schon früh z.B. mit "AdapterTeaming" mehrere Karten virtuell zu einer großen Karte zusammen zusammengefast werden konnten. aus 4x 1GBit konnte man so einen Link mit 4GBit konfigurieren. Solche Trunk sind ideal, wenn schnellere Techniken noch nicht zur Verfügung stehen und Redundanz erforderlich ist. Dies trifft meist auf Server oder den Link zwischen Switches zu. Allerdings darf man dabei nie vergessen, dass die Team-Bandbreite nicht wirklich voll verteilt wird. Wenn z.B. ein Backup über eine TCP-Session die Daten überträgt, dann wird diese Verbindung immer über den gleichen Weg abgewickelt. Das mehr an Bandbreite ist also nur nutzbar, wenn viele Verbindungen über das Team verteilt werden. Und selbst dann ist eine Gleichverteilung nicht sichergestellt.

Das ist mit ein ein Grund, warum 1x 10GBit aus Performanceaspekten immer noch besser sind als 10x1GBit als Team. Denn hier kann auch eine einzelne Verbindung bis zu 10 Gigabit nutzen. für höhere Verfügbarkeit muss man dann 2x10GBit idealerweise an zwei unterschiedliche Switches anschließen. Das ist technisch aber die bessere Lösung als 10 Gigabit-Ports an einem Switch bereit zu stellen.

Aber selbst 10 Gigabit können ganz schnell knapp werden, wenn sie nicht von einem Service alleine benutzt werden, sondern viele (virtuelle) Server dahinter stehen und diesen Link auch nicht nur für die Kommunikation per TCP/IP mit anderen Clients und Servern nutzen, sondern vielleicht noch Storage-Daten per iSCSI oder FCOE übertragen. Spätestens dann werden Themen wie Priorisierung, Bandbreitengarantie und Bandbreitenlimit wieder interessant. Speziell wer verschiedene Dienste, Protokolle oder Server über die gleiche Netzwerkkarte führt, sollte sich genau überlegen, wie viel Gigabit sie jeder Last garantieren müssen aber auch welche Bandbreite diese Last nicht überschreiten darf, damit andere Verkehre noch genug Platz haben.

Hersteller

Die Technik NPAR wurde von den beiden Herstellern Broadcom und QLogic initiiert. Hier als Referenz ein paar Links:

Intel als dritter Hersteller hat mit SV-IOV wohl eine ähnliche Technologie

Ich bin nicht genug an der Hardware, um die individuellen Vor und Nachteile bewerten zu können. über NPAR finden sich jedoch sehr viele Informationen im Internet während SR-IOV zumindest Anfang 2014 noch ziemlich wenig beworben wurde.

Aufteilung

NPAR ist eine Möglichkeit, Bandbreiten für verschiedene Datenströme zu steuern. NPAR ist aber nicht die einzige Option. Daher stelle ich ihnen zwei andere Optionen vor, die beim Thema Netzwerk, Priorisierung und Partitionierung mir einfallen:

  • QoS
    Mittels Quality of Service-Regeln können wir Datenpakete unterschiedlicher Anwendungen unterschiedlich Priorisieren. Die Priorisierung beschränkt sich hier aber nicht nur auf den Absender, sondern auch auf dem Weg über die Router und Switches kann diese Kennzeichnung genutzt werden, um bestimmten Datenströmen eine gewissen Bandbreite zu garantieren oder auch zu limitieren. Technisch bewegt sich das aber auf der Ebene eines "Netzwerks", also innerhalb eines VLANs. Eine Abstimmung auf die physikalische Netzwerkkarte findet nicht statt. In Verbindung mit der Host-Virtualisierung (VMWare, Hyper-V, Xen, etc.) landen also solche Pakete auf dem virtuellen Switch, der eventuell QoS versteht um die Pakete dann entsprechend priorisiert zu anderen virtuellen Gästen auf dem gleichen Host oder insbesondere über eine reale Netzwerkkarte zu anderen Systemen sendet.
  • VLAN-Partitionen
    Schon viele Jahre gibt es zumindest bei Server-Karten auch die Funktion, mehrere VLANs auf einer Karte einzurichten. Wenn ein Server also logisch mehrere Netzwerkkarten in eigenen Subnetzen benötigt, dann muss man dem Server nicht mehr die entsprechende Anzahl von realen Karten verpassen, sondern der Netzwerkkartentreiber kann selbst die VLAN-Tags setzen. Das Betriebssystem "sieht" dann natürlich mehrere virtuelle Netzwerkkarten, die aber sich die gleiche Bandbreite der physikalen Karte bzw. des Teams teilen. Eine Verteilung oder Priorisierung findet hier nicht statt. Schlimmer noch: eine QoS Regelung auf einem dieser Links kann durch Traffic auf einemanderen VLAN dennoch gestört werden
  • NPAR-Partitionen
    Erst mit der NIC-Partitionierung kann die echte Netzwerkkarte nicht nur in mehrere virtuelle Netzwerkkarten aufgeteilt werden, sondern jedem dieser Links kann auch eine Bandbreite zugesichert bzw. begrenzt werden. Wenn die Partitionierung auch unter der Virtualisierungsplattform unterstützt wird und die Plattform die so bereitgestellt Netzwerkkarte direkt in eine VM durchreichen kann, dann hat damit eine virtuelle Maschine erstmals die Möglichkeit eine garantierte Bandbreite zu bekommen. Das gilt natürlich auch wenn diese garantierte Bandbreite der partitionierten Karte über einen virtuellen Switch exklusiv an eine VM durchgegeben wird. Der "virtuelle Switch" ist in der Regel ja nur im Hauptspeicher abgebildet und ein vielfaches schneller.

Interessant ist also nur NPAR, weil nur damit eine Bandbreite bis zur VM garantiert aber auch begrenzt werden kann.

Achtung
Diese Optimierung gelten natürlich erst einmal nur für die Senderichtung. Was von extern Richtung Host oder VM geht, kann weder Host noch VM drosseln. Hier ist dann der Switch gefragt, der auf dem einen 10 Gigabit-Link den Verkehr entsprechend kontrolliert. Nicht dass ein eingehender Datenverkehr so viel Bandbreite belegt, dass die anderen virtuellen Links doch wieder darunter leiden.

Beispiel QLogic

Wenn Sie sich die Software entsprechend anschauen, dann werden Sie erkennen, dass z.B. QLogic pro physikalischen Link genau vier "Partitionen" vorsieht. Jeder Partition können Sie eine gewisse Funktion zuweisen. QLogic unterscheidet hier nach Ethernet, iSCSI und FCOE. Entsprechend tauchen dann die Geräte z.B. im Windows Gerätemanager auf. Der PC glaubt also wirklich er hat mehrere Netzwerkkarten. Wenn man der Beschreibung glauben darf, sind es auch unterschiedliche PCI-Geräte bzw. Funktionen eines Geräts. Die Konfiguration wird also bis in die Netzwerkkarte geschrieben, die sich dann entsprechend partitioniert.

Wenn Sie eine QLogic Karte mit zwei 10 Gigabit-Ports einbauen, dann sehen Sie im Gerätemanager auch die beiden Ports als eigene Netzwerkkarten:

Über den Gerätemanager können Sie dann aber in den Eigenschaften der jeweiligen Netzwerkkarte die Partitionierung erreichen.

Hier können die dann die vier "Funktionen" der 10 Gigabit-Karte erst als Partition aktivieren und auch die Betriebsart (NIC, iSCSI, FCoE) einstellen:

 

Nach der Änderung der Konfiguration ist allerding ein Neustart erforderlich, da durch die Einstellungen die physikalische Präsentation auf dem PCI-Bus geändert wird. Der PC sieht wirklich die entsprechend eingestellt Netzwerk, iSCSI oder FC-Adapter. Hier sehen Sie, dass es nun vier Ethernet-Ports gibt

Über die Eigenschaften des Netzwerkkarte können sie wieder Das "NIC Partition Management" starten und nun bei den Ethernet-Karten die Bandbreite einstellen

Erst jetzt wird der Netzwerkkarte mitgeteilt, dass dieser Instanz der Netzwerkkarte der Anwendung nicht bis zu den kompletten 10 Gigabit gehen soll, sondern maximal 75% der 10 Gigabit ausgehende belegt werden können. Umgekehrt garantiert die 25% Einstellung aber auch, dass diese Bandbreite auf jeden Fall für diese Karte bereit gestellt wird.

Damit ist gerade die Minimalbandbeite auf Netzwerkkarten wichtig, die z.B. einem Lync Server bereitgestellt werden. Alle anderen Karten, die im gleichen Host stecken und Bandbreite an virtuelle Maschinen bereit stellen, können mit einer Beschränkung der Maximalbandbreite etwas eingebremst werden.

Limitierung

Die Steuerung der Bandbreite ist nur in Senderichtung möglich, wenn ein "böser Sender" mit 10GBit Daten an eine Netzwerkkarte des Server senden kann, dann wird dieser Traffic auch bis zum Server durchgereicht und andere Datenverkehre sind entsprechend doch betroffen. Wer also eine "virtuelle NIC" mit Parameter wie "0,5GBit Garantie/1GB Max" versieht, lässt den anderen Diensten mindestens 9 GBit übrig aber eben nur in Senderichtung.

Achtung:
NPar steuert nur die ausgehenden Daten. Eingehend muss eine vergleichbare Konfiguration auf dem Switchport konfiguriert werden.

YouTube Videos

Es ist schon interessant wie auch Firmen die Plattform "YouTube" immer mehr nutzen. QLogic macht das hier sehr gut und so können Sie sich in wenigen Minuten recht ausführlich informieren:

QLogic KnowHow: Configuring NPAR under Windows Server 2008
http://www.youtube.com/watch?v=rK1OXNKynNw
Ab 4:20 sieht man das “NIC Partition Tab” bei einer 10GBit Karte mit passendem Treiber
Ab 6:40 dann die Bandkonfiguration

Product Demonstration: QLE8242 Converged Network Adapter Featuring NPAR in VMware
http://www.youtube.com/watch?v=J-NFOTbDtdE

10Gb/40Gb and the value of NIC partitioning
http://www.youtube.com/watch?v=L9jSRyrBT7u

QLogic KnowHow: Enabling NPAR on QLogic 10GbE Adapters
http://www.youtube.com/watch?v=9PY8OlQGneu

QLogic KnowHow: Installing QLogic Adapters in VMware ESXi 5.x Environment
http://www.youtube.com/watch?v=WxEpHqFGXOo

Product Demonstration: QLE8242 Converged Network Adapter Featuring NPAR in VMware
http://www.youtube.com/watch?v=J-NFOTbDtdE

Product Demonstration: QLE8242 Converged Network Adapter (CNA), Featuring NPAR/QoS in VMware
http://www.youtube.com/watch?v=jXBSUSdA1is

Weitere Links