虚拟化技术经过多年的发展,其CPU虚拟化和内存虚拟化均已成熟,但I/O虚拟化技术却变化不大。INTEL公司提出的SR-IOV技术通过在硬件层增加虚拟支持,极大的提高了物理设备的使用效率和I/O性能。

    

     SR-IOV 技术标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O 性能。SR-IOV 规范定义了新的标准,根据该标准创建的新设备可允许将虚拟机直接连接到 I/O 设备。


     通 过 SR-IOV,一个 PCIe 设备不仅可以导出多个 PCI 物理功能,还可以导出共享该 I/O 设备上的资源的一组虚拟功能。这个简化的服务器虚拟化架构如下图所示。

服务器上基于SR-IOV的IO虚拟化技术解读_第1张图片


在这个模型中,不需要任何透传,因为虚拟化在终端设备上发生,从而允许管理程序简单地将虚拟功能映射到 VM 上以实现本机设备性能和隔离安全。


    SR-IOV技术的目标是在绕过虚拟机参与数据迁移过程中实施标准化,为每个虚拟机提供独立内存空间、中断和Direct Memory Access (DMA)流。SR-IOV架构的设计允许一个I/O设备支持多个虚拟功能,同时将每个功能的硬件成本降至最低。SRIOV引入了两个新的功能类型:

    

  • 物理功能 (Physical Function, PF)

    用于支持 SR-IOV 功能的 PCI 功能,如 SR-IOV 规范中定义。PF 包含 SR-IOV 功能结构,用于管理 SR-IOV 功能。PF 是全功能的 PCIe 功能,可以像其他任何 PCIe 设备一样进行发现、管理和处理。PF 拥有完全配置资源,可以用于配置或控制 PCIe 设备。

  • 虚拟功能 (Virtual Function, VF)

    与物理功能关联的一种功能。VF 是一种轻量级 PCIe 功能,可以与物理功能以及与同一物理功能关联的其他 VF 共享一个或多个物理资源。VF 仅允许拥有用于其自身行为的配置资源。

每个 SR-IOV 设备都可有一个物理功能 (Physical Function, PF),并且每个 PF 最多可有 64,000 个与其关联的虚拟功能 (Virtual Function, VF)。PF 可以通过寄存器创建 VF,这些寄存器设计有专用于此目的的属性。

一旦在 PF 中启用了 SR-IOV,就可以通过 PF 的总线、设备和功能编号(路由 ID)访问各个 VF 的 PCI 配置空间。每个 VF 都具有一个 PCI 内存空间,用于映射其寄存器集。VF 设备驱动程序对寄存器集进行操作以启用其功能,并且显示为实际存在的 PCI 设备。创建 VF 后,可以直接将其指定给 IO 来宾域或各个应用程序(如裸机平台上的 Oracle Solaris Zones)。此功能使得虚拟功能可以共享物理设备,并在没有 CPU 和虚拟机管理程序软件开销的情况下执行 I/O。

    

     同时,我们看到虚拟化技术正从根本上转变数据中心,将网络接入层转移到服务器中。除了对I/O设备进行虚拟化,使它们可以由虚拟机共享外,系统管理程序必然地成了基于软件的以太网交换机,为虚拟机提供网络服务,占用了大量CPU周期并阻碍着虚拟化可扩展性和性能。即使采用最强大的处理器,使用16 Gbps光纤通道,速度为10 GbE时,系统管理程序也不能跟上I/O需求,最终导致线速性能根本不可能实现。

     服务器上基于SR-IOV的IO虚拟化技术解读_第2张图片

     通过实施Virtual Machine Optimized Ports(VMOP),Brocade 1860网络适配器利用VMware NetQueue和Microsoft VMQ等系统管理程序(hypervisor)多队列技术,来将入站网络数据包分类等任务从系统管理系统卸载到适配器上,从而节约CPU资源,实现线速性能。


    Brocade 1860网络适配器还支持博科的虚拟Fabric Link(vFLink)技术。这种技术可以将单一适配器分为最多8个虚拟适配器,而这些虚拟适配器可以配置为虚拟HBA(vHBA,用于光纤通道或FCoE)或虚拟NIC(vNIC,用于以太网)。这一操作在PCIe总线级别通过多种物理功能(Physical Function,PF)在硬件中实现;在操作系统级别,这些虚拟适配器看起来就像独立的物理设备。带宽能够以100 Mbps的增量分配给这些虚拟Fabric链路,光纤通道和以太网分别最多可分配到16 Gbps或10 Gbps的带宽。这有助于避免虚拟环境中适配器的迅速增长,同时可实现不同网络的全面管理隔离和微调,包括生产、备份、管理或实时迁移。

      同时SR-IOV利用PCIe虚拟功能(Virtual Functions,VF)——分配给虚拟机的轻量PCI功能,同时由系统管理程序负责控制基础PF。SR-IOV允许虚拟机高效地共享I/O设备,而直接I/O可提高性能。


