首页 > 其他分享 >DPDK技术提升网卡吞吐量几何?

DPDK技术提升网卡吞吐量几何?

时间:2023-12-26 18:02:33浏览次数:33  
标签:处理 网卡 吞吐量 内核 Linux 数据包 DPDK

DPDK是什么?

2008年,数据平面开发套件DPDK(Data Plane Development Kit)由英特尔公司的网络通信部门提出,主要针对Intel的处理器和网卡开发,是一款高性能的网络驱动组件,旨在为数据面应用程序提供一个简单方便的,完整的,快速的数据包处理解决方案。目前,DPDK已经开源,越来越多的厂商参与进来贡献代码,这使得DPDK可以支持更多的CPU和网卡,如CPU不仅支持Intel,还支持AMD、ARM等厂商的处理器,网卡支持的范围也包括Intel网卡、Mellanox网卡、ARM集成网卡等。

DPDK技术提升网卡吞吐量几何?_用户态


DPDK工作原理

在不使用DPDK而使用Linux内核处理数据平面时,数据包处理对于通用CPU系统架构的挑战是巨大的。以64B数据包长,40Gbps线速,CPU主频率2GHz为例,要达到理论最大的转发能力,最多允许消耗33个时钟周期。对比访存的时钟周期,一次LLC命中需要大约40个时钟周期,如果LLC未命中,一次内存读还另需70ns。显然,Linux内核数据平面的数据包处理很难满足线速转发的要求。

而DPDK可以为通用CPU系统架构提供简单、完整、快速实现数据平面的数据包处理方案,其核心特征就是绕过了Linux内核态对数据包的处理过程,直接在用户态收发包来解决内核的瓶颈,从而能充分释放CPU对包处理的吞吐能力。

DPDK技术提升网卡吞吐量几何?_数据_02

以下是DPDK的工作原理的基本概述:

  • 绕过内核网络栈:传统的Linux内核网络栈包括了大量的网络协议处理、排队、调度、以及与用户态的切换。这些操作会引入较大的延迟,从而限制了数据包处理性能。DPDK绕过了这些内核操作,将数据包的处理放在用户态,以减少不必要的开销。
  • 直接访问硬件:DPDK允许应用程序直接与网络适配器进行通信,绕过了内核对网络设备的抽象。这样,数据包可以更快速地被发送和接收,无需经过内核的中介。
  • 共享内存: DPDK使用共享内存来实现数据包的快速传递。这允许多个处理线程在不复制数据的情况下访问相同的数据包,从而提高了多核处理器的利用率。
  • 用户态驱动程序: DPDK提供了用户态的网络设备驱动程序,这些驱动程序在用户态中运行,而不是内核态中。这允许应用程序直接控制硬件,而不受内核的限制。
  • 零拷贝: DPDK支持零拷贝技术,允许数据包在内存中以最有效的方式进行传输,减少了数据包处理过程中的数据复制。
  • 多队列处理: DPDK支持多队列技术,使多个处理线程能够并行处理多个队列中的数据包,从而提高了多核系统的性能。

内核与DPDK的区别

在测试网卡吞吐量时,使用Linux内核进行数据包转发与使用DPDK进行数据包转发之间存在显著的区别,这些区别主要涉及性能、延迟和数据包处理方式:

性能:

  • Linux内核: 使用Linux内核进行数据包转发时,数据包需要经过内核的网络协议栈进行处理,这会引入大量的CPU中断、上下文切换和协议处理开销,限制了数据包处理性能。因此,Linux内核数据包转发性能通常较低,特别在高负载情况下。
  • DPDK: 使用DPDK进行数据包转发绕过了内核网络栈,直接在用户态处理数据包。DPDK充分利用硬件加速功能和多核处理器,因此通常可以实现更高的数据包处理性能,从而提供更高的吞吐量。

延迟:

  • Linux内核: 由于Linux内核的复杂性,数据包在经过内核处理时通常会引入较大的延迟,这对于需要低延迟的应用程序来说可能是不可接受的。
  • DPDK: DPDK能够显著减少数据包处理延迟,因为数据包绕过了内核中的许多中介步骤,直接在用户态进行处理。

数据包处理方式:

  • Linux内核: Linux内核采用通用的网络协议栈来处理数据包,因此具有通用性,但这也意味着在处理数据包时会引入一些不必要的开销。
  • DPDK: DPDK是为高性能数据包处理而设计的,它专注于提供最佳性能,允许应用程序更灵活地控制数据包处理过程。

DPDK技术提升网卡吞吐量几何?_数据_03

总的来说,使用DPDK进行数据包转发可以显著提高网络设备的吞吐量和性能,特别是在高负载和需要低延迟的情况下。


内核

1、 Linux内核转发测试拓扑:

DPDK技术提升网卡吞吐量几何?_数据_04


服务器上配置两个端口为桥接,使用信而泰L2-7层网络测试仪DarYu3000的Port1和Port2分别连接服务器上10G网卡的Port1和Port2,然后网络测试仪的Port1和Port2相互发送流量,测试帧长使用RFC2544建议的帧长64Byte、 128Byte、 256Byte、 512Byte、 1024Byte、1280Byte、1518Byte。


  • 内核转发测试结果:

2 、DPDK转发测试拓扑:

DPDK技术提升网卡吞吐量几何?_应用程序_05


服务器上部署DPDK环境,并使能L2fw程序,使用信而泰L2-7层网络测试仪DarYu3000的Port1和Port2分别连接服务器上10G网卡的Port1和Port2,然后网络测试仪的Port1和Port2相互发送流量,测试帧长使用RFC2544建议的帧长64Byte、 128Byte、 256Byte、 512Byte、 1024Byte、1280Byte、1518Byte。

  • DPDK转发测试结果:

