【阅读原文】戳:AliNOS起源及演进—从数据中心到广域网、泛边缘及DPU
文/阮弋星、施学美
阿里云已经采用自研的多种网络平台构建了超大规模数据中心网络,这张网络经历了诸如双11流量洪峰的考验,其网络流量之大和并发交易数之高是业界罕见的,阿里云网络团队自研的各种网络平台成为中流砥柱,经受住了各种考验,AliNOS 是这些自研平台的网络操作系统,也是达到HAIL (Highly Availability、Intelligence,and Low-latency)目标的幕后英雄之一,今天我们来讲讲AliNOS的起源和发展,揭开它的神秘面纱。
阿里云基础网络架构演进
我们先回顾一下阿里云基础网络架构的演进历程,这有助于更好理解阿里云对自研平台网络操作系统的需求、AliNOS的设计理念及其发展方向。
在2017年以前,OTT作为最终网络产品用户看到的网络设备及能力如下图所示:
主要的痛点集中在以下四个方面。
● 商业网络设备软硬件设计对最终用户不透明,作为网络最重要的组成单元在规模化部署后,设备内部器件的成本、失效率都对整体网络有着巨大规模化效应;
● 设备的功能实现无法按需定制,复杂的系统特性排期长无法快速交付,无法满足大规模数据中心要求;
● 由于云规模化的特点,多厂商供应是客观存在的,但不同厂商的运维管控方式各不相同,这对自动化管控造成非常大的挑战;
● 交付及设备修复需要通过厂商的运维体系,链条长,从而对时效满足度低。
为解决上述痛点,从2017年始,阿里云数据中心网络确立“基于全自研平台,分布式超大规模数据中心建设”的宏伟目标。构建超大规模全自研数据中心,第一出发点是要解决HAIL架构中的“Highly Availability、Intelligence”,这样才能满足大规模部署要求下的自主可控节奏、规模化交付效率和运维高自动化。阿里云自研白盒网络设备,结合自研操作系统AliNOS,与后端的监控管控自动化作为一个整体进行设计和研发,从而得以全面解决架构、建设及运维各角度在超大规模数据中心的高可用、低成本、快速迭代及智能化的网络诉求。通过白盒化,网络产品用户看到的网络设备及能力,转化成如下图所示的特点。
- 白盒设备
标准化、模块化白盒设备硬件组件与软件集成,提高效率、降低成本,从而丰富生态,加速白盒规范化网络发展。
- DevOps
研发、架构、运营、自动化工具平台等多个团队参与基于自研交换机的体系建设,深度devops定制符合阿里云数据中心架构、交付逻辑和运维沉淀的重点需求,并能快速迭代,打造了专属阿里云的企业版SONiC-AliNOS网络操作系统。
- IBN
通过一套网络操作系统AliNOS的标准化南北向接口,从而使得IBN在阿里云网络以更标准、更完整地规模化实现,提升网络整体稳定性。
- 自动网络
端到端全自研,让阿里云大规模数据中心网络实现了接近全自动化交付,和运维的自驱动自适应的高可用智能网络。
互联网重新定义了网络系统,白盒化解决了HAIL架构中“HAI”代表的高可用和智能化运维。HAIL架构中“Low Latency”所代表的高性能,则成为了驱动阿里云数据中心网络全栈深度自研的动力,给出了一个持续的发展方向。2019年,基于AliNOS构建的自研交换机及配合高性能网络的RDMA技术正式大规模上线。这是一个通过可预期网络架构中的端网融合技术及AliNOS创新,为上层业务打造的超越现有商业解决方案可提供能力的极致高性能、高稳定RDMA自研网络。
在成功高效地部署百万级端口,在数据中心内为业务提供高可用、高效率、智能化以及以RDMA为代表的高性能网络后,阿里云基础网络为进一步服务到更多最终应用和客户,提出了端网融合可预期网络(Predictable Network)的新型技术体系,这也代表着AliNOS走出了数据中心,开始走向更广阔的领域。
SONiC的前世今生
AliNOS是建立在SONiC基础之上的,同时它还集成了阿里云业务和运营需求的一些功能优化,在介绍AliNOS之前,我们先来回顾一下SONiC的前世今生。
SONiC(Software for Open Networking in the Cloud)是一个开源的,以Linux为基础的网络操作系统。这个系统由三部分组成。
SONiC从FRR社区(Free Range Routing) 取得了一套完整的网络协议栈,如BGP、BFD、LLDP。
SONiC通过OCP社区 (Open Compute Project)定义了一层软硬件解耦合的APIs-SAI(Switch Abstraction Interface)。这层APIs使得软件和交换芯片ASIC可以独立演进迭代。这也使得自研平台可以根据自身需求来选取适合的交换芯片ASIC,以达到最高性价比。
SONiC自身通过SONiC社区的努力把协议、配置及交换芯片ASIC组合起来,构成网络设备的控制平面。
SONiC社区是为这个开源网络操作系统的合作而成立的开源社区,现在社区有7个创始成员,几十个贡献组织和上千个做贡献的活跃成员,阿里巴巴是早期创始成员之一。这个开源社区也不是一蹴而就的,SONiC最初从一个OCP旗下的项目成长起来,于2022年正式引入Linux基金会。
网络操作系统是一个非常复杂的系统,不少设备厂商为了让一个系统支持多种网络设备、协议和不同客户的需求,不得不提升设备厂商自身网络操作系统的复杂度。如北美一家知名设备厂商为电信运营商支持IEFT YANG model,同时又要为云运营商支持Open Config YANG model,而不得不在一套网络操作系统里支持两个不同配置的YANG model做相同的事情。为了降低复杂度,SONiC最初的定位只是TOR的网络操作系统,还做了不少简化,即使这样,SONiC也还是经历了一个痛苦摸索和演进的过程,不少早期工作在SONiC上的人都有一本辛酸血泪史,大家都是一步一坑地通过摸索、完善,才逐渐爬出来的。
经过多年的积累,特别是包括阿里云在内的多个云厂商的实战经验打磨,SONiC已经成为业界认可的网络操作系统,不少初创公司以SONiC为基础很快建立起他们设备的网络操作系统,快速推出自己的产品,从而推动了整个网络新技术的快速发展,阿里云通过与社区的交流在不断贡献的同时也获取了不少适合自身发展的网络技术。
AliNOS的现状
AliNOS是伴随阿里云自研网络平台的成长而成长起来的,由于阿里云网络的规模庞大,厂商难以保证他们的软件能够有效支持这么大规模的设备,并跟上运营、变更的节奏,因此可以让厂商代工自研设备,但必须自己掌控整个软件栈,才能有效实现问题的快速修复、需求的快速响应、新技术的快速推出及安全的验证等要求。
“求真务实,简单开放”是阿里云基础设施团队的工作理念,在这个理念的指导下,阿里云基础网络团队选择了以SONiC为基础,研发AliNOS这款适合阿里云需求的网络操作系统。AliNOS的软件代码主要分为三大部分:SONiC的软件代码、交换芯片供应商提供的SAI/SDK相关代码,以及阿里云内部的监管控工具。SONiC的软件代码包括了FRR的网络协议栈和SONiC的控制平面部分。阿里云基础网络团队还在研发、运营过程中不断对SONiC软件代码进行优化改进。
本着简单开放的原则,阿里云也分期分批地将这些优化改进回馈社区,如去堆叠的想法及研发结果就是阿里云依据自身的运营经验介绍给社区的,目前已成为行业的事实标准,大幅降低了服务器双上连的网络系统复杂度。
AliNOS已经支持了阿里云数据中心网络5.2架构,6.0架构的大规模部署,现在AliNOS开始了7.0架构数据中心网络开发。此外,AliNOS也开始用来支撑广域网及边缘网关设备,特别是对自研路由器的支持给AliNOS带来了不少挑战。不久的将来,AliNOS还将用来管理一些新型的网络设备,如DPU等。AliNOS已经从数据中心的网络设备拓展到了广域网及边缘网的网络设备,这些新的机遇不可避免地也带来了不少新的挑战。
新的挑战
▶从交换机到路由器
阿里云在完成数据中心网络交换机全自研后,开始把成功的经验拓展到数据中心互联网络上面,着手研发路由器并推动下一代广域网架构变革。从交换机到路由器,不是一个简单的路由规模增加的问题,这个问题其实有点儿像某著名大学的化学系教授按比例放大实验室的实验给化工厂酿成事故,被隔壁大学的化工系当作反面教材一样,看似简单但有很多实际问题需要考虑,路由器有很多复杂度是交换机没有经历过的。
首先路由器要支持L3VPN,而L3VPN的路由是百万级别的,因而要在系统层面综合考虑数据平面的速率,BGP loading time、BGP路由的收敛及IGP路由变化对BGP路由收敛的影响。L3VPN的路由处理也就不再能用像交换机那样所见及所得的处理方式,L3VPN的路由转发链的设计会根据交换芯片ASIC的能力而有所不同,特别是L3VPN的VPN信息存储及处理,需要在SAI层面做适当的抽象,从而避免控制平面感知交换芯片ASIC的不同,这个抽象同时也不能绑定某个供应商的特殊处理,但又需要有前瞻性,符合交换芯片ASIC的演进道路。
其次由于L3VPN的路由是百万级别的,BGP路径的规模要到千万级别,因而对于软件内存的管理优化变得非常重要,FRR的协议栈在之前并没有这种优化需求,写代码时对内存的使用也比较随意。阿里云目前和社区在紧密合作,共同优化FRR BGP的代码,从而把FRR BGP从交换机级别的支持提升到路由器级别的支持。
另外需要对FRR BGP增加一些路由器必需的功能,如BGP advertise delay、BGP VRF leaking、BFD硬件卸载等,使得协议栈整体达到路由器可部署的级别而不是单一功能的演示。
最后由于交换机路由在千或者万级规模,交换机对路由的卸载速率没有要求,现有SONiC控制平面的路由下发通道并没有优化,这就需要AliNOS对控制平面做整体优化,让百万级别的L3VPN路由可以高速卸载到芯片ASIC,从而得到较好的BGP loading time,BGP loading time一直是各路由器厂商比拼的性能指标之一。
阿里云计划把这些在FRR及SONiC代码的优化改进在适当的时候反馈回社区。
▶利用IPv6简化网络协议栈
上面的L3VPN的复杂度来自于在IPv4上做多租户的VRF。在数据中心内,我们也引进了VXLAN给overlay做多租户,由于VXLAN的引进,我们又引进了BGP EVPN、OVS等协议,随着协议的不断引入,网络的复杂度也日益增加,利用IPv6简化网络协议栈是阿里云网络团队定义下一代阿里云网络架构的一个基本出发点。
IPv6技术已经存在了很长时间了,但网络应用和网络技术一直有着“鸡生蛋,蛋生鸡”的关系,因此在AliNOS上,我们不止要大力加强IPv6建设,还要加强对如何让现有的IPv4应用平稳过渡到IPv6的技术上做研发投入。只有把这个过渡期处理好了,我们才有可能实现利用IPv6简化网络协议栈,从而让网络变得像水管一样,简单、好用且可靠。
▶通过SRv6实现流量可控
在利用IPv6简化网络协议栈的同时,我们还需要加强对流量可控的手段。SRv6是2014年左右提出来的,随着芯片技术的成熟及协议发展的完善,越来越多的用户意识到SRv6将不再仅仅是一个网络协议,它将是一种面向应用业务的对网络编程的语言,SRv6协议开始被采纳,有人把SRv6的一些基本功能开发出来并贡献给SONiC社区,但没有人用SONiC的SRv6部署在生产网。阿里云开始在AliNOS里研发SRv6 VPN,并通过自研路由器在DCI部署这个技术,从而实现对于应用的流量调度。
SRv6 VPN的研发主要有三个部分:FRR里对于BGP协议的补充、SONiC的SWSS里对于SRv6 VPN的开发,以及SAI里增加SRv6 VPN相关的新的objects。由于SRv6 VPN是在阿里云生产网里部署的,AliNOS又增加了一些部署时必需的优化改进。阿里云基础网络团队计划把SRv6 VPN的研发成果及部署相关的改进上传至SONiC的后续版本中。
这个应用也在Linux Foundation的Open Network & Edge大会上做了交流,得到了业界很多很好的反馈,若干云厂商已经计划在阿里云上传代码到SONiC社区后,开始在它们的网络里部署SRv6 for SONiC技术。我们可以预期在不久的将来,SRv6将成为一个事实标准被各云厂商所采用。
▶端网融合可预期网络
云计算重新定义的网络系统,是基于计算和网络的协同设计。近几年DPU的蓬勃发展,让服务器里的智能网卡或DPU也更多地参与到了网络里来。AliNOS的应用范围从网络设备伸展到了网络边缘设备或DPU的SOC。随着网络边界的延伸,许多问题可以通过端网融合的方式得到更好的解决,如传统多打一拥塞的解决点在TOR或者SMART NIC上,但因为不了解服务器PCIe端的信息,不少设备厂商还提出了Smart Pipeline、Smart TOR的概念,由于没有端的信息,很多方案只能隔山打牛,费力不讨好。随着DPU的引入,网络可以开始感知到服务器PCIe端及其他更多的信息,很多问题可以利用这些新信息重新思考了。SONiC社区也成立了DASH工作组(Disaggregated API for SONiC Hosts)来协调这个方向的工作,阿里云基础网络团队也有不少同学参与了DASH的讨论。
AliNOS作为一个端到端,各种网络设备的统一平台,可以通过telemetry让计算能够感知到整个网络的状态,一个实时的状态。AliNOS还可以通过SRv6、HPCC高性能流控算法、uFAB新型架构及Solar多路径等硬核技术与计算协同设计,让整个网络变成计算的编程平台,可以任意调度所需资源,并实现带宽和延迟(尤其是长尾延迟)的保证。
端网融合可预期网络的核心思想是让网络更加透明,让端侧(计算/存储等应用)更加方便灵活地利用网络信息进行资源调度。这种透明度使业务可以充分利用CLOS无拥塞拓扑、Path规划与调度,从而为业务提供更加高效的网络带宽资源。业务也可以通过对CLOS架构拓扑全透明感知,分布会话更合理,从而最小化单链路故障影响域,实现业务高稳定网络,在出现单点故障时,业务可以进行有序迁移,100%成功率切换,保证了故障场景下依然满足极致低长尾时延。
展望
阿里云基础网络团队的工作理念是“求真务实,简单开放”,AliNOS的研发也是本着这个信念进行的,从数据中心网络拓展到了广域网、边缘网及DPU,AliNOS将遇到不少新的挑战,这些新的挑战也是动力,激励阿里云基础网络团队继续做好AliNOS,让AliNOS成为建设端网融合可预期网络的基石。我们也希望通过和开源社区的合作交流,让我们的网络更加简单开放,我们的工作更加求真务实,推动全球云网络的共同发展。