智能网卡 vs. DPU,谁会赢?

2023-02-15 11:02:31 浏览数 (2)

2021年的Hot Chips大会闭幕(附资料下载),DPU大放异彩。

作为预演,2020年的IEEE Hot Interconnects对智能网卡和DPU做过一个百家争鸣的Panel:SmartNICs vs. DPUs, Who Wins?

短短的一年时间,沉舟侧畔千帆过,Panel嘉宾有产品线已经停产了,有CEO已经退居幕后了。智能网卡最新排名想给老板们上一课!

以下是Panel讨论中的关键点:

  • 智能网卡在服务器内部开辟了第二个计算空间,可用于安全、编排和控制平面的任务。虽然它不像有些人比喻的就像air-gapped一样,但它比在同一个x86系统域内运行要安全得多,可以用来安全地运行裸金属服务。- Michael Kagan
  • 几家供应商正在积极合作开发可以执行P4代码的可移植网卡架构PNA(相关参考:关于PNA架构 ,这样的话,支持PNA模型的网卡就可以运行带有P4代码的容器。- Vipin Jain
  • 在网卡中运行控制平面有两个原因,首先网络流量已经快速占据主机CPU开销的30%,所以需要智能网卡的卸载能力;其次是为了提高运行于服务器上的应用程序的确定性。-Vipin Jain
  • 应用商店是必须的,只是时间问题。有些人认为可能是多年以后,有些人则认为将在年内发生。赛灵思已经与一家FPGA加速器商店合作,所以向智能网卡的迁移水到渠成。-Gordon Brebner
  • ISA并不重要,重要的是微体系结构。Fungible选择MIPS-64是因为它的多线程同步执行支持细粒度的上下文切换。- Pradeep Sindhu。而另一些人认为,工具的生态环境和开发者的获取途径是最重要的,所以他们选择了ARM。(相关参考:细思恐极!DPU能否逃脱MIPS的魔咒)
  • 应该指出的是,通常情况下ARM内核并不在数据平面内。

更完整的记录见下,一场屁股决定立场的讨论。

Michael - 智能网卡是另一个计算域,是计算机前面的计算机,是安全的理想选择。它可以监管所有的系统I/O,因此非常关键它是一台真正的计算机。(Nvidia想要收购ARM的“狼子野心”昭然若揭)。

Gordon - 将主机CPU任务卸载到智能网卡,并实现设备的可编程性至关重要。我们还将会看到交换机的功能和特性被合并到智能网卡中。(SmartTOR交换机也想干掉智能网卡:智能网卡,不讲武德,休怪老夫出手!)

Andy - 不仅是数据面的卸载,控制面卸载也非常重要。另外,从片上逻辑的角度讲,硬件应尽可能应用于数据平面卸载,这样ARM内核就无需参与数据平面。

Vipin - 一个基于云的设备(DPU)是独立于系统且可以远程管理的,它有自己的大脑(主控),真正独立于主机CPU运行。

Pradeep - 在这里没有黄金法则,没有像AMD所说的1Gb/sec/core这样的经验原则。重要的是要确定哪些计算应该在DPU中完成,multiplexing和有状态的业务适合用DPU处理。通用CPU是为了快速处理单线程应用而设计的,在multiplexing方面就不灵光了。

Andy - 1Gb/核真的很低,我无法接受这个数字。我会考虑DPDK或XDP提升性能,我们不应该满足于这个指标。

Michael - 网络需要自己搞定网络,所以多大带宽也不该CPU参与。

Gordon - 智能网卡是一种过滤设备,像IPS这样复杂的功能可以卸载到网卡上。

Pradeep - 因为通用的CPU已经无法跟上步伐,所以我们需要这样的讨论。它不是界限分明而是一个连续的过程。通用处理在哪里结束,智能网卡就在哪里延续。以gRPC为例,它需要被卸载处理,正确的接口不是TCP或RDMA,这两者都太低级了,GRPC是这种通信接口的一个先进方式。我们需要有架构上的创新,因为scale out将继续存在!(相关阅读:年轻人的第一本gRPC中文书!)

Gordon - 基于FPGA的一个优势是可以支持大量的I/O。几年前,我们首先开始关注100GbE,然后想出了如何实现并将其扩展到400GbE。我们可以看到目前的方式可以很好地扩展到Terabit范围。虽然我们今天有提供Terabit速率性能的可能性,但是成本太高了,没有人会买单,产品的成本也是一个问题。

Michael - CPU并不能有效地管理数据。我们有专门的硬件引擎和服务于这些引擎的TCAM以及缓存,这就是它的工作方式。

Pradeep - 问这个问题的人可能是指控制流而不是流量控制,虽然它们听起来一样,但意思不同。控制流是CPU的工作,流量控制是网络的工作。一个DPU或SmartNIC需要同时做好这两件事才能成功。我有可能是错的,看起来Pradeep用Pipeline来指代单个宏资源(如DPU)上的连续执行阶段,然后用Chain作为实现完整方案的Pipeline的集合。

Vipin - 我们需要转移对TCP数据包的关注,并将重点放在具有run-to-completion模型的消息上。它是可以在数据路径上运行的通用程序。

Vipin - 当谈到选择计算架构时,它事关生态系统,以及广泛可用的资源和工具的。我们[Pensando]选择了ARM。

Pradeep - ISA关乎细节,重要的是宏体系结构,而不是微指令体系。我们选择MIPS是因为它可以实现同步多线程,在细粒度上下文切换更加优异,比其他技术都好得多。还有就是要考虑经济性比如性价比。

Michael - 我同意Vipin的观点,这是一个生态系统的问题,我们需要提供一个开发平台。我们没有把ARM放在数据路径上。因此,Pradeep提到的性能问题与我无瓜。关键是形成一个生态系统吸引尽可能多的开发者,使他们更容易在设备上产生巨大的价值。

Andy - 我100%同意,这就是我们选择ARM的原因,生态系统推动了我们的选择。有了ARM,开发者就有了非常多的Linux发行版,而且可以在网卡上运行容器。向ARM的过渡是很容易的。

Gordon - 赛灵思将ARM内核与可编程的FPGA逻辑混合在一起,加密等功能有硬IP核。

Pradeep - 真正的问题是数据路径,很显然ARM核不在数据路径中,它实现控制面功能。每个人都说使用ARM核是因为有丰富的生态系统,但我认为x86有更丰富的生态系统。如果是这样的话,为什么不把控制平面留在主机中?为什么控制平面需要被嵌入到(DPU)芯片内部?

Vipin - 数据路径无关ARM。我们希望它在单芯片内,避免多跳影响性能。通过集成ARM内核可以实现非常高的集成度,这就是为什么不能是英特尔。[主持人:一旦报文离开芯片,性能就会受到影响,所以我相信Vipin的意思是,Pensando可以在芯片上配置出所需的ARM内核集合和硬逻辑,并以最合适的方式将其连接起来并满足客户的需求。x86内核无法像ARM内核一样被灵活授权并集成在同一个芯片上。] 另外,如果真的在网卡上放一个x86芯片,就会超出额定功率[PCIe x16通道卡被限制在75W]。

Michael - 我们没有像Pensando那样将数据通路和ARM紧密结合。如果你想在应用层和基础设施层之间隔离计算域,你需要另一台计算机,把x86放在网卡上是不现实的。

Andy - 完全隔离的裸金属即服务是一个非常受欢迎的用例。把控制平面的功能从x86移到网卡上,释放了x86的内核,可以为应用提供一个更具确定性的环境。

Gordon - ARM内核 可编程的逻辑,使你既能卸载控制平面,又能动态地修改本地的数据平面。

Michael - 我们支持用户对网卡进行编程,我们提供了一个SDK,并与第三方合作,在我们的网卡上托管他们的应用和服务。

Andy - 我们做的最好的事情之一是推广,我们向大学的开发人员提供 NIC,他们消失几个月后会带着完成的应用程序或新的用例回来。Broadcom 不想严格控制人们如何使用他们的设备,如果它被平台上的内容所限制,那就不是开放。(大学客户只搞研究没有市场所以产品线最后悲剧了)

Vipin - 为了方便在平台上进行开发,应该允许用户掌握和定义自己的SDK。

Pradeep - 我们通过RestAPI给用户提供编程堆栈[库?]。

Gordon - 我们很早就带头定义网络设备的编程语言-P4,后来成就了Barefoot Networks的交换芯片,从那时我们就认可P4。我们实际上有一个P4到Verilog的编译器,所以你可以把你的P4代码变成硬件逻辑。Xilinx自己的智能网卡主要功能是用P4编写的,其他人可以通过插件将自己的P4功能添加到流水线中。(相关参考:P4世界的“隐形”巨人! )

Michael - 是的,我们的NIC当然有应用商店,问题是如何组织。对我来说,它是用户可以去安全地下载容器化应用程序或服务的地方,这些程序可以在智能网卡上运行。(相关参考:Nvidia DPU处理器的谋篇布局!

附录:

(一)FPGA智能网卡市场分析报告

(二)Xilinx篇

(三)Intel篇

(四)Pensando篇

(五)Fungible篇

(六)Nvidia篇

(七)VMware篇

(八)赛道篇

(九)存储篇

(十)卸载篇

(十一)P4架构

(十二)Nitro篇

(十三)市场容量篇

(十四)2021排名篇

0 人点赞