编者按:
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),可以实现软件定义且硬件加速的基础设施,更大限度地提高数据中心的性能和灵活性。
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的功能组件
从开发者的角度来看,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。
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的特点:
满足未来需求。doca可提供多代产品支持,给予开发者充分信心,确保今天开发的应用程序能够在未来各代的bluefield上持续运行,并持续获得性能加持。
卸载、加速、隔离基础设施。网络、存储和安全服务可通过dpu进行卸载、加速和隔离,同时以线速性能安全地把数据传输给上层工作负载。
开放式生态系统。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)匹配引擎进行加速。
加速负载均衡器 ngfw下一代防火墙代理 弹性存储
doca参考应用 负载均衡器 防火墙代理
doca库 doca flow和dpi doca flow和dpi spdk
底层api/lib fte_flow、dpdk sft、dpdk regex、dpdk rte_flow、dpdk regex spdk、bluefield snap
dpu硬件功能 eswitch、连接跟踪、regex eswitch、连接跟踪、regex rdma、bluefield snap、pcie交换机
表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。
人脸识别行业的B端市场浅析
怎样编写自己的PCB设计检查器
物联网背景下的智能家居是怎样的
一个与电感有关的公式
数字频率和模拟频率的关系
DOCA SDK及框架的综述
宽带A类放大器在通信测试中的应用
城市景观照明存在问题及设计要求
基于LMG5200 GaN器件的负载点转换电源参考设计
不可不知的交流UPS电池组应用5大问题
“走向世界”的不止华为Mate9,老外认可的手机还有华为荣耀Magic
运行内存12g和16g的区别
基于LTC3803-5设计的高温150度C反激电源控制技术
反激开关电源:RCD吸收电路
IBM与安森保险将开展合作,达成新的技术服务协议
基于AT89S51单片机实现多路信号源的系统设计
5G会加强机器人和人的感情吗
MIT联合丰田推出撞不坏赛车,未来超大型结构件的全新方向?
Dialog公司推出业内首个OpenThread Sandbox开发平台
RISC-V批准的新规范意味着什么?