软硬件融合 · 2021年08月25日

DOCA综合介绍:让NVIDIA DPU更加强大

NVIDIA最大的成功是把GPU变成了GPGPU,使之成为了最广泛的异构加速器件;而构筑起坚固护城河的的则是庞大的CUDA生态。

2020年10月,NVIDIA DPU发布,同步发布了DOCA开发SDK及框架。是否能够基于DOCA构建DPU的成熟生态,复制GPU和CUDA的成功,大家拭目以待。本文是DOCA SDK及框架的综述。

1 DOCA定义

现代企业数据中心是软件定义、完全可编程的数据中心,旨在跨越云、核心和边缘环境为高度分布式的应用工作负载提供服务。软件定义的数据中心可提供类似云的灵活性和敏捷性,但会消耗许多CPU核资源,降低服务器和数据中心的效率。通过DPU和DOCA(Data Center Infrastructure on a Chip Architecture),可以实现软件定义且硬件加速的基础设施,更大限度地提高数据中心的性能和灵活性。

aijishu_640.jpg

DPU位于数据中心的服务器节点内,DOCA是用于在BlueField DPU上开发应用程序的软件框架。借助DOCA,可以在BlueField DPU,从主机CPU卸载并加速基础设施工作负载。

开发者基于DOCA开发运行在DPU上的各种服务,让DPU成为与业务隔离的、安全的服务域(或Enclave),用于网络、安全、存储和基础设施管理。DPU可加速所有关键数据中心的基础设施服务,还可以运行控制平面的软件,如软件定义网络(SDN)的控制器、分布式存储软件,或在可编程Arm核上运行新一代防火墙代理。

2 NVIDIA Bluefield DPU

BlueField DPU包括:

  • 一个强大的智能网卡,可支持高速以太网或InfiniBand两种接口;
  • 一组Arm核以及DRAM;
  • PCIe交换机;
  • 通过高速Mesh网络连接在一起。

嵌入式ConnectX智能网卡包含许多加速器(网络、云、存储、加密、流媒体、时间同步等),BlueField更是增加了面向安全、存储虚拟化、硬件隔离和远程管理的加速器和功能。

3 DOCA的功能组件

aijishu_640 (1).jpg

从开发者的角度来看,DOCA可划分为两大领域:

  • SDK组件,帮助您构建在DPU上运行或使用DPU的应用程序。
  • DOCA运行时集,包含在DPU上运行应用程序所需的组件。

DOCA软件包括:

  • DOCA SDK提供行业标准的开放式API和框架,其中包括用于网络和安全的DPDK和P4,以及用于存储的SPDK。这些框架通过集成的NVIDIA加速包简化了应用卸载开发。
  • DOCA SDK支持一系列操作系统及其发行版本,并且包含驱动、库、工具、文档和示例应用程序。
  • 基于DOCA的服务以行业标准的I/O接口开放给计算节点,从而实现基础设施虚拟化和隔离。
  • DOCA运行时环境包括用于在数据中心内的数百或数千个DPU上进行预置、部署和编排容器化服务的工具。

BlueField DPU和DOCA框架允许将基础设施服务转移到DPU,从而卸载和加速这些服务。DOCA支持在应用层和基础架构服务层进行开发。SDK包含的关键组件:

  • 行业标准API:DPDK、SPDK、P4;
  • 网络加速SDK:ASAP2 SDN、模拟的VirtIO、P4、5T for 5G技术;
  • 安全加速SDK:inline加密、深度数据包检测;
  • 存储加速SDK:存储Emulation和虚拟化、加密和压缩;
  • RDMA加速SDK:UCX、RDMA Verbs、GPUDirect;
  • 管理SDK:部署、预配置、服务编排;
  • 用户空间接口和内核空间接口。

运行时包含二进制库、运行时二进制文件、编译工具、安装工具、基准测试程序以及各种DOCA服务代理。借助这些,您可以使用不同的DPU API和功能,设置DPU卡、安装合适的操作系统,以及在DPU上运行您的软件。运行时还包括各种管理工具,用于配置和支撑服务器中和网络中的DPU卡,同时支持编排容器化操作与各种加速服务。

DOCA 1.0包括了使用DPI的加速负载均衡器参考应用程序,以及使用DPI和regex模型匹配的下一代防火墙代理参考应用程序。他们都充分利用了DOCA库和DPU上的加速功能的优势。它们包含源文件,无需在DPU上进行编程。但是,它们可以提供DPU API和库的使用示例,从而简化应用程序的开发和集成。未来的DOCA版本中可能会添加更多的参考应用程序。

