リモート NDIS QoS パラメーターへの変更の表示

NDIS サービス品質 (QoS) をサポートするミニポート ドライバーは、リモート NDIS QoS パラメーターが初めてピアから受信されるか、後で変更されたとき、 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE ステータス指示を発行します。 ミニポート ドライバーは、IEEE 802.1Qaz データ センター ブリッジング交換 (DCBX) プロトコルを通じてリモート ピアからこれらの QoS パラメーターを受け取ります。

ミニポート ドライバーは、 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE ステータス指示を発行するため、次のガイドラインに従う必要があります。

  • ミニポート ドライバーは、リモート ピアから DCBX フレームを受信していない場合、 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE ステータス指示を発行することはできません。

  • ミニポート ドライバーは、リモート ピアから QoS 設定を最初に受信した後、 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE ステータス指示を発行する必要があります。

    ミニポート ドライバーは、ドライバーのローカル QoS パラメーターが設定される前に、ネットワーク アダプターがピアからリモート QoS パラメーター設定を受信した場合、このステータス指示を発行する必要があります。 詳しくは、「ローカル NDIS QoS パラメーターの設定」をご覧ください。

  • この初期ステータス指示の後、ミニポート ドライバーは、リモート ピアの QoS 設定の変更を決定するときのみ、NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE ステータス指示を発行する必要があります。

    ミニポート ドライバーは、リモート NDIS QoS パラメーターに変更がない場合、 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE ステータス指示を発行する必要があります。 ドライバーがこの型のステータス指示を作成した場合、NDIS は上位ドライバーに指示を渡さない可能性があります。

: ミニポート ドライバーは、NDIS QoS 機能が現在有効になっている場合、 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 状態の表示を発行する必要があります。 Windows Server 2012 以降では、Microsoft DCB サーバー機能がインストールされているかどうかに関係なく、システム管理者は NDIS QoS とデータ センター ブリッジング (DCB) の設定を表示できます。

NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGEステータス表示の発行に関するガイドライン

