Weiterleiten von Paketen an erweiterbare Hyper-V-Switchports

Auf dieser Seite wird beschrieben, wie eine erweiterbare Hyper-V-Switchweiterleitungserweiterung Pakete an einen oder mehrere Ports weiterleiten kann. Diese Art von Erweiterung kann auch Pakete an einzelne Netzwerkadapter weiterleiten, die mit dem externen Netzwerkadapter des erweiterbaren Switches verbunden sind.

Hinweis Nur die erweiterbare Switchweiterleitungserweiterung oder der erweiterbare Switch selbst können Pakete an erweiterbare Switchports weiterleiten.

Hinweis Auf dieser Seite wird davon ausgegangen, dass Sie mit den Informationen und Diagrammen unter Übersicht über den Hyper-V-Erweiterbaren Switch und die Hybridweiterleitung vertraut sind.

Hinweis In der erweiterbaren Switch-Schnittstelle werden NDIS-Filtertreiber als erweiterbare Switcherweiterungen bezeichnet, und der Treiberstapel wird als erweiterbarer Switchtreiberstapel bezeichnet. Weitere Informationen zu Erweiterungen finden Sie unter Hyper-V Extensible Switch Extensions.

Wenn eine Weiterleitungserweiterung im erweiterbaren Switchtreiberstapel installiert und aktiviert ist, ist sie dafür verantwortlich, Weiterleitungsentscheidungen für jedes Paket zu treffen, das auf dem erweiterbaren Switch-Eingangsdatenpfad abgerufen wird. Basierend auf diesen Weiterleitungsentscheidungen fügt die Erweiterung Dem Zielportarray in den Out-of-Band-Daten (OOB) der NET_BUFFER_LIST Struktur des Pakets Zielports hinzu. Nachdem das Paket seinen Durchlauf des erweiterbaren Switchdatenpfads abgeschlossen hat, übermittelt die erweiterbare Switchschnittstelle das Paket an die angegebenen Zielports.

Hinweis Wenn eine Weiterleitungserweiterung nicht installiert oder aktiviert ist, trifft der erweiterbare Switch 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 über den erweiterbaren Ausgehenden Switchdatenpfad weiterleitet.

Hinweis Wenn es sich bei dem Paket um ein NVGRE-Paket handelt, kann die Weiterleitungserweiterung dem Zielportarray Zielports hinzufügen. Die Hyper-V-Netzwerkvirtualisierungskomponente (Hyper-V Network Virtualization, HNV) des erweiterbaren Switches ist jedoch für die Bestimmung der Zielports und das Weiterleiten des Pakets verantwortlich. Weitere Informationen finden Sie unter Hybridweiterleitung.

Die Weiterleitungserweiterung kann Portziele nur Paketen hinzufügen, die aus dem Eingangsdatenpfad abgerufen wurden. Nachdem das Paket über den ausgehenden Datenpfad weitergeleitet wurde, können Filter- und Weiterleitungserweiterungen die Paketübermittlung an erweiterbare Switchports ausschließen. Weitere Informationen finden Sie unter Ausschließen der Paketübermittlung an extensible Switch-Zielports.

Innerhalb der OOB-Daten der NET_BUFFER_LIST Struktur eines Pakets sind die Daten für Zielports in einer NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur enthalten. Jedes Element im Array definiert einen Zielport und ist als NDIS_SWITCH_PORT_DESTINATION Struktur formatiert.

Die Weiterleitungserweiterung kann die folgenden Hyper-V Extensible Switch-Handlerfunktionen aufrufen, um die NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur und ihre NDIS_SWITCH_PORT_DESTINATION-Elemente zu verwalten:

AddNetBufferListDestination
Diese Funktion fügt der NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur in den OOB-Daten des Pakets einen einzelnen Zielport hinzu.

GetNetBufferListDestinations
Diese Funktion gibt einen Zeiger auf die NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur in den OOB-Daten eines Pakets zurück.

GrowNetBufferListDestinations
Diese Funktion fügt der NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY Struktur der OOB-Daten eines Pakets weitere Zielportelemente hinzu.

UpdateNetBufferListDestinations
Diese Funktion committ die Änderungen, die die Erweiterung vorgenommen hat, um einen oder mehrere Zielports für ein Paket hinzuzufügen oder auszuschließen. Diese Änderungen werden für die NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur in den OOB-Daten des Pakets festgelegt.

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.

Für jede NET_BUFFER_LIST Struktur in dieser Liste fügt die Weiterleitungserweiterung Zielports für das Paket hinzu, indem Sie die folgenden Schritte ausführen:

  1. Die Erweiterung trifft Weiterleitungsentscheidungen für das Paket basierend auf verschiedenen Arten von Kriterien. Zu diesen Kriterien gehören folgende Kriterien:

    • Richtlinienkriterien basierend auf dem Quellport und der Netzwerkadapterverbindung des Pakets. Die Weiterleitungserweiterung ruft diese Informationen mithilfe des makros NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL ab.

    • Richtlinienkriterien für einen erweiterbaren Switchport basierend auf den Nutzlastdaten des Pakets. Beispielsweise kann eine Richtlinie für einen erweiterbaren Switchport einen Filter enthalten, um nur die Übermittlung von IPv4-Paketen (IP Version 4) zu ermöglichen.

    Hinweis Wenn es sich bei dem Paket um ein NVGRE-Paket handelt, ist die HNV-Komponente des erweiterbaren Switches für die Weiterleitung des Pakets verantwortlich. Die Weiterleitungserweiterung kann jedoch ihre eigenen Richtlinienkriterien in den Eingangs- und Ausgehenden Pfaden anwenden. Weitere Informationen finden Sie unter Hybridweiterleitung.

  2. Wenn die Erweiterung feststellt, dass das Paket an einen oder mehrere erweiterbare Switchports weitergeleitet werden kann, muss sie den OOB-Daten des Pakets Zielports hinzufügen. Weitere Informationen zu diesem Verfahren finden Sie unter Hinzufügen von Extensible Switch-Zielportdaten zu einem Paket.

    Hinweis Wenn es sich bei dem Paket um ein NVGRE-Paket handelt, ist die Weiterleitungserweiterung nicht erforderlich, um Zielports hinzuzufügen. Weitere Informationen finden Sie unter Hybridweiterleitung.

  3. Wenn die Erweiterung feststellt, dass das Paket nicht an einen erweiterbaren Switchport weitergeleitet werden kann, muss das Paket gelöscht werden.

    Hinweis Dies gilt nicht, wenn es sich bei dem Paket um ein NVGRE-Paket handelt. Weitere Informationen finden Sie unter Hybridweiterleitung.

  4. Wenn die Erweiterung einen oder mehrere Zielports für das Paket hinzugefügt hat, muss sie NdisFSendNetBufferLists aufrufen, um das Paket im ausgehenden Datenpfad weiterzuleiten.

    Hinweis Wenn es sich bei dem Paket um ein NVGRE-Paket handelt, ist die HNV-Komponente des erweiterbaren Switches für die Weiterleitung des Pakets verantwortlich. Weitere Informationen finden Sie unter Hybridweiterleitung.

Weitere Informationen zu den erweiterbaren Ein- und Ausgehenden Switch-Datenpfaden finden Sie unter Hyper-V Extensible Switch Data Path.