Virtual Network Interface Controller (vNIC)

vNIC adapter with 2 vNIC backing devices and vNIC failover.

Der große Nachteil von SR-IOV, sowie oben beschrieben, besteht darin, das das Verschieben (LPM) von LPARs mit logischen SR-IOV Ports nicht möglich ist. Nach der Einführung von SR-IOV auf Power Systemen gab es eine Reihe von Vorschlägen für Workarounds. Allerdings bedingen alle diese Workarounds zum Einen eine besondere Konfiguration und zum Anderen eine Reihe von Umkonfigurationen die vor und nach einer LPM-Operation durchzuführen sind. Im praktischen Alltag werden dadurch LPM-Operationen aber unnötig verkompliziert.

Mit der Einführung von vNICs können Client-LPARs SR-IOV Adapter benutzen und trotzdem LPM unterstützen. Wie schon bei VSCSI und VFC wird dazu ein Paar von Adaptern benutzt: auf der Client-LPAR wird der sogenannte vNIC Adapter in einem virtuellen Slot verwendet und auf einem Virtual-I/O-Server wird ein zugehöriger vNIC-Server Adapter verwendet. Der logische SR-IOV Port wird dem Virtual-I/O-Server zugeordnet. Der vNIC-Server Adapter, auch als vNIC-Backing-Device bezeichnet, dient dabei als Proxy für den logischen SR-IOV Port. Das Zusammenspiel der verschiedenen Adapter ist in Bild 7.19 dargestellt.

Communication path of vNIC for control information and data.
Bild 7.19: Kommunikationspfad von vNIC für Kontroll-Informationen und Daten.

Um eine gute Performance zu erreichen, werden nur Kontroll-Informationen vom vNIC Adapter der Client-Adapter zum vNIC Server Adapter übertragen, welche von diesem über den zugehörigen logischen SR-IOV Port zum entsprechenden logischen Port (Virtual Function) des SR-IOV Adapters übertragen werden. Die Daten selbst werden zwischen vNIC Client-Adapter und dem logischen Port des SR-IOV Adapters per DMA (Direct Memory Access) mit Hilfe des Hypervisors übertragen. Es findet also insbesondere kein Kopieren der Daten über den Virtual-I/O-Server statt. Der vNIC Adapter auf dem Client ist ein rein virtueller Adapter, daher funktioniert LPM auch problemlos. Der Client besitzt den logischen SR-IOV Port nicht und greift auch nicht selbst über den PCIe Bus (Switch) auf diesen zu.

Hinzufügen von logischen SR-IOV Ports

SR-IOV Ethernet port with internal switch and 3 logical ports.

Damit eine PowerVM LPAR eine virtuelle Funktion eines SR-IOV Adapters benutzen kann, muß für die LPAR ein sogenannter logischer Port erzeugt werden. Welche logischen Ports es schon gibt, lässt sich mit dem Kommando „ms lssriov“ mit der Option „-l“ (logical port) anzeigen:

$ ms lssriov -l ms03
LOCATION_CODE  ADAPTER  PPORT  LPORT  LPAR  CAPACITY  CURR_MAC_ADDR  CLIENTS
$

Da die SR-IOV Adapter gerade erst auf Shared umgestellt wurden, gibt es natürlich bisher noch keine logischen Ports. Um einer LPAR einen logischen SR-IOV Port hinzuzufügen, wird das Kommando „lpar addsriov“ (add SR-IOV logical port) verwendet. Es muß neben der LPAR die Adapter-ID und die Port-ID des physikalischen Ports angegeben werden. Alternativ kann aber auch ein eindeutiger Suffix des Physical Location Codes des physikalischen Port angegeben werden:

$ lpar addsriov aix22 P1-C11-T1
$

Das Erzeugen kann einige wenige Sekunden dauern. Eine kurze Überprüfung zeigt, das tatsächlich ein logischer Port angelegt wurde:

$ ms lssriov -l ms03
LOCATION_CODE                   ADAPTER  PPORT  LPORT     LPAR   CAPACITY  CURR_MAC_ADDR  CLIENTS
U78AA.001.VYRGU0Q-P1-C11-T1-S1  1        0      27004001  aix22  2.0       a1b586737e00   -
$

Ähnlich wie bei einem Managed System für virtuelles Ethernet ist auch auf den SR-IOV Adaptern für jeden physikalischen Ethernet Port ein interner Switch implementiert, siehe Bild oben. Jedem logischen Port ist dabei eine der virtuellen Funktionen zugeordnet. Die zugehörigen LPARs greifen auf die logischen Ports über den PCI Express Bus (PCIe-Switch) direkt zu.

Eine LPAR kann ohne weiteres mehrere logischen SR-IOV Ports besitzen. Mit dem Kommando „lpar lssriov“ (list SR-IOV logical ports) lassen sich alle logischen Ports einer LPAR anzeigen:

$ lpar lssriov aix22
LPORT     REQ  ADAPTER  PPORT  CONFIG_ID  CAPACITY  MAX_CAPACITY  PVID  VLANS  CURR_MAC_ADDR  CLIENTS
27004001  Yes  1        0      0          2.0       100.0         0     all    a1b586737e00   -
$

Es gibt eine ganze Reihe von Attributen die für einen logischen Port gleich beim Anlegen angegeben werden können. Unter Anderem können die folgenden Eigenschaften konfiguriert werden:

    • capacity – die garantierte Kapazität für den logischen Port.
    • port_vlan_id – die VLAN-ID für nicht getaggte Pakete oder 0 um VLAN-Tagging auszuschalten.
    • promisc_mode – promiscous Mode ein- oder ausschalten.

Die vollständige List der Attribute und ihre möglichen Werte kann man der Online Hilfe („lpar help addsriov“) entnehmen.

Als Beispiel fügen wir der LPAR aix22 einen weiteren logischen Port mit Port VLAN-ID 55 und einer Kapazität von 20% hinzu:

$ lpar addsriov aix22 P1-C4-T2 port_vlan_id=55 capacity=20
$

Der erzeugte logische Port bekommt damit einen garantierten Anteil von 20% an der Bandbreite des physikalischen Ports P1-C4-T2! Die LPAR hat damit jetzt 2 logische SR-IOV Ports:

$ lpar lssriov aix22
LPORT     REQ  ADAPTER  PPORT  CONFIG_ID  CAPACITY  MAX_CAPACITY  PVID  VLANS  CURR_MAC_ADDR  CLIENTS
27004001  Yes  1        0      0          2.0       100.0         0     all    a1b586737e00   -
2700c003  Yes  3        2      1          20.0      100.0         55    all    a1b586737e01   -
$

Nachdem die logischen Ports mittels PowerVM Hypervisor der LPAR hinzugefügt wurden, erscheinen diese im Zustand Defined. Die logischen Ports tauchen unter AIX als ent-Devices auf, wie alle anderen Ethernet Adapter auch!

aix22 # lsdev -l ent\*
ent0 Available       Virtual I/O Ethernet Adapter (l-lan)
ent1 Defined   00-00 PCIe2 10GbE SFP+ SR 4-port Converged Network Adapter VF (df1028e214100f04)
ent2 Defined   01-00 PCIe2 100/1000 Base-TX 4-port Converged Network Adapter VF (df1028e214103c04)
aix22 #

Nach einem Lauf des Config-Managers sind die neuen ent-Devices im Zustand Available und können genau so benutzt werden, wie alle anderen Ethernet Adapter.

7.6. SR-IOV

7.6.1. Aktivieren des Shared Modes

7.6.2. Konfiguration der physikalischen SR-IOV Ports

7.6.3. Hinzufügen von logischen SR-IOV Ports

7.6.4. Ändern eines logischen SR-IOV Ports

7.6.5. Wegnehmen von logischen SR-IOV Ports

7.6.6. SR-IOV Adapter von Shared zurück auf Dedicated setzen