在2020网络数据平面峰会上,来自阿里云智能基础产品事业部的资深技术专家——宗志刚,给我们介绍了阿里云网络洛神平台可编程数据平面的架构与相关实践。
宗志刚首先介绍了阿里云网络产品全景图和技术全景图,接着介绍了洛神平台的网元的数据平面的演进和发展,最后讲述了未来阿里云的研究方向。
阿里云网络产品全景图
阿里云网络产品由三个部分构成,提供了非常丰富的网元,共同构成了全球一体化的虚拟化网络。
- 第一个部分:云上网络。传统的计算虚拟化上云之后,虚拟机之间的连接以及公网访问,就是通过云上网络的产品去构成的,比如说VPC、NAT弹性IP、SLB等等。
- 第二个部分:跨地域网络。云上网络之间的连接是通过跨地域网络去实现的,包括云企业网CEN,以及阿里云最新发布的全球加速GA。
- 第三个部分:上云网络。上云网络云连接网CCN以及智能接入网关产品。企业有一部分计算上云之后,还有一部分线下的IDC和终端门店和云上的计算连接,需要通过上云网络去实现。
阿里云网络技术平台:洛神
阿里云网络技术平台,称之为洛神。人们更熟悉的可能是阿里云的飞天操作系统,而洛神平台是阿里云飞天操作系统的核心组件。
整个飞天操作系统包括几个层次,包括计算虚拟化——神龙平台、存储虚拟化——盘古平台、网络虚拟化——洛神平台、物理资源的抽象和管理——天基系统。
在这些平台的基础上提供了各种服务,比如计算服务、存储服务、网络服务、大数据服务等等。
最上层是基于云平台构建的原生服务。比如云原生的数据库、云原生的大数据、中间件、AI计算等等。
洛神网络平台是阿里云飞天操作系统的内核组件,提供了网络的虚拟化,由众多的网元构成,包括管控层面以及数据层面。
洛神平台的网元的数据平面的演进和发展
洛神早期的架构是业界应用的非常广泛的DPDK,它是基于X86的CPU,采用软转发方式,实现了众多丰富的网元。例如AVS、XGW,NAT、SLB等等,数据平面都是基于DPDK构建的,上层是它的管控系统,通过SDN管控控制器下发相关的转发表项,在DPDK的数据平面里面实现转发。
上层是业务编排系统,它提供Open API给用户,例如上图右边图示,整个网元连接起来之后就构整个虚拟化网络。
随着业务场景的复杂化,上云的客户越来越多,基于DPDK的数据面也遇到了一些挑战,包括两个方面:
第一个挑战是流量的激增。虚拟机网络带宽的持续演进,从原来的10G到现在的25G以及即将上线的50G、100G。带宽增加之后,东西向的流量就会持续增加,同时整个公网和专线的流量,也开始爆发式的增长。看上图region的采样数据,从19年到20年的公网和专线的流量,呈5倍的增长。虽然通过DPDK的软转发数据平面也可以应对这些流量的增长,但代价会很高,因为这需要构建数量庞大的X86服务器,成本和功耗会非常高。
另外一个挑战是机架位。由于CPU服务器的数量很多,会占用大量的机架位,但是IDC的资源机架位非常紧缺。在此情况下,洛神平台的网元的数据平面进项了相应的优化:
阿里云最终采用了软硬件一体化的方式,基于AISC芯片转发性能有了大大的提高,从原来的单机大网卡100G,到现在的单芯片3.2T、6.4T,再到未来的12.8T,转发性能增长了几十倍,可以有效的缓解流量增长的问题。
基于这种AISC芯片的网关已经上线,并且已经成规模地应用于公有云客户,可以为云上的个别超大规模租户,提供超过10T的专线能力。
硬件芯片的选择
整个数据平面进行了一次升级,从DPDK的这种软转方式升级到了软硬件一体化的芯片。在开始升级的时候,阿里云面临一个选择——什么类型的硬件芯片最合适呢?
阿里云有几个选择,第一个用传统的AISC卡,因为传统的网络设备交换机里的AISC已经非常成熟。第二个是P4可编程AISC芯片——一个可编程能力越来越强的芯片。另外一个FPGA,传统意义上,它也算是硬件芯片。
最终阿里云选择了P4可编程AISC芯片,原因是业务有快速迭代的诉求,然而传统AISC芯片的功能已经固化,没有办法完美匹配的诉求,同时,很多的转发行为是一个定制化的,传统的AISC芯片无法支持,因此,需要一个灵活的、可编程的硬件芯片。
在可编程硬件芯片上面,传统的FPGA虽然非常灵活,但它的功耗和成本比较高,在相同转发能力的情况下,它比 p4可编程的AISC芯片在功耗和成本上高出了许多,所以阿里云最终选择了p4可编程的AISC芯片。
转发模型的取舍
选择好芯片之后,对于其内部的转发模型也进行了取舍。数据面转发模型包括传统的Pipeline和 Open Flow的match/action方式,最终阿里云选择了match/action转化模型。
主要原因是业务上灵活性的需求。基于 pipeline的固化架构,修改起来会比较麻烦。而用match/action这样高度抽象的转发方式,就算上面的业务可能会发生剧烈的变化,你只需要在管控系统里面去适应业务的变化就行。对于底层数据面的转发,可以高度的抽象,从而减少对数据面的适配要求,这样可以使业务快速上线。由于管控系统上的控制器相对较少,而下面的转发的网元数目较多,涉及到发布、维护、流量的切换等等的一系列的问题,选择match/action的这种抽象的方式,可以有效的减少新业务上线之后的修改。所以最终阿里云选择了match action。
同时由于可编程芯片的灵活性,可以有效的通过适配层,让转发网元的转发性能得到了提升让上面的管控系统不用去感知,它的接口、参数都没有发生变化,下面的,这样可以通过屏蔽层和灵活的可编程模式,减少对管控系统带来的影响,数据面的接口是向上兼容的,这是阿里云目前的应用方式。
芯片表项的优化
可编程芯片也带来了挑战,在于芯片表项的限制。因为硬件芯片的表项是有限的,要考虑到芯片的面积、功耗、成本。原来的软转发的表项是存在内存里的,基本上可以达到海量规模。所以应用芯片作为转发网元最大的挑战是表项的规模。对此,阿里云也进行了大量的优化。
首先阿里云充分挖掘了芯片的能力。在转发芯片包含多个pipeline,通过多个pipeline去共同达成高速的转发性能。最简单的编程方式就是每一个pipeline里都下发相同的表项,所有的处理逻辑是全部对称的,整个的转发模型非常简单。但是这种方式也有相应地代价,每一个pipeline里保存的相同表项,就是整个芯片对外的能力。
考虑到芯片的转发模型的特点,阿里云采用了非对称的转发方式,处理逻辑分布在不同的pipeline里,通过不同的pipeline的表项相互叠加,来提升转发表项的能力。例如公网网关里的带宽包拆分到不同的pipeline里,整个带宽包的规格由此可以提升一倍。
其次,阿里云对整个软件的表项格式也进行了优化。在软转发的转化模型里,为了清晰简单,很多的表都是独立的,以弹性IP为例,弹性IP包括vm-ip和弹性IP绑定的表,还有带宽属性,带宽又跟Meter的资源绑定,在整个软件转发里,一个弹性IP可能包括三张表。
但这三张表用硬件实现,占的表项空间就相对较大。所以阿里云进行了合表。一些 vm-ip对应的eip的带宽,Meter等等这些资源都合到了一张表里,这样可以有效提高整个芯片表项的利用率,提升25%的能力。基于可编程芯片的的表项规模,再通过多组多集群的部署方式,可以有效满足公有云海量租户的要求。
实现网络QoS
利用可编程芯片数据平面,实现网络QoS的能力。大规模租户的应用较复杂,部门较多,不同应用的优先级不一样,对于带宽的要求也不一样,如果每个应用都按照它最大带宽来购买,成本会非常高。所以,许多超大规模客户希望购买一定带宽,然后在发生堵塞的时候先丢弃优先级低的报文,保证高优先级的报文通过。通过可编程数据平面可以实现了这样的QoS的功能,并且该功能已经成规模地应用了。
综合来看,通过数据平面的可编程能力,和软硬一体化的架构,洛神平台数据平面提供了超高的转发性能,大大提升了芯片的表项规模,并且硬件芯片在云计算网络里已经规模化应用。
未来优化
阿里云未来将从以下几个方面进行优化。
第一,异构芯片。当前阿里云使用的Barefoot P4可编程芯片,未来阿里云可能会使用多厂商的异构芯片,比如阿里自研芯片、broadcom芯片等。通过芯片适配层,可以有效的屏蔽芯片的差异,做到快速上线。
第二,网络安全。随着大量不同行业的租户上云,对网络加密安全有了更高的要求。通过可编程的数据平面提供加密的功能,来支撑不同的客户的诉求。
第三,网络可视化。网络往往是一个黑盒,未来通过可编程的数据面,可以将网络里面转发的信息携带到网络的处理系统里,实现网络可视化,帮助网络更有效的支撑业务系统,同时增强网络的运维能力。
以上就是宗志刚关于阿里云网络洛神平台在可编程数据平面的架构以及实践的分享。