0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何实现DPU加速数据包转向逻辑呢?

丽台科技 来源:NVIDIA英伟达 2023-09-19 10:00 次阅读

NVIDIA DOCA 框架旨在简化 NVIDIA BlueField DPU 和 ConnectX 智能网卡的编程和应用程序开发。它通过 SDK、运行时二进制文件和高级 API 提供与网络应用程序相关的高级抽象构建块,使开发者能够快速创建应用程序和服务。

NVIDIA DOCA Flow 是 DOCA 框架中最新更新的一组软件驱动程序和一个转向库。它在用户空间中运行,并能够从 CPU 卸载与网络相关的操作。这又使得应用程序能够以低延迟来处理高数据包吞吐量的工作负载,从而节省 CPU 资源并降低功耗。

DOCA Flow 还有效地优化了 BlueField DPU 和 ConnectX 智能网卡的利用率。DOCA 是释放 BlueField DPU 加速引擎潜力的关键,而 DOCA Flow 允许快速访问加速引擎以实现数据包转向逻辑。

简化并加速开发

DOCA Flow 提供 C 语言库 API,用于定义基于硬件的数据包处理流水线,抽象化了 BlueField DPU 和 ConnectX 智能网卡的硬件功能。这使开发者能够为数据中心和云网络构建高性能和可扩展的应用程序,以编程的方式定义和控制网络流量,实施网络策略,并有效管理资源。

DOCA Flow 补充并扩展了 DPDK 的核心编程功能,提供了专为 NVIDIA BlueField DPU 和网卡量身定制的额外优化功能。此外,DOCA Flow 还提供了实现基本数据包处理流水线的构建块,从而简化了网络堆栈的复杂性,可用于流行的网络用例以及更复杂的用例,例如:最长前缀匹配(LPM)、IPsec 加解密,以及创建或修改访问控制列表(ACL)中的条目。

使用预先创建的网络构建块可以让您专注于创建应用程序,而无需编写低级的数据包处理例程。这减少了上市时间,并使您能够专注于应用程序的核心,因为构建块已经针对性能进行了有效优化。DOCA Flow 构建块使软件开发更加简单,各种经验级别的开发者都可以使用。

为什么需要 DPU

现代工作负载和软件定义网络导致 CPU 核心上产生巨大的网络开销。数据中心和云网络现在的起始速率是 25 或 100 Gbps,并向 200 甚至 400 Gbps 扩展,这需要 CPU 核心以极高的速度处理网络流量的分类、跟踪、处理和转向。

计算虚拟化通过在主机虚拟机和容器之间内部生成更多的东/西流量来增大网络需求,并增加 Overlay 网络封装和为分段来与其他服务器或存储设备进行外部通信。因此,对 CPU 增加了更多的网络需求。

CPU 核心成本高昂,并且不太适合高效的网络数据包处理。高带宽任务消耗了更多的 CPU 核心,给服务器宝贵的计算基础设施带来不必要的压力,否则这些基础设施可以更有效地用于租户工作负载和应用程序数据处理。

相比之下,像智能网卡和 DPU 等专用硬件经过专门设计,可以有效地处理大规模的快速数据移动,与标准 CPU 相比,可以降低功耗、散热和总体成本。

执行管道

DOCA Flow 库提供的 API 可以使用 BlueField DPU 和 ConnectX 智能网卡中的硬件功能来构建通用和可重复使用的执行管道,其中每个管道可能包括匹配标准(数据包分类)和一组操作。

分类能够识别应该应用相应逻辑的传入数据包,而操作则会有所不同,并实现适合每个数据包分类的逻辑。使用分类和操作作为构建块为开发硬件加速的网络应用程序(包括网关、防火墙、负载均衡器等)提供了一种灵活的方法。

如前所述,DOCA Flow 执行管道中的操作各不相同,例如:对 MAC 地址应用网络地址转换(NAT)逻辑、更改源或目的地 IP 地址、应用 Overlay 封装、更改报头字段、增加计数器以测量流量等数据包操作。操作可能包括通过使用策略监控流量,将流量转发到不同的队列——软件队列或发夹目标、端口镜像或数据包采样以进行调试和合法拦截,以及丢弃数据包以强制执行策略或访问控制——所有这些都完全卸载到 DPU 或网卡硬件。

管道可以通过从一个管道到另一个管道的转发操作链接在一起,以形成一个完整的转向树,其定义了传入数据包的路径。在对数据包执行预定义操作之后,数据包可以被转发到另一个管道以进行进一步的操作或检查,也可以被转发到软件队列、硬件发夹队列或者被发送或丢弃。

16ea475e-5690-11ee-939d-92fbcf53809c.png

图1:管道链接构建网络逻辑,因为每个管道都处理唯一的标准、操作和转发,从而形成数据包控制的转向树

转向树

通过实现通用网络功能逻辑,可以使用转向树在 DPU 或网卡上创建基于硬件的网络应用程序。这使得数据包能够被有效地分类,从而可以对每个数据包应用适当的操作。使用转向树概念提供了多种好处,包括:

为每个数据流定制处理逻辑

将数据包定向到特定操作或目的地的通用性

自适应结构,可根据不断变化的条件轻松调整大小

灵活的框架,允许添加新的管道类型,以满足不断发展的需求

优化资源使用,最大限度地减少冗余,实现共享匹配和操作

NVIDIA DOCA Flow 用例

在为 BlueField DPU 和 ConnectX 智能网卡开发网络流水线时,DOCA Flow 是简化应用程序开发工作的基本要素。用例适用于企业数据中心、电信和云环境,尤其是那些专注于需要高效数据包处理的网络基础设施和安全的环境。

此外,它被设计用于处理涉及以极高的速率建立和删除流水线的场景,并且每秒可以管理数百万个数据包交换。其适用于软件定义网络应用程序、数据分析、虚拟交换、人工智能推理、网络安全和其他数据包处理应用程序。它支持基于预定策略或其他标准的接收、检查报文头和有效负载、跟踪连接以及检查、重新路由、复制或丢弃数据包之类的操作。

Open vSwitch 虚拟交换机

Open vSwitch(OVS)通过编程扩展实现了大规模的网络自动化,旨在实现虚拟机(VM)和容器等虚拟化环境中的高效网络交换。通过 DOCA Flow,可以在用户空间数据平面中实现 DPU 加速虚拟交换机(vSwitch),允许任何配备 DPU 的服务器充当网络交换机、路由器或有状态负载均衡器。

这不仅提供了将 vSwitch 用于多个 VNF 的灵活性,同时也显著提高了小数据包吞吐量并降低了延迟,从而通过增强 DPU 的网络性能来加速通信,并助力连接用户的南北流量,以及 AI 和分布式应用程序的东西流量。

下一代防火墙

现代防火墙需要以更高的速率检查数据,以应对新的威胁。然而,随着网络速度的提高,CPU 上的负载会增加。这可能导致延迟增加、数据包丢失和网络吞吐量降低。要在不牺牲延迟的情况下支持更高的速度和更严格的安全要求是非常复杂的,并且部署足够多的传统防火墙来处理增加的流量是成本高昂的。

DOCA Flow 支持为每台托管 DPU 的服务器开发智能网络过滤器。借助此过滤器,流量的解析和转向将基于预定义的策略,且不会产生 CPU 开销。它可以用于创建分布式下一代防火墙(NGFW),通过使用 DPU 上的专用加速器和 Arm 核心来根据适当流过滤和转发数据包,以及管理 NGFW 的数据平面卸载和控制平面,每台服务器可以实现接近 100Gbps 的吞吐量。

使用 DOCA Flow 可以提供一种经济高效的解决方案,将数据包处理从 CPU 卸载到 DPU,以超越传统硬件解决方案的方式提高性能并降低成本。它在不牺牲服务器性能的情况下提供了高级安全功能,如入侵防御。它还可以在网卡/ DPU 中实现更快的网络流量检查。

虚拟网络功能

DOCA Flow 可以加速虚拟化网络功能(VNF),如路由器、负载均衡器、防火墙、内容交付网络(CDN)服务等。电信供应商可以通过开发在 BlueField DPU 上运行的 VNF 来替换专有硬件,并在商用服务器上执行虚拟化工作负载。

通过使用 DPU 进行 VNF 加速,实现了更高效、更灵活的解决方案,与商用服务器相比,减少了设备、空间、散热和电力需求。所有这些都有助于解决基于冷却和空间的限制,为 5G、人工智能、物联网和边缘计算带来新的机遇。

边缘应用程序

DOCA Flow 是需要高网络速度和 I/O 处理能力的边缘工作负载的理想解决方案,例如内容交付网络和视频分析系统。边缘的主机应用程序可以使用 DOCA Flow 进行设计,在安装在通用服务器中的 DPU 上运行,从而消除了对昂贵的专有硬件设备的需求。通过使用 DPU 加速和 Arm 核心,需要更少的服务器 CPU 核心,从而允许使用更少量的服务器,且需要更少的能量消耗、更少的冷却和更少的机架空间占用。这种方法在资本支出和运营支出方面都能节省成本。

总结

DOCA Flow 库可以简化现代应用程序的开发,在数据包处理中提供加速的网络吞吐量和延迟改进,从而为开发者提供帮助。对于用商用现货(COTS)服务器平台上托管的虚拟化应用程序取代专有裸机硬件解决方案的应用程序来说尤其如此。

该库由几个用于高效网络卸载的构建块组成,包括实现基本的数据包处理流水线、最长前缀匹配(LPM)和互联网协议安全(IPsec)的加解密。不久将在连接跟踪(CT)和访问控制列表(ACL)中添加增强功能,以创建或修改访问控制条目。有关 DOCA Flow 参考应用程序的示例,请参阅 DOCA Reference Applications 文档。