ミニポート ドライバーは、 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 状態の表示を発行するときに、次の 手順に 従います。

  1. ミニポート ドライバーは、次を含めるのに十分な大きさのバッファーを割り当てます。

    • NDIS QoS の構成設定と NDIS QoS トラフィック クラスのグローバル操作パラメーターを含む NDIS_QOS_PARAMETERS 構造体。

    • NDIS_QOS_CLASSIFICATION_ELEMENT 構造体の配列。 これらの各構造体は、パケット データ パターン (条件) と関連付けられた IEEE 802.1p 優先度レベル (アクション) によって定義されるトラフィック分類を指定します。 ネットワーク アダプターは、条件に一致する送信パケットまたは エグレス パケットのパターンを検出すると、関連付けられた優先順位レベルをパケットに割り当てます。 アダプターは、優先順位レベルに基づいてパケットに他の NDIS QoS ポリシーも適用します。

  2. ミニポートは、リモートNDIS QoS パラメーターを 使用して NDIS_QOS_PARAMETERS 構造体を初期化します。 ドライバーは、リモート ピアによって送信された DCBX フレームから受信したリモート パラメーターの完全なセットを提供する必要があります。

    ミニポート ドライバーは、 ヘッダー メンバーを初期化したとき、 ヘッダー メンバーを NDIS_OBJECT_TYPE_QOS_PARAMETERS に設定します。 ミニポート ドライバーは、 ヘッダーリビジョン メンバーを NDIS_QOS_PARAMETERS_REVISION_1に設定し、 サイズ メンバーをNDIS_SIZEOF_QOS_PARAMETERS_REVISION_1します。

    ミニポート ドライバーは、対応するメンバーが以前に NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 状態表示を発行してから変更されたデータが含まれている場合、適切な NDIS_QOS_PARAMETERS_Xxx_CHANGED フラグを設定します。

    注: これらの NDIS_QOS_PARAMETERS_Xxx_CHANGED フラグの設定は省略可能です。 NDIS は常に、 NDIS_QOS_PARAMETERS のメンバーが以前の NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 状態表示から変更されていない場合でも指定されていると前提としています。

    ミニポート ドライバーは、 NDIS_QOS_PARAMETERS 構造体のメンバーに含まれているデータの状態情報を指定する フラグ メンバーを設定します。

    たとえば、ミニポート ドライバーは、ミニポート ドライバーが以前に NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 状態表示を発行してから変更されたデータを含むメンバーの フラグ メンバーの適切な NDIS_QOS_PARAMETERS_Xxx_CHANGED フラグを設定します。

    Flags メンバーを設定する方法の詳細については、「フラグ メンバーを設定するための ガイドライン」を参照してください。

  3. ミニポート ドライバーは、 リモートNDIS QoS パラメーターからの各トラフィック分類の NDIS_QOS_CLASSIFICATION_ELEMENT 構造を初期化します。 ドライバーは、バッファー内の NDIS_QOS_PARAMETERS構造体 の末尾の後にこれらの要素を追加します。

    : ミニポート ドライバーは、任意のNDIS_QOS_CLASSIFICATION_ELEMENT構造体の Flags メンバーに NDIS_QOS_CLASSIFICATION_ENFORCED_BY_MINIPORT フラグを設定する必要があります。

    ドライバーは、配列内の分類要素の数に NDIS_QOS_PARAMETERS 構造体の NumClassificationElements メンバーを設定します。 ドライバーは、バッファーの 先頭から最初の要素のバイト オフセットに FirstClassificationElementOffset メンバーを設定します。 また、ドライバーは ClassificationElementSize メンバーを配列内の各要素の長さ (バイト単位) に設定します。

    NDIS 6.30 以降では、ミニポート ドライバーは、 ClassificationElementSize メンバーを sizeof(NDIS_QOS_CLASSIFICATION_ELEMENTに設定する必要があります)。

  4. ミニポート ドライバーは、次の方法でステータス指示の NDIS_STATUS_INDICATION 構造を初期化します。

    • StatusCode メンバーは、 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGEに設定する必要があります。

    • StatusBuffer メンバーは、リモート NDIS QoS パラメーターを含むバッファーへのポインターに設定する必要があります。

    • StatusBufferSize メンバーは、バッファーの長さをバイト単位で設定する必要があります。

  5. ミニポート ドライバーは、 NdisMIndicateStatusExを呼び出すことによってステータス指示を発行します。 ドライバーは、 StatusIndication パラメーターに NDIS_STATUS_INDICATION 構造へのポインターを渡す必要があります。

Flags メンバーの設定に関するガイドライン

ミニポート ドライバーは、ネットワーク アダプターで構成または変更された操作 NDIS QoS パラメーターを指定する NDIS_QOS_PARAMETERS 構造体の フラグ メンバーに次のフラグを設定します。

NDIS_QOS_PARAMETERS_ETS_CONFIGURED
このフラグが設定されている場合、ミニポート ドライバーは、次のメンバーに含まれる ETS パラメーターを使用してネットワーク アダプターを構成しています。

  • NumTrafficClasses

  • PriorityAssignmentTable

  • TcBandwidthAssignmentTable

  • TsaAssignmentTable

: ミニポート ドライバーは、DCB の NDIS QoS をサポートするために ETS をサポートする必要があります。 ただし、このフラグの設定では、ネットワーク アダプターが ETS をサポートするかどうかを指定しません。 代わりに、このフラグの設定では、ネットワーク アダプターで ETS パラメーターを構成するかどうかを指定します。

NDIS_QOS_PARAMETERS_ETS_CHANGED
このフラグが設定されている場合、次のメンバーで 1 つ以上の ETS パラメーターが変更されています。

  • NumTrafficClasses

  • PriorityAssignmentTable

  • TcBandwidthAssignmentTable

  • TsaAssignmentTable

NDIS_QOS_PARAMETERS_PFC_CONFIGURED
このフラグが設定されている場合、ミニポート ドライバーは、ネットワーク アダプターが構成されている、 PfcEnable メンバーに含まれているPFC 設定です。

: ミニポート ドライバーは、DCB の NDIS QoS をサポートするために PFC をサポートする必要があります。 このフラグの設定では、ネットワーク アダプターが PFC をサポートするかどうかを指定しません。 代わりに、このフラグの設定は、ネットワーク アダプターで PFC パラメーターを有効にするかどうかだけを指定します。

