Weiterleiten von Paketen an physische Netzwerkadapter
Hinweis Auf dieser Seite wird davon ausgegangen, dass Sie mit den Informationen und Diagrammen auf den folgenden Seiten vertraut sind:
- Weiterleitungserweiterungen
- Hybridweiterleitung
- Erweiterungen für erweiterbare Hyper-V-Switches
- Übersicht über den erweiterbaren Hyper-V-Switch
- Teaming-Anbietererweiterungen
Auf dieser Seite wird beschrieben, wie Erweiterungen für die Weiterleitung von Hyper-V-erweiterbaren Switches Sendeanforderungen von Paketen an zugrunde liegende physische Adapter weiterleiten können. Mindestens ein physischer Netzwerkadapter kann an den externen Netzwerkadapter des erweiterbaren Switches gebunden werden.
Beispielsweise kann der erweiterbare externe Switch-Netzwerkadapter an den virtuellen Miniportrand eines MUX-Zwischentreibers (NDIS Multiplexer) gebunden werden. Der MUX-Zwischentreiber selbst kann an ein Team aus einem oder mehreren physischen Netzwerken auf dem Host gebunden werden. Diese Konfiguration wird als erweiterbares Switchteam bezeichnet. Weitere Informationen zu erweiterbaren Switchteams finden Sie unter Typen von Konfigurationen physischer Netzwerkadapter.
In dieser Konfiguration werden die erweiterbaren Switcherweiterungen für jeden Netzwerkadapter im erweiterbaren Switchteam verfügbar gemacht. Dadurch kann eine Weiterleitungserweiterung im erweiterbaren Switchtreiberstapel die Konfiguration und Verwendung einzelner Netzwerkadapter im Team verwalten. Beispielsweise kann die Erweiterung unterstützung für eine LBFO-Lösung (Lastenausgleichsfailover) über das Team bereitstellen, indem ausgehende Pakete an einzelne Adapter weitergeleitet werden. Beispielsweise wird die Erweiterung als Teaminganbieter bezeichnet. Weitere Informationen zu Teaminganbietern finden Sie unter Teaming Provider Extensions.
Wenn eine Weiterleitungserweiterung im erweiterbaren Switchtreiberstapel installiert und aktiviert ist, ist sie dafür verantwortlich, Weiterleitungsentscheidungen für jedes Paket zu treffen, das es für den erweiterbaren Switch-Eingangsdatenpfad abruft, es sei denn, es handelt sich bei dem Paket um ein NVGRE-Paket. (Weitere Informationen zu NVGRE-Paketen finden Sie unter HybridWeiterleitung.) Basierend auf diesen Weiterleitungsentscheidungen kann die Erweiterung Zielports zu den Out-of-Band-Daten (OOB) der NET_BUFFER_LIST Struktur des Pakets hinzufügen. Nachdem das Paket seinen Durchlauf des erweiterbaren Switchdatenpfads abgeschlossen hat, übermittelt die erweiterbare Switchschnittstelle das Paket an die angegebenen Zielports.
Hinweis Wenn keine Weiterleitungserweiterung installiert oder aktiviert ist, trifft der erweiterbare Switch selbst die Weiterleitungsentscheidungen für Pakete, die er aus dem Eingangsdatenpfad abruft. Der Switch fügt die Zielports den OOB-Daten der NET_BUFFER_LIST Struktur des Pakets hinzu, bevor er das Paket in den erweiterbaren Ausgehenden Datenpfad des Switches weiterleitet.
Wenn die FilterSendNetBufferLists-Funktion der Weiterleitungserweiterung aufgerufen wird, enthält der NetBufferList-Parameter einen Zeiger auf eine verknüpfte Liste von NET_BUFFER_LIST Strukturen. Jede dieser Strukturen gibt ein Paket an, das aus dem Eingangsdatenpfad abgerufen wird. Innerhalb der OOB-Daten der NET_BUFFER_LIST-Struktur jedes Pakets sind die Daten für Zielports in einer NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur enthalten. Die Erweiterung ruft die NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur und deren Elemente durch Aufrufen von GetNetBufferListDestinations ab.
Hinweis Um die Leistung zu verbessern, kann eine Weiterleitungserweiterung die Funktion GrowNetBufferListDestinations anstelle von GetNetBufferListDestinations aufrufen, um einen Zeiger auf die NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur zu erhalten. Die Erweiterung tut dies, wenn sie feststellt, dass sie zusätzliche Arrayelemente in den OOB-Daten des Pakets für Zielports benötigt. Weitere Informationen finden Sie unter Hinzufügen von Zielportdaten für den erweiterbaren Switch zu einem Paket.
Jedes Element im NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY Array definiert einen Zielport und ist als NDIS_SWITCH_PORT_DESTINATION-Struktur formatiert. Diese Struktur enthält die folgenden Member:
Das PortId-Element enthält einen Wert, der den Zielport auf dem erweiterbaren Switch angibt.
Der NicIndex-Member gibt den Index des Netzwerkadapters an, der mit dem erweiterbaren Switchport verbunden ist, der vom PortId-Element angegeben wird.
Weitere Informationen zu diesen Indexwerten finden Sie unter Indexwerte für Netzwerkadapter.
Wenn die Weiterleitungserweiterung einen Zielport hinzufügt, der mit dem externen Netzwerkadapter verbunden ist, kann die Erweiterung den Index eines zugrunde liegenden physischen Netzwerkadapters angeben. Beispielsweise könnte die Erweiterung als Teaminganbieter für LBFO-Unterstützung über ein erweiterbares Switchteam betrieben werden. Dadurch kann die Erweiterung den Datenverkehrsaufwand ausgleichen, indem Sendeanforderungen an verschiedene Adapter des Teams weitergeleitet werden.
Die Weiterleitungserweiterung muss diese Richtlinien befolgen, wenn sie eine NDIS_SWITCH_PORT_DESTINATION-Struktur hinzufügt oder ändert, um Sendeanforderungen an einen zugrunde liegenden physischen Netzwerkadapter weiterzuleiten:
Wenn der PortId-Member den erweiterbaren Switchport angibt, mit dem der externe Netzwerkadapter verbunden ist, muss die Erweiterung den NicIndex-Member auf einen der folgenden Indexwerte festlegen:
Wenn nur ein physischer Netzwerkadapter an den externen Netzwerkadapter gebunden ist, muss die Erweiterung den NicIndex-Member auf NDIS_SWITCH_DEFAULT_NIC_INDEX oder einen festlegen.
Wenn mehrere physische Netzwerkadapter an den externen Netzwerkadapter gebunden sind, muss die Erweiterung das NicIndex-Element auf den Indexwert ungleich null des Zielnetzwerkadapters im erweiterbaren Switchteam festlegen.
Hinweis Wenn der PortId-Member nicht den erweiterbaren Switchport angibt, mit dem der externe Netzwerkadapter verbunden ist, muss die Erweiterung den NicIndex-Member auf NDIS_SWITCH_DEFAULT_NIC_INDEX festlegen.
Nachdem die Erweiterung alle Zielports für das Paket hinzugefügt hat, muss sie NdisFSendNetBufferLists aufrufen, um das Paket im Eingangsdatenpfad weiterzuleiten.
Weitere Informationen zum Hinzufügen von Zielports zu einem Paket finden Sie unter Weiterleiten von Paketen an hyper-V Extensible Switch Ports.
Weitere Informationen zum Ausgehenden Datenpfad finden Sie unter Hyper-V Extensible Switch Data Path.