NVIDIA DOCA框架旨在简化对NVIDIA BlueField DPUs和ConnectX SmartNICs的编程和应用程序开发。它通过一个软件开发工具包(SDK)、运行时二进制文件和高级API提供与网络应用程序相关的高级抽象构建块,使开发人员能够快速创建应用程序和服务。
NVIDIA DOCA Flow是DOCA框架中一组新的软件驱动程序和引导库。它在用户空间运行,并使网络相关操作从CPU卸载。这进而使应用程序能够以低延迟处理高数据包吞吐量工作负载,节省CPU资源并降低功耗。
DOCA Flow还有效地优化了BlueField DPUs和ConnectX SmartNICs的利用率。DOCA是释放BlueField加速引擎潜力的关键,而DOCA Flow则为数据包导向逻辑提供了快速访问加速引擎的能力。
简化和加快开发
DOCA Flow提供了用于定义基于硬件的数据包处理流水线的C库API,抽象了BlueField DPUs和ConnectX SmartNICs的硬件功能。这使开发人员能够构建高性能和可扩展的数据中心和云网络应用程序,以编程方式定义和控制网络流量流动,实施网络策略,并高效管理资源。
DOCA Flow通过提供特定于NVIDIA DPUs和NICs的附加优化功能,补充和扩展了DPDK的核心编程能力。此外,DOCA Flow简化了网络堆栈的复杂性,为实现流行的网络用例以及更复杂的用例(如最长前缀匹配(LPM)、互联网协议安全(IPsec)加密或解密,以及访问控制列表(ACL)中的条目创建或修改)提供了基本的数据包处理流水线的构建块。
使用预先创建的网络构建块使你能够专注于创建应用程序,而无需编写低级别的数据包处理例程。这减少了时间-市场(TTM)并使你能够专注于应用程序的核心,因为这些构建块已经针对性能进行了高效优化。DOCA Flow构建块使软件开发更加简单,可供各种经验水平的开发人员使用。
为什么需要DPU
现代工作负载和软件定义网络会给CPU核心带来显著的网络开销。数据中心和云网络现在以25或100 Gbps的速度开始,并扩展到200甚至400 Gbps,要求CPU核心以巨大的速度处理网络流量的分类、跟踪、处理和导向。
计算虚拟化通过在主机虚拟机(VMs)和容器之间生成更多的内部东/西流量,并在与其他服务器或存储设备进行外部通信时添加覆盖网络封装和微分割,增加了网络要求。因此,对CPU的网络需求更多。
CPU核心带来了显著的成本,并不适合于高效的网络数据包处理。高带宽任务消耗更多的CPU核心,对服务器宝贵的计算基础设施造成不必要的压力,这些资源本可以更有效地用于承载工作负载和应用程序数据处理。
相比标准CPU,专用硬件如SmartNICs和DPUs专门设计用于高效处理大规模快速数据运动,具有降低功耗、热量和总体成本的优势。
执行管道
DOCA Flow库提供了使用BlueField DPU和ConnectX SmartNICs内部的硬件功能构建通用和可重用的执行管道的API。
分类(packet classification)能够识别应该应用逻辑的传入数据包,而动作则多样化并实现适合每个数据包分类的逻辑。使用分类和动作作为构建块提供了一种灵活的方法来开发硬件加速的网络应用程序,包括网关、防火墙、负载均衡器等。
正如前面提到的,DOCA Flow执行管道中的动作多种多样,可以包括数据包操作,例如在MAC地址上应用网络地址转换(NAT)逻辑、更改源或目标IP地址、应用覆盖网络封装、更改标头字段、递增计数器以测量流量等。动作还可以包括通过策略监视流量,将流量转发到不同的队列(软件队列或hairpin目标),进行端口镜像或数据包取样以进行调试和合法拦截,以及丢弃数据包以执行策略或访问控制等,所有这些动作都完全卸载到DPU或NIC硬件中。
通过从一个管道中的转发动作到另一个管道,可以将这些管道链接在一起,形成一个完整的导向树,为传入的数据包定义路径。执行预定义的动作后,数据包可以被转发到另一个管道进行进一步的动作或检查,发送到软件队列、硬件hairpin队列,或通过网络发送或丢弃。
导向树
通过实现常见的网络功能逻辑,可以在DPU或NIC上创建基于硬件的网络应用程序,使用导向树可以对数据包进行有效分类,以便为每个数据包应用适当的动作。使用导向树的概念带来多个好处,包括:
1. 为每个数据流定制的处理逻辑
2. 将数据包定向到特定的动作或目的地的灵活性
3. 可以根据不同的条件轻松调整大小的可调整结构
4. 灵活的框架,允许添加新的管道类型以满足不断变化的需求
5. 优化资源使用,最小化冗余,并实现共享匹配和动作
NVIDIA DOCA Flow的使用案例
在开发BlueField DPUs和ConnectX SmartNICs的网络流水线时,DOCA Flow是简化应用程序开发工作的基本组成部分。这些用例适用于企业数据中心、电信公司和云环境,特别是那些专注于网络基础设施和安全性,需要高效的数据包处理的场景。
此外,它还设计用于在极高速率下建立和删除管道的情况,并可管理每秒数百万个数据包交换。这适用于软件定义的网络应用程序、数据分析、虚拟交换、AI推断、网络安全和其他数据包处理应用。它实现了数据包的摄取、检查标头和有效负载、跟踪连接的操作,以及根据预先确定的策略或其他标准检查、重定向、复制或丢弃数据包。
Open vSwitch虚拟交换
Open vSwitch(OVS)通过程序化扩展实现大规模的网络自动化,并旨在实现在虚拟化环境(如虚拟机(VMs)和容器)中高效的网络交换。通过DOCA Flow,可以在用户空间的数据平面中实现DPU加速的虚拟交换机(vSwitch),允许具有DPU的任何服务器充当网络交换机、路由器或有状态负载均衡器。
这提供了具有对多个虚拟网络功能(VNFs)可用的vSwitch的灵活性,同时显着提高了小数据包吞吐量并减少了延迟,从而通过DPU改善了网络性能,加快和加速了与用户的南北流量的通信,以及AI和分布式应用的东西流量。
下一代防火墙
现代防火墙需要以更高的速率检查数据以应对新的威胁。然而,随着网络速度的增加,CPU的负载也增加。这可能导致增加的延迟、丢包和降低的网络吞吐量。为了在不牺牲延迟的情况下支持更高的速度和更严格的安全要求是复杂的,而且部署足够的能够处理增加的流量的传统防火墙成本过高。
DOCA Flow使得可以为每个托管DPU的服务器开发智能网络过滤器。通过该过滤器,流量的解析和导向是基于预定义的策略进行的,没有CPU的开销。它可以用于创建分布式的下一代防火墙(NGFW),通过使用DPU上的专用加速器和Arm核心对数据包进行过滤和转发,根据适当的流量管理数据平面卸载和NGFW的控制平面,每个服务器可以实现接近100 Gbps的吞吐量。
使用DOCA Flow可以提供一种经济高效的解决方案,将数据包处理从CPU卸载到DPU,以提高性能并降低超出传统硬件解决方案的成本。它提供了高级的安全功能,如入侵防范,而不牺牲服务器性能。它还可以在NIC/DPU内实现更快的网络流量检查。
虚拟网络功能
DOCA Flow可以加速虚拟化的网络功能(VNF),例如路由器、负载均衡器、防火墙、内容分发网络(CDN)服务等。电信供应商可以通过开发在BlueField DPUs上运行的VNF来替代专有硬件,并在通用服务器上执行虚拟化工作负载。
通过使用DPUs进行VNF加速,可以实现更高效和灵活的解决方案,相比通用服务器,可以减少设备、空间、热量和功耗需求。所有这些有助于解决基于冷却和空间限制的限制,并在5G、人工智能、物联网和边缘计算等方面开启新的机遇。
边缘应用
DOCA Flow是边缘工作负载的理想解决方案,这些工作负载需要高速网络和I/O处理能力,例如内容分发网络和视频分析系统。可以使用DOCA Flow设计边缘主机应用程序,以在通用服务器内安装的DPUs上运行,从而消除了昂贵的专有硬件设备的需求。通过利用DPUs的加速和Arm核心,需要更少的服务器CPU核心,可以使用更小的服务器,耗电更少,需要更少的冷却,占用更少的机架空间。这种方法在CapEx和OpEx方面都提供了成本节约。
总结
DOCA Flow库可以通过简化现代应用程序的开发,提供加速网络吞吐量和处理数据包时的延迟改善,为开发人员提供有力的支持。特别是对于使用商业服务器平台上托管的虚拟化应用程序来取代专有裸机硬件解决方案的应用程序而言,这一点尤为重要。
该库由几个有效的网络卸载构建块组成,包括实现基本的数据包处理流水线、最长前缀匹配(LPM)和互联网协议安全(IPsec)加密或解密。增强版的连接跟踪(CT)和访问控制列表(ACL)也将很快添加,以创建或修改访问控制条目。
通过利用DOCA Flow的能力,组织可以在需要高吞吐量和低延迟的用例中最大程度地降低成本、加速服务部署和优化硬件利用率。