一、网络I/O虚拟化
目前主流的网络 I/O 虚拟化技术有三种:软件模拟、网卡直通和 SR-IOV。
1)软件模拟是通过虚拟化 Hypervisor 层模拟虚拟网卡,实现与物理设备完全一样的接口,其最大的缺点是性能相对较差。
2)网卡直通支持虚拟机绕过 Hypervisor层,直接访问物理 I/O 设备,具有最高的性能,但是,在同一时刻,物理 I/O 设备只能被一个虚拟机独享。
3)SR-IOV将一个PCIe的网络控制器虚拟化成多个PCIe设备,并且每个设备可以直接分配给一个虚拟机,允许在虚拟机之间高效共享 PCIe设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O 性能。
二、SR-IOV
1.重要概念
1) PFs(Physical Functions,物理功能):物理网卡所支持的一项 PCI 功能,一个 PF 可以扩 展出若干个 VF。
2) VFs(Virtual Functions,虚拟功能):支持 SR-IOV 的物理网卡虚拟出来的实例,以一个独立网卡的形式呈现,每个VF有独立的PCI配置区域,并可以与其它VF共享同一个物理资源 (共用同一个物理网口)。
一旦在 PF 中启用了 SR-IOV,就可以通过 PF的总线、设备和功能编号(路由 ID)访问各个 VF的 PCIe配置空间。每个 VF都具有一个 PCIe内存空间,用于映射其寄存器集。VF 设备驱动程序对寄存器集进行操作以启用其功能,并且显示为实际存在的 PCIe 设备。创建 VF 后,可以直接将其指定给 I/O 来宾域或各个应用程序。此功能使得虚拟功能可以共享物理设备,并在没有 CPU和虚拟机 管理程序软件开销的情况下执行 I/O。
由此可见,SR-IOV 网卡通过将 SR-IOV 功能集成到物理网卡上,将单一的物理网卡虚拟成多个 VF 接口,每个VF接口都有单独的虚拟 PCIe 通道,这些虚拟的 PCIe通道共用物理网卡的 PCIe通道。 每个虚拟机可占用一个或多个 VF 接口,这样虚拟机就可以直接访问自己的 VF 接口,而不需要 Hypervisor的协调干预,从而大幅提升网络吞吐性能。
2.使用限制
1) SR-IOV 特性需要物理网卡硬件支持。
2) CPU必须支持并开启 I/O 内存管理单元(IOMMU)功能, 比如英特尔的 VT-d 或者AMD的 AMD-Vi。
3)VF驱动程序必须与物理网卡兼容,必须安装在虚拟机操作系统内。
4)支持SR-IOV的网卡必须插在总线带宽X8以上的扩展槽中。