共用方式為


將 OID 要求轉送至實體網路介面卡

本主題討論 Hyper-V 可延伸交換器延伸模組如何透過 Hyper-V 可延伸交換器控制路徑,轉送物件識別碼 (OID) 要求。 延伸模組也可以遵循本主題中所述的方法,對基礎實體網路介面卡產生 OID 要求。

例如,外部網路介面卡可以系結至 NDIS 多工器 (MUX) 中繼驅動程式的虛擬迷你埠邊緣。 MUX 驅動程式會系結至主機上一或多個實體網路的小組。 此設定稱為 可延伸交換器小組

在此設定中,可延伸交換器擴充功能會公開給小組中的每個網路介面卡。 這可讓擴充功能管理小組中個別網路介面卡的組態和使用。 例如,轉送延伸模組可以將傳出封包轉送至個別配接器,以支援透過小組的負載平衡容錯移轉 (LBFO) 解決方案。 管理可延伸交換器小組的轉送延伸模組稱為 小組提供者。 如需小組提供者的詳細資訊,請參閱 小組提供者延伸模組

下圖顯示 NDIS 6.40 (Windows Server 2012 R2) 及更新版本的可延伸交換器小組範例。

ndis 6.40 的 oid 控制路徑圖表。

下圖顯示 NDIS 6.30 (Windows Server 2012) 的可延伸交換器小組範例。

適用于 ndis 6.30 的可延伸交換器小組圖表。

注意 在 Hyper-V 可延伸交換器介面中,NDIS 篩選驅動程式稱為可延伸 交換器延伸模組 ,而驅動程式堆疊稱為 可延伸交換器驅動程式堆疊

必須封裝 OID 要求,才能將要求轉送至基礎實體網路介面卡。 OID 要求會先封裝在 NDIS_SWITCH_NIC_OID_REQUEST 結構內。 然後,OID 要求會透過 OID 集合要求 OID_SWITCH_NIC_REQUEST透過可延伸的交換器控制路徑轉送。

基礎實體介面卡的 OID 要求是由下列專案發出:

可延伸的交換器介面。
OID 要求,例如硬體卸載的要求,是由過度配置通訊協定或篩選在下列其中一個中執行的驅動程式所發出:

  • 在 Hyper-V 父資料分割中執行的管理作業系統。

  • 在 Hyper-V 子分割中執行的客體作業系統。

當可延伸交換器收到這些 OID 要求時,這些要求會透過可延伸的交換器控制路徑進行封裝和轉送。 當轉送延伸模組收到封裝的 OID 要求時,可以將要求轉送至基礎實體配接器。 這項功能特別適用于為硬體卸載設定可延伸交換器小組。

例如,MUX 驅動程式會公告整個可延伸交換器小組的通用功能。 不過,轉送延伸模組可以發出 OID 要求來查詢或設定小組內配接器的個別功能。 然後,轉送延伸模組可能會從外部網路介面卡產生 NDIS 狀態指示,以通知過度處理適用于整個小組的功能。 如需此程式的詳細資訊,請參閱 從實體網路介面卡產生 NDIS 狀態指示

當轉送延伸模組透過控制路徑轉送 OID 要求時,外部網路介面卡會收到它。 此時,OID 要求會解構並轉送至指定的實體網路介面卡。

注意從Windows Server 2012開始,只會以這種方式封裝和轉送硬體卸載 OID 要求。 例如,將虛擬機器佇列的 OID 要求卸載 (VMQ) 或網際網路通訊協定安全性 (IPsec) ,會透過可延伸的交換器控制路徑封裝和轉送。 如需詳細資訊,請參閱 管理硬體卸載實體網路介面卡的 OID 要求

轉送延伸模組。
轉送延伸模組可以源自自己的封裝 OID 要求,並將其轉送到基礎實體網路介面卡。 轉送延伸模組可以封裝標準 NDIS OID 要求。 轉送延伸模組也可以封裝獨立硬體廠商所定義的私人 OID 要求, (實體網路介面卡的 IHV) 。 這可讓 IHV 所開發的轉送延伸模組,在小組中的個別實體介面卡上啟用或停用專屬屬性。

此外,轉送延伸模組可能源自封裝的硬體卸載 OID 要求,以配置指定 Hyper-V 子分割的資源。 例如,轉送延伸模組可以源自 OID_RECEIVE_FILTER_ALLOCATE_QUEUE 的封裝 OID 要求,為指定的子分割配置 VMQ。 在此情況下,擴充功能會將要求封裝為源自與分割區相關聯的可延伸交換器埠和網路介面卡連線。

注意 如果轉送延伸模組正在篩選過度配置驅動程式所發出的相同 OID 要求,則轉送延伸模組只能產生自己的封裝硬體卸載 OID 要求。 在此情況下,延伸模組不得轉送原始的 OID 要求。 相反地,擴充功能必須呼叫 NdisFOidRequestComplete ,才能在 NDIS 呼叫其 FilterOidRequestComplete 來完成原始的 OID 要求時完成此要求。

篩選或擷取延伸模組
篩選或擷取延伸模組可能會源自自己的封裝 OID 查詢要求,並將其轉送到基礎實體網路介面卡。 這些延伸模組可以封裝由獨立硬體廠商所定義的標準 NDIS OID 查詢要求或私人 OID 查詢要求, (實體網路介面卡的 IHV) 。

