Nezha---计算网络解耦下的vSwitch池化架构
论文说明
Nezha论文,聚焦于计算实例的网络资源/性能池化。
利用集群内所有的SmartNIC作为分布式vSwitch的弹性资源池,充分释放单个vSwitch的性能极限,提供单vSwitch接近裸机的百万级连接新建能力(CPS)、数倍的并发流能力、和数十倍的虚拟网卡密度提升。在此过程中,Nezha创新性地解决了vSwitch集群粒度池化带来的状态管理、容灾及负载均衡等关键挑战。论文详细阐述了阿里云的设计思考与技术实践,为更具弹性的下一代计算、网络解耦的数据中心部署形态提供了新的思路。
背景
在云数据中心中,SmartNIC加速的vSwitch被广泛用于为云服务器和容器等计算实例提供高性能网络服务。然而,由于网络虚拟化以及多租带来的开销,云服务器的网络能力长期受限于单个SmartNIC有限的物理资源而远低于裸机(指物理服务器间直连,无overlay,网络非瓶颈)的水平。例如,阿里云基于Triton卸载架构实现了主流云厂商中最高的单卡单服务器43万CPS,仍低于裸机的120万CPS。这就意味着在单个云服务器上,网络可能先于计算CPU达到瓶颈,而无法水平扩展(受限于单卡资源),尤其是一些流量重载的网络中间件服务。
另一方面,在大规模的vSwitch部署运维中,我们还发现了用户对网络与计算资源的消耗是极其不均衡的。就网络而言,只有少数服务器上的用户网络需求高,vSwitch因卡上资源不足面临性能瓶颈(大约占0.01%),但是从集群角度看大量vSwitch/SmartNIC却处于相对空闲的状态(卡上的CPU和内存平均利用只有5%和1.5%)。这种资源"短缺"与"闲置"并存的问题,使得通过部署更高性能的SmartNIC或利用主机资源来解决过载变得成本高昂且效率低下。现有解决方案如Sirius虽然引入专用设备分担压力,但存在硬件成本高、状态同步复杂以及性能开销大的问题。因而我们开始探索寻求SmartNIC网络资源池化解法,让网络彻底摆脱单卡资源限制,与计算资源解耦。
设计实现

在Nezha这篇论文中,提出了一种计算网络解耦下的vSwitch池化架构,旨在调动整个集群粒度的SmartNIC资源池,来提升单个vSwitch网络性能上限。其核心思想是通过对vSwitch中虚拟网卡(vNIC)的数据包处理负载进行建模拆解,尽可能地卸载到远端SmartNIC以利用池化的资源。为了避免复杂的状态同步和传输开销,按有无状态的原则将vNIC网络负载拆解成前端和后端两部分,前端(无状态规则/流表)卸载到远端资源池,有状态的后端部分则保留在本地卡上进行处理。借助ECMP机制,远端节点池的性能也可以很容易地实现线性伸缩和容灾处理。
总结和展望
在计算网络解耦的大背景下,利用整集群的SmartNIC资源构建单节点vSwitch性能水平扩展能力,实现了高性能、低成本的vSwitch池化方案。在实际部署中,Nezha无需新增硬件,仅通过软件优化即可将CPS能力提升3-4.4倍,支持的并发流和vNIC数量分别提升5.04-50.4倍和超过40倍。作为云基础设施中的关键组件,Nezha不仅将vSwitch过载率降低了99.9%,其部署成本和复杂性也极低,为网络功能的进一步扩展提供了灵活性与高性能保障。
其他

附
https://developer.aliyun.com/article/1662741?spm=5176.26934562.main.1.53874d72aBgDRu