文/温平华(鸿濡)
云计算伴随着我们发展了十几年,带来了经济的高速增长,也带来了更实在的普惠。想想几年前随身携带的U盘,想想再前几年大行其道的软盘——我们用十年时间完成了从随身携带硬件到在云端存储、访问和编辑一切的转变。
▼
阿里云“云&科技”理念,深刻的诠释了硬核技术的力量,特别是双十一带来的科技盛宴。在享受这场盛宴的同时,网络也面临着诸多挑战:
- 高带宽、低延时的需求持续增长
- 海量网络信息和数据的转发
- 数十万级的网络设备
- 数百万级的物理和虚拟业务节点
- 频繁的网络变更和优化
- 网络可视化和监控要求越来越高
为应对这些挑战,阿里巴巴自研了软硬件一体机SNA(Smart Network Appliance)设备(如上图),来满足业务高速发展需求,它具有以下几个特点:
- 自主可控
- 提升软硬件稳定性
- 提升管控和运维效率
- 提升架构迭代速度
- 提升性能、降低成本
01 背景
在阿里的整个网络基础设施中,不管是中心云还是边缘云,都部署了非常多的网关设备来处理和转发我们的全球业务流量,包括负载均衡、网络地址转换、安全防护等等设备。
早期我们采用了X86服务器加软件的方式来实现这些网关和网络服务功能。但随着业务规模和复杂性的持续增长,单纯依赖DPDK X86架构来处理不断增长的流量变得越来越困难,在性能、稳定性和成本上都遇到了相当大的挑战。当业务流量达到Tbps水平时,基于软件的服务能力就捉襟见肘,单核CPU的性能在处理大象流时更是出现了瓶颈和风险。而在不断增长的边缘场景下部署众多类型和较大数量的软件网关服务器则显得臃肿和不经济,这也对超融合与一体化提出了更高的要求。
我们从5年前就开始思考如何利用我们在软硬件一体化设计和白盒化上沉淀的能力来帮助我们应对这些问题和挑战,通过对各类业务痛点的解读与分析,着手研发了SNA(Smart Network Appliance),一个融合了可编程交换能力和超强算力的一体化高性能网络平台。如今SNA早已在中心云和边缘实现了大规模部署,承载着核心的业务流量,并且平滑地经历了多次双十一大促高峰考验。
阿里云自研可编程网络平台SNA作为新一代网关底座,结合了超融合可编程一体化硬件、阿里云自研网络操作系统、NetFrame高性能网关框架以及阿里云网络整体运营体系,支持网络服务和业务的灵活开发与部署。
作为底座中的底座,SNA采用软硬件解耦的方式设计,那SNA的硬件架构是如何考虑和构建的呢?
02 硬核技术一:硬件
硬件有着长周期和大投入的属性,架构设计的好坏直接决定了整个平台的生命力。在整个硬件平台的创新构建过程中,主要考虑这几个方面:性能、灵活性、部署、成本,既要提供强大的性能,又要适配灵活多样化的业务场景,还要支持规模部署。
通过对各种网关和网络服务的需求分析,我们设计了一个多路径的硬件架构解决方案,可编程交换芯片、FPGA/加速卡与X86 CPU组合形成了一个三级数据流量处理路径。X86同时担当着多路径实时调度和配置的角色。考虑到空间和部署的便利性,我们把SNA设计为2U的紧凑型机箱。在这样紧凑的空间内,我们针对灵活性的目标挖掘潜力,对外除了提供32个100G QSFP28网络接口还支持多达6个标准PCIe槽位,针对不同业务提供灵活的硬件配置选项。
可编程交换部分采用了支持P4的商用可编程交换ASIC,通过编写P4程序,网络流量可以直接通过可编程交换芯片进行硬件转发和处理,或者通过可编程交换芯片送到FPGA、加速卡或X86 CPU进行进一步处理和计算。
从灵活性考虑,我们并没有在系统内部实现全部的多路径之间的高带宽转发通道。可编程交换芯片和加速卡/FPGA之间的转发带宽能够根据不同场景的需求通过外部高速互联实现扩充。可编程交换芯片可以被认为是整个硬件平台的核心,不仅提供了高速、大带宽和灵活的处理能力,更重要的是作为多路径数据串接和调度的中心。
X86 CPU在系统中担当着双重角色。在数据面上,为了提供强大的通用计算能力,我们采用了服务器级双路CPU和多达512GB的内存,灵活且强大的软件处理能力可以应付高速路径上不被命中以及无法处理的流量。在控制面上,X86 CPU通过PCIe通道直接连接可编程交换芯片和加速卡/FPGA卡,使我们能够快速地配置和调度转发路径。
可编程交换芯片具备高效和强大的数据报文处理能力,但是芯片的可编程资源和存储资源是有限的,并且部分高级报文处理能力比如加解密能力无法用可编程交换芯片实现。X86 CPU在通用性上非常好,并且拥有超大的存储空间,但是报文处理效率毕竟受到软件性能的限制。针对这些问题,我们在紧凑的空间内设计了多达6个标准的PCIe扩展插槽,通过引入FPGA或者加速卡填补可编程交换芯片和CPU之间的能力空位并提供了极大的灵活性。
三级路径架构能够非常灵活高效地适配各种业务场景。以众多场景下典型的有状态网关服务为例,事先无法感知流量是大象流还是老鼠流,是高并发,还是小并发。特别是在很多跨域或复杂均衡场景中,流量模型复杂多样,有高并发大吞吐、高并发小吞吐、小并发小吞吐、小并发大吞吐。对于小并发大吞吐、小并发小吞吐、高并发小吞吐的流量,可编程交换芯片在CPU的调度之下可以轻松处理,但是对于高并发大吞吐,流量处理则需要借助FPGA/加速卡弥补CPU+AISC的短板。在三级路径架构下,CPU将所有的会话下发到FPGA,而仅仅将流量最大的热点会话下发到可编程交换芯片。可编程交换芯片无法处理的流量上送FPGA,FPGA还无法处理的流量才上送X86 CPU。
SNA硬件规模部署以来,稳定支撑了可编程网络平台和业务的运行,完成了从探索到验证的第一个阶段,验证了超融合可编程硬件平台对于当今大规模云网络和边缘网络服务的价值。通过规模部署、运营和与多个业务的磨合,我们也在持续探索着SNA的未来发展与演进方向以及新的业务场景应用。
03 硬核技术二:软件
网络操作系统作为整个网络世界的核心单元,一直是各个网络设备商的核心竞争力,如CISCO IOS、Juniper JUNOS、Arista EOS、Huawei VRP,可以被称为各个厂家产品上的“The jewel in the crown”,是他们投入最多,也最复杂的系统领域。
阿里巴巴数据中心每年大量采购商用网络设备,但设备中运行的NOS对于我们来说是一个黑盒系统,不管是运维管控还是功能需求处理、网络演进都严重依赖于各个设备提供商。
作为新一代的阿里自研网络操作系统,承担着把网络操作系统彻底白盒化,完整掌控,在保证数据中心网络系统稳定的前提下,快速支撑业务的各种需求任务,乃至更进一步成为业务竞争力的一部分,以技术来拓展业务边界的使命。随着阿里对基础芯片的早期投入与影响力的不断增加,通过阿里云自研网络操作系统与芯片厂商的直接合作也促使芯片的设计在技术层面更能为阿里所用。
软硬件解耦
◆ Linux+X86:首先SONiC的主体OS是基于Linux X86 kernel的开放操作系统,因此在SONiC上可以利用在Linux上长期积累起来的软件工具和开源生态,例如我们在阿里云自研网络操作系统上的管控和测试系统就利用了Linux上众多的gRPC,docker,Ansible,Redis等开源软件。
◆ 软硬件解耦:SONiC定义了SAI(Switch Abstract Interface)这一层实现了软件操作系统和硬件交换芯片的解耦,从而做到在不同硬件平台上共享软件的功能,使得交换机软件和硬件可以实现独立的快速迭代。
基于DB的高可用机制
SONiC中的状态数据均通过一个RedisDB来管理,同时各个应用之间也通过这个系统DB来共享数据。RedisDB支持丰富的数据格式和pub-sub RPC通信方式,使得SONiC的多个应用可以实现灵活通信和数据共享,因此SONiC的应用可以只对RedisDB有依赖关系,而应用之间是没有依赖关系的,这样的架构可以降低系统组件之间的连带异常,提高系统的容错能力。
基于容器的APP部署
SONiC上的软件功能被切分成一系列的不同功能的应用,应用的运行环境使用docker容器化来管理。容器化的应用管理有两个优点:首先松耦合,微服务化的应用可以降低软件故障时的failure domain,提高系统容错能力;其次容器化使得SONiC上可以更容易地做到模块化的软件升级和管理。
主动上报的秒级监控能力
随着数据中心带宽的不断提升和低时延业务的增多,网络运营需要更及时且全面的获取设备状态,秒级监控因此被提出。传统SNMP监控通道采用定时拉取的方式,且时间戳并非设备上的状态信息,无法实现秒级监控。gRPC 因此被推出,相比传统监控通道,它主要有以下几大优势:
•支持高频定时推送,所有数据都带有时间戳,能更准确地表达设备的状态信息
•支持事件驱动的数据推送,能有效减少大量冗余数据,快速更新设备关键状态
•支持结构化的数据格式,不局限于某些特定标准,方便增加用户自定义数据
•支持TLS加密,提供更加安全的通道
▲
下一步,我们还会进一步完善各个模块,使各模块更有效地为我们所用,包括功能上的优化和代码上的瘦身;完善适配阿里研发的阿里云自研网络操作系统自动化测试系统,检测模拟代码改动对于运维的影响,并与网络监控系统相结合,实现端到端的网络智能管理。
小结
近几年,阿里不断在国际顶级网络技术学术会议SIGCOMM上发表论文,2020年更是以四投四中震动了网络技术界。今天最好的表现是明天最低要求,对阿里打造高性能、开放式软硬一体化网络提出更高的要求,未来可期,网络可期。