SR-IOV 虛擬函式 (VFs)
PCI Express (PCIe) Virtual Function (VF) 是網路介面卡上的輕量型 PCIe 函式,可支援單一根目錄 I/O 虛擬化 (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 () 驅動程式會公開 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) 方法 OID_SRIOV_READ_VF_CONFIG_SPACE 要求。 要讀取的資料是在 OID 要求中包含的 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 結構中指定。
驅動程式會從 VF PCI 設定空間讀取所要求的資料,並藉由完成 OID 要求傳回資料。 當呼叫 NdisMGetBusData 完成時,此資料會傳回至 VF 迷你埠驅動程式。
當 VF 迷你埠驅動程式呼叫 NdisMSetBusData 將資料寫入 VF 網路介面卡的 PCI 設定空間時,虛擬化堆疊會收到寫入要求的通知。 它會向 PF 迷你埠驅動程式發出 OID_SRIOV_WRITE_VF_CONFIG_SPACE 的 OID 方法要求。 要寫入的資料是在 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 驅動程式。