志凌海纳SmartX
作者志凌海纳SmartX·2023-10-24 10:30
其它·SmartX超融合

一文解读 SmartX 超融合虚拟化下的网络 I/O 虚拟化技术

字数 5149阅读 426评论 0赞 0

随着技术的不断发展,不少行业应用都对网络性能和隔离性有着越来越高的要求。例如:

  • 低延迟:一些期货行业用户选择在期货公司机房托管服务器并自行编写交易程序,以实现对市场波动的快速(微秒级)反应。尤其是在高频交易场景下,毫秒级甚至微秒级的延迟都可能对交易的最终受益带来较大影响。对于这些应用,降低网络延迟能够为业务价值带来显著提升。
  • 高带宽:科学计算、模拟和仿真等高性能计算工作负载通常涉及大规模数据的传输和处理。在科学研究、工程模拟、气象预测等领域,需要传输大量的数据;同时,高性能计算通常利用大规模的并行计算集群,其中包括数百甚至数千台计算节点。这些节点需要频繁地互相通信以同步计算结果、传递数据和协调计算任务。这些业务场景都需要高网络带宽来提升数据传输和整体计算效率。
    针对这些需求,网络 I/O 虚拟化技术可以优化网络资源、提升 I/O 性能,目前有三种主流实现方式:仿真(Emulation)、半虚拟化(Para-virtualiztion)和直通(Pass-through)。为了帮助用户更好地实现网络优化,SmartX 在全新发布的超融合软件 SMTX OS 5.1 版本中新增了 PCI 网卡直通的能力结合之前版本已经支持的 SR-IOV 直通功能和虚拟网卡,SmartX 超融合可为原生虚拟化 ELF 集群提供完整的网络 I/O 虚拟化技术支持能力。用户可根据自己在网络性能、隔离性和成本投入上的实际需求选择最合适的方案,实现期货交易、高性能计算等多种高网络要求场景的生产级使用。
    在本文中,我们将详细介绍 SmartX 超融合网络 I/O 虚拟化支持能力,并针对网卡在 PCI 直通和 SR-IOV 直通模式下的性能表现开展测试。

    SMTX OS 5.1 网络 I/O 虚拟化

    功能特性

    为了满足不同用户和应用场景需求,SMTX OS 5.1 新增了 PCI 网卡直通的功能。目前,对于 ELF 虚拟机,SMTX OS 支持虚拟网卡、SR-IOV 直通网卡、PCI 直通网卡三种网络设备。

  • 虚拟网卡:通过软件模拟物理网卡的功能,使得虚拟机可以与外部网络互联。
  • PCI 网卡直通:将主机上的网卡作为 PCI 直通网卡透传给虚拟机使用,该网卡由这台虚拟机独占。
  • SR-IOV 直通:将一个支持 SR-IOV 的物理网卡虚拟化出多个 VF (Virtual Function),作为 SR-IOV 直通网卡直接挂载给虚拟机使用,可实现多个虚拟机共享同一个物理网卡的通信能力。
    每个主机上可以使用不同型号的网卡*,每个虚拟机可挂载多种网络设备。
    *兼容列表见文末附录。
    01smartx-hci-pci.png

    01smartx-hci-pci.png

    虚拟网卡

    虚拟网卡是虚拟化环境中使用最广泛的网络适配器,除了帮助虚拟机与网络通信之外,虚拟网卡还通过网络隔离策略确保了不同虚拟机之间的网络流量隔离,并可结合虚拟交换机(VDS)和虚拟机网络创建复杂的虚拟网络拓扑。
    虚拟网卡具备相当优秀的灵活性和弹性:为虚拟机配置虚拟网卡后,可以根据需要再次修改配置,也可以通过克隆已有配置来加快新服务的部署速度;同时,由于消除了对硬件的依赖,虚拟机在快照和迁移时都可保留虚拟网卡的配置,可轻松将虚拟机迁移或重建至其他物理主机。
    尽管在大部分场景下,虚拟网卡的性能已经可以满足需要,但通过仿真(E1000 类型的虚拟网卡使用此技术)或者半虚拟化(例如 VIRTIO 类型的虚拟网卡)来模拟物理网卡都会带来额外的性能开销。另外,如果某些业务虚拟机对网络要求较高,在共享 VDS 或虚拟机网络时,这些比较大的流量都会挤占其他虚拟机的正常流量,造成网络性能分配的失衡。

    PCI 直通网卡

    网卡直通利用了 PCIe Pass-through 的技术,允许虚拟机直接访问并使用 SMTX OS 主机上的网卡。直通网卡具有良好的兼容性,可以支持大部分 Guest OS 和符合 PCIe 总线标准的网卡。同时,由于虚拟机操作系统绕过了虚拟化层,直接使用物理网卡,缩短了数据传输的路径,使得虚拟机可以获得接近物理机使用物理网卡的性能与完整的硬件特性。此外,虚拟机独享物理网卡也提供了更高级别的隔离性。
    然而,PCI 直通模式下,一张物理网卡不能同时直通给多个虚拟机使用,因此如果有多个虚拟机有通过直通网卡提升性能的需要时,需要保证主机上有多张物理网卡。另外,挂载了 PCI 直通网卡的虚拟机不支持 HA、热迁移等操作。

    SR-IOV 直通网卡

    SR-IOV (Single Root – I/O Virtualization) 是一种基于硬件的虚拟化解决方案,启用了 SR-IOV 能力的物理网卡*可被切分为多个 VF (Virtual Function) 并作为 SR-IOV 直通网卡被挂载给虚拟机使用,这允许了多台虚拟机共享一个物理网卡,在提升性能的同时兼顾性价比。用户可以按照实际的业务需求,为同一台虚拟机分配多个 SR-IOV 直通网卡。

  • 该功能要求物理网卡本身具备 SR-IOV 特性,且对于特定网卡需要在操作系统中安装驱动。

    适用场景

    02smartx-hci-pci.png

    02smartx-hci-pci.png

    配置方式

    PCI 直通

    03smartx-hci-pci.png

    03smartx-hci-pci.png

    1. 配置主机
    首先确保主机上要用于 PCI 直通的物理网卡符合 SMTX OS 兼容要求,详细型号可参考文末附录。
    登录 CloudTower,为要直通的物理网卡所在主机开启 IOMMU 支持,并需确保主机 BIOS 中也已启用 IOMMU,完成后重启 SMTX OS 主机。
    2. 配置网卡用途
    登录 CloudTower,将网卡用途置为 PCI 直通。
    3. 添加 PCI 直通网卡
    编辑指定虚拟机,选择对应的物理网卡作为 PCI 直通网卡添加到虚拟机上。

    SR-IOV 直通

    04smartx-hci-pci.png

    04smartx-hci-pci.png

    1. 配置主机
    首先确保主机上的要用于 SR-IOV 直通的物理网卡符合 SMTX OS 兼容要求,详细型号可参考文末附录。
    登录 CloudTower,为要直通的物理网卡所在主机开启 IOMMU 支持,并需确保主机 BIOS 中也已启用 IOMMU 和 SR-IOV,完成后重启 SMTX OS 主机。
    2. 配置网卡用途并切分 VF
    登录 CloudTower,将网卡用途置为 SR-IOV 直通;并根据实际需要和网卡的支持情况配置指定数量的 VF。
    3. 添加 SR-IOV 直通网卡
    编辑指定虚拟机,选择对应的物理网卡作为 SR-IOV 直通网卡添加到虚拟机上。
    4. 配置虚拟机
    根据物理网卡的型号与虚拟机的客户端操作系统,按需为虚拟机安装 VF 驱动。

    性能测试

    为了让读者直观感受 SMTX OS PCI 直通与 SR-IOV 直通能力,我们使用不同型号的网卡进行了性能测试。

    PCI 直通

    性能测试借助 netperf 和 iperf3 工具进行,对两种不同型号的网卡(Solarflare、Mellanox)展开 3 个场景的测试。测试结果以物理机到物理机(Host to Host)作为基准,通过对比挂载 PCI 直通网卡的虚拟机到虚拟机(VM to VM)、虚拟机到物理机(VM to Host)在不同测试场景下的吞吐量和延迟数据,分析得出使用 SMTX OS PCI 直通的效果。
    *硬件配置及测试工具见附录。

    测试数据

    05smartx-hci-pci.png

    05smartx-hci-pci.png

    将 PCI 物理网卡直通给虚拟机后,网卡在 TCP 协议下的吞吐量会有小幅度的降低;这是因为虚拟机需要与物理主机上的其他虚拟机和应用程序共享物理资源,而 KVM 虚拟化通常需要额外的计算能力来处理这些管理和调度资源的任务,从而增加了处理开销和网络延迟。
    06smartx-hci-pci.png
    06smartx-hci-pci.png

    将 PCI 物理网卡直通给虚拟机后,网卡在 UDP 协议下的吞吐量同样会有小幅度的降低;降低是因为虚拟机的网络栈必须绕过虚拟化层直接与物理网络适配器通信,使用 PCI 直通网络设备可能会引入额外的开销,例如中断处理和内存访问。
    07smartx-hci-pci.png
    07smartx-hci-pci.png

