NDIS_STATUS_SWITCH_PORT_REMOVE_VF
NDIS_STATUS_SWITCH_PORT_REMOVE_VF狀態指示是由 Hyper-V 可延伸交換器轉送擴充功能發出,以移除虛擬機器 (VM) 網路介面卡與 PCI Express (PCIe) 虛擬函式 (VF) 之間的系結。 VF 是由支援單一根目錄 I/O 虛擬化 (SR-IOV) 介面的基礎實體網路介面卡所公開和支援。
若要發出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 狀態指示,轉送延伸模組必須在 NDIS_SWITCH_NIC_STATUS_INDICATION 結構中封裝指示,併發出 NDIS_STATUS_SWITCH_NIC_STATUS 狀態指示。
如需此程式的詳細資訊,請參閱 發出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 狀態指示的指導方針。
備註
PCIe VF 是由支援 SR-IOV 介面的基礎實體介面卡所建立和配置。 建立之後,虛擬化堆疊會將 VF 附加或 指派給 Hyper-V 子分割區。 在此分割區中執行的客體作業系統會公開虛擬機器 (VM) 系結至基礎 SR-IOV 實體介面卡 VF 的網路介面卡。
指派虛擬和實體網路介面卡之後,封包會直接在 VF 和 VM 網路介面卡之間路由傳送。 不過,由於可延伸交換器未涉及封包傳遞,因此可延伸交換器埠原則不會套用至這些封包。 這包括存取控制清單的埠原則, (ACL) 和服務品質 (QoS) 。
可延伸交換器轉送延伸模組可以發出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 狀態指示,移除 VF 指派給子分割區。 此指示會導致封包透過可延伸交換器埠傳遞,而不是直接在 VM 網路介面卡與基礎 SR-IOV 實體介面卡的 VF 之間傳遞。 這可讓可延伸交換器埠原則套用至透過可延伸交換器埠接收或傳送的封包。
當轉送擴充功能發出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 狀態指示時,它會指定 VM 網路介面卡所連線的可延伸交換器埠。
如需可延伸交換器轉送延伸模組的詳細資訊,請參閱 轉送延伸模組。
發出NDIS_STATUS_SWITCH_PORT_REMOVE_VF狀態指示的指導方針
若要發出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 狀態指示,轉送延伸模組必須遵循下列步驟:
轉送延伸模組會初始化 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 指示 的NDIS_STATUS_INDICATION 結構。 針對此指示,轉送延伸模組會設定 NDIS_STATUS_INDICATION 結構的下列成員:
StatusCode成員必須設定為NDIS_STATUS_SWITCH_PORT_REMOVE_VF。
StatusBuffer成員必須設定為Null。
StatusBufferSize必須設定為零。
轉送延伸模組會初始化 NDIS_SWITCH_NIC_STATUS_INDICATION 結構。 若要移除 VF 指派,轉送延伸模組必須以下列方式設定成員:
DestinationPortId成員必須設定為 VM 網路介面卡所連接的可延伸交換器埠識別碼。
DestinationNicIndex成員必須設定為連線至指定埠之 VM 網路介面卡的索引值。
SourcePortId成員必須設定為NDIS_SWITCH_DEFAULT_PORT_ID。
SourceNicIndex成員必須設定為NDIS_SWITCH_DEFAULT_NIC_INDEX。
StatusIndication成員必須設定為NDIS_STATUS_SWITCH_PORT_REMOVE_VF指示NDIS_STATUS_INDICATION結構的位址。
轉送延伸模組會初始化 NDIS_SWITCH_NIC_STATUS_INDICATION 指示 的NDIS_STATUS_INDICATION 結構。 針對此指示,轉送延伸模組會設定 NDIS_STATUS_INDICATION 結構的下列成員:
StatusCode成員必須設定為NDIS_STATUS_SWITCH_NIC_STATUS。
StatusBuffer成員必須設定為NDIS_SWITCH_NIC_STATUS_INDICATION結構的位址。
StatusBufferSize必須設定為NDIS_SWITCH_NIC_STATUS_INDICATION結構的長度,以及NDIS_STATUS_SWITCH_PORT_REMOVE_VF指示的NDIS_STATUS_INDICATION結構。
轉送延伸模組必須呼叫 ReferenceSwitchNic ,以遞增 VM 網路介面卡的參考計數器。 如果 ReferenceSwitchNic 未完成NDIS_STATUS_SUCCESS,轉送延伸模組不得轉送狀態指示。
注意 如果轉送延伸模組已收到 VM 介面卡 的OID_SWITCH_NIC_DISCONNECT 設定要求,則不得呼叫 ReferenceSwitchNic ,也不會轉寄狀態指示。
轉送延伸模組會呼叫 NdisFIndicateStatus ,將 NDIS_STATUS_INDICATION 轉送到可延伸交換器驅動程式堆疊中的過度擴充功能。 當轉送延伸模組呼叫此函式時,它會將StatusIndication參數設定為NDIS_STATUS_SWITCH_NIC_STATUS指示NDIS_STATUS_INDICATION結構的指標。
在 NdisFIndicateStatus傳回之後,轉送延伸模組必須呼叫DereferenceSwitchNic,以遞減 VM 網路介面卡的參考計數器。
注意 轉送延伸模組必須針對正在移除轉送延伸模組的每個 VF 指派遵循先前的步驟。
如需轉送延伸模組如何轉送狀態指示的詳細資訊,請參閱 篩選模組狀態指示。
判斷 VF 指派的指導方針
轉送延伸模組可以藉由發出 OID_SWITCH_NIC_ARRAY的 OID 查詢要求,列舉虛擬網路介面卡目前的 VF 指派。 此要求會傳回 包含 NDIS_SWITCH_NIC_PARAMETERS結構陣列 的NDIS_SWITCH_NIC_ARRAY 結構。 每個 NDIS_SWITCH_NIC_PARAMETERS 結構都會指定在下列其中一個環境中公開的網路介面卡參數:
在 Hyper-V 父分割區中執行的管理作業系統。
此作業系統中公開的網路介面卡會以NdisSwitchNicTypeExternal或NdisSwitchNicTypeInternal的NDIS_SWITCH_NIC_TYPE列舉值來指定。
在 Hyper-V 子分割中執行的客體作業系統。
此作業系統中公開的網路介面卡會以 NDIS_SWITCH_NIC_TYPE NdisSwitchNicTypeSynthetic或NdisSwitchNicTypeEmulated的列舉值來指定。
如果 OID_SWITCH_NIC_ARRAY 的 OID 查詢要求以狀態NDIS_STATUS_SUCCESS完成,轉送延伸模組可以檢查傳回陣列中的每個 NDIS_SWITCH_NIC_PARAMETERS 結構來判斷 VF 指派。 如果NDIS_SWITCH_NIC_PARAMETERS結構的VFAssigned成員設定為TRUE,則會將對應至NDIS_SWITCH_NIC_PARAMETERS結構的網路介面卡指派給 VF。
轉送延伸模組可以發出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 狀態指示來移除指派。 在此情況下,轉送延伸模組必須將NDIS_SWITCH_NIC_STATUS_INDICATION的DestinationPortId成員設定為NDIS_SWITCH_NIC_PARAMETERS結構的PortId成員值。
如需如何發出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 狀態指示的詳細資訊,請參閱 發出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 狀態指示的指導方針。
規格需求
版本 |
NDIS 6.30 和更新版本支援。 |
標頭 |
Ndis.h (包含 Ndis.h) |