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

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

3天内不再提示

关于DPDK的一些常见问题

Linux爱好者 来源:SDNLAB 2024-03-05 11:44 次阅读

交换机、路由器、防火墙等网络设备通常需要实时处理大量数据包。在现代网络中,数据包处理是一个非常重要的环节。传统上,高效的数据包处理需要使用专门且昂贵的硬件,而数据平面开发套件 ( DPDK )能在低成本商用硬件上做到这一点。通过使用商用硬件,还可以将网络功能转移到云端,并在虚拟化环境中运行它们。

DPDK最初是由 Intel 于2010年发起的,Intel 的 Venky Venkatesan 被称为“ DPDK之父”。2017年4月,DPDK成为Linux基金会下的一个项目。目前,许多开源项目已经采用了DPDK,包括 MoonGen、mTCP、Ostinato、Lagopus、Fast Data (FD.io)、Open vSwitch、OPNFV 和 OpenStack。

5dc0caf0-d9de-11ee-a297-92fbcf53809c.png

| DPDK框架 当然,DPDK也面临着一些挑战,包括无法支持某些网卡;对 Windows 的支持有限;调试比较困难;版本兼容性问题等。 01 DPDK如何改进数据包处理? 传统的数据包处理方式是数据包先到内核最后再到用户层进行处理。这种方式会增加额外的延迟和CPU开销,严重影响数据包处理的性能。 DPDK 绕过内核,在用户空间中实现快速数据包处理。它本质上是一组网络驱动程序和库。环境抽象层 ( EAL ) 从应用程序中抽象出特定于硬件的操作。下图显示了在数据包到达应用程序之前,POSIX调用的传统处理是如何通过内核空间的。DPDK缩短了这条路径,并直接在NIC和用户空间应用程序之间移动数据包。

5ddca05e-d9de-11ee-a297-92fbcf53809c.png

传统的处理是中断驱动的,当数据包到达时,NIC会中断内核。DPDK转而使用轮询,避免了与中断相关的开销。这是由轮询模式驱动程序 ( PMD ) 执行的。另一个重要的优化是零拷贝。在传统网络中,数据包从内核空间的套接字缓冲区复制到用户空间。DPDK避免了这种情况。 DPDK的用户空间对开发人员很有吸引力,因为不需要修改内核。任何基于DPDK 的网络堆栈都可以针对特定应用进行优化。

02 DPDK采用的数据包处理模型是什么?

大致有两种处理模型:

# Run-to-Completion

CPU内核处理数据包的接收、处理和传输。可以使用多个内核,每个内核与专用端口关联。通过接收端扩展 ( RSS ),到达单个端口的流量可以分配到多个内核。

# Pipeline

每个内核专用于特定的工作负载。例如,一个内核可能处理数据包的接收/传输,而其他内核则负责应用程序处理。数据包通过memory rings在内核之间传递。

5dedcc62-d9de-11ee-a297-92fbcf53809c.png

对于单核多CPU部署,一个CPU分配给操作系统,另一个分配给基于DPDK的应用程序。对于多核部署,无论是否使用超线程,都可以为每个端口分配多个内核。 决定使用哪种模型取决于处理每个数据包所需的周期、跨软件模块的数据交换范围、某些内核的特定优化、代码可维护性等。

03 DPDK是否需要TCP / IP堆栈才能工作?

DPDK不包括TCP / IP堆栈。如果应用程序需要用户空间网络堆栈,可以使用 F-Stack、mTCP、TLDK、Seastar 和 ANS 。它们通常提供阻塞和非阻塞套接字API,其中一些是基于 FreeBSD 实现的。 由于省略了网络堆栈,DPDK不会出现通用实现的低效率问题。应用程序可以包括针对其用例进行优化的网络模块,也可能存在一些不需要更高层(L2 以上)处理的用例。

04 在DPDK之前,厂商如何实现高效的数据包处理?

