指出遠端 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 狀態指示。
注意 Miniport 驅動程式不應該發出 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 狀態指示,如果遠端 NDIS QoS 參數沒有變更。 如果驅動程式確實發出這種類型的狀態指示,NDIS 可能不會將指示傳遞至上層驅動程式。
附注 迷你埠驅動程序必須發出 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 狀態指示,如果目前已啟用其 NDIS QoS 功能。 從 Windows Server 2012 開始,這些指示可讓系統管理員檢視 NDIS QoS 和數據中心橋接 (DCB) 設定,不論是否已安裝 Microsoft DCB 伺服器功能。
發出NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE狀態指示的指導方針
迷你埠驅動程式會在發出 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 狀態指示時,遵循下列步驟:
迷你埠驅動程式會配置足以包含下列大小的緩衝區:
NDIS_QOS_PARAMETERS 結構,其中包含 NDIS QoS 組態設定,以及 NDIS QoS 流量類別的全域作參數。
一個由 NDIS_QOS_CLASSIFICATION_ELEMENT 構成的結構陣列。 每個結構都會指定由封包數據模式所定義的流量分類(條件),以及相關聯的 IEEE 802.1p 優先順序層級(動作)。 如果網路適配器在傳輸中尋找模式,或 輸出、符合條件的封包,則會將相關聯的優先順序層級指派給封包。 適配卡也會根據優先順序層級,將其他 NDIS QoS 原則套用至封包。
迷你埠使用遠端 NDIS QoS 參數來初始化 NDIS_QOS_PARAMETERS 結構。 驅動程式必須提供從由遠端對等方傳送的 DCBX 框架中接收的完整遠端參數集。
當迷你埠驅動程式初始化 Header 成員時,會將 Type 成員 Header 設定為 NDIS_OBJECT_TYPE_QOS_PARAMETERS。 迷你埠驅動程式會將 Header 的 Revision 成員設定為 NDIS_QOS_PARAMETERS_REVISION_1,並將 Size 成員設定為 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 狀態指示中發生變更。
迷你埠驅動程式會設定 Flags 成員,以指定包含在 NDIS_QOS_PARAMETERS 結構成員中的數據狀態資訊。
例如,迷你埠驅動程式會在 Flags 成員中設定適當的 NDIS_QOS_PARAMETERS_Xxx_CHANGED 旗標,這些成員包含自迷你埠驅動程式先前發出 NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE 狀態指示後已變更的數據。
如需如何設定 旗標 成員的詳細資訊,請參閱設定 旗標 成員 的指導方針。
迷你埠驅動程式會針對遠端 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來發出狀態指示。 驅動程式必須將指標傳遞給具有 NDIS_STATUS_INDICATION 結構的 StatusIndication 參數。
設定旗標成員的指南
迷你埠驅動程式會在 Flags 成員的 NDIS_QOS_PARAMETERS 結構中設定下列旗標,以指定網路適配器上已配置或變更的作業性 NDIS QoS 參數:
NDIS_QOS_PARAMETERS_ETS_CONFIGURED
如果設定此旗標,迷你埠驅動程式已使用下列成員中包含的 ETS 參數來設定網路適配器:
NumTrafficClasses
優先級分配表
Tc頻寬分配表
TsaAssignmentTable
附注 迷你埠驅動程序必須支援ETS,才能支援DCB的NDIS QoS。 不過,此旗標的設定不會指定網路適配器是否支援ETS。 相反地,此旗標的設定只會指定是否要在網路適配器上設定ETS參數。
NDIS_QOS_PARAMETERS_ETS_CHANGED
如果設定此旗標,下列成員中已變更一或多個ETS 參數:
NumTrafficClasses
優先權分配表
TcBandwidthAssignmentTable
分配表
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
分類元素大小
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 框架一律包含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來發出狀態指示。 驅動程式必須將指標傳遞至 NDIS_STATUS_INDICATION 結構,然後將其傳遞至 StatusIndication 參數。