指出遠端 NDIS QoS 參數的變更
支援 NDIS 服務品質的迷你埠驅動程式 (QoS) 會在第一次從對等接收遠端 NDIS QoS 參數或稍後變更時發出 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 狀態指示。 迷你埠驅動程式會透過 IEEE 802.1Qaz 資料中心橋接 Exchange (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_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 狀態指示,如果遠端 NDIS QoS 參數沒有任何變更。 如果驅動程式確實進行這種類型的狀態指示,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 狀態指示時遵循下列步驟:
迷你埠驅動程式會配置足以包含下列大小的緩衝區:
包含 NDIS QoS 組態設定以及 NDIS QoS 流量類別之全域指令引數的 NDIS_QOS_PARAMETERS 結構。
NDIS_QOS_CLASSIFICATION_ELEMENT結構的陣列。 每個結構都會指定由封包資料模式所定義的流量分類, (條件) 和相關聯的 IEEE 802.1p 優先順序層級 (動作) 。 如果網路介面卡在傳輸或 輸出中找到符合條件的封包模式,則會將相關聯的優先順序層級指派給封包。 介面卡也會根據優先順序層級,將其他 NDIS QoS 原則套用至封包。
迷你埠會使用遠端 NDIS QoS 參數來初始化 NDIS_QOS_PARAMETERS 結構。 驅動程式必須提供從遠端對等所傳送 DCBX 框架接收的完整遠端參數集。
當迷你埠驅動程式初始化Header成員時,它會將Header的Type成員設定為 NDIS_OBJECT_TYPE_QOS_PARAMETERS。 迷你埠驅動程式會將Header的Revision成員設定為 NDIS_QOS_PARAMETERS_REVISION_1,並將Size成員設定為 NDIS_SIZEOF_QOS_PARAMETERS_REVISION_1。
迷你埠驅動程式會設定適當的 NDIS_QOS_PARAMETERS_Xxx_CHANGED 旗標,如果對應的成員包含自迷你埠驅動程式先前發出 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 狀態指示之後已變更的資料。
注意 設定這些 NDIS_QOS_PARAMETERS_Xxx_CHANGED 旗標是選擇性的。 NDIS 一律假設已指定 NDIS_QOS_PARAMETERS 的成員,即使它們未從先前 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 狀態指示變更也一樣。
迷你埠驅動程式會設定 Flags 成員,以指定 包含在NDIS_QOS_PARAMETERS 結構成員中的資料狀態資訊。
例如,迷你埠驅動程式會在Flags成員中設定適當的NDIS_QOS_PARAMETERS_Xxx_CHANGED旗標,這些成員包含自迷你埠驅動程式先前發出NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE狀態指示之後已變更的資料。
如需如何設定 Flags 成員的詳細資訊,請參閱 設定 旗 標成員的指導方針。
迷你埠驅動程式會初始化遠端 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
) 。迷你埠驅動程式會以下列方式初始化狀態指示 的NDIS_STATUS_INDICATION 結構:
StatusCode成員必須設定為 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE。
StatusBuffer成員必須設定為包含遠端 NDIS QoS 參數之緩衝區的指標。
StatusBufferSize成員必須設定為緩衝區的長度,以位元組為單位。
迷你埠驅動程式會呼叫 NdisMIndicateStatusEx來發出狀態指示。 驅動程式必須將指標傳遞給StatusIndication參數NDIS_STATUS_INDICATION結構。
設定旗標成員的指導方針
迷你埠驅動程式會在NDIS_QOS_PARAMETERS結構的Flags成員中設定下列旗標,以指定網路介面卡上已設定或變更哪些操作 NDIS QoS 參數:
NDIS_QOS_PARAMETERS_ETS_CONFIGURED
如果設定此旗標,迷你埠驅動程式已使用下列成員中包含的 ETS 參數來設定網路介面卡:
NumTrafficClasses
PriorityAssignmentTable
TcBandwidthAssignmentTable
TsaAssignmentTable
注意 迷你埠驅動程式必須支援 ETS,才能支援 DCB 的 NDIS QoS。 不過,此旗標的設定不會指定網路介面卡是否支援 ETS。 相反地,此旗標的設定只會指定是否在網路介面卡上設定 ETS 參數。
NDIS_QOS_PARAMETERS_ETS_CHANGED
如果設定此旗標,下列成員中已變更一或多個 ETS 參數:
NumTrafficClasses
PriorityAssignmentTable
TcBandwidthAssignmentTable
TsaAssignmentTable
NDIS_QOS_PARAMETERS_PFC_CONFIGURED
如果設定此旗標,迷你埠驅動程式已使用 PfcEnable 成員中包含的 PFC 設定來設定網路介面卡。
注意 迷你埠驅動程式必須支援 PFC,才能支援 DCB 的 NDIS QoS。 此旗標的設定不會指定網路介面卡是否支援 PFC。 相反地,此旗標的設定只會指定是否在網路介面卡上啟用 PFC 參數。
NDIS_QOS_PARAMETERS_PFC_CHANGED
如果設定此旗標, PfcEnable 成員中已變更一或多個 PFC 設定。
NDIS_QOS_PARAMETERS_CLASSIFICATION_CONFIGURED
如果設定此旗標,迷你埠驅動程式已使用下列成員中指定的 QoS 流量分類參數來設定網路介面卡:
NumClassificationElements
ClassificationElementSize
FirstClassificationElementOffset
NDIS_QOS_PARAMETERS_CLASSIFICATION_CHANGED
如果設定此旗標,下列成員中已變更一或多個 QoS 流量分類參數:
NumClassificationElements
ClassificationElementSize
FirstClassificationElementOffset
注意如果NDIS_QOS_PARAMETERS結構包含 NDIS QoS 參數設定,則必須設定NDIS_QOS_PARAMETERS_Xxx_CONFIGURED旗標。 不論設定是否已變更,迷你埠驅動程式都必須設定這些旗標。 不過,驅動程式只能針對已變更的設定,設定 NDIS_QOS_PARAMETERS_Xxx_CHANGED 旗標。
指示無效遠端 NDIS QoS 參數的指導方針
如果下列條件成立,迷你埠驅動程式必須使其遠端 QoS 參數失效:
遠端 QoS 參數的存留時間 (TTL) 值到期。
注意 DCBX 會透過 IEEE 802.1AB-2005 標準中指定的 LLDP) 通訊協定 (LLDP 傳輸。 LLDP 畫面一律包含 TTL 欄位。
另一個資料連結對等會在 TTL 值到期之前傳送 DCBX 框架。 此案例稱為 多對等 條件。 DCBX 要求迷你埠驅動程式只會維護一組從單一資料連結對等接收的遠端 QoS 參數。
當發生多對等狀況時,迷你埠驅動程式必須使所有遠端 QoS 參數失效,直到所有接收的 DCBX 畫面格的 TTL 值到期為止。
當迷你埠驅動程式將其遠端 NDIS QoS 參數失效時,它必須在發出 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 狀態指示時遵循下列步驟:
因為迷你埠驅動程式未報告任何有效的遠端 NDIS QoS 參數,所以它必須先以零填入 NDIS_QOS_PARAMETERS 結構。
當迷你埠驅動程式初始化這個結構的Header成員時,它會將Header的Type成員設定為 NDIS_OBJECT_TYPE_QOS_PARAMETERS。 迷你埠驅動程式會將Header的Revision成員設定為 NDIS_QOS_PARAMETERS_REVISION_1,並將Size成員設定為 NDIS_SIZEOF_QOS_PARAMETERS_REVISION_1。
迷你埠驅動程式會在Flags成員中設定適當的NDIS_QOS_PARAMETERS_Xxx_CHANGED旗標。
迷你埠驅動程式會以下列方式初始化狀態指示 的NDIS_STATUS_INDICATION 結構:
StatusCode成員必須設定為 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE。
StatusBuffer成員必須設定為NDIS_QOS_PARAMETERS結構的位址。
StatusBufferSize成員必須設定為
sizeof(NDIS_QOS_PARAMETERS)
。
迷你埠驅動程式會呼叫 NdisMIndicateStatusEx來發出狀態指示。 驅動程式必須將指標傳遞給StatusIndication參數NDIS_STATUS_INDICATION結構。