Virtuelle Ports (VPorts)
Ein virtueller Port (VPort) ist ein Datenobjekt, das einen internen Port auf dem NIC-Switch eines Netzwerkadapters repräsentiert, der die Single-Root-I/O-Virtualisierung (SR-IOV) unterstützt. Jeder NIC-Switch verfügt über die folgenden Ports für die Netzwerkkonnektivität:
Ein externer physischer Port für die Verbindung mit dem externen physischen Netzwerk.
Ein oder mehrere interne VPorts, die mit der PCI Express Physical Function (PF) oder Virtual Functions (VFs) verbunden sind.
- Der PF ist der übergeordneten Partition von Hyper-V zugeordnet und wird als virtueller Netzwerkadapter im Verwaltungsbetriebssystem, das in dieser Partition ausgeführt wird, angezeigt.
- Eine VF ist der Hyper-V untergeordneten Partition zugeordnet und wird als virtueller Netzwerkadapter im Gastbetriebssystem, das in dieser Partition ausgeführt wird, angezeigt.
Der NIC-Switch überbrückt den Datenverkehr vom physischen Port zu einem oder mehreren VPorts. Dies bietet virtualisierten Zugriff auf die zugrunde liegende physische Netzwerkschnittstelle.
Jeder VPort verfügt über einen eindeutigen Bezeichner (VPortId), der für den NIC-Switch auf dem Netzwerkadapter eindeutig ist. Ein Standard-VPort ist immer auf dem Standard-NIC-Switch vorhanden und kann nie gelöscht werden. Der Standard-VPort hat die VPortId von NDIS_DEFAULT_VPORT_ID
.
Wenn der PF-Miniport-Treiber eine Anfrage der Methode Object Identifier (OID) OID_NIC_SWITCH_CREATE_SWITCH bearbeitet, erstellt er den NIC-Switch und den Standard-VPort für diesen Switch. Der Standard-VPort ist immer mit der PF verbunden und immer betriebsbereit.
Nicht standardmäßige VPorts werden durch OID-Methodenanfragen von OID_NIC_SWITCH_CREATE_VPORT erstellt. Einer VF kann nur ein nicht standardmäßiger VPort zugeordnet werden. Nach dem Zuordnen ist der Standard ein betriebsbereiter Zustand. Ein oder mehrere nicht standardmäßige VPorts können ebenfalls erstellt und der PF angehängt werden. Diese VPorts sind nicht betriebsbereit, wenn sie erstellt werden, und können durch eine OID-Set-Anfrage von OID_NIC_SWITCH_VPORT_PARAMETERS betriebsbereit werden.
Anmerkung
Nachdem ein VPort betriebsbereit ist, kann er nur noch durch eine OID-Anfrage von OID_NIC_SWITCH_DELETE_VPORT gelöscht werden.
Jedem VPort sind eine oder mehrere Hardware-Warteschlangenpaare zugeordnet, um Pakete zu empfangen und zu übertragen. Das standardmäßige Warteschlangenpaar auf dem Netzwerkadapter ist für die Verwendung durch den standardmäßigen VPort reserviert. Warteschlangenpaare für nicht standardmäßige VPorts werden zugewiesen und zugeordnet, wenn der VPort über die Anfrage OID_NIC_SWITCH_CREATE_VPORT erstellt wird.
Nicht standardmäßige VPorts werden über OID-Methoden-Anfragen von OID_NIC_SWITCH_CREATE_VPORT erstellt und konfiguriert. Der Standard-VPort und die nicht standardmäßigen VPorts werden über OID-Set-Anfragen von OID_NIC_SWITCH_VPORT_PARAMETERS neu konfiguriert. Jede OID-Anfrage enthält eine NDIS_NIC_SWITCH_VPORT_PARAMETERS-Struktur, die die folgenden Konfigurationsparameter angibt:
Die PCIe-Funktion, der der VPort zugeordnet ist.
Jeder VPort kann jederzeit entweder einer PF oder einer VF zugeordnet werden. Nachdem der VPort erstellt und an eine PCIe-Funktion angefügt wurde, kann die Zuordnung nicht dynamisch auf eine andere PCIe-Funktion geändert werden.
Anmerkung
Der Standard-VPort ist immer der PF des Netzwerkadapters zugeordnet.
Ab NDIS 6.30 in Windows Server 2012 kann nur ein nicht standardmäßiger VPort einer VF zugeordnet werden. Es können jedoch mehrere nicht standardmäßige VPorts zusammen mit dem Standard-VPort dem PF zugeordnet werden.
Die Anzahl der Hardware-Warteschlangenpaare, die einem VPort zugeordnet sind.
Jeder VPort verfügt über eine festgelegte Anzahl von Hardware-Warteschlangenpaaren, die ihm zur Verfügung stehen. Jedes Warteschlangenpaar besteht aus einer separaten Sende- und Empfangswarteschlange auf dem Netzwerkadapter.
Warteschlangenpaare sind begrenzte Ressourcen auf dem Netzwerkadapter. Die Gesamtzahl der Warteschlangenpaare, die für die Verwendung durch die Standard- und Nicht-Standard-VPorts reserviert sind, wird beim Erstellen des NIC-Switches angegeben. Dadurch kann die Anzahl der Warteschlangenpaare, die dem Standard-VPort zugewiesen sind, sich von der der Nicht-Standard-VPorts unterscheiden.
Jeder nicht standardmäßige VPort kann so konfiguriert werden, dass eine andere Anzahl von Warteschlangenpaaren vorhanden ist. Dies wird als asymmetrische Zuweisung von Warteschlangenpaaren bezeichnet. Wenn die NIC eine solche asymmetrische Zuordnung nicht zulässt, ist jeder nicht standardmäßige VPort so konfiguriert, dass er über eine gleiche Anzahl von Warteschlangenpaaren verfügt. Dies wird als symmetrische Zuweisung von Warteschlangenpaaren bezeichnet. Weitere Informationen finden Sie unter Symmetrische und asymmetrische Zuweisung von Warteschlangenpaaren.
Anmerkung
Der PF Miniport-Treiber liefert während MiniportInitializeEx ein Reporting darüber, ob er die asymmetrische Zuweisung von Warteschlangenpaaren unterstützt. Weitere Informationen finden Sie unter Initialisierung eines PF Miniport-Treibers.
Die Anzahl der Warteschlangenpaare, die jedem VPort zugewiesen sind, wird nicht dynamisch geändert. Die Anzahl der Warteschlangenpaare, die einem VPort zugewiesen sind, können nach dem Erstellen des VPorts nicht geändert werden.
Anmerkung
Ein oder mehrere Warteschlangenpaare, die den nicht standardmäßigen VPorts zugewiesen sind, können vom VF-Miniport-Treiber, der im Gastbetriebssystem ausgeführt wird, für die empfangsseitige Skalierung (RSS) verwendet werden.
Interrupt-Moderations-Parameter für den VPort.
Für unterschiedliche VPorts können verschiedene Interruptmoderationstypen angegeben werden. Dies bietet dem Virtualisierungs-Stack die Möglichkeit, die Anzahl der von einem bestimmten VPort generierten Interrupts zu steuern.
Zusätzlich zu den Konfigurationsparametern können übergeordnete Treiber Empfangsfilter für jeden VPort konfigurieren, indem sie OID-Methodenanfragen von OID_RECEIVE_FILTER_SET_FILTER stellen. Der NIC-Switch führt die angegebene Empfangsfilterung auf VPort-Basis durch.
Zu den Empfangsfilterparametern für VPorts gehören Bedingungen für die Filterung von Paketen, wie z. B. eine Liste von MAC-Adressen (Media Access Control) und die IDs des virtuellen LAN (VLAN). Filter für MAC-Adressen und VLAN-IDs werden immer zusammen in der NDIS_RECEIVE_FILTER_PARAMETERS angegeben, die mit der OID_RECEIVE_FILTER_SET_FILTER Anfrage verbunden ist. Der NIC-Switch muss zum Switch eingehende Pakete filtern, deren Ziel-MAC-Adresse und VLAN-ID einer Empfangsfilterbedingung entsprechen, die auf dem VPort festgelegt wurde. Der NIC-Switch filtert Pakete, die von einem anderen VPort oder vom externen physischen Port empfangen werden. Wenn das Paket einem Filter entspricht, muss der NIC-Switch ihn an den VPort weiterleiten.
Für den VPort können mehrere MAC-Adress- und VLAN-Id-Paare festgelegt werden. Wenn nur eine MAC-Adresse festgelegt ist, gibt der Empfangsfilter an, dass der VPort Pakete empfangen soll, die den folgenden Bedingungen entsprechen:
Die ZIEL-MAC-Adresse des Pakets entspricht der MAC-Adresse des Filters.
Das Paket hat ein VLAN-Tag oder (falls ein VLAN-Tag vorhanden ist) eine VLAN-ID von Null.
Nicht standardmäßige VPorts werden durch OID-Set-Anfragen von OID_NIC_SWITCH_DELETE_VPORT gelöscht. Der Standard-VPort wird nur gelöscht, wenn der NIC-Switch durch eine OID-Set-Anfrage von OID_NIC_SWITCH_DELETE_SWITCH gelöscht wird.