从写下第一行代码开始,云轴科技ZStack 始终秉持着 4S (Simple、Strong、Scalable、Smart) 的产品理念,这样的思想同样体现在 ZStack 虚拟网络方案上。
Linux Bridge 网络架构简单可靠,且能满足绝大部分应用场景,长久以来都是 ZStack 平台默认的方案。但随着云轴科技 ZStack 客户体量不断增长,默认的网络方案逐渐无法满足部分客户的需求。为了应对需求的变化,云轴科技 ZStack 先后推出了 SR-IOV 方案和高性能网络方案。
01 ZStack 网络方案
1.1 主流网络方案
目前主流的网络方案分为两大类:
以 Linux Bridge 为基础,使用 Linux 内核协议栈,架构简单且稳定可靠,也是 ZStack 平台默认的网络方案;
以 OVS 为基础,采用虚拟交换机的形式,支持 OpenFlow 协议,自由灵活,搭配 DPDK 可获得不俗的性能,ZStack 高性能网络方案就是以 OVS-DPDK 基础实现的。
两种方案各有千秋,选择合适的应用场景才能发挥最佳的作用。本文将介绍 ZStack 平台支持的 4 类网络方案,并通过测试对比其性能差异。
1.1.1 Linux Bridge 方案:功能性较好,但网络性能一般
以 Linux Bridge 为基础,集成多项网络服务,使用通用的 virtio 驱动,稳定可靠,具体如下图所示:
图1 Linux Bridge网络方案
该方案理论性能一般,满足通用场景,功能性较好,支持热迁移和多项网络服务。
1.1.2 SR-IOV 方案:网络性能较好,但功能性较差
SR-IOV 是 PCIe 协议的扩展,它允许设备,例如网卡,将对其资源的访问划分成多个 PCIe functions。ZStack 通过 pci-passthrough 将 VFs (virtual functions) 透传到虚拟机中,以达到最佳的网络性能,具体方案如图2所示:
图2 SR-IOV网络方案
该方案理论上拥有最佳的网络性能,但是功能性较差,例如:要求网卡支持 SR-IOV、无法热迁移、受限于 VFs 数量等。
1.2 ZStack高性能网络方案
云轴科技ZStack 推出的高性能网络方案以 OVS-DPDK 为基础,主要有以下两种实现方式:
1.2.1 dpdkvhostuser 方案:以消耗CPU资源实现高性能
采用标准的 OVS-DPDK 方案,以消耗 CPU 资源为代价换取优秀的网络性能;目前支持 Intel x710 系列以及 mellanox cx-5/cx6 网卡。方案如下图所示:
图3 dpdkvhostuser 方案
该方案理论性能优秀,且功能性较好,同样支持热迁移和部分网络服务。
1.2.2 software vDPA 方案:借助智能网卡中特定vDPA 模块实现高性能
在标准的 OVS-DPDK 方案的基础上,借助智能网卡中特定的 vDPA 模块,减少 CPU 资源消耗;目前仅支持 mellanox cx-5/cx6 网卡。
图4 software vDPA 方案
该方案理论性能优秀,功能性一般,支持热迁移,但是同样受限于 VFs 数量。
02 测试目标与方法
通过在相同的两台物理机上切换 ZStack 网络方案进行压力测试,验证不同网络方案下的性能表现。
2 .1 测试模型
图5 测试模型
2 .2 DUT 配置
服务器硬件配置
ZStack 平台配置
vm 配置
vpp 配置
2.3 TRex 配置
硬件配置同 DUT 硬件配置
测试软件版本及测试参数
2.4 测试方法
使用相同的服务器硬件和虚拟机配置,改变虚拟网络方案,通过 TRex 进行 UDP 小包测试,DUT 中使用 vpp 做路由转发避免 kernel 瓶颈;逐渐增加测试压力,直至开始出现丢包,记录测试数据及当前环境配置,并进行分析。
CPU 资源消耗情况;
零丢包 pps。
2.5 测试数据
可以看出高性能网络方案,即 dpdkvhostuser 和 vDPA 方案,以及 SR-IOV 方案相比默认的 Linux Bridge 方案性能提升显著;在不进行额外调优的情况下,SR-IOV 方案性能最佳。
2.6 结论
1.功能性及灵活性上 Linux Bridge >= dpdkvhostuser > software vDPA > SR-IOV;
2.网络性能上 SR-IOV > software vDPA > dpdkvhostuser > Linux Bridge;
3.高性能网络方案带来的性能提升以消耗 CPU 作为代价,而 vDPA 方案得益于智能网卡加速模块相比 dpdkvhostuser 方案可节约部分 CPU 资源;
4.SR-IOV 性能最佳,但是其局限性较大,例如,无法热迁移、要求虚拟机安装对应的网卡驱动等。
03 延伸思考
1.该测试使用的是 10Gb 光模块,因此光模块限制了性能的上限;测试环境(除 pmd-CPU 数外)均由 ZStack 平台默认配置,若增加 CPU 隔离,vNUMA 配置等优化手段,可以进一步提升;
2.虽然 Linux Bridge 和 SR-IOV 方案不需要使用单独的 pmd-CPU 资源,但并不意味着宿主机接收网络包时不用消耗 CPU 资源,事实上宿主机内核收包 CPU 将收到大量软中断;
3.ZStack 高性能网络方案,在设计上考虑到了以往的用户使用习惯,使用逻辑与以往相似,降低学习成本,快速上手;
4.dpdkvhostuser 和 software vDPA 方案各有优劣,dpdkvhouser 虽然消耗更多 CPU,但是使用条件更宽松;software vDPA 使用条件则更为苛刻,使用时可酌情选择。