为期一天的 NVIDIA DPU 中国黑客松训练营结束了,本次训练营旨在帮助开发者熟悉DOCA软件开发套件和应用实例。
很多人问哪里可以看回放?上链接:https://apposcmf8kb5033.pc.xiaoe-tech.com/detail/l_624ec950e4b09dda1257a4fa/4?fromH5=true
NVIDIA 也专门设立了DPU黑客松交流微信群,感兴趣的欢迎扫码加入:
[attach]19857[/attach]
注册成为 NVIDIA DOCA开发者由此入: https://developer.nvidia.cn/zh-cn/networking/doca
同时直播间收到 90 多个问题及讲师回复,归类整理如下,供大家参考!
Q: 数据通路加速器是什么意思, 有16个核,就是ARM核?
A:不是ARM的内核,是DataPath加速器的单独内核,用于加速的
Q: 16core256线程,独立的核,也是arm架构?那是可编程的?用doca的什么接口可以设置?DataPath具体应用的场景是怎样?
A: 16 内核,256 线程的Datapath加速器不是ARM架构,是可编程的,是内置ConnectX网卡的一部分,可以通过DOCA的DPDK和FLOW库来编程,主要是用ASAP2技术通过对ConnectX网卡的嵌入式交换机进行编程,从而卸载数据路径,避免通过ARM内核传递每个数据包,使用硬件来加速 OVS 栈。
Q: nvidia的dpu就是做网络数据处理的吗?应用领域都有啥?
A: DPU 是卸载、加速、隔离数据中心基础设施的专用处理器,实现软件定义、硬件加速网络、存储和安全,可以应用在云计算、网络安全、存储加速、虚拟化平台、边缘计算等
Q: BF3是否支持CUDA?如果支持,在性能上表现如何?
A: DPU的开发平台是DOCA,GPU 的开发平台是 CUDA,DOCA会在未来与CUDA有所整合
Q: 请问DOCA在未来是否考虑开源?
A: DOCA 部分库和驱动是开源的
Q: 现在dpu的典型应用有什么?
A: 应用主要在云计算、网络安全、存储加速、虚拟化平台和边缘计算
Q: 请问解耦应用具体指什么?
A: 有两种解耦,一种是业务应用层面的解耦,那就是单一业务应用,拆分为多个微服务,可以更好的在多个业务应用中共享微服务,而不是重复开发;另一种解耦就是DPU将基础设施业务负载从CPU卸载,是CPU不再处理基础设施任务
Q: bluefield与 tofino对比,有哪些优点?
A: tofino是可编程以太网交换机芯片,是不同的作用的芯片
Q: 请问Doca和cuda未来会演进成一套生态编程框架么?
A: DOCA和CUDA目前是两套分别对应DPU和GPU的软件框架
Q: DPU+CPU和换一个更快的CPU相比能节约多少成本?
A: 现在的问题是摩尔定律的性能提升已经出现瓶颈,CPU的价值应该体现在擅长处理的业务应用商,DPU来接管基础设施,如果只是提升CPU性能,仍会被基础设施任务占用资源,得不偿失,而且CPU与GPU融合使用来满足应用业务算力需求是发展趋势。未来更可能的一个发展趋势是,DPU运行主机系统,而CPU和GPU是两种不同的加速器件
Q: 请问DPU能省掉125个CPU内核,非常有吸引力,能再扩展一下吗?(能进一步阐明什么场景下节省了125个Core)
A: 这个是从 DPU 上集成的 ARM CPU 算力决定的,而且DPU中集成了很多硬件加速器,所以能对等相当数量的X86 CPU内核
Q: 购买BF2做一些研究,有什么需要的注意吗,对host硬件有什么要求?(实验室没有大型服务器)
A: 对服务器没有特别的要求,只是需要考虑购买那种规格的DPU,这和要开发的软件有关,可以参考下午介绍的开发环境配置介绍
Q: 零信任是什么意思?
A: 零信任就是首先假设所有用户、设备、应用程序和数据均不受信任,然后以DPU 和 DOCA 为零信任保护的基础,从硬件信任根开始确保完整性,再逐层添加信任机制,包括对计算机、应用及数据进行人证、身份验证,并监视服务器、容器、存储、网络基础设施及用户,从而从上到下的零信任保护。
Q: DPU上的arm性能频率也不高,想问一下相当于300个x86核是怎么计算的呢?
A: 用户A:x86 是通用计算,arm 应该对特定任务做了特殊处理,应该算法是相同 的任务不同平台完成所需要的资源吧,我猜的
用户B:可能是一个原因,但x86 CPU上也在持续加入各种DSA(domain specific)小芯片,SGX,QAT等,对安全,网络等都有加速
用户C:后续多芯片封装成熟后,这个思路会有前景,目前的单芯片封装下,加 DSA 的效果肯定不如独立的
DPU与CPU所承担的工作负载专长不同,如果让 CPU 来承担基础设施管理、软件定义网络、软件定义存储、软件定义安全会消耗大量的 CPU 内核资源,将这些基础设施负载卸载到 DPU,则可以通过少量 ARM 内核配合硬件加速引擎来释放相当的 CPU 内核资源。
Q: 请问模拟环境可以测试运行Doca应用吗?
A: 在没有部署 BlueField DPU的X86服务器中需要使用一个基于QEMU的容器来安装模拟开发环境,在这个环境中只能开发和编译,运行和测试需要在 BlueField DPU 的ARM环境上进行。
Q: DOCA运行在主机上和运行在dpu arm上是可以同时运行的么?
A: DOCA提供两种开发模型,一种是为ARM CPU编译应用程序,可直接在 ARM CPU上运行,这种模式可以用于隔离或特定的卸载功能,例如需要与X86隔离的安全代理。另一种是在x86应用程序中嵌入DOCA库和运行时,用于与DPU上的加速和卸载引擎进行通信。这可能被用于类似于使用DPCA DPDK库来加速NVF功能的情况。
Q: 请问DOCA未来是否考虑开源?
A: 并没有打包的开源,比如DOCA包括的DPDK是单独的开源软件
Q: 请问BF上的加密等安全措施是对TCP/IP、RDMA等数据包都适应吗?
A: IPsec、TLS加密加速
Q: dpu提到的网络加速功能,能否将网络协议解析移植到dpu上实现,将解析完的应用层数据直接交付到host server端,实现协议解析卸载?
A: DPU 对于主机X86是vSwitch+eSwitch, vSwitch是软件定义的,eSwitch是硬件加速的,在存储加速方面,可以直接将数据放入主机内存,而不需要多次拷贝
Q: 16core/256 threads指的是arm core的能力?
A: 这个是指Datapath加速器
Q: 麻烦问一下 DPU可以直接访问host主机的内存嘛?
A: 可以
Q: 可以将协议栈解析卸载到dpu完成吗
A: 需要明确是什么协议栈解析
Q: 裸金属的话,跑的是哪个架构?
A: 可以基于开源OpenStack与SDN融合架构
Q: 请问datapath加速的是什么呢?能加速到什么效果?
A: Datapath是OVS(Open vSwitch)的内核模块,负责执行数据交换,从接收端口收到数据包在流表中匹配,然后执行匹配到操作
Q: dpu在存储方面的应用,主要包括哪些方面?
A: 在存储方面支持NVMe-oF,弹性存储虚拟化、加密、压缩、去重
Q:加密、压缩是卸载,虚拟化和去重是在arm核上做应用吗?
A:由硬件加速器,通过DPDK就行
Q: 可PCIe电源功率的限制,天生限制了DPU的发展潜力吧?
A: 功耗上目前没有限制
Q: bfb可以自己定制吗?
A: 可以
Q: 麻烦问一下 DPU是如何将数据放入主机内存的 有相关细节嘛
A: 方位内存主要是通过RDMA 或RoCE方式实现。
Q: embedded mode和separated hosts mode性能(时延)有多少呢?比如说,两种模式下arm访问主机内存
A: 这两种是BlueField DPU的运行模式用于不同的场景,分离主机(Separated Host)模式亦被称之为传统模式或对称模式。在这个模式下,主机与嵌入式ARM CPU共享嵌入式交换机(eSwitch)和物理接口功能的控制权。主机和嵌入式 ARM CPU 均有自己的 MAC 地址,并且能发送及接收以太网和 RoCE(RDMA over Ethernet)的流量。同时,两种功能之间并无依赖关系。这两种功能可同时或单独运作。主机可以作为两个独立的主机与DPU接口通信,每个接口都配置为标准接口,且具有自己的MAC地址和IP地址。
在嵌入式(Embedded)模式下,网络接口资源和功能和控制完全归DPU和软件栈所有。网络功能仍可应用于主机,但其权限会受到限制。值得一提的是,主机侧的驱动只能在嵌入侧驱动加载完成后才能加载。由于DPU拥有网络接口和嵌入式交换机功能的所有权,所以进出主机接口的数据流量总是通过DPU进行双向传输。在嵌入式(Embedded)模式下,提供了两种将数据流量传输至主机接口的方式,一种是使用表示器将数据流量转发到主机,以便每个进出主机的数据包都能被嵌入式ARM侧的网络接口所处理。另一种是将规则推送给嵌入式交换机,以加速和卸载数据流来实现线速性能。
Q: DPU有pka加解密功能,能否将host server通信过程所需的加解密操作,卸载到dpu的pka进行,host端完成通信中非加解密的其他操作
A: 可以卸载到DPU,Host 与 DPU之间是明文,DPU负责加密和解密,同时提供加速。
Q: DPU对于虚拟化有什么深度适配吗?
A: DPU 的作用就是软件定义、硬件加速网络、存储、安全和管理,对于主机侧的虚拟机、容器、裸金属都有很强的基础设施支撑。
Q: cx7 和 bluefield 会阶段性的共存吗?是的话在什么样场景下共存?
A: CX7和BlueField-3会共存,主要是面对不同的使用场景。例如对没有上云需求的客户,只是关注网络性能,那很多时候CX7就可以了。
Q: 加密、压缩是卸载,虚拟化和去重是在arm核上做应用吗?
A: DPU 主要是实现VPC,虚拟机、容器、裸金属还是在主机侧实现。数据去重是基于NVMe来实现的,并不需要ARM内核只作为管理平面。
Q: 请问要实现eSwitch的硬件卸载,需要在什么地方进行配置吗,有相关的文档么?
A: eswitch模式默认就是开启的,具体内容以参考用户手册
Q: IPSec tls的性能到多少?
A: 可以达到接近100G的能力
Q: vm 卸载就是vdpa 技术吗
A: 请问 eSwitch 支持 P4 等编程 来 修改行为吗?
Q: 支持多少路virtio device
A: Virtio-net模拟设备允许16个virtio-net PCIe PF以太网卡设备或504 virtio-net PCI VF 以太网卡设备。
Q: eparated hosts mode下eswitch是如何区分到host和到arm上的流量的呢?怎么样把去host和去arm的流量分别送到对应的地方呢?
A: 其实通常情况下是使用embedded模式的,但是用到separated模式的话,因为控制面不同,流表规则也不同,实际暴露出来的借口也不同,所以也是可以区分的
Q: 请问我理解的IPSec与tls都是对TCP/IP数据包的处理,DPU的IPSec tls包括对RDMA数据包的处理吗?
A: 是的,这里所说的就是TCP/IP中的IPSEC/TLS
Q: 支持多少路 virtio net
A: Virtio-net模拟设备允许16个virtio-net PCIe PF以太网卡设备或504 virtio-net PCI VF 以太网卡设备。
Q: dpu上的硬件加速模块有很多,控制流量需不需要经不经过某个模块,比如流量不一定都需要经过reg正则模块,这个由什么控制?DataPath吗?
A: 这个是需要根据应用程序对接doca用于regex匹配的接口适配开发后才会使用
Q: 单卡DPU能支持网络虚拟化多少个VM或容器?
A: 当前最多可以支持到500个设备左右,后续会进一步增加
Q: eswitch不是指dpu中的arm里面的vswitch的控制面和慢速转发平面+硬件加速快速转发平面是吧?
A: eSwitch是embedded switch的缩写,在集成的ConnectX网卡中,作为数据平面,实现硬件加速;vSwitch运行在ARM上,作为控制平面。
Q: 两台host都需要有bluefiled DPU才行吧?
A: 如果是构建开发环境,需要两台背对背服务器都具有BlueField DPU,以便开发和测试。如果是部署环境,并不需要所有服务器都部署BlueField DPU。
Q: 在存储方面,出了硬件加速和硬件卸载,arm核可以用来做些什么呢?
A: 当客户有自定义的存储协议时,需要使用arm来连接后端存储,模拟成NVMe/Virtio-Blk,存储虚拟化我们的硬件卸载目前只支持NVMEoF
Q: 请问 eSwitch 支持 P4 等编程 来 修改行为吗?
A: P4的支持应该是在DOCA中后续会支持, 未来在BlueField-3上正在规划
Q: SRIOV模式下支持虚机live migration吗?
A: SRIOV VF passthrough 不支持虚拟机的热迁移,Virtio 模拟设备 我们正在开发热迁移方案
Q: 使用bluefield 时,应用层是否还可以调用mpi、verbs 这些标准接口,还是全部要替换成DOCA的接口?
A: 都可以使用
Q: DPU是否可以实现基于ACL规则的IP包过滤,和过滤后IP包的落盘存储?类似的,是否可以实现tcp/udp流的筛选和落盘存储?
A: https://docs.nvidia.com/doca/sdk/l4-ovs-firewall/index.html,您参考一下这个参考应用
Q: DPU 跟GPU 在内存数据传输设计上有什么不同?有哪些独特的优势?
A: 不是同样的设计逻辑,GPU是基于GPU Memory进行并行计算,DPU是传输数据,进行存储加速,减少复制数据,可与GPU用GPUDirect连接。
Q: 使用DOCA进行应用开发,开发人员需要具备哪些基本能力,从而快速上手呢?
A: 需要熟悉C语言开发,了解网络、存储、安全的基本知识和Linxu操作
Q: Host与Bluefield之间的commu channel 是什么接口?
A: 与CPU之间的接口是PCIe,用于管理的是RSHIM接口
Q: DPU支持RDMA协议吗?如果支持,是否就不需要RDMA的专用网卡了?
A: 支持RDMA和RoCE,内置了ConnectX网卡,不需要额外网卡
Q: DPU目前可以支持NVIDIA GPU之外的第三方服务器吗,比如x86、Arm服务器?
A: 可以在第三方服务器上部署,操作系统支持需要参考文档
Q: 请问安全特性的实现都是硬件部分实现的还是需要arm系统参与?
A: 加密、解密等由硬件实现,入侵检测、防火墙、防御恶意软件等需要ARM参与。
Q: 做网关类和安全类开发可以使用DOCA和DPU吗?
A: 做安全类开发没问题,网关如果指的是租户间互通,是可以的
Q: DOCA API和CUDA是如何交互的?可以互相兼容吗?
A: DOCA和CUDA肯定是兼容的,DOCA 用于 DPU 的开发,CUDA 用于 GPU的开发,DOCA会从基础设施来支撑AI和ML的工作负载
Q: RXP如何与DPDK其他处理逻辑交互?通过rte_ring吗?或者RXPBench是否开源?
A: 可以的,利用dpdk rx 收包然后提交到rxp进行特定字符串正则匹配;关于rxpbench可以下载参考: https://docs.nvidia.com/doca/sdk/rxp-bench/index.html
Q: 包的输入是通过separate mode和swithdev? RXPengine运行在host端的时候?
A: 利用主机侧的netdev和dpu侧的represent 端口绑定,实现报文转发到host侧,比如开启switchdev创建一组vf和对应的vf rep,vf在主机侧,vfrep在dpu侧.
Q: DPU 跟GPU 在内存数据传输设计上有什么不同?有哪些独特的优势?
A: 不是同样的设计逻辑,GPU是基于GPU Memory进行并行计算,DPU是传输数据,进行存储加速,减少复制数据,可与GPU用GPUDirect连接。
Q: BF3可以支持多少个PIPE?
A: 目前8K
Q: match 复杂的overlay场景也可以支持吗?例如 vxlan over ipsec over l2tp
A: 可以
Q: pipe与vf, queue的关系?
A: pipe 创建需要指定端口(包括VF), 不需要指定queue。 创建 entry 时候,需要指定queue 和 pipe。
Q: doca_flow这个library,是像DPDK那样完全软件式,还是底层会自动调用一些DPU上的HAC来加速?
A: 会有些默认卸载表,用户可以通过doca flow api创建所需的特定卸载表,走硬件加速,不需要软件介入
Q: 这套SDK是否提供Golang的Binding?
A: 目前支持C语言。
Q: 收上来的mbuf如何提交到rxp,有demo么,rxpbench的源码开源么?
A: 开源应用参考: https://docs.nvidia.com/doca/sdk … ognition/index.html
Q: 这个DOCA FLOW和P4 engine programming是不是作用差不多?
A: DOCA Flow是DOCA库,P4是编程语言。
Q: 请问这个 DOCA FLOW 只有 SDK 吗?有没有相关的 CLI 命令可以操作?
A: 只有SDK, 调用API 创建flow entry. 没有CLI
Q: 为什么加了entry之后需要process?我理解应该是包或者流触发的机制?
A: 在HW steering 模式下,flow 不是立刻push到hardware。process 将同一个queue上的flow 一次性push 到hardware。相对于sw steering,push到hardware次数会大幅减少。
Q: 如果PIPE嵌套那性能是不是会下降? 还是会类似P4,有多少级PIPE嵌套不会影响性能?
A: pipe嵌套过太多,会降低性能。嵌套一个,类似于需要一个jump。用户应该优化自己的应用场景,避免太多层次。
Q: 那用户使用几个PIPE不会降低性能?
A: 需要一个对比对象。如果没有next_pipe, 相同场景下创建的flow 更多,反而pipe 嵌套提高了performance。
Q: doca flow运行的时候会用到eswitch模块吗,还是都跑在ARM core上?
A: doca flow 提供的API,app 调用这些api. APP 可以运行在host 上,也可以在arm。
Q: 比如做PKI的API,可以直接在host上调用来做加解密卸载吗?
A: 这不属于DPI 需要确认 但是dpdk已经支持
Q: DPU上的RXP有dpi支持rule数量的限制么,或者是最优情况下不超过的rule数量?
A: 目前BF2支持252并行匹配引擎
Q: 使用RXPC编译regex时,比如有1w条规则编译成了一个rof文件,RXPC加载了这个文件之后,是只能对其中的252个规则进行匹配么?还是一次匹配252个,最终将里面的rule都匹配完成,可以支持ruleid上限那么多的rule
A: 一次jobs,内部可以分解成多次
Q: 加载到RXP中的regex rule有没有数量限制
A: 没有
Q: pf0和host是如何连接的呢?
A: Host上能看到两个网络PCI设备。只要有比较新的mlx5_core驱动就可以使用它们
Q: rte_flow可以下发匹配一条规则后,将同一份流量转发到不同的representor上的情况么,下发的规则在BF上的老化时间是多久?
A: 这个老化是用户可配置的,没有固定的时间
Q: dpu对拥塞控制的解决方案能否介绍下?
A: 可以借助针对不同业务的识别,来达到降速,保证整体网络的任务处理
Q: 请教 ARM中 OVS 默认用的 DPDK RTE flow 还是 TC Flow ?
A: 没有
Q: rte_flow如果两条规则同时命中一条报文BF2会做何处理,例如:下发了一条ip规则转发,又下发了一条端口规则转发?
A: 可以通过priority来指定优先级
Q: 如果优先级一样呢,是不是会出现抢数据的情况,老规则生效。也就是ip规则生效,端口规则无法命中。rte_flow能否做到一份流量同时命中两个规则的pattern,完成两个规则的action
A: 这个是dpdk的镜像功能,目前已经支持
Q: 从主机的数据包怎样下发到DPU网卡的,是内存拷贝吗还是怎样
A: 没有内存拷贝。主机的数据包通过DMA发到网卡硬件里,再通过eswitch转发到pf[i]hpf上,再通过DMA收到ARM OS的内存里。
Q: 请教 ARM中 OVS 默认用的 DPDK RTE flow 还是 TC Flow ?
A: 默认运行的是OVS kernel, 通过TC来卸载流。
Q: 能不能介绍下 bond 下的 eswitch 使用?
A: bonding模式下,host上的两个PF都可以通过两个物理端口收发包。eswitch会配置出相应的硬件转发规则
Q: 数据从dpu到host端是不是仍然是2层的?所以在host端还是要经历完整的协议解析过程吧?
A: 取决于host端收包的软件。如果是XDP或者DPDK收包就不会走内核协议栈
Q: rte_flow如果在BF2先下发了一条规则,在它还未老化时,下发同样pattern不同action的规则,会作何处理
A: 不同优先级,高优先级生效,相同优先级,默认老流表生效,但是需要具体流表具体分析。
[/i]