本文是The Linley Group的白皮书,从软件的视角,介绍基于NVIDIA DPU的DOCA框架。
DPU(Data Processing Unit,数据处理器)能够提高数据中心的效率,但底层编程的难度阻碍了其广泛使用。NVIDIA通过DOCA框架将BlueField DPU的编程抽象化,从而解决了这个问题。此外,客户将能够使用DOCA和CUDA这对组合,对未来的融合型DPU+GPU硬件进行编程。NVIDIA赞助了本白皮书的撰写,但报告中的观点和分析均来自于作者。
1 DPU+GPU的融合之路
DPU将为异构计算加速组合的数据中心又增加一个实体,使整个计算变得更加高效。DPU对数据中心的解耦非常重要,它使得CPU专注于计算任务,而让DPU处理联网计算和存储之间的数据移动。云服务提供商使用基于DPU的智能网卡(SmartNIC),能够节省服务器处理器资源占用,进而把这些资源用于售卖。另外,DPU比CPU更高效地处理网络流量,因而可以降低数据中心的能耗。在存储系统中,它们可以取代标准CPU,以更低的能耗提供更大的SSD阵列吞吐量。
已经有一些厂商提供定位为DPU的处理器。经过对该产品领域的研究,The Linley Group将DPU定义为一个集成了从网络端口到PCIe接口所有主要功能的可编程网络系统级芯片(SoC),高速PCIe接口将DPU与可编程以太网交换机芯片以及嵌入式处理器区分开来。内置用于高速数据包处理的数据平面,PCIe接口的DPU可作为智能网卡网络流量的终端,也可以连接到存储控制器卡上的SSD。
图1:BlueField DPU路线图:相比前代产品,BlueField-3将扩展通用计算和网络性能,而BlueField-4还将增加一个用于AI加速的GPU。
NVIDIA通过2020年收购Mellanox进入了DPU领域并推出了BlueField系列产品。现在发售的BlueField-2可用作智能网卡和存储控制器,集成了高达200Gbps的以太网端口和高速PCIe接口。该芯片集成了高性能的八核ARM CPU以及IPSec和TLS加密的可编程的、线速转发的处理引擎。BlueField-2还包括了正则表达式(reg-ex)加速器,它能够为入侵检测、反病毒和垃圾邮件过滤等应用卸载字符串搜索,同时还提供公钥加密引擎、真随机数发生器(TRNG)以及安全启动。其PCIe Gen4 x16主机接口可以处理200Gbps的网络吞吐量。
在2021年GTC大会上,NVIDIA宣布BlueField-3将于2022年上市,并透露了BlueField-4的路线图(如图1所示)。BlueField-3使用16个Cortex-A78核,其计算性能将比前代产品提高约四倍,并将网络带宽提高1倍。它能够处理高达400Gbps的以太网和InfiniBand端口速度,其PCIe Gen5主机接口将使x16插槽的可用带宽再增加一倍。
BlueField-2和BlueField-3依靠ARM核进行AI处理,而BlueField-4将集成一个用于AI加速的GPU。这使得该芯片的AI性能与NVIDIA的A100等顶尖加速器处于同一级别。同时,NVIDIA计划在BlueField-3X加速卡上采用双芯片的方案,增加一个75 TOPS的加速器,在一个PCIe槽位上实现DPU+GPU的集成解决方案。随着开发者在网络安全、软件定义网络、云编排和其它应用中添加AI功能,他们可以采用这种NVIDIA的DPU+GPU硬件和软件来加速AI和网络处理。
2 BlueField提供硬件加速
不同于CPU,DPU专为网络包处理而设计。虽然架构不同,但大多数都包含可编程数据平面,以及用于控制平面和应用代码的嵌入式CPU核。DPU专用数据路径不仅比使用CPU核更高效,而且性能也远高于后者。
图2:BlueField-3 DPU:编程数据路径与硬件加速单元相结合,实现了线速处理,且无需访问ARM CPU
如图2所示,BlueField架构本质上是将网卡子系统(基于ConnectX)与可编程数据路径、用于加密、压缩和正则表达式的硬件加速器以及用于控制平面的ARM CPU融为一体。在BlueField-3中,可编程包处理引擎包含16个核可处理256个线程,实现了ARM核上的零负载数据路径处理。在许多应用中,由数据路径自主处理已知的网络流量,由ARM核处理新流量等例外情况及控制平面功能。
NVIDIA未公布BlueField-3的规格,但我们知道BlueField-2的在线处理包括100Gbps IPSec加密和200Gbps TLS加密。在每秒处理2.15亿个数据包(215 Mpps)的性能加持下,其可编程数据路径可实现有状态流量表(SFT)以及NVMeo协议操作。鉴于BlueField-3将能够处理400Gbps的以太网和InfiniBand,我们预计NVIDIA将把各种加速器的性能也提高一倍。
在网络方面,DPU可以加速先进的数据中心SDN和网络功能虚拟化(NFV),包括Open vSwitch、Overlay协议(如VxLAN)、网络地址转换(NAT)、负载均衡和精细化流量管理。在存储方面,DPU可加速RoCE(RDMA)、NVMe-oF、静态数据加密、数据去重、分布式纠错和数据压缩。
通过DPU卸载不但可以释放服务器的CPU核,用于为应用服务,还可以通过将应用域与基础设施服务域相隔离来提高系统安全性。云服务商运用这种隔离机制可提供裸金属计算实例,将网络和存储虚拟化对虚拟服务器隐身。主机操作系统和DPU的服务之间的这种“间隙”还可以保护基础设施免受数据中心内的虚机发起的恶意攻击。
3 DOCA,简化DPU的使用
尽管DPU具备显著的优点,但如果需要用户编写底层代码,势必限制其早期应用仅限于一小众用户。为了使ISV、服务提供商和学术界能够更方便的采用DPU,NVIDIA开发了DOCA(Data Center On A Chip Architecture)。DOCA是一个由库文件、运行时组件和服务组成的框架,建立在一套经过验证的驱动程序之上。其中的一些库与开源项目有关,而另一些则是NVIDIA独有的。与CUDA实现GPU编程的抽象化一样,DOCA实现了更高级别的DPU编程抽象化。
图3 DOCA 1.1软件栈:DOCA库为应用开发者提供上层API,从而无需底层编程
图3所示的是DOCA 1.1软件栈,其中包括驱动程序、库、服务代理和参考应用。NVIDIA提供的软件栈包含两部分内容,一部分是面向开发者的DOCA SDK,另一部分是用于实现开箱即用部署的DOCA Runtime软件。例如ASAP2是以二进制形式提供的网络数据路径驱动程序,它通过VirtIO实现了网络设备模拟,并且作为配置流量追踪和正则表达式加速器的底层API。面向安全的驱动程序为TLS提供Inline内核卸载。在存储方面,SNAP驱动程序提供NVMe虚拟化,这个功能将采用NVMe-oF连接的远程块存储呈现为一个本地设备。
从软件栈往上一层看,流量网关库能够实现一个建立在数据路径SFT上的硬件加速网关。与DPDK的通用flow API(rte\_flow)相比,该库为过滤和分发网络流量的网关应用提供了更高级别的抽象化。同样,深度数据包检测(DPI)库结合了SFT和正则表达式加速,向应用层开放了一个上层API。它能够根据一个编译的签名数据库,对数据包的Payload进行非锚定搜索。
在存储方面,DOCA支持开源SPDK,SPDK是一个用户态库。在HPC和AI方面,DOCA初期加入了作为运行时组件的统一集合通信(UCC)库,在未来版本中还将加入SDK支持。
DOCA服务包括多种遥测代理,如CollectX、NetQ和WJH(What Just Happened),以及一个用于配置、管理和编排的DPU操作工具。NVIDIA为高性能网络虚拟化提供标准的OVS和OVS-over-DPDK支持,还为实现负载均衡和应用识别的参考应用提供源代码。在1.1版本之后,NVIDIA将继续增加驱动程序和库来扩大DOCA的应用范围。为使客户能够对DPU数据路径进行编程,NVIDIA计划支持P4语言和P4 Runtime API。计划支持的库还包括用于电信和媒体应用的时间即服务(TSDC)、用于带外恶意软件检测的主机内检以及用于SPDK的压缩加速等。
尽管库文件有效消除了底层编程要求,但仍有一些应用不能支持ARM平台。为简化过渡,DOCA也允许在X86主机上进行开发和部署。通过一个仿真ARM的容器可为DPU Target提供一个基于x86的开发环境。而对于那些尚未准备好或无法将其应用移植到ARM架构上的开发者,NVIDIA提供适用于x86的DOCA Runtime,这样一个运行在DPU上的gRPC客户端就可以与x86运行时组件建立一个通信通道,应用就可以访问DPU运行时组件,而开发者不需要编译任何ARM代码。
4 DOCA用例
卸载服务器CPU上的虚拟交换功能是一个早期的DPU在网络上的用例。根据红帽的测试结果,相较用8个CPU核来运行OVS,使用BlueField DPU加速OVS,使性能提高了53倍。红帽还进行了投资回报率(ROI)分析,显示使用DPU代替CPU核所节省的成本。据红帽的估计,一个托管100万台虚拟机的公有云数据中心的OVS总交换需求为每秒100亿个数据包(每台虚拟机10000pps)。接着,红帽使用服务器CPU运行标准OVS进行了性能基准测试,每核性能仅仅43,750pps。假设每台服务器有24个核,那么仅处理网络报文就需要9524台服务器。
为预测投资回报率,红帽使用了价格为8500美元的服务器配备比标准以太网卡价格高出300美元的DPU。按100万个核来估算,使用了少量DPU的服务器所节省的总金额为6850万美元;此外,使用DPU加速的服务器总共还减少了四兆瓦的用电量,节省了运营费用。根据这一分析,不难看出为什么包括红帽和VMware在内的生态系统合作伙伴积极与NVIDIA合作,提供DPU加速网络的In-Box支持。
使用DPU卸载OVS十分直观,因为已知流的有状态追踪由DPU数据路径处理,而新流则由Arm核或主机处理。数据路径的在线IPSec功能也可以卸载OVS通道上的加密操作。通过在Arm控制器上运行OVS控制平面,DPU可完全卸载主机上的vSwitch处理。而其它应用也可受益于BlueField的公钥加密、正则表达式、压缩和哈希的硬件加速器。
图4 DPU卸载应用实例:通过DOCA,在主机上运行的基于x86的应用和在DPU上运行的基于ARM的应用都可以访问加速数据路径和Lookaside加速器
图4所示的是一个应用将DPU作为一个Lookaside加速器并使用它来卸载数据路径。例如新一代防火墙(NGFW)可在数据路径中使用SFT和在线IPSec,它还可通过Lookaside API来加速DPI和公钥加密。其它DPI用例包括URL过滤、入侵检测和应用识别。为实现最终卸载和隔离,ISV可将应用移植到DPU的ARM CPU上,但即使是x86上的应用也可以访问DPU的所有加速器。Palo Alto Networks将基于DPU的卸载添加到了其VM系列NGFW中,同时将应用保留在x86主机上,观察到吞吐量提升了4-6倍,实现对于100G以太网支持。
另一个网络安全示例是NVIDIA的Morpheus AI框架。该框架使用自然语言处理(NLP)模型来识别数据泄露。虽然该框架在GPU加速的服务器上运行,但它使用BlueField DPU分布到整个网络作为传感器。DPU向Morpheus服务器发送实时遥测数据,该框架可通过向DPU推送安全策略来应对威胁。通过在每台服务器中放置一个DPU,客户可实现与服务器操作系统隔离的微分段安全并且不会增加服务器CPU负载。
NVIDIA DPU的一个独特用例是在存储虚拟化和解耦方面。SNAP为BlueField配置了一个用于NVMe存储的PCIe物理功能(PF)。对服务器而言,该PF模拟了一个直连的SSD,但实际上访问的是网络存储。DPU将本地NVMe协议转换为NVMe-oF数据包,并将其发送至全闪存阵列等存储Target。DPU数据路径负责处理NVMe-oF命令封装,最大限度地减少了ARM核的使用。由于NVMe-oF使用RDMA,因此与SSD访问时间相比,网络所增加的延迟可以忽略不计。DOCA的SPDK库提供基于SNAP透明存储虚拟化之上的用户态API层。
5 总结
我们很容易理解为什么DPU(专为网络设计的SoC)能比服务器CPU更高效地处理网络、安全和存储任务。另一方面,x86架构的普遍性使其成为应用开发者的首选目标。例如传统的销售硬件的网络安全供应商可将其x86应用授权为在虚拟机上运行的虚拟设备。可移植性要求开发者使用上层API,从而避免依赖任何底层硬件。相反,采用DPU则需要自定义底层代码,而这给应用开发者带来了障碍。
凭借DOCA,NVIDIA希望通过为DPU编程提供更高级别的抽象化来消除这一障碍。通过提供运行时二进制文件和上层API,该框架使开发者能够专注于应用代码开发,而无需了解DPU硬件的错综复杂之处。尽管ARM服务器在早期就被应用于公有云,但许多应用开发者都有一个庞大的x86代码库,且尚未为ARM移植做好准备。NVIDIA适用于x86的DOCA Runtime可为这些客户消除ARM移植障碍,使其现在就能够采用DPU,并在以后进行优化。
在AI方面,在x86服务器CPU上运行代码与使用GPU等经过优化的硬件加速代码之间也存在类似的矛盾。尽管竞争日益激烈,NVIDIA依然是AI加速领域的领导者,原因之一是其CUDA软件的成熟度和广泛性。开源神经网络框架基本上都使用CUDA作为默认加速解决方案。凭借这一AI领导地位,NVIDIA拥有得天独厚的优势,能够提供包括硬件以及DOCA和CUDA一体化开发环境的融合型DPU+GPU解决方案。
正如CUDA支持向后和向前兼容各代GPU一样,DOCA使开发者现在就能开始使用目前的BlueField-2 DPU,并且知道其代码将能够在即将发布的BlueField-3上无缝运行。同样,开发者现在已经采用了NVIDIA GPU,例如A100 PCIe卡,这些代码已经知道可以在将来的BlueField-4上运行。NVIDIA的愿景是让DPU继CPU和GPU之后成为异构计算的第三大支柱。而DOCA是在各种应用中实现这一愿景的关键。
END
作者:黄朝波
来源:https://mp.weixin.qq.com/s/ENot92IvTJgAaYyj7gf1Og
微信公众号:
相关文章推荐
更多软硬件技术干货请关注软硬件融合专栏。