Ausschließen der Paketübermittlung an erweiterbare Switch-Zielports
In diesem Thema wird beschrieben, wie erweiterbare Hyper-V-Switcherweiterungen die Übermittlung von Paketen an erweiterbare Switchports ausschließen können. Die Zielports für ein Paket werden innerhalb des OOB-Weiterleitungskontexts (Out-of-Band) innerhalb der NET_BUFFER_LIST Struktur des Pakets angegeben. Weitere Informationen zu diesem Kontext finden Sie unter Hyper-V Extensible Switch Forwarding Context.
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 den Erweiterungen finden Sie unter Hyper-V Extensible Switch Extensions.
Das Filtern und Weiterleiten von Erweiterungen kann die Übermittlung von Paketen ausschließen, die auf den erweiterbaren ein- oder ausgehenden Switchdatenpfaden abgerufen werden. Das Ausschließen der Paketübermittlung kann auf folgende Weise erfolgen:
Die Erweiterung kann das Paket löschen, indem die Paketanforderung oder -angabe abgeschlossen wird. Dies schließt die Übermittlung eines Pakets an einen erweiterbaren Switchport aus. Diese Methode kann für Pakete verwendet werden, die über einen oder mehrere Zielports verfügen.
Für Pakete, die über den erweiterbaren Switch-Eingangsdatenpfad abgerufen werden, schließt die Erweiterung die Paketsendeanforderung ab, indem NdisFSendNetBufferListsComplete aufgerufen wird.
Bei Paketen, die über den erweiterbaren Switch-Ausgangsdatenpfad abgerufen werden, schließt die Erweiterung die Paketeingangsanzeige ab, indem NdisFReturnNetBufferLists aufgerufen wird.
Bei Paketen, die auf dem ausgehenden Datenpfad mit mehreren Zielports abgerufen werden, kann die Erweiterung die Paketübermittlung ausschließen, indem die Daten für einen oder mehrere Zielports geändert werden. Dazu legt die Erweiterung das IsExcluded-Element der NDIS_SWITCH_PORT_DESTINATION Struktur des Zielports auf den Wert 1 fest. Mit dieser Methode kann das Paket an die Ports übermittelt werden, deren IsExcluded-Wert auf 0 festgelegt ist.
Hinweis Pakete, die über den Eingangsdatenpfad abgerufen werden, enthalten keine Zielports. Diese Daten sind erst verfügbar, nachdem der erweiterbare Switch das Paket in den ausgehenden Datenpfad weiterleitet.
Nachdem die Erweiterung den IsExcluded-Wert des Zielports geändert hat, muss sie das Paket im ausgehenden Datenpfad an überlappende Erweiterungen weiterleiten. Wenn die IsExcluded-Daten für alle Zielports des Pakets jedoch auf einen festgelegt sind, sollte die Erweiterung das Paket löschen, indem die Paket empfangen-Anzeige abgeschlossen wird, anstatt es weiterzuleiten.
Hinweis Nachdem eine Erweiterung den IsExcluded-Wert des Zielports auf 1 festgelegt hat, kann dieser Wert durch überlappende Erweiterungen im ausgehenden Datenpfad nicht auf Null geändert werden.
Hinweis Die Erfassung von Erweiterungen kann die Übermittlung von Paketen an erweiterbare Switchports nicht ausschließen.
Filter- und Weiterleitungserweiterungen müssen die folgenden Richtlinien zum Ausschließen der Paketübermittlung an erweiterbare Switchports befolgen:
Auf dem erweiterbaren Switch-Eingangsdatenpfad können Filter- und Weiterleitungserweiterungen die Paketübermittlung basierend auf einem Richtlinienkriterium für den Quellport oder die Daten eines Pakets ausschließen.
Die Quellportinformationen werden in der NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO Union in den OOB-Daten der NET_BUFFER_LIST Struktur des Pakets gespeichert. Die Erweiterung ruft die Daten mithilfe des makros NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL ab.
Wenn die Erweiterung die Übermittlung eines Pakets aus dem Eingangsdatenpfad ausschließt, muss das Paket gelöscht werden, indem die Paketsendeanforderung abgeschlossen wird.
Im erweiterbaren Switch-Eingangsdatenpfad bestimmen Weiterleitungserweiterungen die Zielports eines Pakets und fügen diese Informationen den OOB-Daten des Pakets hinzu. Basierend auf Richtlinienkriterien, die von der Erweiterung erzwungen werden, kann die Paketübermittlung an einen Port ausgeschlossen werden, indem die Zielportinformationen zu den OOB-Daten nicht hinzugefügt werden.
Weitere Informationen zu diesem Verfahren finden Sie unter Hinzufügen von Extensible Switch-Zielportdaten zu einem Paket.
Auf dem erweiterbaren Switch-Ausgangsdatenpfad können Filter- und Weiterleitungserweiterungen die Übermittlung des Pakets basierend auf Richtlinienkriterien ausschließen. Beispielsweise kann das Filtern von Erweiterungen die Paketübermittlung basierend auf Richtlinienkriterien für den Quellport oder die Zielports eines Pakets ausschließen.
Erweiterungen schließen die Übermittlung eines Pakets an Zielports aus, indem Sie die folgenden Schritte ausführen:
Die Erweiterung ruft die Zielports des Pakets durch Aufrufen von GetNetBufferListDestinations ab. Wenn der Aufruf NDIS_STATUS_SUCCESS zurückgibt, enthält der Destinations-Parameter einen Zeiger auf eine NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur . Diese Struktur gibt die erweiterbaren Switchzielports des Pakets an. Jeder Zielport ist als NDIS_SWITCH_PORT_DESTINATION-Struktur formatiert.
Hinweis Wenn das NumDestinations-Element der NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur den Wert 0 enthält, enthält das Paket keine Daten für Zielports.
Die Erweiterung schließt die Paketübermittlung an einen erweiterbaren Switchport aus, indem das IsExcluded-Element der NDIS_SWITCH_PORT_DESTINATION Struktur des Zielports auf den Wert 1 festgelegt wird.
Hinweis Wenn die Erweiterung die Übermittlung des Pakets an alle Zielports ausschließt, muss die Erweiterung das Paket löschen, indem die Empfangsanzeige des Pakets abgeschlossen wird.
Wenn die Erweiterung die Übermittlung an einen oder alle Zielports in einem Paket ausschließt, muss sie die folgenden Schritte ausführen:
Die Erweiterung muss UpdateNetBufferListDestinations aufrufen, um diese Änderungen an die OOB-Daten des Pakets zu committen.
Die Erweiterung muss ReportFilteredNetBufferLists aufrufen. Wenn diese Funktion aufgerufen wird, erhöht die erweiterbare Switchschnittstelle Indikatoren und protokolliert Ereignisse für das ausgeschlossene Paket. Die Erweiterung muss diesen Aufruf tätigen, bevor sie das Paket im erweiterbaren Switchdatenpfad weiterleitet, aus dem sie das Paket abgerufen hat.
Wenn die Erweiterung die Paketsendeanforderung oder den Hinweis zum Ausschließen der Übermittlung an alle Ports für das Paket abgeschlossen hat, muss sie auch ReportFilteredNetBufferLists aufrufen.
Hinweis Die Erweiterung kann eine verknüpfte Liste von NET_BUFFER_LIST Strukturen für Pakete erstellen, die von der Erweiterung ausgeschlossen werden. Wenn die Erweiterung ReportFilteredNetBufferLists aufruft, legt sie den NetBufferLists-Parameter auf einen Zeiger auf die verknüpfte Liste fest.
Weitere Informationen zu den erweiterbaren Ein- und Ausgehenden Switch-Datenpfaden finden Sie unter Hyper-V Extensible Switch Data Path.