DPU管理工具和其他功能:

  • SDK管理器。帮助在运行DPU的机器上安装和更新BlueField SDK。它会在主机上安装 DOCA SDK和运行时,并在主机上安装用于更新BlueField的操作系统和DOCA的开发容器。
  • 配置工具。旨在简化管理和自动化部署数据中心中的大量DPU卡,可以通过脚本和管理工具来实现。
  • 遥测。可以在DPU上选择性地捕获和共享网络和服务器的关键遥测数据,然后分享和收集这些数据给日志管理工具、数据分析工具或网络安全工具等。

以下功能目前可以从BlueField DPU软件包或Mellanox OFED库中获得,并将被添加到未来版本的DOCA SDK中:

  • 网络流量加密(使用IPSec或TLS);
  • 面向时间同步数据中心的超级准确的精度时间协议(PTP);
  • 高性能计算/AI的集合通信卸载;
  • 关于NVIDIA GPUDirect Storage(GDS)的支持;
  • 等等。

通过DPU将远端网络存储虚拟为本地NVMe SSD或virtio-blk(虚拟IO-块存储)设备的BlueField SNAP技术。DOCA运行时包含的SNAP功能,可支持通过SPDK库访问上层开发者SDK,更多的SNAP功能将会逐渐添加到DOCA SDK。

aijishu_640 (2).jpg

BlueField操作系统包含引导加载器、操作系统内核、必要的网卡固件、NVIDIA驱动、示例文件系统和工具链。NVIDIA BlueField DPU预装商业级Linux发行版Ubuntu Server 20.04,并且持续提供操作系统和安全更新。作为一个独立的软件包,DOCA可以在多种业界领先的操作系统上使用,而不与某个特定的Arm或x86操作系统进行捆绑。

4 DOCA的价值和作用

DOCA的关键作用

  • DOCA利用行业标准API,基于NVIDIA DPU快速创建应用程序和服务;
  • DOCA和BlueField DPU相结合,使得开发者能够开发具备突破性的网络、安全和存储性能的应用程序。
  • BlueField将基础设施服务域与工作负载域隔离开来,显著提高了应用程序和服务器的性能、安全性和效率;
  • 同时,DOCA为开发者提供了实现优化、安全、加速数据中心所需的各种工具。

DOCA的特点:

  1. 满足未来需求。DOCA可提供多代产品支持,给予开发者充分信心,确保今天开发的应用程序能够在未来各代的BlueField上持续运行,并持续获得性能加持。
  2. 卸载、加速、隔离基础设施。网络、存储和安全服务可通过DPU进行卸载、加速和隔离,同时以线速性能安全地把数据传输给上层工作负载。
  3. 开放式生态系统。DOCA提供软件应用程序框架,加速生态系统开发。

4.1 加快基础设施服务走向市场的时间

DOCA包括了API、驱动、库、示例代码、文档和预设的容器等,可激活BlueField-2 DPU的加速、安全和虚拟化功能。DOCA提供一套统一且可靠的工具,用于开发基于DPU运行的关键数据中心服务,以处理多种类型的数据处理。其中包括:

  • 定向网络流量;
  • 存储的加速、虚拟化和压缩;
  • 数据加密和解密;
  • 安全威胁扫描;
  • 与远程管理工具的集成;
  • 在Arm核上运行控制平面应用。

您可以对这些卸载和加速器进行编程,实现单独或一起使用,并可与基于GPU的NVIDIA AI平台进行集成。

DOCA助力应用程序开发者、设备供应商、研究人员和NVIDIA软件合作伙伴通过SDK对所有这些DPU功能进行编程。许多功能的接口在底层的API和上层编程语言中均会提供。这些基于DPU运行的服务不仅仅是软件定义、硬件加速,而且支持AI、易于编程。

未来几代BlueField DPU将借助新的增强型加速器提供更强的计算力。DOCA可通过扩展API的方式来支持新的功能,确保了与DPU的前向兼容。NVIDIA致力于通过架构流程技术和软件创新来提升性能。我们持续提升云、核心和边缘环境以及应用工作负载的性能和功能。

4.2 简化BlueField DPU上的服务创建流程

4.2.1 网络

DPU可加速SDN和NFV:开放虚拟交换(OVS)、Overlay网络(例如VXLAN)、网络地址转换(NAT)、自动负载平衡、细粒度流量管理和内容分发网络。

