Ursprungs-NDIS-Statusanzeigen von physischen Netzwerkadaptern
In diesem Thema wird die Methode erläutert, die von einer erweiterbaren Switchweiterleitungserweiterung verwendet wird, um NDIS status Hinweise für einen Netzwerkadapter zu erstellen, der mit dem Switch verbunden ist. Die Erweiterung kann einen NDIS-status-Hinweis für die folgenden Adaptertypen erstellen:
Mindestens ein zugrunde liegender physischer Adapter, der an den externen Netzwerkadapter des erweiterbaren Switches gebunden ist.
Beispielsweise kann der externe Netzwerkadapter an den virtuellen Miniport-Edge eines MUX-Zwischentreibers (NDIS Multiplexer) gebunden werden. Der MUX-Treiber ist an ein Team von mindestens einem physischen Netzwerk auf dem Host gebunden. Diese Konfiguration wird als erweiterbares Switchteam bezeichnet.
In dieser Konfiguration wird für jeden Netzwerkadapter im Team eine erweiterbare Switcherweiterung verfügbar gemacht. Dadurch kann die Erweiterung die Konfiguration und Verwendung einzelner Netzwerkadapter im Team verwalten. Beispielsweise kann eine Weiterleitungserweiterung unterstützung für eine LBFO-Lösung (Lastenausgleichsfailover) über das Team bereitstellen, indem ausgehende Pakete an einzelne Adapter weitergeleitet werden. Eine Weiterleitungserweiterung, die ein erweiterbares Switchteam verwaltet, wird als Teamanbieter bezeichnet. Weitere Informationen zu Teaminganbietern finden Sie unter Teaming Provider Extensions.
Ein VMs-Netzwerkadapter, der innerhalb einer untergeordneten Hyper-V-Partition verfügbar gemacht und mit einem erweiterbaren Switchport verbunden ist.
Die folgende Abbildung zeigt den hyper-V erweiterbaren Switchsteuerungspfad für NDIS status Von physischen und VM-Netzwerkadaptern für NDIS 6.40 (Windows Server 2012 R2) und höher.
Die folgende Abbildung zeigt den Hyper-V-Erweiterbaren Switch-Steuerungspfad für NDIS status Von physischen und VM-Netzwerkadaptern für NDIS 6.30 (Windows Server 2012).
Hinweis In der erweiterbaren Switchschnittstelle werden NDIS-Filtertreiber als Erweiterungen bezeichnet, und der Treiberstapel wird als erweiterbarer Switchtreiberstapel bezeichnet.
Eine Weiterleitungserweiterung kann von gekapselten Hardwareauslagerungen status Hinweisen auf überlagernde Treiber im erweiterbaren Switchtreiberstapel ausgehen. Dadurch kann die Erweiterung auch die aktuellen Auslagerungsfunktionen des zugrunde liegenden Teams physischer Adapter ändern, die an den externen Netzwerkadapter des erweiterbaren Switches gebunden sind. Wenn ein Team von Adaptern an den externen Netzwerkadapter gebunden ist, werden nur die allgemeinen Funktionen des Teams für NDIS oder überlastende Protokoll- und Filtertreiber angekündigt. Die Erweiterung kann die angekündigten Funktionen erweitern, indem sie gekapselte status Hinweise enthält, um Funktionen anzukündigen, die von einigen Adaptern im Team unterstützt werden. Beispielsweise kann die Erweiterung einen gekapselten NDIS_STATUS_RECEIVE_FILTER_CURRENT_CAPABILITIES Hinweis ausgeben, um die derzeit aktivierten Empfangsfilterfunktionen für das gesamte Team zu ändern.
Hinweis Nur Weiterleitungserweiterungen können von gekapselten status Hinweisen stammen. Weitere Informationen zu diesem Erweiterungstyp finden Sie unter Weiterleitungserweiterung.
In der Regel stammt die Weiterleitungserweiterung von gekapselten NDIS-status Hinweisen, um die angekündigten Hardwareauslagerungsfunktionen des zugrunde liegenden physischen Adapters zu ändern. Die Erweiterung kann z. B. status Hinweise für die folgenden Arten von Hardwareausladungen stammen:
Internetprotokollsicherheit (Internet Protocol Security, IPsec).
Virtualisierte Computerwarteschlange (VMQ).
E/A-Virtualisierung mit Einzelstamm (Single Root I/O Virtualization, SR-IOV)
Die Weiterleitungserweiterung kann auch von gekapselten NDIS-status Hinweisen stammen, um die Hardwareauslagerungsressourcen zu ändern, die einer untergeordneten Hyper-V-Partition zugeordnet sind. Ab NDIS 6.30 kann die Erweiterung einen gekapselten NDIS_STATUS_SWITCH_PORT_REMOVE_VF-Hinweis ausgeben, um die Bindung zwischen einem VM-Netzwerkadapter und einer virtuellen PCI-Express-Funktion (VF) zu entfernen. Der VF wird von einem zugrunde liegenden physischen Netzwerkadapter verfügbar gemacht und unterstützt, der die SR-IOV-Schnittstelle (Single Root E/O Virtualization) unterstützt.
Wenn die Weiterleitungserweiterung von einem gekapselten NDIS-status Hinweis für die Hardwareauslagerungsressourcen eines zugrunde liegenden physischen Adapters stammt, müssen die Member der NDIS_SWITCH_NIC_STATUS_INDICATION-Struktur wie folgt festgelegt werden:
Der DestinationPortId-Member muss auf NDIS_SWITCH_DEFAULT_PORT_ID festgelegt werden.
Das DestinationNicIndex-Element muss auf NDIS_SWITCH_DEFAULT_NIC_INDEX
Das SourcePortId-Element muss auf den Bezeichner des erweiterbaren Switchports festgelegt werden, mit dem der externe Netzwerkadapter verbunden ist.
Das SourceNicIndex-Element muss auf NDIS_SWITCH_DEFAULT_NIC_INDEX festgelegt werden. Auf diese Weise kann die status-Angabe als vom gesamten erweiterbaren Switchteam interpretiert werden, das an den externen Netzwerkadapter gebunden ist.
Hinweis Die Weiterleitungserweiterung muss auch diesen Member auf NDIS_SWITCH_DEFAULT_NIC_INDEX festlegen, wenn nur ein einzelner physischer Netzwerkadapter an den externen Netzwerkadapter gebunden ist.
Das StatusIndication-Element muss auf einen Zeiger auf eine NDIS_STATUS_INDICATION-Struktur festgelegt werden. Diese Struktur enthält die Daten für die gekapselte NDIS-status-Angabe.
Wenn die Weiterleitungserweiterung von einem NDIS-status Hinweis für die Hardwareauslagerungsressourcen einer untergeordneten Hyper-V-Partition stammt, müssen die Member der NDIS_SWITCH_NIC_STATUS_INDICATION-Struktur wie folgt festgelegt werden:
Die Member DestinationPortId und DestinationNicIndex müssen auf die entsprechenden Werte des Port- und Netzwerkadapterindex für die von der Partition verwendete Netzwerkverbindung festgelegt werden.
Der SourcePortId-Member muss auf NDIS_SWITCH_DEFAULT_PORT_ID festgelegt werden.
Das SourceNicIndex-Element muss auf NDIS_SWITCH_DEFAULT_NIC_INDEX festgelegt werden.
Das StatusIndication-Element muss auf einen Zeiger auf eine NDIS_STATUS_INDICATION-Struktur festgelegt werden. Diese Struktur enthält die Daten für die gekapselte NDIS-status-Angabe.
Wenn die Erweiterung die gekapselte NDIS-status-Angabe ausgibt, muss sie die folgenden Schritte ausführen:
Die Erweiterung ruft ReferenceSwitchNic auf, um einen Verweiszähler für die Quell- oder Zielnetzwerkadapterverbindung zu erhöhen. Dadurch wird sichergestellt, dass die erweiterbare Switchschnittstelle die Netzwerkadapterverbindung nicht löscht, während der Verweiszähler ungleich null ist.
Wenn die Erweiterung ReferenceSwitchNic aufruft, werden die Parameter wie folgt festgelegt:
Wenn die Weiterleitungserweiterung von einer gekapselten NDIS-status-Angabe für einen zugrunde liegenden physischen Adapter stammt, wird der SwitchPortId-Parameter auf den für den SourcePortId-Member angegebenen Wert festgelegt. Die Erweiterung legt auch den SwitchNicIndex-Parameter auf den wert fest, der für das SourceNicIndex-Element angegeben ist.
Wenn die Weiterleitungserweiterung von einem NDIS-status Hinweis für eine untergeordnete Hyper-V-Partition stammt, wird der SwitchPortId-Parameter auf den für das DestinationPortId-Element angegebenen Wert festgelegt. Die Erweiterung legt auch den SwitchNicIndex-Parameter auf den für das DestinationNicIndex-Element angegebenen Wert fest.
Hinweis Wenn ReferenceSwitchNic nicht NDIS_STATUS_SUCCESS zurückgibt, kann die gekapselte NDIS-status-Angabe nicht ausgegeben werden.
Die Erweiterung ruft NdisFIndicateStatus auf, um die gekapselte status Benachrichtigung weiterzuleiten.
Hinweis Wenn die Erweiterung eine gefilterte OID-Anforderung weiterleitet, muss sie NdisFIndicateStatus im Kontext des Aufrufs der FilterStatus-Funktion aufrufen.
Nachdem NdisFIndicateStatus zurückgegeben wurde, ruft die Erweiterung DereferenceSwitchNic auf, um den Verweiszähler für die Quell- oder Zielnetzwerkadapterverbindung zu löschen. Die Erweiterung legt die Parameter SwitchPortId und SwitchNicIndex auf die gleichen Werte fest, die sie beim Aufruf von ReferenceSwitchNic verwendet hat.