Achelous: Enabling Programmability, Elasticity, and Reliability in Hyperscale Cloud Networks
原文地址 doi/10.1145/3603269.3604859
背景与问题
Achelous是阿里云的网络虚拟化平台。随着云计算业务的发展,单个虚拟私有云(VPC)中的实例节点数量达到了百万量级,而现有的研究往往关注单一具体的问题,无法支持大规模的云网络架构。在现代云环境中主要面临以下三个挑战:
- 百万并发实例下的亚秒级重配置。大规模云网络有两个关键特征:高部署密度和高频实例创建和销毁。流量高峰期,用户可能同时创建数万个生命周期仅有几分钟的实例,单个VPC中总实例数量可达百万级,这会产生大量的路由表项变动,对网络收敛速度提出了很高的要求。
- 为重流量的中间盒部署提供高弹性网络。传统网络中间盒(如负载均衡器、NAT网关、防火墙等)通常部署在专用的物理硬件上,而为了提高灵活性,降低成本,云服务商逐渐将这些功能迁移到云上的虚拟机中,此时CPU、内存等资源的竞争可能影响中间盒的性能。此外,传统的中心化负载均衡和ECMP路由机制横向扩展性不佳,难以应对百万级数量的虚拟机产生的流量。
- 云服务的高可靠性。云上的虚拟网络变动频繁,不存在一个稳定的拓扑结构,传统的故障探测手段或者只能处理物理网络,或者缺乏实时探测能力,无法确保云网络的可靠性。此外,大多数热迁移手段没有考虑有状态流的流量持续性,进而导致租户服务中断。
解决方案与设计
为了应对上述三个挑战,Achelous 2.1将控制平面和数据平面协同设计,带来以下三项关键提升:
- 大规模网络可编程性。Achelous采用主动学习机制,由vSwitch定期向网关学习路由信息,自己只需要维护转发缓存,而控制器只需要对网关编程,不需要调整每个vSwitch的配置,vSwitch也不需要存储完整的转发信息,降低了内存开销,提升了网络收敛速度。
- 弹性网络。Achelous对一个主机上的所有虚拟机采用弹性信用点策略,既能确保性能隔离,又可以在资源空闲时吸收突发流量负载。Achelous还在vSwitch上实现了分布式ECMP机制,消除了中心节点带来的瓶颈。
- 网络风险感知和热迁移。Achelous采用多种主动网络健康探测手段,为网络故障提供早期预警。vSwitch会定期向虚拟机发送健康检查包,也会向控制器报告性能统计信息。检测到故障风险时,vSwitch会根据控制器的指导,热迁移相关的虚拟机,迁移过程中采取流量重定向、会话复位和会话同步等技术降低服务中断时间。
实现细节
大规模网络可编程性
在大规模云网络中,虚拟机路由表(VRT)和虚拟机-主机映射表(VHT)变动较频繁,需要针对性优化,而ACL、QoS等配置则相对固定,且占用体积小,可以保留在vSwitch上。Achelous在vSwitch上部署了轻量级转发缓存(FC),其中只保存目标IP→下一跳的映射,相比基于五元组等流表的设计,FC可以大幅降低计算和内存开销,也消除了针对元组空间的DoS攻击风险。
- 快速路径:Achelous 2.1的快速路径与2.0相同,基于五元组的流和双向流组成的会话进行精确匹配,后续进入处理流水线。
- 慢速路径:查询FC(而非2.0中查询VRT和VHT),若命中则从vSwitch直接发送到目标vSwitch,同时生成会话匹配项注入快速路径;未命中时,由网关转发,同时vSwitch会从网关学习记录对应的FC条目。 vSwitch定期(50ms)遍历所有的FC项,如果发现某项的存留时间超过阈值(如100ms),则通过路由同步协议(RSP)向网关查询,如果对应FC项有变动,则重新从网关学习更新,否则保持FC项不变。
弹性网络
Achelous采用信用点策略,在每台主机上为每个虚拟机设定带宽和处理器资源限制。当虚拟机实际使用的带宽和处理器低于限制时,累积信用点;当出现突发流量,资源使用超出限制时,消耗信用点;当信用点全部消耗完后,虚拟机资源会被削减到预设的限制值上。
网络风险感知
vSwitch定期向虚拟机发送ARP包检测虚拟机的网络健康状况。对于vSwitch之间的链路,控制器会预先配置一个检查清单,vSwitch会向检查单中的地址定期发送健康探测包,健康监测器分析这些包的延迟,向控制器报告可能的网络风险,如虚拟机失效或链路阻塞。此外,Achelous还会检测虚拟网络设备的健康状况,如CPU负载、内存占用和网卡丢包率,如果发现异常则通知控制器介入,启动故障恢复机制。
评价
Achelous是阿里云整体的网络虚拟化平台,vSwitch是其中的边缘节点和重要组成部分。在vSwitch的转发加速上,Achelous的快速路径与OVS的microflow相似,均是基于五元组做精确匹配;而OVS的megaflow仍然基于元组空间搜索,Achelous则采用更类似传统路由表的“目标IP→下一跳”的转发缓存。由于面对的VPC规模大,变动频繁,Achelous更进一步强调控制平面的更新性能,采取了更短的轮询更新间隔。