通过利用 DOCA Flow 的功能,组织可以在需要高吞吐量和低延迟的用例中最大限度地降低成本、加快服务部署并优化硬件利用率。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA技术
    +关注

    关注

    0

    文章

    17

    浏览量

    6215
  • 交换机
    +关注

    关注

    19

    文章

    2439

    浏览量

    95674
  • 计数器
    +关注

    关注

    32

    文章

    2126

    浏览量

    93009
  • DPU
    DPU
    +关注

    关注

    0

    文章

    294

    浏览量

    23968
  • 加解密
    +关注

    关注

    0

    文章

    16

    浏览量

    6476

原文标题:利用 NVIDIA DOCA Flow 实现 DPU 加速数据包转向逻辑

文章出处:【微信号:Leadtek,微信公众号:丽台科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问SRIO每次出传输数据包的个数,数据包负载大小怎么设置?

    本帖最后由 一只耳朵怪 于 2018-6-19 14:25 编辑 DSP一次发送16个数据包,每个数据包256字节,一次传输4096个字节。如果现在DSP向FPGA发送2048字节数据,后面2048个字节它自动为零,造成效
    发表于 06-19 05:22

    请问DSP硬件定时器怎么实现不同优先级数据包的发送速度不同

    在调度到一个数据包发送给物理层时,有算法能求出它要延时几毫秒后发送。问题是一个数据包延时时,可能调度算法要发送另一个数据包,也可能另一个也要延时,怎么通过硬件定时器实现不同速率
    发表于 01-24 11:27

    AXI流数据包传输问题

    嗨eveyone,我是这个论坛的新人。如果我弄错了,我道歉。我正在尝试使用AXI Stream协议传输数据包。这些数据包包括512 * 32位数据。使用1 kHz时钟使能发送重新生成的数据包
    发表于 04-15 13:51

    uart引导加载程序数据包长度无效

    加载程序的例子。我修改的项目支持UART bootloader和它不工作。我收到以下错误:“引导程序报告错误的数据包长度无效:数据包的长度不符合要求的数据包格式”我ahvedouble和三倍检查我的设置
    发表于 09-26 12:21

    如何检测数据包丢失?

    问题:我想做一个RFC2544速度测试。有人知道如何检测数据包丢失吗?数据中是否有UNIQ标识符(什么是RF2544数据包结构?)……我找不到这个信息。谢谢。
    发表于 03-13 08:56

    EDK到ISE集成无法接收数据包

    你好我正在使用ML506板,我已经将以太网从EDK集成到ISE,逻辑没有区别。在SDK中我发送ARP请求,我收到了ARP回复以及从GUI发送的UDP数据包。我在ethereal中验证了它,并在
    发表于 03-25 09:43

    请问在串口通信中数据包的帧头和帧尾怎样加入到数据包

    在发送端发送时,即校验帧头帧尾?还是只需要在接收端校验帧头帧尾即可? 2,请问在串口通信中,如果需要发送如3.13这样的非整形数据,该如何实现?是由发送端进行处理,还是由接收端接收数据后再进行处理? 3,如果发送端发送3.13这
    发表于 03-30 05:55

    怎样利用FPGA来实现IPV6数据包的拆装?

    怎样利用FPGA来实现IPV6数据包的拆装?IPV6数据包的包头和数据部分的拆分过程是怎样进行的?
    发表于 04-28 06:05

    基于FPGA的IPV6数据包的拆装是如何实现的?

    基于FPGA的IPV6数据包的拆装是如何实现的?
    发表于 05-28 06:23

    UART数据包设计与解析

    上一节讲到起止式SST(Start-Stop-Type)帧结构协议,该协议利用帧头、长度、校验构建帧结构,基于帧结构能实现数据包的可靠、准确传输。应用层数据...
    发表于 12-16 06:15

    odbus实现主机对从设备读取数据包和从设备写入数据包

    六.modbus实现主机对从设备读取数据包和从设备写入数据包1.准备好硬件上能精确到1ms的定时器2. 先完成一个MODBUS所需要的软件上的定时器void Timer2_Init(void
    发表于 02-22 07:59

    专⽤数据处理器 (DPU) 技术⽩⽪书

    ⼼”转向数据为中⼼” 252.3. ⼀种DPU参考设计 292.4. DPU具备的主要功能 343.DPU应用场景353.1. 应用场景⼀
    发表于 03-14 17:35

    如何设置LWIP的传入数据包大小使其可以接受大于16字节的数据包

    错误并无限期挂起。如何设置传入数据包大小,使其可以接受大于 16 字节的数据包?请查看我的一些以太网配置的附件图片
    发表于 12-20 07:46

    什么是DPU

    ,能以线速或网络中的可用速度解析、处理数据,并高效地将数据传输到GPU和CPU。 各种灵活和可编程的加速引擎,可以卸载AI、机器学习、安全、电信和存储等应用,并提升性能。 所有这些DPU
    发表于 11-03 10:55

    数据处理器:DPU编程入门》+初步熟悉这本书的结构和主要内容

    之一。随着人们对云计算和大数据处理需求的增加,数据中心的计算负载也不断增加。传统的中央处理器(CPU)在处理这些工作负载时可能会遇到瓶颈,难以提供足够的性能和效率。DPU通过提供专门的硬件加速
    发表于 12-08 18:03