2021年9月25日,由“科创中国”未来网络专业科技服务团指导,江苏省未来网络创新研究院、网络通信与安全紫金山实验室联合主办、SDNLAB承办的“2021中国智能网卡研讨会”中,多家机构谈到了SmartNIC和DPU,SDNLAB对此进行了整理,以飨读者。
智能网卡的发展有着强大的驱动力。
随着云计算的兴盛,云计算中心的每一台服务器和交换机都运行着独立的堆栈,分布式的堆栈组成了完全池化的超级仓储计算机,每台服务器运行复杂的、分层的系统,服务器上的CPU不堪重负,并且数据中心的规模日益庞大,主流的云运营商服务器的规模都在百万级。同一台服务器上的VM或容器之间,计算服务器或存储服务器之间,需要更多的流量。软件定义存储(SDS)、超聚合基础设施(HCI)和大数据等应用程序会增加服务器之间东西向的通信流量,此外RDMA也通常被用来加速服务器之间的数据传输。服务器本身对网络基础功能的处理要求更高。
另一方面,CPU的单核密度不断提高。2020年AMD通过chiplet技术将单CPU的X86核数增加到64,Intel也推出了26核的CPU。据预测,未来5年,单服务器物理核密度将从几十增加到200核。如果单核对网络IO性能要求不变,支撑CPU的网络需要从25G增加到200G。同时随着轻量VM、容器的兴起,用户密度将会大大增加,预计单网卡PF/VF数量增加到10K以上。
此外,复杂多样的网络技术及SDN的推广应用需要智能网卡提供支撑。随着VXLAN、NVGRE或者GENEVE等网络技术的应用,多层封装增加了网络的处理复杂度。SDN增加了新的数据包控制和处理的功能,需要花费CPU更多的内核来处理OVS等功能。
SmartNIC诞生
在这种背景下,SmartNIC(智能网卡)应运而生。SmartNIC 技术诞生的初衷是以比普通CPU低得多的成本实现对各种虚拟化功能的支持,如SRIOV,overlay encap/decap,以及部分vSwitch处理逻辑的offload。在服务器侧引入智能网卡,将网络、存储、操作系统中不适合CPU处理的高性能数据处理功能卸载到硬件执行,提升数据处理能力,释放CPU算力。
传统智能网卡 VS DPU
传统智能网卡上没有CPU,需要Host CPU进行管理。传统智能网卡除了具备标准网卡的功能外,主要实现网络业务加速。以NVIDIA产品为例,NVIDIA Networking的CX5系列即为SmartNIC。CX5 支持ASAP2加速,可以把网络相关工作(Fast path)卸载到eSwitch,而Slow path及控制面仍然由Host CPU处理。随着网络速度的提高,传统智能网卡将消耗大量宝贵的CPU内核来进行流量的分类、跟踪和控制。这些昂贵的CPU内核是为通用应用程序而设计的,而并非为了网络数据包的查找和管理。
图1:传统智能网卡架构
DPU也被称为新一代智能网卡,拥有高性能“CPU 可编程硬件”转发IO数据面加速的PCIe网卡设备,在实现标准网卡功能(NIC/TSO)的同时,还提供灵活的软件定义能力,为云厂商自定义的云基础设施赋能。以芯启源Agilio CX网卡为例,其搭载了芯启源DPU芯片(采用众核架构NP-SoC)具备网络报文处理引擎、流处理引擎、安全加解密引擎、接口引擎和加速硬件,具备极高的编程自由度(全可编程)。新一代智能网卡提升云主机性能,最大限度释放CPU资源。同时,通过统一架构、统一管控实现内外一张网提升网络性能,节省网关/专线,减少Buffer,进而收敛机型、降低成本。从功能性的角度来看,DPU除SmartNIC功能之外还包括易于扩展,可用C语言编程的Linux环境。
1)实现方式差别
SmartNIC实现了部分卸载,即只卸载数据面,控制面仍然在Host CPU处理。从总体上来说SmartNIC的卸载操作是一个系统内的协作。
DPU实现了完全的卸载,服务器的数据面和控制面都卸载运行在DPU内部的嵌入式CPU中。DPU实现包括软件卸载和硬件加速两个方面,即将负载从Host CPU卸载到DPU的嵌入式CPU中,同时将负载数据面通过DPU内部的其他类型硬件加速引擎,如协处理器、GPU、FPGA、DSA等来处理。从总体上来说,DPU是两个系统间的协作,把一个系统卸载到另一个运行实体,然后通过特定的接口交互。
2)功能差别
芯启源将传统智能网卡(SmartNIC)称为可卸载网卡,将DPU称为可编程的智能网卡。网卡从可卸载网卡发展到可编程智能网卡具备越来越强大的功能,越来越高的灵活度。
图2:网卡功能演进图
芯启源的卸载网卡支持OVS/VROUTER卸载,聚焦网络相关的任务卸载加速。普通OVS在做包转发处理时,首先在内核空间进行查表,如果没有命中,则发送netlink upcall到用户空间进行后续的查找;如果查找命中,则命中的flow table entry会下发到内核态进行缓存,以便后续在内核态直接命中,从而直接转发。卸载网卡进一步优化OVS转发性能,缩短数据包的传输路径,当流缓存到网卡后,后续的报文解析、流表查找和转发直接在网卡内部完成。VROUTER代理在主机操作系统的用户空间中运行,而转发器在智能网卡中运行。
可编程网卡支持eBPF卸载和P4/C语言混合编程,实现包括网络、存储、安全、虚拟化等所有底层IO的卸载加速。eBPF程序通过XDP卸载方式,降低CPU占用率,提升eBPF运行容量和效率,让eBPF程序更靠近数据面。eBPF卸载应用中,根据标准编写eBPF程序,通过LLVM将程序编译为eBPF bytecode,然后通过iproutetclibbpf等工具将eBPF程序导入内核;eBPF通过验证后,NFP BPF JIT实时编译工具将eBPF bytecode程序编译为NFP芯片能运行的机器语言并开始在DPU上运行。
3)适用场景差别
“可卸载网卡”适用于主流的OVS/VROUTER卸载和主机Overlay场景、网关安全等场景。“可编程网卡”适用于各种通用任务的卸载和加速以及业务的弹性加速场景,如容器场景、负载均衡、网络安全和高级定制化网络。DPU卸载并帮助虚拟化网络,加速云应用,有时候也被称为CloudNIC。
市场预测
芯启源智能网卡产品总监张远超在大会上展示了两个数据,一张是国内近5年DPU的市场规模预测;一张是近7年不同网卡的市场规模。
图3:中国DPU市场规模预测
可以看到,中国DPU市场在2021年将有爆发式增长,市场规模将由2020年的8814万美元,扩大到2021年的52051万美元,增长率达495%。
图4:不同功能网卡的市场规模
在不同功能网卡的市场规模方面,卸载功能的网卡(Offload NIC智能网卡)和可编程的网卡(Programmable NIC,DPU)市场占有率将逐渐增大,传统网卡市场占有率将逐渐缩小。智能网卡的平均年复合增长率将达到23%。
会上,中国移动研究院数据中心网络项目经理王瑞雪介绍了智能网卡在中国移动云中的应用,主要包括三个方面:
#
网络功能卸载
中国移动IT云和网络云采用混合SDN方案,面向不同业务提供虚拟机或裸机部署能力,面向虚拟化场景,引入智能网卡突破提升vSwitch转发性能和数据处理能力;面向裸机场景,引入智能网卡构建弹性裸金属服务。
#
存储功能卸载
存储功能卸载包括云盘挂载卸载和高性能存储协议卸载,前者通过支持virtio-blk,提高存储访问灵活性和安全性;后者面向边缘计算视频加速、CDN等场景,进一步提升存储协议处理性能,构建端到端低时延网络。
#
运维能力卸载
传统SNMP协议无法反映路径、丢包、时延等真实网络状态;随着VXLAN、RDMA等协议部署,网络转发行为愈发黑盒;当前硬件交换机及vSwitch实现仍存在限制,采样性能及精细化程度受限。引入智能网卡,将vSwitch采样点下沉到服务器智能网卡,实现真正实现业务端到端网络可视化,降低CPU消耗。
存在问题
DPU技术架构将遇到发展瓶颈。目前主流的DPU采用FPGA SOC解决方案,预计在200Gbps网络,芯片面积将达到800平方毫米,功耗将达到150w,芯片面积和单卡功耗都将达到上限。FPGA厂商开始转向推FPGA ASIC的混合方案,而ASIC架构的灵活性不足,硬件逻辑不可编程,需求变更开发周期长,长期演进风险高。
标准化待成熟,产品落地面临接口解耦压力。运营商多云多业务场景需适配不同类型智能网卡,随着存储、业务、运维等功能卸载后,会遇到越来越多的品牌产品、异构智能网卡及解耦场景。以OVS转发面卸载为例,规模化应用智能网卡需要实现两个接口解耦,包括标准化vDPA框架实现virtio 1.0标准接口的前后端协商以及标准化网络功能及对应rte_flow标准接口。
智能网卡的集成度、灵活性及可靠性相互制约,需要针对不同应用场景做出权衡。对于集成度高、成本低、单网卡端口密度高、单网卡故障影响范围大,替换运维复杂。集成度低、成本高、不同网卡卸载不同功能,故障域小,替换简单,暂不支持跨网卡绑定。
小结
传统智能网卡和DPU是智能网卡在演进路径上不同阶段的产物。两者在架构、功能、实现方式等方面的差异,有着不同的适用场景。普通网卡演进为智能网卡已经成为必然,有预测表明,未来还将发展为IPU、eIPU。再远的未来如何?我们拭目以待。