注意 只有轉送延伸模組可以源自基礎實體介面卡的封裝 OID 集合要求。

轉送、重新導向或源自基礎實體介面卡的封裝 OID 要求時,轉送延伸模組必須遵循下列步驟:

  1. 如果轉送延伸模組是源自 OID 要求,則必須使用與要求相關的資訊,初始化延伸模組配置的 NDIS_OID_REQUEST 結構。

    如果延伸模組正轉送 OID 要求,它不得變更FilterOidRequest函式的 OidRequest參數所參考的現有NDIS_OID_REQUEST結構。 相反地,延伸模組必須呼叫 NdisAllocateCloneOidRequest ,為新的 NDIS_OID_REQUEST 結構配置記憶體,並從現有的 NDIS_OID_REQUEST 結構複製所有資訊。

  2. 延伸模組會將延伸模組配置 NDIS_SWITCH_NIC_OID_REQUEST 結構的成員設定為下列值:

    • DestinationPortId成員必須設定為外部網路介面卡所連線之可延伸交換器埠的識別碼。

    • DestinationNicIndex成員必須設定為基礎實體網路介面卡的非零索引值。

      如需這些索引值的詳細資訊,請參閱 網路介面卡索引值

    • 如果轉送延伸模組源自 Hyper-V 子分割的硬體卸載 OID 要求, 則 SourcePortId 成員必須設定為分割區所使用的埠識別碼。 此外, SourceNicIndex 成員必須設定為該埠之網路連線的網路介面卡索引。

      如果轉送延伸模組是針對自己的目的而產生標準或私人 OID 要求, 則 SourcePortIdSourceNicIndex 成員必須設定為零。

      如果轉送延伸模組正在轉送或重新導向硬體卸載 OID 要求,它必須保留可延伸交換器介面所設定 之 SourcePortIdSourceNicIndex 成員的值。

    • OidRequest成員必須設定為封裝 OID 要求的初始化NDIS_OID_REQUEST結構的指標。 轉送延伸模組會配置並初始化這個結構,或使用結構的複製複本。

  3. 延伸模組會將延伸模組配置 NDIS_OID_REQUEST 結構的成員設定為下列值:

    • Oid成員必須設定為OID_SWITCH_NIC_REQUEST

    • InformationBuffer成員必須包含緩衝區的指標,其中包含產生的或篩選的 OID 要求資料。

    • InformationBufferLength成員必須包含包含所產生或篩選 OID 要求資料的緩衝區長度,以位元組為單位。

    延伸模組會將其他成員設定為對 NDIS_OID_REQUEST 結構有效的值。

  4. 擴充功能會呼叫 ReferenceSwitchNic ,以遞增目的地實體網路介面卡索引的參考計數器。 這可確保可延伸交換器介面不會在參考計數器非零時刪除實體網路介面卡連線。

    當擴充功能呼叫 ReferenceSwitchNic時,它會將 SwitchPortId 參數設定為 DestinationPortId 成員所指定的值。 延伸模組也會將 SwitchNicIndex 參數設定為 DestinationNicIndex 成員指定的值。

    注意 如果 ReferenceSwitchNic 未傳回NDIS_STATUS_SUCCESS,則 OID 要求無法轉送至目的地實體網路介面卡。

  5. 如果轉送延伸模組源自 Hyper-V 子分割的硬體卸載 OID 要求,它也會呼叫 ReferenceSwitchNic 來遞增與分割區相關聯之來源網路介面卡連線索引的參考計數器。 這可確保可延伸交換器介面不會在參考計數器非零時刪除實體網路介面卡連線。

    當擴充功能呼叫 ReferenceSwitchNic時,它會將 SwitchPortId 參數設定為 SourcePortId 成員所指定的值。 延伸模組也會將 SwitchNicIndex 參數設定為 SourceNicIndex 成員所指定的值。

    注意 如果 ReferenceSwitchNic 未傳回NDIS_STATUS_SUCCESS,則 OID 要求無法轉送至目的地實體網路介面卡。

  6. 擴充功能會呼叫 NdisFOidRequest ,將封裝的 OID 要求轉送至指定的目的地可延伸交換器埠和網路介面卡。

    注意如果延伸模組正轉送篩選的 OID 要求,則必須在呼叫FilterOidRequest函式的內容中呼叫NdisFOidRequest。 如果延伸模組正在轉送產生的 OID 要求,則會在延伸模組處於執行中、重新開機暫停暫停狀態時呼叫NdisFIndicateStatus。 如需這些狀態的詳細資訊,請參閱 篩選模組狀態和作業

  7. 當 NDIS 呼叫 FilterOidRequestComplete 函式時,擴充功能會呼叫 DereferenceSwitchNic ,以清除目的地實體網路介面卡索引的參考計數器。

    如果轉送延伸模組源自 Hyper-V 子分割的硬體卸載 OID 要求,它也會呼叫 DereferenceSwitchNic ,以清除介面卡來源網路介面卡連線索引的參考計數器。

    在這兩種情況下,擴充功能會將 SwitchPortIdSwitchNicIndex 參數設定為呼叫 ReferenceSwitchNic時所使用的相同值。

如需擴充功能如何發出 OID 要求的詳細資訊,請參閱 從 NDIS 篩選驅動程式產生 OID 要求

如需 MUX 驅動程式的詳細資訊,請參閱 NDIS MUX 中繼驅動程式