在DPDK之前,有专门的硬件可以进行高效的数据包处理。此类硬件可能使用定制的 ASIC、可编程 FPGA 或网络处理单元 ( NPU ),这些专用硬件以优化的方式完成数据包分类、流量控制、TCP / IP处理、加/解密、VLAN标记等任务。 然而,此类硬件的购买和维护成本昂贵。升级和安全补丁的应用非常耗时,并且需要全职的网络管理员。一种解决方案是从专用硬件转向商用现成 ( COTS ) 硬件。虽然这更具成本效益且更易于维护,但性能却受到了影响。数据包从网卡 ( NIC ) 移动到操作系统 ( OS ),并通过操作系统内核堆栈进行处理。即使使用快速NIC,内核堆栈也是一个瓶颈。系统调用、中断、上下文切换、包复制和逐包处理都会降低性能。 DPDK解决了COTS硬件上的性能问题,无需昂贵的定制硬件即可获得高效的数据包处理。

05 业界谁在使用DPDK? 负载均衡、流分类、路由、访问控制(防火墙)和流量监管是DPDK的典型用途。DPDK不仅适用于电信行业,也已在云环境和企业中使用。流量生成器 (TRex) 和存储应用(SPDK) 使用DPDK。下图列出了DPDK支持的开源项目。

5dfe9b64-d9de-11ee-a297-92fbcf53809c.png

Open vSwitch ( OVS ) 移植到DPDK后表现出了 7 倍的性能提升。在物联网应用中,数据包很小,DPDK减少了延迟并允许每秒处理更多此类数据包。 在 5G 中,用户平面功能 ( UPF ) 处理用户数据包。延迟、抖动和带宽是需要满足的关键性能指标。一些研究人员已经提出将DPDK用于5G UPF的实现。在边缘网络部署UPF时, 可以使用DPDK API连接UPF应用 ( UPF -C) 和 SmartNIC ( UPF -U)。

06 DPDK面临哪些挑战? DPDK需要一定的专业知识,开发人员需要学习DPDK的编程模型。他们需要知道如何管理内存、如何在不复制的情况下传递数据包,以及如何使用多核架构。 例如,PID 命名空间可能会导致管理fbarray出现问题;使用mmap而不指定地址的进程可能会导致问题;线程必须正确分配给CPU内核,才能获得一致的性能;此外,DPDK库还给开发人员提供了多种实现选择,选择错误会影响性能。 由于绕过了内核,失去了Linux 内核提供的所有保护、实用程序( ifconfig、tcpdump)和协议(ARP 、IPSec)。调试和确定网络问题的根本原因也是一项挑战。最后,由于使用轮询而不是中断,因此即使只处理几个数据包,DPDK也会导致 100% 的CPU使用率。

07 还有哪些替代选择?

使用 Snabbswitch、Netmap 或 StackMap 可以通过内核旁路实现更快的数据包处理。与DPDK一样,它们在用户空间中处理数据包。数据包完全绕过内核堆栈。Snabbswitch 是用 Lua 编写的,而DPDK是用 C 编写的。PacketShader 对基于GPU的硬件进行内核旁路。 另一种方法是修改 Linux 内核。例如 eXpress Data Path ( XDP ) 和基于远程直接内存访问 ( RDMA ) 的网络堆栈。其他有效的工具还包括 packet_mmap (但不会绕过内核)和 PF_RING (带有 ZC 驱动程序)。 推荐阅读点击标题可跳转

审核编辑:黄飞

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

    关注

    0

    文章

    417

    浏览量

    35608
  • 交换机
    +关注

    关注

    21

    文章

    2638

    浏览量

    99552
  • 路由器
    +关注

    关注

    22

    文章

    3728

    浏览量

    113720
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79059
  • DPDK
    +关注

    关注

    0

    文章

    13

    浏览量

    1725

