云网融合背景下智能网卡的产业发展及趋势分析*
2022-12-06赵静陈元谋
赵静 陈元谋
(中国电信股份有限公司研究院战略发展研究所,北京 102209)
0 引言
随着“新基建”“数字经济”等国家政策的推出,云网融合已成为我国数字信息基础设施建设的重要内容和典型特征。云网融合是通信技术和信息技术深度融合所带来的信息基础设施的深刻变革,目标是使传统上相对独立的云资源和网络设施融合形成一体化供给、一体化运营、一体化服务的体系[1]。云网融合,既是国家战略布局的重要保障,也是新技术发展的必然趋势,更是解决云网重构问题以满足社会多样化业务诉求的破局关键。
超大规模数据中心(Hyperscale Data Centers,HDCs),作为云网融合加速演进升级的重要底座,凭借其强大的计算和存储能力,已经成为当今数字时代最重要的基础设施之一。IDC的数据显示,2020—2025年全球产生或复制的数据量以复合年均增长率(Compound Annual Growth Rate,CAGR)保持23%的比例增长[2]。数据的指数级增长和频繁交互,造成流量激增,使得数据中心网络不得不向更高性能和更高灵活性方向演进。根据IEEE P802.3 bs标准[3],未来以太网产品将以200 Gbit/s、400 Gbit/s速度运行,甚至向800 Gbit/s、1.6 Tbit/s演进。仅靠提升软件和算法方面的计算能力已无法满足数据激增和业务加速处理的需求,要进一步提升基础设施整体性能,必须从硬件入手。
然而受限于摩尔定律放缓、量子计算技术尚未成熟,中央处理器(Central Processing Unit,CPU)计算能力增速低于网络传输速率的增速并且差距持续增大(见图1)。通过CPU进行内存访问和数据搬移的开销、网络处理加速的成本,正变得让人望而却步。中科院数据显示,服务10G网络通信的协议处理就需要8核高端CPU一半的算力[4]。传统以计算为中心的系统体系架构已无法满足高性能、低成本的硬件加速需求,以数据为中心的智能网卡(Smart NIC)应运而生。
图1 以太网带宽与CPU性能增速比(RBP)失调
1 硬件加速方案分析
1.1 以CPU为中心的硬件加速方案
随着社会数字化、智能化发展,通用CPU在大数据分析、人工智能等密集型计算和数据处理领域面临的问题越来越多。为适应计算多元化和不断增长的性能需求,越来越多的场景开始引入图形处理器(Graphics Processing Unit,GPU)、张量处理器(Tensor Processing Unit,TPU)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)等各种硬件加速器,异构计算随之产生。
以计算为中心的加速方案,主要通过指令控制流驱动计算。目前,应用较成熟的硬件加速方案,通常以CPU为中心设计,并通过外加一种硬件加速器完成某一特定场景中的计算任务加速。GPU是目前应用最广泛的硬件加速器,基于CPU和GPU的硬件加速方案架构如图2所示。CPU作为计算和控制中心,一方面执行常规逻辑任务,例如网络堆栈中的数据包处理,并完成与网络客户端的交互;另一方面向硬件加速器发送请求,完成相关的加速器调用、数据传输和同步等任务。
图2 以CPU为中心的硬件加速方案架构
随着计算需求不断增长,各种硬件加速器层出不穷,以CPU为中心的加速方案面临的问题也越来越多,主要问题如下。
(1)CPU管理加速器开销大。所有加速器调用、同步和数据移动的任务程序都在CPU中运行。随着计算加速器种类增多,必然会给CPU带来越来越大的负担。而且这些任务会严重影响时延敏感内核的端到端延迟。有研究表明,在CPU+GPU的运行过程中调用300 μs的神经网络推理,每个请求大概会产生30 μs的延迟开销,约占10%,这也是造成多GPU缩放不佳的根本原因[5]。
(2)CPU内核浪费。将网络服务器逻辑和加速器管理卸载到更适合这些任务的处理器,CPU可发挥更大的价值。例如,与加速器交互时需要通过高速串行计算机扩展总线标准(Peripheral Component Interconnect Express,PCIe)总线访问内存映射控制寄存器,介于CPU寄存器比较长,会产生延迟和阻塞等问题;轮询可用于解决低延迟问题,但轮询在简单的微控制器就可以运行,而没必要浪费CPU内核。额外的CPU内核可以用来处理其他更高价值的任务,实现整体性能的最大化。
(3)应用程序干扰。以CPU为中心的设计,存在低效率和性能隔离较差的问题。在多租户系统中,硬件加速服务会受到同一台机器上来自其他云租户应用程序运行的干扰,与单独执行该加速服务相比,在不同的CPU内核上并发执行这两个工作负载会导致延迟较高,不利于时延敏感任务的加速处理。
1.2 以智能网卡为中心的硬件加速方案
智能网卡,又被业界称为数据处理器(Data Processing Unit,DPU)或基础设施处理器(Infrastructure Processing Unit,IPU),是一种兼具硬件加速和网络传输功能的可编程智能网络适配器,主要用于卸载、加速和隔离软件定义的网络、存储、安全和管理功能[6]。与传统网卡相比,智能网卡最直接的作用是被用作CPU的卸载引擎,与CPU控制面相配合,释放CPU的算力到上层应用,最终实现高性能与通用性的最佳平衡。
以数据为中心的加速方案,主要通过数据流驱动计算,具体参见图3。采用将数据集中处理、调度的方式,一方面利用灵活可编程的硬件加速引擎,完成网络、存储、安全等领域的功能卸载,满足多样性计算加速需求;另一方面,配备高性能网络接口,如100G、200G、400G或更高性能的接口,实现以线速解析、处理并快速传输数据到CPU和其他硬件加速器。智能网卡不仅能有效提高数据处理性能,大幅减轻CPU的负担,还能降低其他硬件加速器的性能损耗,最大程度地提升系统的整体性能。
图3 以智能网卡为中心的硬件加速方案系统架构示意图
与以CPU为中心的加速方案相比,以智能网卡为中心的加速方案具有以下优势。
(1)整体性能更高。以数据为中心的处理结构,网络数据直接由智能网卡处理、调度、I/O加速,避免了因数据接入/输出路径过长导致的数据处理性能受限。智能网卡还集成了多核CPU、专用处理器核和高速I/O接口,既可实现数据面和控制面的任务处理加速,又可满足多业务需求,提高了整体性能。
(2)提高硬件资源利用率。智能网卡实现了各种基础设施任务的操作卸载,不仅为CPU减轻了网络、安全、存储和加速器管理等方面的加速负担,还为其他硬件加速器提供了硬件卸载功能,大大提高了CPU和硬件加速器的资源利用率,以及加速器的可移植性。
(3)性能分离。智能网卡实现了基础设施功能和租户工作负载物理分离,有效避免了硬件加速服务和同时运行的其他云租户应用程序的干扰问题。此外,通过卸载安全控制平面,实现主机业务和安全控制隔离,保证了安全性;通过卸载存储功能,实现算存分离,有利于存储厂商发挥自家产品优势。
(4)灵活可编程。智能网卡可编程、可灵活配置,支持各类应用程序按需定制,并且支持重新组装以满足新的要求。
2 智能网卡的前沿研究进展
近年来,利用智能网卡进行硬件卸载已经受到学术界的广泛关注,关键技术正在逐渐完善。最新发表的研究主要集中在智能网卡的数据传输、负载平衡、任务调度和性能隔离等功能的技术突破上。
2.1 数据传输
主机端传输层的硬件卸载是智能网卡实现网络高性能的核心,然而也是网络堆栈中最复杂、有状态的组件。智能网卡通常需要集成专门的网络协议处理核来实现百G级别的数据包线速处理,如TCP/UDP协议、远程直接内存访问(Remote Direct Memory Access,RDMA)、数据包交换协议等,但实现有状态的数据传输仍面临挑战。
RDMA技术,通过引入RoCE(RDMA over Converged Ethernet)协议已成为在基于以太网的数据中心中部署RDMA的规范方法[7-8],主要用于实现超低时延、超高吞吐量传输。RoCE只有在无损网络才能实现良好的端到端性能,故通常需要结合基于优先级的流量控制(Priority-based Flow Control,PFC)机制来避免数据包丢失。然而引入PFC会带来一系列性能问题,如网络阻塞、死锁等[7-10]。对此,文献[11]设计了一种改进的RoCE NIC,通过损失修复和端到端流量控制,以一些增量修改为代价,消除了RoCE对PFC的依赖,并且提高了性能。
2.2 负载平衡
在数据中心中,跨多个服务器的负载平衡一直是实现更高性能和资源利用率面临的重要挑战,单个主机内的负载平衡也不例外。虽然多核服务器可以利用多队列网卡将传入的数据包分发给不同的CPU,但是因大象流和老鼠流混合而产生的公平性问题依然存在;并且由于缺乏对服务器资源的了解,智能网卡仍无法完全支持自动缩放和负载平衡。尤其是在边缘场景中,这些涉及处理延迟的问题将更加严重。根据最新的研究,通过优化智能网卡的体系架构并充分利用其灵活可编程的特点[12-13],可以很好地解决上述问题。
文献[12]提出了一种在边缘服务器中使用智能网卡来优化性能和减少延迟的方法,在智能网卡上重新集成负载均衡器和自动缩放器,通过动态加权算法平衡端口之间的负载,利用有状态的流表在缩放时保护流的亲和力等,可以提高流级的公平性20%,减少15%+的尾部延迟,并支持高性能网络功能的自动缩放。文献[13]则主要面向时延敏感车载网络,提出了一种新的智能网卡体系架构,通过使用基于硬件的负载平衡器和网络监控软件,实现动态分配网络流量给可用的本地和远程处理资源池,提高了可用计算资源的利用率,并且保证了端到端延迟。
2.3 任务调度
多租户云数据中心要求相互竞争的租户和应用程序彼此隔离,并公平地共享有限的网络资源,需要智能网卡执行相应的调度、策略。但是对于当前的智能网卡而言,大部分的控制、调度和管理任务仍由主机CPU负责,若使用单个网卡队列在软件中强制执行网络策略,不仅加重CPU负担,还难以驱动不断增加的线路速率。智能网卡亟需一种完全适用于自己的新型调度方法和策略。
文献[14]提出了一种新型智能网卡架构,在网卡上集成一个可定制、分层的数据包调度器和一个高速的OS/NIC接口,使得每个流都有一个队列,实现将所有单个流调度决策从操作系统移到网卡中。试验结果表明,该设计能够以低CPU开销将所有数据包调度完全卸载到网卡,并且在运行各种调度算法的同时,实现操作系统驱动线路速率(100 Gbit/s)。针对神经网络加速问题,文献[15]提出一个以FPGA为中心的智能网卡框架,支持同时执行计算、通信和控制,允许在多个智能网卡设备上进行灵活和细颗粒度的任务创建、分发、执行和终结,实现CPU分离的调度,最大限度地隐藏流媒体应用程序网络通信延迟,同时避免CPU干预,在系统级别上实现了高FPGA利用率和高性能。
2.4 性能隔离
为了充分发挥智能网卡的优势,未来考虑让多云租户利用共享的硬件资源以提升性能。在共享的智能网卡上运行来自不同租户的应用程序的关键挑战是确保性能隔离。虽然目前已有不少智能网卡投入商用,主要用于支持网络虚拟化和特定应用程序的任务,但是当下的智能网卡并不能为其上运行的单个应用程序之间提供足够的性能隔离。
要实现基于FPGA的智能网卡上的性能隔离,需要考虑FPGA设计生态系统的各个方面,如全局综合、路由功能等,这会使多租户环境的使用复杂化[16]。对此,文献[16]提出了一种基于SoC智能网卡的性能隔离机制,以便能公平地分享每一种相互竞争的资源。试验结果表明,该解决方案平衡了维护25 Gbit/s线路速率处理的需要,在实现数据包处理有效隔离的同时,还能公平共享对固定功能硬件加速器的访问。
3 国内外主流厂商的智能网卡产品
国内外主流厂商的智能网卡产品参见表1。其中,国外的代表性产品主要有NVIDIA的DPU、Intel的IPU、Marvell的OCTEON10等;国内的代表性产品主要有阿里云的CIPU、芯启源电子科技有限公司(简称“芯启源”)的Agilio系列等。
表1 国内外主流厂商及其智能网卡产品
3.1 NVIDIA的DPU
2021年4月,NVIDIA发布了其第三代DPU产品——Bluefield-3系列[17],旨在实现一种专门针对数据中心基础设施软件的新型处理器,用以卸载和加速由虚拟化、网络、存储、安全和其他云原生AI服务产生的巨大计算负载。
BlueField-3号称首款可实现400 Gbit/s速度的DPU产品。BlueField-3可提供“零信任”安全环境,通过对数据中心的每个用户进行身份认证,保障企业从云到核心数据中心再到边缘的安全性。BlueField-3具有NVIDIA的网络内计算技术,支持下一代超级计算平台,提供最佳裸金属性能和对多节点租户隔离的本地支持。此外,BlueField-3通过NVIDIA DOCA软件框架提供了一个完整、开放的软件生态平台,便于开发者在BlueField系列上开发应用,并且随着每代DPU的演进,原开发应用程序可以完全向后兼容。
3.2 Intel的IPU
Intel推出的IPU是一个具有硬化加速器和以太网连接的高级网络设备[18],使用紧密耦合的专用可编程内核来加速和管理基础设施功能,旨在使云和通信服务提供商减少CPU开销,并充分释放其性能价值。
IPU支持将CPU或xPU连接到网络以加速主机基础设施功能,包括安全性、虚拟化、存储、负载平衡,以及虚拟网络功能和微服务的数据路径优化[19]。同时,IPU具有2个100 GbE网络接口和集成的硬加密块,能够以线速保护工作负载。IPU增强了传统网卡中的以太网网络功能,主要通过硬件加速器和紧密耦合的计算引擎组合处理任务。此外,Intel的IPDK(互通制程设计套件)的生态发展良好,围绕着IPU的体系结构和软件生态定义了许多云计算基础设施上的应用。
3.3 Marvell的OCTEON 10
Marvell最新推出的OCTEON 10系列DPU,支持最新的PCIe 5.0 I/O与DDR5内存,可实现集成机器学习推理引擎、加密处理引擎和矢量数据包处理引擎等的虚拟化,专为有较高性能要求的云、5G、数据中心应用而设计[20]。OCTEON 10采用了最新的ARM Neoverse N2内核,在整型处理上是目前算力最高的DPU,但是浮点运算仅支持FP16,在做内联机器学习时有一定局限性。OCTEON 10引入了矢量数据包处理引擎,与上一代的标量处理引擎相比,它能够将数据包的处理吞吐量提高5倍,降低功耗50%[20]。
3.4 阿里云的CIPU
2022年6月,阿里云发布云基础设施处理器(Cloud infrastructure Processing Units,CIPU),并宣称未来将替代CPU成为云计算的管控和加速中心[21]。CIPU向下接入云基础设施物理资源,包括计算、存储、网络资源,并进行快速云化和硬件加速;向上接入飞天云操作系统,管控阿里云全球200 多万台服务器,提供更高性能、更低价格、更可靠的云计算服务。CIPU与计算结合,对接入各种类型资源的服务器进行硬件加速,将算力虚拟化损耗降为“0”,并提供硬件级安全隔离;CIPU与存储结合,对存算分离架构的块存储接入进行硬件加速,实现访问云端比访问本地硬盘更快;CIPU与网络结合,对高带宽物理网络进行硬件加速,通过构建大规模弹性RDMA高性能网络,时延最低可达5 μs[22]。此外,CIPU和飞天系统还支持与阿里云其他自研产品进行深度的适配,如神龙计算、盘古存储、洛神网络和安全内核等。
3.5 芯启源的Agilio系列
芯启源一直致力于设计和研发智能网卡和高端芯片,并为网络通信领域提供最优的解决方案。Agilio智能网卡平台是芯启源发布的首个兼顾软件和硬件的解决方案,主要用于实现开源通用计算网络数据路径的透明卸载。Agilio支持多达200 万个安全规则,可提供100 Gbit/s、28 Mbit/s的吞吐量,同时仅需要消耗1/10的计算资源就能提供可扩展的通用计算网络功能[6]。此外,Agilio还具备灵活高效的可编程能力,支持P4/C语言的混合编程和eBPF卸载,助力实现业务定制化功能,满足不同场景下的业务需求。
综上所述,DPU侧重的是集成加速平台的数据卸载能力,重点关注CPU上网络、存储、安全等任务的硬件卸载;IPU侧重的是虚拟化云化能力,聚焦数据密集场景下计算能力的提高;OCTEON 10关注最新处理器内核的使用,侧重于将某一特定算法或应用的计算能力发挥到极致;CIPU侧重硬件芯片与云操作系统以及其他相关平台的融合,关注软硬件一体化;Agilio侧重兼顾软件和硬件的智能网卡解决方案,并重点实现产品的通用性和高可编程性。以上所有产品,都旨在通过“软件定义+硬件加速”的方式,替代CPU成为新的核心硬件。
4 智能网卡的典型应用
智能网卡常被应用于网络、存储和安全等的功能卸载[4]。例如,将虚拟交换机(Open vSwitch,OVS)的数据面卸载到智能网卡,可有效提升报文转发性能且保证安全性;将NVMe-oF(NVMe over Fabric)功能卸载到智能网卡,可为云主机提供与本地NVMe性能接近的高性能弹性远端存储,不仅显著提升了存储性能,也提高了服务器自身的CPU利用率;将NGFW和DDoS等安全设备上的流表卸载到智能网卡,通过拦截流量,实现安全服务应用的硬件加速;将虚拟化网络的控制平面完全卸载到智能网卡上,可实现主机操作系统与虚拟化网络的安全隔离,有效防止黑客攻击时的范围扩散。下面将以OVS卸载为例,详细介绍其应用痛点及解决方案。
一直以来,云服务商主要依赖OVS进行流量转发。然而随着网络流量的激增和业务需求的演进,转发承载数据越来越复杂和沉重,对OVS性能提出了更高的要求。介于CPU不适合处理并行固定模式的计算,OVS内核转发性能最多只能达到几十万pps[6]。虽然借助DPDK(Data Plane Development Kit)可实现转发带宽量级的提升,但是OVS-DPDK在转发数据时需要跨CPU,不同虚拟机(VM)的流量会因为CPU瓶颈导致拥塞,不能保障租户带宽隔离,并且无法满足高性能网络需求。转而通过SR-IOV(Single Root I/O Virtualization)可以简单提高性能但又会导致虚拟机迁移受限等问题[4]。
将OVS卸载到智能网卡可以很好地解决上述问题,主要包括OVS数据面卸载和OVS全卸载两种模式。OVS数据面卸载原理如图4所示,只将OVS的流表卸载到智能网卡硬件执行,控制面维持在虚拟化网络主机上。该方案的优势在于控制面不需要过多适配,就能使数据面性能得到很大的提升。随着智能网卡的成熟演进,OVS将逐渐实现控制面和数据面同时卸载到智能网卡,全面释放CPU算力资源。但是这依赖于智能网卡的技术提升和大规模应用推广。
图4 OVS数据面卸载原理
5 智能网卡的发展趋势
5.1 加强软硬件协作是智能网卡技术成熟和商业化推广的关键
在目前“多PU”(CPU/GPU/TPU)共存的发展环境下,智能网卡需要将XPU的数据或业务先剥离再集中处理。期间,智能网卡自身的软硬协作以及智能网卡与XPU的软件协作至关重要。
高效便捷的软硬件协作,不仅能提升维护和迭代的效率,还能保证智能网卡产品研发质量。例如,开发人员可以通过软件适配来调度各个处理器的编程框架,从而构建良好的开发环境,充分发挥智能网卡的最大效能。此外,软硬件协作也是智能网卡满足定制化需求和商业化推广的关键。例如,客户可以通过使用具体场景的软件,执行网络/存储/安全卸载等方面的具体需求,并延伸至不同的行业领域。与此同时,随着智能网卡的商用落地和大规模推广,大量新应用需求不断涌现,使得智能网卡软件功能覆盖广度与适配度成为智能网卡产品商业化竞争的关键。即使目前主流厂商(如NVIDIA、Intel、芯启源)已经有了一些针对自身封闭生态制定的解决方案,但是由于软件生态开放程度有限,商业化推广进程缓慢。
5.2 高效简易的编程方式助推智能网卡创新产品赋能各行各业
随着数据中心业务的多样性发展,业界对智能网卡平台可编程性的要求越来越高。智能网卡,不仅要直观地表达出并发处理任务、充分利用计算资源、提高计算效率,还要兼顾易用性,尽量采用易于设计、开发和维护的高级语言进行编程。
智能网卡将在未来承载更丰富的应用场景,包括但不限于网络、存储、安全、云计算、5G、人工智能、安全、生命科学等场景[6]。例如,将CPU上网络/存储/安全等功能卸载下来,为CPU减负;运行Hypervisor,高效完成网络虚拟化、IO虚拟化、存储虚拟化等任务,彻底释放CPU算力;成为算法加速的沙盒、灵活的加速器载体等。在众多应用场景的驱动下,智能网卡必将拥有更高效、更通用、更易用的可编程平台,更方便地通过中间件和接口实现快速开发,更加强调无缝衔接、可迁移、可直接调用,其生态也将愈加成熟。
5.3 底层架构和上层应用的标准化统一是大势所趋
目前,要实现智能网卡底层架构和上层应用的标准化,虽然还存在一定挑战,但已经是智能网卡行业发展的大势所趋。智能网卡的主流厂商在底层架构的设计和实现方式方面仍存在各自封闭发展的问题,例如:NVIDIA采用的是“ARM+ASIC+专用加速器”的架构,Intel主要采用的是基于“FPGA+x86”的架构,而芯启源则采用NP-SoC的架构,并且各自都有一套自研生态系统。此外,负责上层应用的各大厂商正在结合自身战略锚定不同应用细化领域进行产品研发,技术方面也是“八仙过海,各显神通”。这些厂商通过COTS组件构建系统以降低研发成本,又以打造定制化产品为目的分层构建IaaS/PaaS/SaaS服务。
上层应用的标准化发展和底层架构的统一紧密相关。一方面,上层负载不同必然导致其对底层架构的需求各异;另一方面,随着智能网卡未来多样化的场景需求,需要统一的上层应用来整合这些不同类别的应用需求,并适应底层架构。未来,要实现智能网卡在各个领域的全面部署,构建一种大规模统一的底层架构和完整的上层应用生态,在满足特定需求的同时便于横向扩展必不可少。
6 结束语
随着5G、云计算、大数据、人工智能等云网融合基础要素技术的快速发展,快速且安全地处理各领域业务对当下的基础设施提出了更高要求。智能网卡,凭借其“软件定义+硬件加速”的高性能、可编程、低成本的优势,引起了学术界和产业界的广泛关注。与现有的以CPU为中心的加速方案相比,以智能网卡为中心的加速方案不仅能大幅减轻CPU的负担、有效提高数据处理速度和安全,还能降低其他硬件处理器的性能损耗,最大程度地提升系统整体性能。目前,学术界已在智能网卡的数据传输、负载平衡、任务调度和性能隔离等方面的研究取得了明显进展;产业界的智能网卡主流产品也已进入技术稳定和初步商用阶段。下一阶段,智能网卡将不断优化底层硬件设计,并提高灵活可编程的能力,逐步由单一场景功能的精细化扩展至各行各业的广泛应用。此外,考虑到智能网卡的技术成熟和商业化推广,构建开放的软件生态,加强软硬件协作,并实现底层架构和上层应用的标准化统一,将成为智能网卡行业关注热点。未来,CPU、GPU、DPU等计算架构将持续融合,迈入“多PU”共存的时代。