共用方式為


來自實體網路介面卡的原始 NDIS 狀態指示

本主題討論可延伸交換器轉送延伸模組所使用的方法,以產生連線至交換器之網路介面卡的 NDIS 狀態指示。 擴充功能可能會為下列類型的介面卡產生 NDIS 狀態指示:

  • 系結至可延伸交換器 外部網路介面卡 的一或多個基礎實體介面卡。

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

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

  • 虛擬機器 (VM) 網路介面卡,該介面卡會在 Hyper-V 子磁碟分割內公開,並聯機到可延伸交換器埠。

下圖顯示 NDIS 6.40 (Windows Server 2012 R2) 和更新版本中實體和 VM 網路介面卡的 NDIS 狀態指示 Hyper-V 可延伸交換器控制路徑。

此圖顯示 NDIS 6.40 和更新版本實體和 VM 網路介面卡中 NDIS 狀態指示的 Hyper-V 可延伸交換器控制路徑。

下圖顯示 NDIS 6.30 (Windows Server 2012) 實體和 VM 網路介面卡之 NDIS 狀態指示的 Hyper-V 可延伸交換器控制路徑。

此圖顯示 NDIS 6.30 實體和 VM 網路介面卡中 NDIS 狀態指示的 Hyper-V 可延伸交換器控制路徑。

注意 在可延伸交換器介面中,NDIS 篩選驅動程式稱為 擴充 功能,驅動程式堆疊稱為 可延伸交換器驅動程式堆疊

轉送延伸模組可能源自封裝的硬體卸載狀態指示,以在可延伸交換器驅動程式堆疊中過度過度載入驅動程式。 這也可讓擴充功能變更系結至可延伸交換器外部網路介面卡之實體介面卡基礎小組目前的卸載功能。 當介面卡小組系結至外部網路介面卡時,只有小組的一般功能會公告給 NDIS 或過度通訊協定和篩選驅動程式。 擴充功能可以藉由原始封裝的狀態指示來擴充公告的功能,以公告小組中某些配接器所支援的功能。 例如,延伸模組可以發出封裝 的NDIS_STATUS_RECEIVE_FILTER_CURRENT_CAPABILITIES 指示,以變更整個小組目前啟用的接收篩選功能。

注意 只有轉送延伸模組可以產生封裝的狀態指示。 如需這類擴充功能的詳細資訊,請參閱 轉送延伸模組

一般而言,轉送延伸模組源自封裝的 NDIS 狀態指示,以變更基礎實體介面卡公告的硬體卸載功能。 例如,擴充功能可能會產生下列硬體卸載類型的狀態指示:

  • IPsec) (網際網路通訊協定安全性。

  • 虛擬機器佇列 (VMQ) 。

  • 單一根目錄 I/O 虛擬化 (SR-IOV)。

轉送延伸模組也可以源自封裝的 NDIS 狀態指示,以變更為 Hyper-V 子磁碟分割配置的硬體卸載資源。 從 NDIS 6.30 開始,擴充功能可以發出封裝 的NDIS_STATUS_SWITCH_PORT_REMOVE_VF 指示,以移除 VM 網路介面卡與 PCI Express (PCIe) 虛擬函式 (VF) 之間的系結。 VF 是由支援 單一根目錄 I/O 虛擬化 (SR-IOV) 介面的基礎實體網路介面卡所公開和支援。

如果轉送延伸模組源自基礎實體介面卡硬體卸載資源的封裝 NDIS 狀態指示,則必須以下列方式設定 NDIS_SWITCH_NIC_STATUS_INDICATION 結構的成員:

  • DestinationPortId成員必須設定為NDIS_SWITCH_DEFAULT_PORT_ID

  • DestinationNicIndex成員必須設定為NDIS_SWITCH_DEFAULT_NIC_INDEX

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

  • SourceNicIndex成員必須設定為NDIS_SWITCH_DEFAULT_NIC_INDEX。 這可讓狀態指示解譯為源自系結至外部網路介面卡的整個可延伸交換器小組。

    注意 如果只有單一實體網路介面卡系結至外部網路介面卡,轉送延伸模組也必須將此成員設定為 NDIS_SWITCH_DEFAULT_NIC_INDEX

  • StatusIndication成員必須設定為NDIS_STATUS_INDICATION結構的指標。 此結構包含封裝 NDIS 狀態指示的資料。

如果轉送延伸模組源自 Hyper-V 子磁碟分割硬體卸載資源的 NDIS 狀態指示,則必須以下列方式設定 NDIS_SWITCH_NIC_STATUS_INDICATION 結構的成員:

  • DestinationPortIdDestinationNicIndex成員必須設定為分割區所使用之網路連線之埠和網路介面卡索引的對應值。

  • SourcePortId成員必須設定為NDIS_SWITCH_DEFAULT_PORT_ID

  • SourceNicIndex成員必須設定為NDIS_SWITCH_DEFAULT_NIC_INDEX

  • StatusIndication成員必須設定為NDIS_STATUS_INDICATION結構的指標。 此結構包含封裝 NDIS 狀態指示的資料。

當擴充功能發出封裝的 NDIS 狀態指示時,必須遵循下列步驟:

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

    當擴充功能呼叫 ReferenceSwitchNic時,它會以下列方式設定參數:

    • 如果轉送延伸模組是基礎實體介面卡的封裝 NDIS 狀態指示,它會將 SwitchPortId 參數設定為 針對 SourcePortId 成員指定的值。 擴充功能也會將 SwitchNicIndex 參數設定為 針對 SourceNicIndex 成員指定的值。

    • 如果轉送延伸模組是 Hyper-V 子分割的 NDIS 狀態指示,它會將 SwitchPortId 參數設定為 DestinationPortId 成員所指定的值。 擴充功能也會將 SwitchNicIndex 參數設定為 DestinationNicIndex 成員所指定的值。

    注意 如果 ReferenceSwitchNic 未傳回NDIS_STATUS_SUCCESS,則無法發出封裝的 NDIS 狀態指示。

  2. 擴充功能會呼叫 NdisFIndicateStatus 來轉送封裝的狀態通知。

    注意如果延伸模組正在轉送已篩選的 OID 要求,則必須在其FilterStatus函式的呼叫內容中呼叫NdisFIndicateStatus

  3. 在 NdisFIndicateStatus傳回之後,擴充功能會呼叫DereferenceSwitchNic,以清除來源或目的地網路介面卡連線的參考計數器。 擴充功能會將 SwitchPortIdSwitchNicIndex 參數設定為呼叫 ReferenceSwitchNic時所使用的相同值。