原文标题:全面了解DPDK

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MSP430入门的一些常见问题

    讲了MSP430入门的一些常见问题,初学者很有帮助。
    发表于 11-07 22:55

    4418开发板常见问题及解决方法

    这里有我们总结的一些关于4418开发板的一些常见问题和解决方法,供大家参考
    发表于 09-27 10:38

    设计师在使用高速放大器时遇到的一些常见问题

    在使用高速放大器进行设计时,定要熟悉其通用的规格并了解其特定概念。在本文中,高速放大器是指增益带宽积(GBW)大于或等于50 MHz的运算放大器(op amps),但这些概念也适用于低速器件。以下设计师在使用高速放大器时遇到的一些常见
    发表于 01-06 06:44

    MM32F103产品中的一些常见问题

    LQFP100、LQFP64、LQFP48、LQFP32 和 QFN32 共 5 种封装形式。根据不同的封装形式,器件中的外设配置不尽相同。该产品适合使用在电机驱动和应用控制,医疗和手持设备,工业应用以及警报系统等。下面英尚微代理商解答关于MM32F103产品中的一些
    发表于 01-07 06:00

    STM32中串口的一些常见问题有哪些?

    STM32中串口的一些常见问题有哪些?
    发表于 02-18 08:00

    充电器常见问题汇编

    充电器常见问题汇编 关于充电池充电器的常见问题解答 出处:PConline 作者:李俊 ??我们这里应广大读者的要求,回答一些
    发表于 11-05 17:16 703次阅读

    变压器绕制、特性等一些常见问题分析

    变压器绕制、特性等一些常见问题分析   、变压器的制作中,线圈的机器绕制和手工绕制各有什么优缺点?
    发表于 12-11 10:00 1350次阅读

    关于HPLC的常见问题及解答

    关于HPLC的常见问题及解答 、问:用HPLC进行分析时保留时间有时发生漂移,有时发生快速变化,原因何在?如何解决?答:关于
    发表于 12-25 16:34 1306次阅读

    关于等离子电视机九大常见问题的解答

    关于等离子电视机九大常见问题的解答 对于等离子电视,可能还有很多人不是特别了解,长期以来受到一些错误的舆论导向,认为等
    发表于 02-09 13:15 866次阅读

    NIOS II 常见问题总结

    NIOS II 常见问题总结,如果你想要Altera的FPGA做嵌入式设计,肯定要涉及到NIOS II的使用,本文总结了一些NIOS II的常见问题与解决方法
    发表于 12-01 15:43 14次下载

    关于一些手机信号放大器安装的常见问题

    随着时代的发展,手机信号放大器也普布出现在的家庭中。最近收集了一些关于手机信号放大器在安装时会遇到的一些问题,整理了四大类常见问题与处理方式,具体内容可以看详细介绍哦~
    发表于 09-01 14:35 1157次阅读

    关于ROM和RAM有哪些常见问题

    关于ROM和RAM的常见问题分析。
    的头像 发表于 11-19 15:51 2836次阅读

    STM32中遇到的问题--关于串口的一些常见问题

    在单片机的开发过程中,最常用的外设就是串口了,是用来进行bug纠错、log输出的常用工具,也是用来与外部通讯的常见协议之。 但是在使用串口的过程中难免会遇到一些问题,下面就我在工作遇到的一些
    发表于 12-24 18:51 2次下载
    STM32中遇到的问题--<b class='flag-5'>关于</b>串口的<b class='flag-5'>一些</b><b class='flag-5'>常见问题</b>

    纳米软件科普:一些关于S参数常见问题的问答

    网络分析仪常用被用来测试器件的S参数,本篇文章纳米软件Namisoft小编将为大家整理一些关于S参数的常见问题问答,下面起来看看吧。
    的头像 发表于 02-02 10:49 1248次阅读

    DHCP服务器的工作原理及常见问题总结

    关于一些DHCP服务器的工作原理、常见问题总结和虚拟机部署DHCP服务器时出现的问题
    的头像 发表于 02-11 09:26 2483次阅读