SR-IOV 虛擬函式 (VFs)
PCI Express(PCIe)虛擬功能(VF)是在支援單根 I/O 虛擬化的網路介面卡上的輕量型 PCIe 功能(SR-IOV)。
VF 與網路適配器上的 PCIe 實體函式 (PF) 相關聯,並代表網路適配器的虛擬化實例。 每個 VF 都有自己的 PCI 組態空間。 每個 VF 也會與 PF 和其他 VF 共用網路適配器上的一或多個實體資源,例如外部網路埠。
VF 不是完整的PCIe裝置。 不過,它提供了一個基本機制,可以在 Hyper-V 子分割與基礎 SR-IOV 網路介面卡之間直接傳輸資料。 與數據傳輸相關聯的軟體資源直接可供 VF 使用,並與其他 VF 或 PF 隔離使用。 不過,大部分資源的組態是由在 Hyper-V 父分割區管理作系統中執行的 PF 迷你埠驅動程式所執行。
VF 會在客體操作系統中公開為虛擬網路適配器(VF 網路適配器),在 Hyper-V 子分割區中執行。 在 VF 與 SR-IOV 網路適配器的 NIC 交換器上的虛擬埠(VPort)相關聯之後,在 VM 中執行的虛擬PCI(VPCI)驅動程式會顯示 VF 網路適配器。 一旦被公開,客體作業系統中的 PnP 管理程式會載入 VF 小型埠驅動程式。
注意
Hyper-V 子分割也稱為 虛擬機 (VM)。
VF 迷你埠驅動程式是安裝在 VM 中以管理 VF 的 NDIS 迷你埠驅動程式。 VF 迷你埠驅動程式所執行的任何作業都不會影響相同網路適配器上的任何其他 VF 或 PF。
VF 迷你埠驅動程式可以像任何PCI設備驅動器一樣運作。 它可以讀取和寫入 VF 的 PCI 設定空間。 不過,虛擬 PCI 裝置的存取是特殊許可權作業,並以下列方式由 PF 迷你埠驅動程式管理:
當 VF 迷你埠驅動程式呼叫 NdisMGetBusData 以從 VF 網路適配器的 PCI 設定空間讀取數據時,會通知虛擬化堆疊。 此堆疊會在 Hyper-V 父分割區的管理作系統中執行。 當堆疊收到讀取要求的通知時,它會向 PF 迷你埠驅動程式發出 OID_SRIOV_READ_VF_CONFIG_SPACE 的物件識別碼 (OID) 方法要求。 要讀取的數據是在 OID 要求中包含的 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 結構中指定。
驅動程式會從 VF PCI 設定空間讀取要求的數據,並完成 OID 要求以傳回數據。 當呼叫 NdisMGetBusData 完成時,此數據會傳回至 VF 迷你埠驅動程式。
當 VF 迷你埠驅動程式呼叫 NdisMSetBusData 將數據寫入 VF 網路適配器的 PCI 組態空間時,虛擬化堆疊會收到寫入要求的通知。 它會向 PF 迷你埠驅動程式發出 OID 方法要求 OID_SRIOV_WRITE_VF_CONFIG_SPACE。 要寫入的數據是在 OID 要求中包含的 NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS 結構中指定。
驅動程式會將數據寫入 VF PCI 設定空間,並在完成 OID 要求時傳回要求的狀態。 此狀態在呼叫 NdisMSetBusData 完成 後,會傳回至 VF 迷你埠驅動程式。
VF 迷你埠驅動程式也可以與 PF 迷你埠驅動程序通訊。 此通訊路徑是透過反向通道介面。 如需詳細資訊,請參閱 SR-IOV PF/VF Backchannel Communication。
注意 VF 迷你埠驅動程式必須注意它正在虛擬化環境中執行,以便與 PF 迷你埠驅動程式通訊以進行特定作業。 如需驅動程式如何執行此動作的詳細資訊,請參閱 初始化 VF Miniport Driver。