将 PCI 物理网卡直通给虚拟机后,网卡的延迟会有小幅提升;提升是因为虚拟机的网络栈必须绕过虚拟化层直接与物理网络适配器通信,使用 PCI 直通网络设备可能会引入额外的开销,例如中断处理和内存访问。这种开销的影响在 TCP 流量中更加明显,因为相对于 UDP 流量,TCP 流量往往涉及更频繁和更小的数据包。

测试结论

在 PCI 直通模式下,虚拟机可以直接访问物理网卡,但是这也会带来额外的开销,例如 DMA 编程、中断处理等,这些操作会消耗一定的 CPU 和内存资源。同时,虚拟化技术中多重层次的处理和转发也可能会导致网络吞吐量的降低。
但是,这样的额外开销占比非常小。因此,排除部分干扰因素,物理网卡使用 PCI 直通可以获得与物理网卡极接近的性能,完全能够满足虚拟机网络环境低延迟的需求。

SR-IOV 直通

为验证使用 SR-IOV 直通网卡能否获得与物理机接近的性能,我们使用 sfnettest 工具对不同型号网卡进行了性能测试。以物理机到物理机(Host to Host)、挂载 VIRTIO 网卡的虚拟机到虚拟机(VM to VM)的测试数据作为基准,通过对比挂载 SR-IOV 直通网卡的虚拟机到虚拟机(VM to VM)、虚拟机到物理机(VM to Host)在不同测试场景下的延迟数据,分析 SR-IOV 直通网卡的性能水平。
对于 Solarflare 和 Mellanox 网卡,结合了各自的加速方案,对比启用加速前后的数据。
*硬件配置及测试工具见附录。

