从写下第一行代码开始,云轴科技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 配置
服务器硬件配置
硬件部件 | 配置 | 备注 |
CPU | Intel(R) Xeon(R) Gold 5218 CPU @2.30GHz;NUMA node0 0-15,32-47;NUMA node1 16-31,48-63 | |
内存 | 256GB | |
管理网络 | ntel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02) | 10G 光模块 |
测试网络 | Mellanox Technologies MT2892 Family [ConnectX-6 Dx] | 10G 光模块 |
ZStack 平台配置
详情 | |
软件版本 | 4.4 develop |
vm 配置
硬件部件 | 配置 | 备注 |
CPU | 8 Cores | host-passthrough |
内存 | 8 GB | |
网卡 | depends on virt net type | multi-queues=8 |
OS | CentOS 7.6 |
vpp 配置
cpu | main-core: 0;corelist-workers: 1-7 |
dpdk | num-rx-queues 8;num-tx-queues 8 |
2.3 TRex 配置
硬件配置同 DUT 硬件配置
测试软件版本及测试参数
备注 | |
软件版本 | v2.81 |
测试脚本 | ./t-rex-64 -f cap2/imix_64_fast.yaml -m [xxxx] -d 120 |
2.4 测试方法
使用相同的服务器硬件和虚拟机配置,改变虚拟网络方案,通过 TRex 进行 UDP 小包测试,DUT 中使用 vpp 做路由转发避免 kernel 瓶颈;逐渐增加测试压力,直至开始出现丢包,记录测试数据及当前环境配置,并进行分析。
●CPU 资源消耗情况;
●零丢包 pps。
2.5 测试数据
网络方案 | pmd CPU使用情况 | 零丢包 pps |
Default Linux Bridge | N/A | 0.80 Mpps |
dpdkvhostuser | 2 | 2.29 Mpps |
4 | 4.4 Mpps | |
6 | 6.3 Mpps | |
8 | 8.4 Mpps | |
software vDPA | 2 | 3.0 Mpps |
4 | 5.8 Mpps | |
6 | 8.3 Mpps | |
8 | 10 Mpps | |
SR-IOV | N/A | 8.3 Mpps |
可以看出高性能网络方案,即 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 使用条件则更为苛刻,使用时可酌情选择。