管理硬體將 OID 要求卸載至實體網路介面卡
本主題討論 Hyper-V 可擴展交換器轉發擴展如何透過可擴展交換器控制路徑來管理基礎實體網路卡上硬體卸載技術的物件識別碼 (OID) 要求。
例如,外部網路適配器可以系結至 NDIS 多任務器 (MUX) 中繼驅動程式的虛擬迷你埠邊緣。 MUX 驅動程式綁定至主機上由一個或多個實體網路組成的群組。 這個設定稱為 可延伸交換器小組。
在此設定中,可延伸交換器擴充功能會公開給小組中的每個網路適配器。 這可讓擴充功能管理小組中個別網路適配器的設定和使用。 例如,轉送延伸模組可以藉由將傳出封包轉送至個別配接器,為小組提供負載平衡故障轉移 (LBFO) 解決方案的支援。 管理可延伸交換器小組的轉送延伸模組稱為 小組提供者。 如需有關團隊提供者的詳細資訊,請參閱 Teaming Provider Extensions。
下圖顯示 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 要求到達可延伸交換器介面時,它會將 OID 要求封裝在 NDIS_SWITCH_NIC_OID_REQUEST內。 然後,可延伸交換器的通訊協定邊緣會發出包含此結構的 OID_SWITCH_NIC_REQUEST OID 要求。
擴充性交換介面會封裝下列硬體卸載技術的 OID:
網際網路通訊協定安全性(IPsec)卸載處理(版本 2)
下列 IPsec OID 要求已封裝:
轉送延伸模組不得失敗,否則這些 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 要求。 相反地,當 NDIS 呼叫其 FilterOidRequestComplete 以完成發起的 OID 請求時,擴充功能必須呼叫 NdisFOidRequestComplete 來完成此請求。
如果擴充功能將硬體卸載 OID 要求轉送至基礎實體網路介面卡,DestinationNicIndexNDIS_SWITCH_NIC_OID_REQUEST 結構的成員必須設定為介面卡的非零索引值。 如需這些索引值的詳細資訊,請參閱 網路適配器索引值。
此外,DestinationPortId 成員必須設定為外部網路適配器所連接的可延伸交換器埠標識碼。
如果擴充功能是源自硬體卸載 OID 要求,以為 Hyper-V 子分割配置資源,則 SourcePortId 成員的 NDIS_SWITCH_NIC_OID_REQUEST 結構必須設定為分割區所連接的可延伸交換器埠的標識符。
SourceNicIndex 成員必須設定為 NDIS_SWITCH_DEFAULT_NIC_INDEX。
當擴充功能呼叫 NdisFOidRequest 以轉送 OID 要求時,必須將 OidRequest 參數設定為指向 NDIS_OID_REQUEST 結構的指標,以便處理 OID_SWITCH_NIC_REQUEST OID 要求。
如需延伸模組如何篩選 OID 要求的詳細資訊,請參閱 NDIS 篩選驅動程式中的 OID 要求。
如需 MUX 驅動程式的詳細資訊,請參閱 NDIS MUX 中繼驅動程式。