测试数据

08smartx-hci-pci.png

08smartx-hci-pci.png

跨交换机的连接方式下,与基准测试中 Host to Host 的平均延迟 14.4 us 相比,使用 SR-IOV 直通网卡在不使用加速方案的情况下,在 VM to VM、VM to Host 场景下均可提供与物理机接近的性能。Mellanox 网卡结合加速方案,在各场景下均可进一步降低延迟至 2-3 us。
09smartx-hci-pci.png
09smartx-hci-pci.png

直连方式下,与基准测试中 VM to VM 使用 VIRTIO 网卡的平均延迟 63 us 相比,使用 SR-IOV 直通网卡在不使用加速方案的情况下,在 VM to VM 和 VM to Host 场景下均可大幅降低延迟。Solarflare 网卡结合加速方案,在各场景下还可进一步降低延迟至 2-3 us。
*期货公司一个交易订单的数据量大小通常为 64~128 个字节,本次测试均采用发包大小为 64 字节(size=64)的延迟平均值(mean)进行对比。

测试结论

在 SR-IOV 直通模式下,虚拟机可以直接访问物理网卡虚拟化出的 VF。排除部分额外开销带来的影响,虚拟机使用 SR-IOV 直通网卡相比于使用 VIRTIO 网卡可以大幅降低延迟,并获得与物理机极接近的延迟性能。结合加速方案, Solarflare 网卡和 Mellanox 网卡平均延迟还可以得到进一步降低。

《(一)虚拟化与存储》

《(二)管理与运维》

附录

SMTX OS 5.1 网卡兼容性列表

10smartx-hci-pci.png

10smartx-hci-pci.png

*对于 PCI 直通,此处仅列出了经过测试的网卡。

PCI 直通性能测试

硬件配置

11smartx-hci-pci.png

11smartx-hci-pci.png

12smartx-hci-pci.png
12smartx-hci-pci.png

测试工具

13smartx-hci-pci.png

13smartx-hci-pci.png

SR-IOV 直通性能测试

硬件配置

14smartx-hci-pci.png

14smartx-hci-pci.png

设备 1:Solarflare 测试物理机
15smartx-hci-pci.png
15smartx-hci-pci.png

设备 2:Mellanox 网卡测试物理机
16smartx-hci-pci.png
16smartx-hci-pci.png

测试工具

17smartx-hci-pci.png

17smartx-hci-pci.png

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广