Angeben von Änderungen an den NDIS-QoS-Remoteparametern

Der Miniporttreiber, der NDIS Quality of Service (QoS) unterstützt, gibt eine NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status Angabe aus, wenn die NDIS-QoS-Remoteparameter entweder zum ersten Mal von einem Peer empfangen oder später geändert werden. Der Miniporttreiber empfängt diese QoS-Parameter von einem Remotepeer über das DCBX-Protokoll (IEEE 802.1Qaz Data Center Bridging Exchange).

Der Miniporttreiber muss die folgenden Richtlinien befolgen, um eine NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status Angabe auszugeben:

  • Wenn der Miniporttreiber keinen DCBX-Frame von einem Remotepeer empfangen hat, darf er keine NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status Anzeigen ausgeben.

  • Der Miniporttreiber muss eine NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status Anzeige ausgeben, nachdem er die QoS-Einstellungen zuerst von einem Remotepeer empfangen hat.

    Hinweis Der Miniporttreiber muss diese status Angabe ausgeben, wenn der Netzwerkadapter QoS-Remoteparametereinstellungen von einem Peer empfängt, bevor die lokalen QoS-Parameter des Treibers festgelegt werden. Weitere Informationen finden Sie unter Festlegen von lokalen NDIS-QoS-Parametern.

  • Nach dieser anfänglichen status Anzeige sollte der Miniporttreiber nur dann eine NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status Anzeigen ausgeben, wenn er eine Änderung der QoS-Einstellungen auf dem Remotepeer bestimmt.

    Hinweis Miniport-Treiber sollten keine NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status Anzeigen ausgeben, wenn keine Änderungen an den NDIS-QoS-Remoteparametern vorgenommen wurden. Wenn der Treiber diese Art von status Anzeige vorgibt, übergibt NDIS die Angabe möglicherweise nicht an übersteigende Treiber.

Hinweis Der Miniporttreiber muss NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status Anzeigen ausgeben, wenn seine NDIS-QoS-Funktionen derzeit aktiviert sind. Ab Windows Server 2012 ermöglichen diese Hinweise Systemadministratoren, NDIS QoS- und DCB-Einstellungen (Data Center Bridging) anzuzeigen, unabhängig davon, ob das Microsoft DCB-Serverfeature installiert ist.

Richtlinien für die Ausgabe der NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE Statusanzeige