DOCA支持通过标准DPDK API将服务应用和DPU加速引擎关联起来,例如rte\_flow库可以支持基于流的不同操作,包括Overlay封包、包头重写、Hairpin,以及对虚拟网络功能的测量。

为提升性能和主机CPU效率,DOCA还包含了原生OVS-kernel和OVS-DPDK应用程序,通过BlueField DPU的硬件加速交换和数据包处理(ASAP2)技术提供无缝加速。DPU硬件对于主机网络的加速,由DOCA编程平台上运行的OVS应用来定义,数据中心SDN控制器来编排所有网络,并通过DPU的带外管理端口进行连接。

P4是另一种语言,可以对BlueField DPU中灵活、可编程的数据路径加速器进行编程。DOCA 支持P4语言,可支持未来基于P4开发的VNF业务。这个功能被集成到了已经拥有丰富的VNF产品生态系统的其它API中。此架构允许同时执行面向内核、RoCE、DPDK、SPDK、P4 和P4.runtime接口编写的程序,这些可无缝共存并充分利用DPU数据路径加速。

4.2.2 存储

对于存储,DPU支持加速软件定义的弹性存储、NVMe over Fabrics (NVMe-oF)、RoCE、静态数据加密、数据删除、分布式纠错和数据压缩。BlueField DPU NVMe SNAP技术可提供弹性块存储功能,并向主机提供远程块存储,如同它是本地NVMe块存储或VirtIO-blk块设备一样具有低延迟、高吞吐量和高IOPS等特性。

DOCA完全支持SPDK开源框架,可助力您创建自己的存储解决方案。通过模拟对PCIe NVMe磁盘的的访问,利用BlueField DPU的多项加速功能来实现各种自定义的逻辑,主机应用可以透明地管理模拟出来的NVMe存储。其中包括加密、ECC分布式纠错、压缩、重复数据删除和恶意软件扫描。如果您要通过DOCA进行编程,现在无需对个别引擎进行显式编程,即可轻松调用用于数据存储的功能。

4.2.3 安全性

DPU还可以卸载、加速和隔离所有关键数据中心安全服务。其中包括支持新一代防火墙、微分段、使用透明IPSec和TLS进行动态数据在线加密以及入侵保护。DPU拥有一组专用的安全引擎,包含了构建安全解决方案的所有模块。

DOCA包含一组用于开发安全应用程序的标准化API。所有安全服务均始于数据包采集、解密、连接状态的有状态跟踪,一直到7层深度数据包检查。这样会将应用程序流量分类为受信任或恶意。此外,它最终还会将定义的安全策略转换为一系列操作,例如数据包允许、丢弃、重写或重定向。编程通过标准DPDK API完成,如下所示:

  • rte\_security,用于加密和解密
  • rte\_sft库,用于连接感知
  • rte\_regex库,用于正则表达式模式匹配
  • rte\_dpi库,用于对所有流水线加速函数进行深度包检查

DOCA还支持基于IPSec、TLS和存储AES-XTS的原生内核加密,由DPU实现在线加速,可以轻松用于基于OpenSSL或OVS-IPSec的应用。这支持DPU在不通知主机的情况下透明地对所有流量进行加密和解密。其中包括DPU在安全Enclave内执行密钥管理。

通过RDMA库对主机进行快速内存访问,DOCA可让您创建严格的主机自检方案。借助自动恶意软件扫描,您可以进一步了解从DPU到主机的一举一动。如果发现恶意活动,您可以通过对DPU的硬件加速引擎的编程,达到以线速来执行策略。

4.2.4 基础设施管理

传统管理会在每台服务器上运行代理。但是,运行这些代理会消耗本可用于业务应用的CPU周期。代理通常无法监控服务器上VM之间以及容器之间的网络流量。如果代理执行数据包过滤或流量遥测等功能,则会消耗更多CPU周期。如果服务器发生严重故障,则基于VM 或容器的管理代理不太可能报告状态或重启服务器。

DOCA允许业务隔离的、基于DPU的代理执行带内或带外管理,而不会给服务器CPU增加负担。如果服务器需要重置,或者甚至租户或业务应用需要一台无代理的裸金属服务器,通过DOCA编程的DPU仍可发送遥测数据、执行远程重置或允许安全启动服务器,这些操作均无需在服务器CPU上运行代理。

4.3 使用DOCA的益处

