管理硬體將 OID 要求卸載至實體網路介面卡
本主題討論 Hyper-V 可延伸交換器轉送延伸模組如何透過可延伸交換器控制路徑,管理基礎實體介面卡上硬體卸載技術的物件識別碼 (OID) 要求。
例如,外部網路介面卡可以系結至 NDIS 多工器 (MUX) 中繼驅動程式的虛擬迷你埠邊緣。 MUX 驅動程式會系結至主機上一或多個實體網路的小組。 此設定稱為 可延伸交換器小組。
在此設定中,可延伸交換器擴充功能會公開給小組中的每個網路介面卡。 這可讓擴充功能管理小組中個別網路介面卡的組態和使用。 例如,轉送延伸模組可以將傳出封包轉送至個別配接器,以支援透過小組的負載平衡容錯移轉 (LBFO) 解決方案。 管理可延伸交換器小組的轉送延伸模組稱為 小組提供者。 如需小組提供者的詳細資訊,請參閱 小組提供者延伸模組。
下圖顯示適用于 NDIS 6.40 (Windows Server 2012 R2) 及更新版本的可延伸交換器小組範例。
下圖顯示適用于 NDIS 6.30 (Windows Server 2012) 的可延伸交換器小組範例。
注意 在可延伸交換器介面中,NDIS 篩選驅動程式稱為 可延伸交換器延伸模組 ,而驅動程式堆疊稱為 可延伸交換器驅動程式堆疊。
藉由處理 OID_SWITCH_NIC_REQUEST的 OID 要求,轉送延伸模組可以參與硬體卸載的可延伸交換器小組設定。 例如,如果擴充功能管理可延伸交換器小組的實體網路介面卡,它可以將OID_SWITCH_NIC_REQUEST要求轉送到支援硬體卸載的實體介面卡。
NDIS 和過度配置通訊協定和篩選驅動程式可能會對基礎實體網路介面卡發出硬體卸載技術的 OID 要求。 當這些 OID 要求到達可延伸的交換器介面時,它會封裝 NDIS_SWITCH_NIC_OID_REQUEST內的 OID 要求。 然後,可延伸交換器的通訊協定邊緣會發出包含此結構的 OID 要求 OID_SWITCH_NIC_REQUEST 。
可延伸交換器介面會封裝下列硬體卸載技術的 OID:
網際網路通訊協定安全性 (IPsec) 卸載 (第 2 版)
下列 IPsec OID 要求會封裝:
轉送延伸模組不得失敗或 veto這些 OID 要求。
如需 IPsec 硬體卸載技術第 2 版的詳細資訊,請參閱 IPsec 卸載第 2 版。
單一根 I/O 虛擬化 (SR-IOV)
下列 SR-IOV OID 要求會封裝:
轉送延伸模組可以透過NDIS_STATUS_SUCCESS以外的狀態碼來完成要求,以OID_NIC_SWITCH_ALLOCATE_VF和OID_NIC_SWITCH_CREATE_VPORT的 OID 要求。 不過,此延伸模組不得具有其他 SR-IOV OID 要求。
如需 SR-IOV 硬體卸載技術的詳細資訊,請參閱 單一根目錄 I/O 虛擬化 (SR-IOV) 。
轉送延伸模組可以透過NDIS_STATUS_SUCCESS以外的狀態碼來完成要求 , 以OID_RECEIVE_FILTER_ALLOCATE_QUEUE和 OID_RECEIVE_FILTER_SET_FILTER 的 OID 要求。 不過,擴充功能不得已移至其他 VMQ OID 要求。
如需 VMQ 硬體卸載技術的詳細資訊,請參閱 虛擬機器佇列 (VMQ) 。
轉送延伸模組必須遵循下列指導方針來處理硬體卸載 OID 要求:
Microsoft IM 平臺只會公告整體小組的常見卸載功能。 不過,延伸模組可以產生 OID 要求,以查詢小組中每個配接器的功能。
一旦延伸模組決定小組中實體介面卡的硬體功能之後,就可以將硬體卸載的 OID 設定要求轉送至最適合卸載的介面卡。
所有硬體卸載源自過度通訊協定或篩選驅動程式的 OID 要求,都會封裝在 NDIS_SWITCH_NIC_OID_REQUEST 結構內。 所有硬體卸載源自轉送延伸模組的 OID 要求,也必須封裝在 NDIS_SWITCH_NIC_OID_REQUEST 結構中。
此延伸模組會透過 OID_SWITCH_NIC_REQUEST的 OID 集合要求,將封裝的 OID 要求轉送至基礎實體網路介面卡。 如需此程式的詳細資訊,請參閱 將 OID 要求轉送至實體網路介面卡。
延伸模組不得修改或失敗硬體卸載 OID 要求,以清除、釋放或完成卸載資源的配置。 例如,擴充功能不得失敗 OID_RECEIVE_FILTER_CLEAR_FILTER 或 OID_NIC_SWITCH_DELETE_VPORT的 OID 要求。 可延伸的交換器介面必須處理這些 OID 要求,才能清除這些資源的狀態資訊。
擴充功能可以修改或失敗硬體卸載 OID 要求,以配置、移動或設定卸載資源。 例如,擴充功能可能會失敗或修改 OID_NIC_SWITCH_ALLOCATE_VF 或 OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA的 OID 要求。
此延伸模組可能會產生任何硬體卸載 OID 到基礎實體網路介面卡。 不過,延伸模組不得源自硬體卸載 OID,以清除或釋放延伸模組未配置的卸載資源。
例如 ,如果擴充 功能不是同一個佇列的 OID_RECEIVE_FILTER_ALLOCATE_QUEUE 要求,則延伸模組不得產生OID_RECEIVE_FILTER_FREE_QUEUE的硬體卸載 OID 要求。
注意 如果擴充功能是篩選過度驅動程式所發出的相同 OID 要求,則擴充功能只能產生它自己的封裝硬體卸載 OID 要求。 在此情況下,延伸模組不得轉送原始的 OID 要求。 相反地,擴充功能必須呼叫 NdisFOidRequestComplete ,才能在 NDIS 呼叫其 FilterOidRequestComplete 來完成原始的 OID 要求時完成此要求。
如果延伸模組將硬體卸載 OID 要求轉送至基礎實體網路介面卡,則NDIS_SWITCH_NIC_OID_REQUEST結構的DestinationNicIndex成員必須設定為介面卡的非零索引值。 如需這些索引值的詳細資訊,請參閱 網路介面卡索引值。
此外, DestinationPortId 成員必須設定為外部網路介面卡所連線之可延伸交換器埠的識別碼。
如果延伸模組源自硬體卸載 OID 要求來配置 Hyper-V 子分割的資源,則NDIS_SWITCH_NIC_OID_REQUEST結構的SourcePortId成員必須設定為分割區所連接的可延伸交換器埠識別碼。
SourceNicIndex成員必須設定為NDIS_SWITCH_DEFAULT_NIC_INDEX。
當擴充功能呼叫 NdisFOidRequest 來轉送 OID 要求時,它必須將 OidRequest 參數設定為 OID_SWITCH_NIC_REQUEST OID 要求的 NDIS_OID_REQUEST 結構的指標。
如需擴充功能如何篩選 OID 要求的詳細資訊,請參閱 篩選 NDIS 篩選驅動程式中的 OID 要求。
如需 MUX 驅動程式的詳細資訊,請參閱 NDIS MUX 中繼驅動程式。