Der Miniporttreiber führt die folgenden Schritte aus, wenn er die NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status Zeigt:

  1. Der Miniporttreiber weist einen Puffer zu, der groß genug ist, um Folgendes zu enthalten:

    • Eine NDIS_QOS_PARAMETERS Struktur, die die NDIS QoS-Konfigurationseinstellungen sowie globale Betriebsparameter für die NDIS-QoS-Datenverkehrsklassen enthält.

    • Ein Array von NDIS_QOS_CLASSIFICATION_ELEMENT Strukturen. Jede dieser Strukturen gibt eine Datenverkehrsklassifizierung an, die durch ein Paketdatenmuster (Bedingung) und die zugehörige IEEE 802.1p-Prioritätsebene (Aktion) definiert wird. Wenn der Netzwerkadapter im Übertragungs- oder Ausgehenden Paket ein Muster findet, das einer Bedingung entspricht, weist er dem Paket die zugeordnete Prioritätsebene zu. Der Adapter wendet auch die anderen NDIS-QoS-Richtlinien basierend auf der Prioritätsstufe auf das Paket an.

  2. Der Miniport initialisiert die NDIS_QOS_PARAMETERS-Struktur mit den NDIS-QoS-Remoteparametern. Der Treiber muss den vollständigen Satz von Remoteparametern bereitstellen, die vom DCBX-Frame empfangen wurden, der vom Remotepeer gesendet wurde.

    Wenn der Miniporttreiber den Headermember initialisiert, wird das Type-Element des Headers auf NDIS_OBJECT_TYPE_QOS_PARAMETERS festgelegt. Der Miniporttreiber legt den Revisionsmember von Header auf NDIS_QOS_PARAMETERS_REVISION_1 und das Element Größe auf NDIS_SIZEOF_QOS_PARAMETERS_REVISION_1 fest.

    Der Miniporttreiber legt die entsprechenden NDIS_QOS_PARAMETERS_Xxx_CHANGED-Flags fest, wenn die entsprechenden Member Daten enthalten, die sich geändert haben, seit der Miniporttreiber zuvor eine NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status-Anzeige ausgegeben hat.

    Hinweis Das Festlegen dieser NDIS_QOS_PARAMETERS_Xxx_CHANGED-Flags ist optional. NDIS geht immer davon aus, dass die Member des NDIS_QOS_PARAMETERS angegeben werden, auch wenn sie sich gegenüber der vorherigen NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status Angabe nicht geändert haben.

    Der Miniporttreiber legt den Flags-Member fest, um status Informationen für die Daten anzugeben, die in den NDIS_QOS_PARAMETERS-Strukturelementen enthalten sind.

    Der Miniporttreiber legt beispielsweise die entsprechenden NDIS_QOS_PARAMETERS_Xxx_CHANGED-Flags im Flags-Element für die Member fest, die Daten enthalten, die sich geändert haben, seit der Miniporttreiber zuvor eine NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status-Angabe ausgegeben hat.

    Weitere Informationen zum Festlegen des Flags-Elements finden Sie unter Richtlinien für das Festlegen des Flags-Elements.

  3. Der Miniporttreiber initialisiert eine NDIS_QOS_CLASSIFICATION_ELEMENT-Struktur für jede Datenverkehrsklassifizierung aus den NDIS-QoS-Remoteparametern. Der Treiber fügt diese Elemente über das Ende der NDIS_QOS_PARAMETERS-Struktur im Puffer hinzu.

    Hinweis Der Miniporttreiber darf das NDIS_QOS_CLASSIFICATION_ENFORCED_BY_MINIPORT-Flag im Flags-Member von NDIS_QOS_CLASSIFICATION_ELEMENT-Strukturen nicht festlegen.

    Der Treiber legt den NumClassificationElements-Member der NDIS_QOS_PARAMETERS-Struktur auf die Anzahl der Klassifizierungselemente im Array fest. Der Treiber legt den FirstClassificationElementOffset-Member auf den Byteoffset des ersten Elements ab dem Anfang des Puffers fest. Der Treiber legt auch das ClassificationElementSize-Element auf die Länge (in Byte) jedes Elements im Array fest.

    Hinweis Ab NDIS 6.30 muss der Miniporttreiber das ClassificationElementSize-Element auf sizeof(NDIS_QOS_CLASSIFICATION_ELEMENTfestlegen.

  4. Der Miniporttreiber initialisiert eine NDIS_STATUS_INDICATION-Struktur für die status-Angabe auf folgende Weise:

    • Das StatusCode-Element muss auf NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE festgelegt werden.

    • Der StatusBuffer-Member muss auf den Zeiger auf den Puffer festgelegt werden, der die NDIS-QoS-Remoteparameter enthält.

    • Der StatusBufferSize-Member muss auf die Länge des Puffers in Bytes festgelegt werden.

  5. Der Miniporttreiber gibt die status-Anzeige aus, indem er NdisMIndicateStatusEx aufruft. Der Treiber muss einen Zeiger auf die NDIS_STATUS_INDICATION-Struktur an den StatusIndication-Parameter übergeben.

Richtlinien für das Festlegen des Flags-Elements

Der Miniporttreiber legt die folgenden Flags im Flags-Member der NDIS_QOS_PARAMETERS-Struktur fest, um anzugeben, welche operativen NDIS-QoS-Parameter für den Netzwerkadapter konfiguriert oder geändert wurden:

NDIS_QOS_PARAMETERS_ETS_CONFIGURED
Wenn dieses Flag festgelegt ist, hat der Miniporttreiber den Netzwerkadapter mit den ETS-Parametern konfiguriert, die in den folgenden Membern enthalten sind:

  • NumTrafficClasses

  • PriorityAssignmentTable

  • TcBandwidthAssignmentTable

  • TsaAssignmentTable

Hinweis Der Miniporttreiber muss ETS unterstützen, um NDIS QoS für DCB zu unterstützen. Die Einstellung dieses Flags gibt jedoch nicht an, ob der Netzwerkadapter ETS unterstützt. Stattdessen gibt die Einstellung dieses Flags nur an, ob ETS-Parameter auf dem Netzwerkadapter konfiguriert sind.

NDIS_QOS_PARAMETERS_ETS_CHANGED
Wenn dieses Flag festgelegt ist, wurden mindestens ein ETS-Parameter in den folgenden Membern geändert:

  • NumTrafficClasses

  • PriorityAssignmentTable

  • TcBandwidthAssignmentTable

  • TsaAssignmentTable

NDIS_QOS_PARAMETERS_PFC_CONFIGURED
Wenn dieses Flag festgelegt ist, hat der Miniporttreiber den Netzwerkadapter mit den PFC-Einstellungen konfiguriert, die im PfcEnable-Member enthalten sind.

Hinweis Der Miniporttreiber muss PFC unterstützen, um NDIS QoS für DCB zu unterstützen. Die Einstellung dieses Flags gibt nicht an, ob der Netzwerkadapter PFC unterstützt. Stattdessen gibt die Einstellung dieses Flags nur an, ob PFC-Parameter für den Netzwerkadapter aktiviert sind.

NDIS_QOS_PARAMETERS_PFC_CHANGED
Wenn dieses Flag festgelegt ist, wurden mindestens eine PFC-Einstellung im PfcEnable-Element geändert.

NDIS_QOS_PARAMETERS_CLASSIFICATION_CONFIGURED
Wenn dieses Flag festgelegt ist, hat der Miniporttreiber den Netzwerkadapter mit den QoS-Datenverkehrsklassifizierungsparametern konfiguriert, die in den folgenden Membern angegeben sind:

  • NumClassificationElements

  • ClassificationElementSize

  • FirstClassificationElementOffset

NDIS_QOS_PARAMETERS_CLASSIFICATION_CHANGED
Wenn dieses Flag festgelegt ist, haben sich mindestens ein QoS-Datenverkehrsklassifizierungsparameter in den folgenden Membern geändert:

  • NumClassificationElements

  • ClassificationElementSize

  • FirstClassificationElementOffset

Hinweis Die flags NDIS_QOS_PARAMETERS_Xxx_CONFIGURED müssen festgelegt werden, wenn die NDIS_QOS_PARAMETERS-Struktur NDIS QoS-Parametereinstellungen enthält. Der Miniporttreiber muss diese Flags festlegen, unabhängig davon, ob sich die Einstellungen geändert haben. Der Treiber darf jedoch nur die NDIS_QOS_PARAMETERS_Xxx_CHANGED-Flags für die geänderten Einstellungen festlegen.

Richtlinien zum Angeben ungültiger NDIS-QoS-Parameter

Der Miniporttreiber muss seine QoS-Remoteparameter für ungültig erklären, wenn die folgenden Bedingungen erfüllt sind:

  • Der Wert für die Gültigkeitsdauer (Time-to-Live, TTL) läuft für die QoS-Remoteparameter ab.

    Hinweis DCBX wird über das LLDP-Protokoll (Link Layer Discovery Protocol) übertragen, wie im IEEE 802.1AB-2005-Standard angegeben. LLDP-Frames enthalten immer ein TTL-Feld.

  • Ein anderer Datenlinkpeer sendet einen DCBX-Frame, bevor der TTL-Wert abläuft. Dieses Szenario wird als Multipeerbedingung bezeichnet. DCBX erfordert, dass der Miniporttreiber nur einen Satz von Remote-QoS-Parametern verwaltet, die von einem einzelnen Datenlinkpeer empfangen wurden.

    Wenn eine Bedingung mit mehreren Peers auftritt, muss der Miniporttreiber alle QoS-Remoteparameter für ungültig erklären, bis der TTL-Wert für alle empfangenen DCBX-Frames abläuft.

Wenn der Miniporttreiber seine NDIS-QoS-Remoteparameter ungültig macht, muss er die folgenden Schritte ausführen, wenn er die NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status Hinweis ausgibt:

  1. Da der Miniporttreiber keine gültigen NDIS-QoS-Remoteparameter meldet, muss er zunächst eine NDIS_QOS_PARAMETERS-Struktur mit Nullen füllen.

    Wenn der Miniporttreiber den Headermember dieser Struktur initialisiert, legt er das Type-Element von Header auf NDIS_OBJECT_TYPE_QOS_PARAMETERS fest. Der Miniporttreiber legt den Revisionsmember von Header auf NDIS_QOS_PARAMETERS_REVISION_1 und das Element Größe auf NDIS_SIZEOF_QOS_PARAMETERS_REVISION_1 fest.

    Der Miniporttreiber legt die entsprechenden NDIS_QOS_PARAMETERS_Xxx_CHANGED flags im Flags-Element fest.

  2. Der Miniporttreiber initialisiert eine NDIS_STATUS_INDICATION-Struktur für die status-Angabe auf folgende Weise:

    • Das StatusCode-Element muss auf NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE festgelegt werden.

    • Der StatusBuffer-Member muss auf die Adresse der NDIS_QOS_PARAMETERS-Struktur festgelegt werden.

    • Das StatusBufferSize-Element muss auf sizeof(NDIS_QOS_PARAMETERS)festgelegt werden.

  3. Der Miniporttreiber gibt die status-Anzeige aus, indem er NdisMIndicateStatusEx aufruft. Der Treiber muss einen Zeiger auf die NDIS_STATUS_INDICATION-Struktur an den StatusIndication-Parameter übergeben.