为什么我们的世界需要DPU

2021-08-25 17:52 来源:电子说

智能网卡与DPU(数据处理器)的区别在于它的功能,而不是形式。对于一种叫SmartNICs的数据中心智能网卡,需要支持硬件传输和可编程数据路径进行虚拟交换机加速。这些功能是必要的,但不足以使其成为DPU。一个真正的DPU还必须包括一个用C语言编程的可扩展Linux环境,这样数据中心架构师就可以虚拟化云中的所有资源,使它们看起来像本地资源。为了更好地理解为什么需要这样,让我们讨论一下创建DPU的原因。

为什么世界需要DPU

世界需要DPU的最重要原因之一是,当前应用程序和数据中心的设计使得CPU内核花费太多开销来支持网络功能。随着网络速度的提高(现在每个环节的速度都高达200gb/s),CPU使用了太多宝贵的内核来对网络流量进行分类、跟踪和控制。这些昂贵的中央处理器内核是为一般应用程序处理而设计的,最不值得做的事情是查找和管理网络数据包。毕竟用CPU内核分析数据,得到结果才是他们真正的价值。

计算虚拟化的引入使这种情况变得更糟,因为在同一服务器上运行的虚拟机或容器之间,或者在其他计算服务器或存储服务器之间需要更多的流量。软件定义存储(SDS)、超聚合基础设施(HCI)和大数据等应用将增加服务器之间的东西方通信流量。此外,RDMA经常被用来加速服务器之间的数据传输,这使得服务器对网络基本功能的处理有了更高的要求。

随着流量的增加和VXLAN、NVGRE或GENEVE等覆盖网络的使用,公有云和私有云越来越受欢迎。然而,它的多层封装进一步增加了网络的复杂性。SDN(软件定义网络)带来了额外的数据包控制和处理的需求,这使得CPU花费宝贵的内核来处理更多的工作,比如openvsswitch(OVS)。

与标准CPU相比,DPU可以更快、更高效、更低的成本处理所有这些虚拟化功能(SR-IOV、RDMA、覆盖网络流量封装、OVS卸载)。

不容忽视的安全隔离

出于安全原因,有时有必要将网络与中央处理器隔离开来。网络是黑客攻击或恶意软件入侵最有可能的载体,但也是发现或阻止黑客攻击的第一场所。也是最有可能实现在线加密的地方。

作为一种特殊的网卡,DPU是检查网络流量、防止攻击和加密传输的首选。它简单有效,同时具有性能优势和安全优势,因为它消除了CPU处理所有传入和传出数据并通过PCIe总线的频繁需求。它通过与主机CPU分开运行来提供安全隔离。如果主机中央处理器损坏,DPU仍然可以检测或阻止恶意活动。DPU可以在不立即涉及CPU的情况下检测或防止攻击。

虚拟化存储和云

DPU的一个相对较新的使用案例是虚拟化软件定义的存储、超融合基础架构和其他云资源。在虚拟化需求爆发之前,大多数服务器只运行本地存储,并不总是高效的,但是简单易行。每个操作系统、应用程序和虚拟机管理程序都知道如何使用本地存储。

然后是网络存储的兴起:存储区域网络、网络连接存储和最近的NVMe结构(NVMe-oF)。但是,并不是每个应用程序都是本机的和支持存储区域网络的。此外,一些操作系统和虚拟机管理程序(如Windows和VMware)没有考虑NVMe-oF。DPU可以支持更高效、更易于管理的虚拟化网络存储,使虚拟化网络存储看起来像本地存储,非常便于应用程序使用。DPU甚至可以虚拟化图形处理器或其他神经网络处理器,这样任何服务器都可以在需要时通过网络访问任意数量的图形处理器。

类似的DPU优势也适用于软件定义的存储和超融合基础架构。这两种体系结构传统上都使用管理层软件(通常作为虚拟机或虚拟机管理程序的一部分运行)来虚拟化和抽象本地存储和网络,以便集群中的其他服务器或客户端可以使用它们。这给服务器的快速部署和存储资源的共享带来了极大的便利。然而,管理和虚拟化占用了大量应该运行应用程序的CPU资源。更糟糕的是,网络带宽越大,存储速度越快,需要消耗的CPU资源越多。