NDIS_QOS_PARAMETERS_PFC_CHANGED
このフラグが設定されている場合、1 つ以上のPFC設定が PfcEnable メンバーで変更されています。

NDIS_QOS_PARAMETERS_CLASSIFICATION_CONFIGURED
このフラグが設定されている場合、ミニポート ドライバーは、次のメンバーで指定された QoS トラフィック分類パラメーターを使用してネットワーク アダプターを構成しています。

  • NumClassificationElements

  • ClassificationElementSize

  • FirstClassificationElementOffset

NDIS_QOS_PARAMETERS_CLASSIFICATION_CHANGED
このフラグが設定されている場合、次のメンバーで 1 つ以上の QoS トラフィック分類パラメーターが変更されています。

  • NumClassificationElements

  • ClassificationElementSize

  • FirstClassificationElementOffset

注:NDIS_QOS_PARAMETERS 構造体に NDIS QoS パラメーター設定が含まれている場合は、 NDIS_QOS_PARAMETERS_Xxx_CONFIGURED フラグを設定する必要があります。 ミニポート ドライバーは、設定が変更されたかどうかに関係なく、これらのフラグを設定する必要があります。 ただし、ドライバーは、変更された 設定に対してのみ、 NDIS_QOS_PARAMETERS_Xxx_CHANGED フラグを設定する必要があります。

無効なリモート NDIS QoS パラメーターを示すガイドライン

ミニポート ドライバーは、次の条件が満たされている場合、そのリモート QoS パラメーターを無効にする必要があります。

  • Time-to-Live (TTL) 値は、リモート QoS パラメーターの有効期限が切れます。

    : DCBX は、IEEE 802.1AB-2005 標準で指定されているリンク層探索プロトコル (LLDP) プロトコルを介して引き継がれます。 LLDP フレームには常に TTL フィールドが含まれます。

  • 別のデータ リンク ピアは、TTL 値の有効期限が切れる前に DCBX フレームを送信します。 このシナリオは、 マルチピア 条件と呼ばれます。 DCBX では、ミニポート ドライバーメイン単一のデータ リンク ピアから受信したリモート QoS パラメーターのセットを 1 つだけ含める必要があります。

    マルチピア状態が発生した場合、ミニポート ドライバーは、受信したすべての DCBX フレームの TTL 値の有効期限が切れるまで、すべてのリモート QoS パラメーターを無効にする必要があります。

ミニポート ドライバーは、そのリモート NDIS QoS パラメーターを無効にすると、 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 状態の表示を発行するときに、次の手順に従う必要があります。

  1. ミニポート ドライバーは、任意の有効なリモート NDIS QoS パラメーターを報告していないため、最初にゼロで NDIS_QOS_PARAMETERS 構造体を埋める必要があります。

    ミニポート ドライバーは、この構造の ヘッダー メンバーを初期化したとき、 ヘッダー メンバーを NDIS_OBJECT_TYPE_QOS_PARAMETERS に設定します。 ミニポート ドライバーは、 ヘッダーリビジョン メンバーを NDIS_QOS_PARAMETERS_REVISION_1に設定し、 サイズ メンバーをNDIS_SIZEOF_QOS_PARAMETERS_REVISION_1します。

    ミニポート ドライバーは、 Flags メンバーの適切な NDIS_QOS_PARAMETERS_Xxx_CHANGED フラグを 設定します。

  2. ミニポート ドライバーは、次の方法でステータス指示の NDIS_STATUS_INDICATION 構造を初期化します。

    • StatusCode メンバーは、 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGEに設定する必要があります。

    • StatusBuffer メンバーは、 NDIS_QOS_PARAMETERS 構造体のアドレスに設定する必要があります。

    • StatusBufferSize メンバーを sizeof(NDIS_QOS_PARAMETERS)に設定する必要があります。

  3. ミニポート ドライバーは、 NdisMIndicateStatusExを呼び出すことによってステータス指示を発行します。 ドライバーは、 StatusIndication パラメーターに NDIS_STATUS_INDICATION 構造へのポインターを渡す必要があります。