BlueField的许多功能和加速器均可通过特定API、开源SDK或现有驱动进行访问,使用DOCA的主要益处是简化使用DPU的基础设施应用程序和功能的开发和部署流程。这样可以加快应用和其它BlueField的功能进入市场的速度:

  • 统一访问所有DPU功能,不必学习和使用多种不同的工具。
  • 在DPU的底层API上提供一个抽象层给上层的库,可以更快速、更轻松地进行开发,实现和上层业务的集成;也可以直接和底层接口交互,从而达到更精细的控制。
  • 向前/向后兼容性。使用DOCA进行开发意味着应用可以在未来版本的BlueField DPU上无缝运行,且得到了更高的性能和扩展性。
  • 基于容器化服务的DPU调配和部署。DOCA包含用于简化DPU设置、配置和服务编排的工具。

5 BlueField DPU和DOCA密切协作

通过BlueField DPU和DOCA,可以整合通常无法一起部署的数据中心基础设施服务。例如,由CPU或独立Look-aside加密卡对动态数据进行加密时,无法和RoCE、压缩、哈希或 Overlay网络一起工作。事实上,执行此类加密会禁用以上操作及许多其它网络卸载功能。这是因为,如果先对数据进行加密的话,意味着网络设备不再能识别数据包的内容,进而无法执行巧妙的数据包重路由、过滤、拥塞管理等操作。但是,使用BlueField DPU和DOCA, 您可以通过编程将RoCE、VXLAN、哈希计算、压缩,以及许多其它卸载功能与加密功能组合在一起,以及它们之间互相组合。

DOCA将所有功能合并到一个SDK,使用基于通用开放API的加速库来即刻释放DPU的力量。您还可以使用DOCA,透明地将关键控制平面应用或代理从X86域移植到DPU的Arm 核,从而提高服务器性能、效率,并实现工作负载和安全的隔离。

6 对数据处理加速和AI进行编程

重要的是,DOCA更进一步地支持先进的GPU加速的AI工作负载,被完全整合到了大型NVIDIA NGC加速计算软件平台,成为了其中的一个测试项。

对于传统的企业应用,DOCA可加速包含BlueField DPU的系统中的数据中心基础设施服务。但是,对于包含DPU和GPU的系统,加速AI和数据分析工作负载具有巨大优势。DOCA 已集成到NGC认证计划。它可以充分利用大量的开发、集成和测试资源,支持NVIDIA的全部AI应用程序框架(NVIDIA Riva、NVIDIA Merlin、NVIDIA Metropolis、NVIDIA Clara、NVIDIA Aerial等)。DOCA与NGC平台集成,还释放了各类第三方软件基础设施与应用的强大功能。

可以将DOCA与CUDA结合使用,通过GPU加速计算并通过DPU加速数据中心服务。还可以使用DOCA启用GPUDirect,加速整个网络中GPU之间的通信。

7 DOCA编程选项

当对DPU进行编程时,可以直接访问驱动。这通常需要底层编程和详细的驱动知识。在大多数情况下,对DOCA库进行编程会更加轻松,这些库为驱动提供了上层的抽象层。它的优势就是已经针对每个用例进行了调优,可获得更出色的加速性能。参考应用提供了实际工作代码以及DOCA库的使用示例。在某些情况下,可以使用这些参考应用作为基础,然后通过修改它们来满足运行在DPU上的不同应用和方案。

例如如果想构建一个可加速的负载均衡器,或者集成一个分布式防火墙的代理到DPU,可以选择DOCA中关于深度数据包检测(DPI)库的相关参考应用。这些库又运行在DPDK库上,利用DPU内的有状态连接跟踪和正则表达式(regex)匹配引擎进行加速。
aijishu_表格.jpg
表1 三个例子来解释DOCA是如何运行在底层API/Lib和DPU上,以及如何来访问底层API/Lib和DPU件功能的

8 DOCA 1.1更新

DOCA 1.1版本建立在DOCA 1.0的强劲势头之上,并包含以下更新:

  • DOCA FLOW-LIB,用于网关性能的加速,以实现不同网络间互操作性;
  • DOCA FLOW示例应用,用于URL和DNS过滤与转发功能;
  • 加速有状态流表(SFT),用于连接追踪功能;
  • 加速正则表达式(RegEx),用于与DPI Lib进行模式匹配;
  • 引入x86平台上的DOCA Runtime,用于加速在主机x86处理器上运行的应用,不必所有的业务都卸载到DPU。

(正文完)

作者:黄朝波
来源:https://mp.weixin.qq.com/s/HoWdHD8P3OkyQT5xVXeY5A
微信公众号:
软硬件.jpg

相关文章推荐

更多软硬件技术干货请关注软硬件融合专栏。
推荐阅读
关注数
2802
内容数
104
软硬件融合
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息