这就是智能DPU创造效率的地方。首先,它卸载并帮助虚拟化网络。它们加速私有云和公共云,这就是为什么它们有时被称为云。他们可以卸载网络以及大部分甚至全部存储虚拟化。DPU还可以缓解SDS和HCI的各种功能,如压缩、加密、重复数据删除、RAID、报告等。所有这些都是为了让更昂贵的CPU内核回到它们最好的领域:运行应用程序。

必须有硬件加速

在了解了主要的DPU使用案例后,应该很清楚何时何地使用DPU将带来最大的好处:加快和卸载网络流量、虚拟化存储资源、通过网络共享GPU、支持RDMA以及执行加密和解密。

那么,最优的DPU需要什么呢?必须有硬件加速。硬件加速提供了最佳的性能和效率,这意味着以更少的开销进行更多的卸载。为某些功能提供专用硬件的能力大大增加了采用DPU的机会。

必须可编程

为了获得最佳性能,大多数加速功能必须在硬件上运行。为了获得最大的灵活性,这些功能的控制和编程必须在软件中运行。

在 DPU 上有许多功能可以编程,通常,特定的卸载方法、加密算法和传输机制不会有太大变化,但是路由规则、流表、加密的密钥和网络地址会一直会变化。前者是数据平面,后者是控制平面。数据平面规则和算法经过标准化后,可以被固化到芯片中。但控制平面规则和要求变化太快,无法固化,但可以在 FPGA 上运行(偶尔修改,但很困难),也可以在 支持 C 语言编程的 Linux 环境中运行(容易且可以经常修改)。

在DPU上需要多少编程?

用户可以选择在 DPU 上有多少功能要由运行程序完成,也就是说,处理数据包的数据平面由 DPU 处理 (硬件加速或/和 开发的程序),同时, 用于设置和管理规则的控制平面,可以由用户决定是由 DPU 来全权处理,还是由位于其他地方的处理器,如 CPU 来处理 。

例如使用 Open vSwitch ,包交换可以在软件或硬件中完成,而控制平面则可以在 CPU 或 DPU 上运行。如果是常规的基础网卡,所有的交换和控制都必须由 CPU 上的软件完成。使用 SmartNIC 时,交换在网卡的 ASIC 上运行,但控制仍必须在 CPU 上完成。只有在真正的 DPU 中,交换是由 DPU 卡上的 ASIC 完成,而控制平面也是在 DPU 包含的 Arm 内核上运行。

DPU 和 SmartNIC 哪一个最好?

为了在数据中心充分实现应用程序的效率,传输卸载、可编程的数据平面以及用于虚拟交换的硬件卸载都是至关重要的功能。根据定义,支持这些功能是 SmartNIC 的重要部分。但只是 DPU 的最基本要求之一, 并不能将 SmartNIC 提升到 DPU 的级别。

客户常称必须有 DPU,因为他们需要可编程的虚拟交换硬件加速支持。这主要是某些供应商的误导。如果某个供应商只能提供昂贵的、几乎无法编程的产品,他会告诉客户,“ DPU ”是实现这一目标的唯一方法。对 NVIDIA 来说,这种情况只需要 ConnectX 系列的 SmartNIC 。

要将 SmartNIC 提升到 DPU 的高度,还需要支持更多的功能,比如能够运行控制平面,以及在 Linux 环境下提供 C 语言编程。NVIDIA 提供 BlueField DPU 来支持所有这些,它包括 ConnectX 的所有智能 网卡 功能,以及 4 到 16 个 64 位的 Arm 内核,当然,所有这些内核都运行 Linux ,并且易于编程。

在计划下一个基础架构的构建或更新时,请记住:

DPU 在卸载网络功能和虚拟化存储、网络和 GPU 等资源方面越来越有用

SmartNIC 可以在硬件中加速数据平面任务,但必须依靠 host CPU 来运行控制平面

控制平面软件和其他管理软件可以在常规 CPU 或 DPU 上运行

NVIDIA 提供业界最佳的 SmartNICs ( ConnectX )、 FPGA NIC ( Innova )和完全可编程并支持数据平面及控制平面 DPUs ( BlueField 可编程 DPU )

责任编辑:haq

延伸 · 阅读