Verwalten des Hyper-V Extensible Switch-Weiterleitungskontexts
Hinweis Auf dieser Seite wird davon ausgegangen, dass Sie mit den Informationen und Diagrammen in Übersicht über den erweiterbaren Hyper-V-Switch und die Hybridweiterleitung vertraut sind.
Die NET_BUFFER_LIST-Struktur für jedes Paket, das den Datenpfad des erweiterbaren Hyper-V-Switches durchläuft, enthält Out-of-Band-Daten (OOB). Diese Daten geben den Quellport an, von dem das Paket stammt, sowie einen oder mehrere Zielports für die Paketübermittlung. Diese OOB-Daten werden als erweiterbarer Switchweiterleitungskontext bezeichnet.
Hinweis Der erweiterbare Switchweiterleitungskontext unterscheidet sich von der NET_BUFFER_LIST_CONTEXT-Struktur . Dadurch können Erweiterungen ihre eigenen Kontextstrukturen zuordnen, ohne den Weiterleitungskontext zu beeinträchtigen.
Der erweiterbare Switchweiterleitungskontext wird wie folgt zugeordnet und freigegeben:
Wenn ein Paket von einem Netzwerkadapter beim erweiterbaren Switch eintrifft, ordnet die erweiterbare Switchschnittstelle den Weiterleitungskontext zu und ordnet ihn der NET_BUFFER_LIST Struktur des Pakets zu.
Wenn das Paket an seine Zielports übermittelt wird, löst die Schnittstelle den Weiterleitungskontext von der NET_BUFFER_LIST Struktur des Pakets.
Wenn eine erweiterbare Switcherweiterung ein neues oder geklontes Paket in den erweiterbaren Switchdatenpfad einbindet, muss der Weiterleitungskontext zugeordnet werden, bevor NdisFSendNetBufferLists aufgerufen wird.
Nachdem die Erweiterung eine NET_BUFFER_LIST-Struktur für ein neues oder geklontes Paket zugeordnet hat, muss sie die AllocateNetBufferListForwardingContext-Funktion aufrufen, um den Weiterleitungskontext für das Paket zuzuordnen. Wenn die Anforderung zum Senden von Paketen abgeschlossen ist, muss die Erweiterung FreeNetBufferListForwardingContext aufrufen, bevor die NET_BUFFER_LIST-Struktur freigegeben oder wiederverwendet wird.
Hinweis Wenn die Erweiterung AllocateNetBufferListForwardingContext aufruft, wird der Quellport für das Paket auf NDIS_SWITCH_DEFAULT_PORT_ID festgelegt. Dies gibt an, dass das Paket von einer Erweiterung stammt, anstatt an einem erweiterbaren Switchport anzukommen. Unter bestimmten Bedingungen kann die Erweiterung den Quellport für das Paket ändern. Weitere Informationen finden Sie unter Ändern der Quellportdaten für den erweiterbaren Switch eines Pakets.
Weitere Informationen finden Sie unter Sende- und Empfangsvorgänge für den erweiterbaren Hyper-V-Switch.
Alle erweiterbaren Switcherweiterungen können die folgenden erweiterbaren Switchhandlerfunktionen aufrufen, um im Weiterleitungskontext des Pakets auf die Daten zuzugreifen:
AllocateNetBufferListForwardingContext
Ordnet den erweiterbaren Switchweiterleitungskontext zu und bereitet eine NET_BUFFER_LIST-Struktur für Sende- oder Empfangsvorgänge innerhalb des erweiterbaren Switches vor.
CopyNetBufferListInfo
Kopiert den Weiterleitungskontext aus der NET_BUFFER_LIST-Struktur eines Quellpakets in die NET_BUFFER_LIST-Struktur eines Zielpakets. Diese Daten enthalten den erweiterbaren Switch-Quellport und die Netzwerkadapterinformationen. Die erweiterbaren Switch-Zielportinformationen können auch in das Zielpaket kopiert werden.
FreeNetBufferListForwardingContext
Gibt die Ressourcen im erweiterbaren Switchweiterleitungskontext einer NET_BUFFER_LIST-Struktur frei. Diese Daten wurden für Sende- oder Empfangsvorgänge in einem erweiterbaren Hyper-V-Switch verwendet und zuvor durch Aufrufen der AllocateNetBufferListForwardingContext-Funktion zugeordnet.
GetNetBufferListDestinations
Gibt die Zielports aus dem Weiterleitungskontext der NET_BUFFER_LIST-Struktur eines Pakets zurück.
Eine Weiterleitungserweiterung ist für das Hinzufügen von Zielports für ein Paket zuständig, es sei denn, es handelt sich bei dem Paket um ein NVGRE-Paket. (Weitere Informationen finden Sie unter Hybridweiterleitung.) Die Erweiterung ruft die folgenden erweiterbaren Switchhandlerfunktionen auf, um die Zielports im Weiterleitungskontext des Pakets hinzuzufügen oder zu aktualisieren:
AddNetBufferListDestination
Fügt dem Kontextbereich für die erweiterbare Switchweiterleitung ein einzelnes Ziel für ein Paket hinzu, das von einer NET_BUFFER_LIST-Struktur angegeben wird.
Hinweis Dieser Aufruf committet die Änderung in den Weiterleitungskontextbereich. In diesem Fall muss die Weiterleitungserweiterung UpdateNetBufferListDestinations nicht aufrufen.
GrowNetBufferListDestinations
Erhöht die Größe des Zielportarrays im Weiterleitungskontextbereich der NET_BUFFER_LIST-Struktur eines Pakets.
UpdateNetBufferListDestinations
Committent Änderungen, die die Erweiterung an einen oder mehrere erweiterbare Switchzielports eines Pakets vorgenommen hat. Diese Funktion aktualisiert den Weiterleitungskontext der NET_BUFFER_LIST Struktur eines Pakets mit diesen Änderungen.
Hinweis Nachdem die Weiterleitungserweiterung die Änderungen für Zielports in den Weiterleitungskontext committet hat, können Zielports nicht entfernt werden, und nur das IsExcluded-Element der NDIS_SWITCH_PORT_DESTINATION-Struktur eines Zielports kann geändert werden. Weitere Informationen finden Sie unter Ausschließen der Paketübermittlung an erweiterbare Switch-Zielports.