DPDK技术提升网卡吞吐量几何?_数据_06

分析对比内核转发测试结果与DPDK转发测试结果,显然部署了DPDK后,数据包的吞吐能力得到了极大的提升。

仪表配置

配置吞吐量界面,使用RFC 2544建议的字节帧长64Byte、128Byte、256Byte、512Byte、1024Byte、1280Byte、1518Byte进行测试,然后点击“完成”

DPDK技术提升网卡吞吐量几何?_数据_07



最后,点击下图所示的开始按键即可启动测试。

DPDK技术提升网卡吞吐量几何?_数据_08



RFC2544按照顺序测试完64Byte、128Byte、256Byte、512Byte、1024Byte、1280Byte、1518Byte帧长的吞吐量,并自动保存测试结果,此为DPDK转发测试结果。

DPDK技术提升网卡吞吐量几何?_数据_09


标签:处理,网卡,吞吐量,内核,Linux,数据包,DPDK
From: https://blog.51cto.com/teletest1/8986013

相关文章

  • DPDK技术提升网卡吞吐量几何?
    DPDK是什么?2008年,数据平面开发套件DPDK(DataPlaneDevelopmentKit)由英特尔公司的网络通信部门提出,主要针对Intel的处理器和网卡开发,是一款高性能的网络驱动组件,旨在为数据面应用程序提供一个简单方便的,完整的,快速的数据包处理解决方案。目前,DPDK已经开源,越来越多的厂商参与进来......
  • 如何配置双网关/双网卡
    #1.前期准备1)两个网卡都需要正确设置,包括各自默认网关(注意,两个网卡都需要设定网关)  网卡配置文件在/etc/sysconfig/network-scripts/目录下,需要正确设置两个网卡的配置文件,然后重新启用新配置。2)两个网卡都已正确接入到两路线路,并且两路网络的服务供应商都已正常提供服务#2.......
  • 性能测试:通过简单的例子理解并发量,线程数,吞吐量,TPS
    看个简单的例子①老王开了家餐厅我们的主角老王,在M市投资新开业了一家,前来用餐的顾客络绎不绝:餐厅里有4种不同身份的人员: 用户一次完整的用餐流程如下:1.顾客到店小二处付款点餐  =>  2.小二将订单转发给后厨  =>  3.后厨与备菜工配合,取材完成烹饪后交给小......
  • 网卡缺失解决办法
    在我做一些实验时发现没有虚拟网卡,尤其在用gns3对cloud配置的时候,发现怎么点都没有网卡,如下图;网上搜索之后知道了大概问题出在哪里:通常是安装过后,由于某些原因卸载了VMware,但是没有卸载干净,再次安装时就会出现这种情况。1)先用Geek删干净VMwareworkStation,包括注册表里面的东西2)......
  • WN517GP无线网卡
    WN517Gp是一款高功率无线网卡,其传输距离可达到1000米。这款网卡配备了可拆卸的外部天线,用户可以根据需求更换天线以获取更好的信号。WN517Gp遵循IEEE802.11b/g标准,是一款无线USBLAN卡。然而,有用户反映其芯片为8187L的WN517Gp发热过于严重,不加散热的话可能在短时间内死机。在选择使......
  • Linux安装无线网卡驱动
    您可以通过以下步骤来实现:首先,将Linux安装盘插入电脑的USB接口。打开电脑的BIOS设置,将启动顺序设置为优先从USB设备启动。重启电脑并进入Linux安装界面。在安装过程中,选择“手动分区”选项,然后为Linux系统分配一个适当的分区。接下来,选择“安装Linux内核”选项,并等待安装完成。安装......
  • 深入了解 Linux 网卡和网口:揭秘网络接口的奥秘
    实际工作中,把服务器关机了,网线从一个网口移动到了其他网口,导致再开机后,服务器无法联网了。由于缺少王工的支持,这使我开始关注网络技术。先总结下常用的概念和操作吧。1.网卡和网口的对应关系在Linux系统中,网卡(NetworkInterfaceCard,NIC)与网络接口(网口)之间存在紧密的对应关系。......
  • linux-网卡配置
    一、网络配置iplinkshow查看网卡配置setens33up/down网卡的开启关闭iplinkadd/up添加/删除网卡为网络设备添加协议地址ipaddress192.168.10.1/24brocase二、添加网卡并配置网络1、在linux虚拟机上新添加一个网卡2、进入终端网卡配置界面cd/etc/s......
  • vmware虚拟机 linux 本地yum源,网卡配置ens33,防火墙selinux
    1、挂载镜像文件,CentOS-7-x86_64-DVD-1804.iso,并且要处于连接状态#光盘挂载至/mntmount/dev/sr0/mnt#备份yum源文件cd/etc/yum.repos.d/mkdir-p./bakmvCentOS*./bak#编缉本地源vimlocal.repo[centos7]name=CentOS7baseurl=file:///mntenable=1gpgcheck=0 关闭防......
  • 爱芯派pro通过无线网卡rtl8188eu连接热点
    爱芯派pro通过无线网卡rtl8188eu连接热点爱芯派pro目前的底板的pcie的复位有问题,所以pcie接口无法挂载上去,所以自己购买的rtl8822网卡也用不了,然后想起来自己还有正点原子的rtl8188eu网卡,但是没有和工作人员进行摸索后才知道没有对应驱动,现在是如何使用该网卡让爱芯派连接上wifi......