Freigeben über


SR-IOV Virtuelle Funktionen (VFs)

Eine PCI Express (PCIe) Virtual Function (VF) ist eine schlanke PCIe-Funktion auf einem Netzwerkadapter, die Single-Root-I/O-Virtualisierung (SR-IOV) unterstützt.

Der VF ist der PCIe Physical Function (PF) auf dem Netzwerkadapter zugeordnet und stellt eine virtualisierte Instanz des Netzwerkadapters dar. Jeder VF verfügt über einen eigenen PCI-Konfigurationsraum. Jeder VF teilt eine oder mehrere physische Ressourcen auf dem Netzwerkadapter, wie zum Beispiel einen externen Netzwerkport, mit dem PF und anderen VFs.

Ein VF ist kein vollwertiges PCIe-Gerät. Es bietet jedoch einen grundlegenden Mechanismus zur direkten Datenübertragung zwischen einer Hyper-V-Kindpartition und dem zugrunde liegenden SR-IOV-Netzwerkadapter. Softwareressourcen, die für die Datenübertragung zugeordnet sind, stehen dem VF direkt zur Verfügung und sind von der Verwendung durch die anderen VFs oder die PF isoliert. Die Konfiguration der meisten dieser Ressourcen wird jedoch vom PF-Miniporttreiber ausgeführt, der im Verwaltungsbetriebssystem der übergeordneten Hyper-V Partition ausgeführt wird.

Ein VF wird als virtueller Netzwerkadapter (VF-Netzwerkadapter) im Gastbetriebssystem dargestellt, das in einer Hyper-V untergeordneten Partition ausgeführt wird. Nachdem der VF einem virtuellen Port (VPort) auf dem Switch der Netzwerkkarte (NIC) des SR-IOV-Netzwerkadapters zugeordnet ist, stellt der virtuelle PCI-Treiber (VPCI), der in der VM ausgeführt wird, den VF-Netzwerkadapter bereit. Sobald der PnP-Manager im Gastbetriebssystem exponiert ist, lädt er den VF-Miniporttreiber.

Hinweis

Eine Hyper-V-Kindpartition wird auch als virtuelle Maschine (VM) bezeichnet.

Der VF miniport-Treiber ist ein NDIS-Miniporttreiber, der auf der VM installiert ist, um den VF zu verwalten. Alle Vom VF-Miniporttreiber ausgeführten Vorgänge dürfen sich nicht auf einen anderen VF oder den PF auf demselben Netzwerkadapter auswirken.

Der VF Miniport-Treiber kann wie jeder PCI-Gerätetreiber funktionieren. Es kann den PCI-Konfigurationsraum des VF lesen und in ihn schreiben. Der Zugriff auf das virtuelle PCI-Gerät ist jedoch ein privilegierter Vorgang und wird auf folgende Weise vom PF Miniport-Treiber verwaltet:

  • Wenn der VF Miniport-Treiber NdisMGetBusData aufruft, um Daten aus dem PCI-Konfigurationsraum des VF-Netzwerkadapters zu lesen, wird der Virtualisierungsstapel benachrichtigt. Dieser Stack läuft im Verwaltungsbetriebssystem der übergeordneten Partition Hyper-V. Wenn der Stapel über die Leseanforderung benachrichtigt wird, gibt er eine OID-Methodenanforderung (Object Identifier) OID_SRIOV_READ_VF_CONFIG_SPACE an den PF-Miniporttreiber aus. Die zu lesenden Daten werden in einer NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS Struktur angegeben, die in der OID-Anforderung enthalten ist.

    Der Treiber liest die angeforderten Daten aus dem VF PCI-Konfigurationsraum und gibt die Daten zurück, indem die OID-Anforderung abgeschlossen wird. Diese Daten werden dann an den VF Miniport-Treiber zurückgegeben, wenn der Aufruf von NdisMGetBusData abgeschlossen ist.

  • Wenn der VF Miniport-Treiber NdisMSetBusData aufruft, um Daten in den PCI-Konfigurationsraum des VF-Netzwerkadapters zu schreiben, wird der Virtualisierungsstapel über die Schreibanforderung benachrichtigt. Sie gibt eine OID-Methodenanforderung von OID_SRIOV_WRITE_VF_CONFIG_SPACE an den PF-Miniporttreiber aus. Die zu schreibenden Daten werden in einer NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS Struktur angegeben, die in der OID-Anforderung enthalten ist.

    Der Treiber schreibt die Daten in den VF PCI-Konfigurationsraum und gibt den Status der Anforderung zurück, wenn sie die OID-Anforderung abgeschlossen hat. Dieser Status wird an den VF miniport-Treiber zurückgegeben, nachdem der Aufruf von NdisMSetBusData abgeschlossen wurde.

Der VF Miniport-Treiber kann auch mit dem PF Miniport-Treiber kommunizieren. Dieser Kommunikationspfad liegt über einer Backchannel-Schnittstelle. Weitere Informationen finden Sie unter SR-IOV PF/VF Backchannel Communication.

Anmerkung Der VF-Miniporttreiber muss beachten, dass er in einer virtualisierten Umgebung ausgeführt wird, damit er mit dem PF-Miniporttreiber für bestimmte Vorgänge kommunizieren kann. Weitere Informationen zur Funktionsweise des Treibers finden Sie unter Initialisieren eines VF Miniport-Treibers.