SR-IOV 的优点

具有 SR-IOV 功能的设备可以利用以下优点:

  • 性能-从虚拟机环境直接访问硬件。

  • 成本降低-节省的资本和运营开销包括:

    • 节能

    • 减少了适配器数量

    • 简化了布线

    • 减少了交换机端口


VSphere与SR-IOV技术:

要使用 SR-IOV 所需支持的配置

组件

要求

vSphere


配备 Intel 处理器的主机需要使用 ESXi 5.1 或更高版本。

配备 AMD 处理器的主机不受 SR-IOV 支持。

物理主机


必须与 ESXi 版本兼容。

必须配备 Intel 处理器。

不得配备 AMD 处理器。

必须支持输入/输出内存管理单元 (IOMMU),并且必须在 BIOS 中启用 IOMMU。

必须支持 SR-IOV,并且必须在 BIOS 中启用 SR-IOV。请联系服务器供应商以确定主机是否支持 SR-IOV。

物理网卡


必须与 ESXi 版本兼容。

根据服务器供应商提供的技术文档,必须支持用于主机和 SR-IOV。

必须在固件中启用 SR-IOV。

对于物理网卡,在 ESXi 中使用 PF 驱动程序


必须经过 VMware 的认证。

必须安装在 ESXi 主机上。对于某些网卡,ESXi 版本提供默认驱动程序,而对于其他网卡,必须下载并手动安装驱动程序。

客户机操作系统


Red Hat Enterprise Linux 6.x

Windows Server 2008 R2 with SP2

客户机操作系统中使用 VF 驱动程序


必须与网卡兼容。

根据网卡供应商提供的技术文档,必须受客户机操作系统版本的支持。

必须由 Microsoft WLK 或 WHCK 针对 Windows 虚拟机进行认证。

必须安装在操作系统中。对于某些网卡,操作系统版本中包含默认驱动程序,而对于其他网卡,则必须从网卡或主机供应商提供的位置下载并安装驱动程序。


注:以下功能对配置了 SR-IOV 的虚拟机不可用:


vMotion

Storage vMotion

vShield

Netflow

虚拟线缆

High Availability

Fault Tolerance

DRS

DPM

挂起和恢复

快照

用于直通虚拟功能的基于 MAC 的 VLAN

热添加和删除虚拟设备、内存和 vCPU

加入到群集环境


问题:

受支持的网卡

配置了 SR-IOV 的虚拟机支持以下网卡:所有网卡必须具有支持 SR-IOV 的驱动程序和固件。某些网卡可能需要在固件上启用 SR-IOV。



从 vSphere 的较早版本升级

如果从 vSphere 5.0 或更早的版本升级到 vSphere 5.1 或更高的版本,则在为 vSphere 版本更新网卡驱动程序之前,无法取得 SR-IOV 支持。网卡必须具备支持已启用 SR-IOV 的固件和驱动程序,SR-IOV 功能才能运行。