随着机器学习,网络游戏,电商抢购等应用的大规模爆发,公有云用户对虚机网络性能要求迅速提高。腾讯云推出网络优化型实例,实现最高 450w PPS 的虚机网络转发性能以及多达 25Gbps 的网络吞吐性能,网络延时大大降低。既可以满足用户高速计算的需求,也让用户能够在虚拟化网络中得到媲美物理机的性能体验。那么腾讯云网络优化型实例是如何做到这一性能的呢?
▲常见虚拟网络的实现上图描述了基于 KVM 的传统虚拟化网络的实现,从图中我们可以看到,云服务器外发数据包需要经过 KVM、QEMU、TAP、vSwitch 等组件的处理,需要经过多次上下文切换,整个路径很长,与物理服务器相比,这里存在明显的性能瓶颈。主要原因在于在虚拟化环境中,网络边界发生了变化,网卡从真实硬件变成了软件模拟,边界交换设备也从硬件交换机变成了软件 vSwitch。这些软件模拟工作绝大部分都在宿主机 Linux 内核来完成。然而 Linux 内核协议栈设计的目标不在于高性能报文处理,而是通用灵活。在虚拟化环境下,继续使用内核协议栈作为报文交换中心,性能难免捉襟见肘。为了解决这个问题,腾讯云引入智能网卡和 DPDK 两种专用高性能报文处理平台。
DPDK 是一种用户态高性能报文处理平台,相对于 Linux 内核,它通过以下手段来优化报文处理性能:
智能网卡是一种新型网卡硬件,相比于普通网卡,它主要智能在以下几个方面:
既然 DPDK 和智能网卡能达到如此高的性能,那为什么之前没有见到在公有云中使用呢?
究其原因,是因为这两个平台开发难度比较大。传统的 vSwitch 一般在内核实现,依赖各种开源软件以及内核框架,但 DPDK 及智能网卡仅仅提供了收发包接口,所有高级功能都需要自行实现。如果软件架构设计不好,很可能将内核中影响性能的问题再次引入新平台,而无法充分发挥平台优势。因此针对新平台的 vSwitch 设计对软件开发人员提出了很大挑战。
为了解决这个问题,腾讯云将 vSwitch 拆分成快速路径和慢速路径。慢速路径负责连接首包的路由 / ACL / 安全组等规则执行,快速路径负责连接后续包的快速处理。通过分离式架构设计,腾讯云实现了最高 450w PPS 的网络转发性能以及多达 25Gbps 的网络带宽,网络延时大大降低,实现接近物理网卡的网络延时。同时,保持了已有的 VPC 网络的用户体验的一致性。
这样,传统虚拟化网络的实现方案的瓶颈在网络优化型实例得到完美的解决,在网络收发包性能上、内网带宽、网络时延上都得到了较大的提升。
来源: https://www.qcloud.com/community/article/604440