CN110719234A - 一种基于dpdk的数据包处理方法及装置 - Google Patents

一种基于dpdk的数据包处理方法及装置 Download PDF

Info

Publication number
CN110719234A
CN110719234A CN201910990606.7A CN201910990606A CN110719234A CN 110719234 A CN110719234 A CN 110719234A CN 201910990606 A CN201910990606 A CN 201910990606A CN 110719234 A CN110719234 A CN 110719234A
Authority
CN
China
Prior art keywords
data packet
mbuf
queues
packet processing
lock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910990606.7A
Other languages
English (en)
Inventor
许小奎
马奥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Zhongfu Information Technology Co Ltd
Original Assignee
Nanjing Zhongfu Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Zhongfu Information Technology Co Ltd filed Critical Nanjing Zhongfu Information Technology Co Ltd
Priority to CN201910990606.7A priority Critical patent/CN110719234A/zh
Publication of CN110719234A publication Critical patent/CN110719234A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供一种基于DPDK的数据包处理方法及装置,该方法包括:在DPDK运行环境中,从至少一个网卡中读取数据包,并将所述数据包保存在mbuf中;将mbuf分别加入到预先创建的多个无锁队列中,所述多个无锁队列中的每个无锁队列分别与一个数据包处理服务绑定,以使所述数据包处理服务从绑定的无锁队列中读取所述mbuf并处理所述mbuf中的数据包。本申请使用数据平面开发套件DPDK,从一个或多个网卡接收数据包并将其放到多个无锁共享队列中,应用层服务从绑定的共享队列中读取数据包并进行包处理,从而实现多个服务间数据包的共享。

Description

一种基于DPDK的数据包处理方法及装置
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种基于DPDK的数据包处理方法及装置。
背景技术
在网络数据处理场景中,存在同一台服务器上需要将采集到的网络数据包交给多个服务进行处理的场景。目前常用的方式是通过linux Bridge网桥或者Open VSwitch(OVS)来构造虚拟交换设备,虚拟出多个端口,并将物理端口采集到的数据转发到虚拟端口中,每个服务绑定不同的虚拟端口,读取虚拟端口中的数据包并进行处理。但是该方式在应用时需要创建虚拟交换机,并根据需求做相应的配置,而且存在数据包多次拷贝的情况,降低收发性能。
发明内容
本申请实施例的目的在于提供一种基于DPDK的数据包处理方法及装置,使用数据平面开发套件DPDK实现零拷贝的多服务数据包共享,不需要部署虚拟交换机,有效提升性能。
第一方面,本发明实施例提供一种基于DPDK的数据包处理方法,包括:在DPDK运行环境中,从至少一个网卡中读取数据包,并将所述数据包保存在mbuf中;将mbuf分别加入到预先创建的多个无锁队列中,所述多个无锁队列中的每个无锁队列分别与一个数据包处理服务绑定,以使所述数据包处理服务从绑定的无锁队列中读取所述mbuf并处理所述mbuf中的数据包。
上述方案中,在从网卡中读取到数据包后,将数据包保存在mbuf中,并将mbuf入队到已与数据包处理服务绑定的多个无锁队列中,上层应用服务通过绑定的无锁队列从队列中读包,由于每个无锁队列中存放的mbuf指针指向同一个mbuf,因此所有的无锁队列中这个mbuf是共享的,从而多个数据包处理服务可以共用mbuf中的这一数据包,实现零拷贝的多服务数据包共享。
在可选的实施方式中,在将mbuf分别加入到预先创建的多个无锁队列中之前,所述方法还包括:设定数据包的引用计数,并在所述mbuf中存储引用计数的值。
在可选的实施方式中,所述方法还包括:在mbuf中引用计数的值为0的情况下,释放所述mbuf。
在上述的两个实施方式中,通过设定引用计数使得mbuf能够被多个数据包处理服务使用,并在多个数据包处理服务处理结束后被释放。
在可选的实施方式中,在从至少一个网卡中读取数据包之前,所述方法还包括:初始化所述DPDK,以确定所述网卡的工作模式、申请内存池以及创建多个无锁队列。
在上述的初始化中,通过内存池机制能够便于DPDK更加简单的管理内存,同时,创建多个无锁队列后,通过将无锁队列与数据包处理服务绑定,使得数据包能够得到共享。
在可选的实施方式中,所述无锁队列为ring队列,所述方法还包括:当存在多余的ring队列时,且有待扩展数据包处理服务,则从所述多余的ring队列中选取与所述待扩展数据包处理服务数量相同的ring队列作为目标ring队列,并将所述目标ring队列分别与一个所述待扩展数据包处理服务进行绑定。
在上述方案中,数据包处理服务的个数可以动态扩展,当存在待扩展的数据包处理服务时,只需要将服务与预创建的多个ring队列中未使用的ring队列绑定即可,服务的动态扩展十分便捷。
第二方面,本发明实施例提供一种基于DPDK的数据包处理装置,包括:读取模块,用于在DPDK运行环境中,从至少一个网卡中读取数据包,并将所述数据包保存在mbuf中;共享模块,用于将mbuf分别加入到预先创建的多个无锁队列中,所述多个无锁队列中的每个无锁队列分别与一个数据包处理服务绑定,以使所述数据包处理服务从绑定的无锁队列中读取所述mbuf并处理所述mbuf中的数据包。
在可选的实施方式中,所述共享模块还用于:设定数据包的引用计数,并在所述mbuf中存储引用计数的值。
在可选的实施方式中,所述无锁队列为ring队列,所述装置还包括:服务扩展模块,用于在存在多余的ring队列时,且有待扩展数据包处理服务,则从所述多余的ring队列中选取与所述待扩展数据包处理服务数量相同的ring队列作为目标ring队列,并将所述目标ring队列分别与一个所述待扩展数据包处理服务进行绑定。
第三方面,本发明实施例提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如前述第一方面的实施方式所述的方法。
第四方面,本发明实施例提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如前述第一方面的实施方式所述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的数据包处理方法的流程图;
图2为本申请实施例提供的数据包处理方法的示意图;
图3为本申请实施例提供的数据包处理装置的示意图;
图4为本申请实施例提供的电子设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
数据平面开发套件(Data Plane Development Kit,DPDK)是由Intel等多家公司开发,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。本申请实施例使用DPDK为应用层的多个数据包处理服务提供零拷贝的数据包共享,以下将根据图1所示的流程图详细介绍本实施例提供的数据包处理方法。
该方法包括如下步骤:
S101:预先进行DPDK环境部署。
DPDK的环境部署包括设置运行环境与系统变量、加载驱动模块、绑定需要采集数据包的一个或者多个网卡和分配大页内存等。
首先需进行DPDK目标环境的安装,在目标环境创建完成后,将包含构建客户应用程序所需DPDK运行环境的所有库,包括DPDK的轮询驱动程序和DPDK环境头文件。在创建好目标环境之后,用户也可以通过编辑目录中的.config文件对DPDK配置进行修改。DPDK程序在运行前,将设备中使用的所有网卡绑定到uio_pci_generic,igb_uio或者是vfio-pci模块上。如果是由linux内核驱动控制的网络端口,则需先将端口从linux解绑,然后将其绑定到uio_pci_generic,igb_uio或者vfio-pci模块上供DPDK使用。DPDK通过轮询方式不断从绑定的网卡中读取数据包,未与DPDK绑定的网卡将被DPDK轮询驱动忽略,不能被DPDK程序读取。
linux的内存页默认采用4KB为一页,页越小内存越大,页表的内存占用也越大,通过分配大页内存,程序需要更少的页面,有效提升性能。大页内存的分配应当在设备系统启动时或者在设备系统启动后尽快完成,以避免物理内存碎片化。大页内存的申请可以指定申请的内存页个数和默认内存页的大小,例如分配4个1G的内存页,内存页个数为4,内存页大小为1G,则需要指定的参数如下:default_hugepagesz=1G hugepagesz=1G hugepages=4。
S102:预先初始化DPDK。
在运行DPDK之前,预先初始化DPDK,以确定网卡的工作模式、申请内存池以及创建多个无锁队列等。
一般情况下,设备网卡都工作在非混杂模式,即网卡只接受目的地址指向自己的数据包。初始化DPDK时,将网卡的工作模式设置为混杂模式,DPDK运行时,通过轮询驱动能够获取所有经过该网卡的数据包,如果网卡是工作于非混杂模式,由于网卡对网络端口中的数据包进行了目的地址的筛选,则经过网卡的数据包中存在较多数据包没有进入到网卡中,导致一些数据包被丢弃。针对网卡的工作模式可以采用任意方式将网卡设置为混杂模式,本实施例对此不做限定。
内存池提供内存的获取和释放等操作接口,DPDK通过调用不同的接口能够从内存池中获取mbuf中的数据,以及将mbuf释放,能够更加简单的管理内存。为了高效访问数据,DPDK将内存封装在mbuf(Memory buffer,存储器缓存)结构体中,即通过mbuf来封装和存放接收到的数据包。mbuf存放在创建的内存池中,能够避免频繁收发包申请mbuf内存带来的性能开销。在创建内存池时,在预先分配的大页内存中创建一个连续的大缓冲区作为内存池,在内存池中创建有多个连续的对象元素,即mbuf,mbuf用于存储DPDK从网卡中接收到的数据包。在创建内存池的同时,还会创建多个无锁队列,该无锁队列为ring队列,ring队列是将队列串接起来形成的环形的无锁队列。
上述步骤S101-S102是在实施数据包处理方法之前预先执行的,如果设备已经预先部署了DPDK的运行环境以及预先已对DPDK进行了初始化,那么上述步骤可以省略,即直接执行以下的步骤S103。
S103:DPDK从至少一个网卡中读取数据包,并将数据包保存在mbuf中。
DPDK通过轮询方式从绑定的网卡中读取到数据包,并将数据包封装在内存池中的mbuf结构体内。内存池中的多个mbuf的结构相同,均由头部、数据区域和尾部构成,DPDK将数据包封装在mbuf的数据区域。
S104:将mbuf分别加入到预先创建的多个无锁队列中,多个无锁队列中的每个无锁队列分别与一个数据包处理服务绑定。
应用层中的每一个需要对数据包进行处理的服务均从预先创建的多个无锁队列中选取一个无锁队列,进行绑定。在实际应用中,DPDK可以将mbuf分别入队到所有已与数据包处理服务绑定的无锁队列中,对于未与数据包处理服务绑定的空闲无锁队列,可以不入队,或者也可以将mbuf入队到所有已创建的无锁队列中,这样在运行时可以无需判断无锁队列是否与数据包处理服务绑定,使得逻辑上更加简洁通用,且不会影响其性能。
无锁的ring队列中存放的是mbuf的指针,而不是mbuf本身的数据拷贝。mbuf入队的所有ring队列中存放的指针指向同一个mbuf,也就是说,所有的ring队列中存储的这个mbuf是共享的,是同一个mbuf,每个数据包处理服务通过访问绑定的ring队列能够读取该mbuf中存放的数据包。由于设置了多个ring队列,且数据包处理服务与ring队列一一对应,因此即便某一个或多个数据包处理服务在读取mbuf并从ring队列中取出了mbuf的指针之后,也并不影响其他ring队列中存放的mbuf指针,其他数据包处理服务仍可从对应的ring队列中读取mbuf,从而可实现应用层中的多个数据包处理服务对mbuf中数据包的共享。
S105:应用层中的多个数据包处理服务从绑定的无锁队列中读取mbuf并处理mbuf中的数据包。
上述所指的数据包处理服务可以是应用程序的一个线程或者一个进程,每个数据包处理服务通过对应的无锁队列读取mbuf,解析读取的mbuf,并对mbuf中的数据包进行处理。
在DPDK将mbuf入队到多个ring队列之前,该方法还包括:通过DPDK设定数据包的引用计数,并在mbuf中存储引用计数的值。mbuf中除了存储从网卡中读到的数据包以外,还存储一些其他的信息,包括上述的引用计数的值。mbuf每加入到一个ring队列中引用计数的值则加1,当有数据包处理服务从ring队列中读取mbuf中的数据并处理后,mbuf引用计数的值减1。因此,如果有M个ring队列与数据包处理服务绑定,则在mbuf入队到所有ring队列后,存储的引用计数的值为M,mbuf等待数据包处理服务的读取,当所有的数据包处理服务均已读取mbuf中的数据包并进行包处理后,引用计数的值逐步减小至0。
当mbuf不再使用,即所有数据包处理服务均已读取该mbuf后,则可以释放mbuf所占用的内存空间,以便于mbuf存储新的从网卡接收到的数据包,避免mbuf资源的持续占用。因此在引用计数的值为0的情况下,即与ring队列绑定的每个数据包处理服务均已读取并处理mbuf中的数据包后,释放该mbuf。设置引用计数的目的是使mbuf能够被多个数据包处理服务使用,以及在多个数据包处理服务处理结束后被释放。
图2为本实施例中数据包处理方法的示意图,如图2所示,DPDK能够读取设备中的J个网卡上的数据包,并通过mbuf进行存储,K个ring队列分别与K个数据包处理服务一一绑定,mbuf分别入队到K个ring队列中,每个数据包处理服务通过访问对应的ring队列读取mbuf中的数据包。
需要说明的是,在实际应用场景中,针对网卡持续接收到的数据包,mbuf的入队步骤与数据包处理服务的读取步骤是异步执行的。DPDK通过轮询驱动不断从网卡读取数据包,并将每一个数据包分别保存在一个mbuf中,与此同时,数据包处理服务也通过ring队列不断从mbuf中读取数据包,两个步骤之间在严格意义上没有先后关系,为便于理解,附图中的顺序示出的是针对一个数据包,从被接收、被保存至mbuf、将mbuf入队到ring队列中、mbuf被数据包处理服务读取的一个完整顺序,不应当限定为本实施例提供的方法必须具有这样的顺序。
进一步的,在本实施例中,数据包处理服务的个数可以动态扩展,能够任意增加或减少。该方法还包括如下步骤:当存在多余的ring队列时,且有待扩展数据包处理服务,则从多余的ring队列中选取与待扩展数据包处理服务数量相同的ring队列作为目标ring队列,并将目标ring队列分别与一个待扩展数据包处理服务进行绑定;当存在待解绑数据包处理服务时,则将待解绑数据包处理服务与绑定的ring队列进行解绑。
例如,DPDK在步骤S102时预先创建有N个ring队列,并且在N个ring队列中已有M个ring队列分别与M个数据包处理服务绑定,M≤N。在N个ring队列中存在多余的ring队列且设备中有X个待扩展的数据包处理服务时,则从多余的N-M个ring队列中选取X个ring队列,并将X个ring队列分别与X个待扩展数据包处理服务对应绑定,在下一时刻,DPDK将数据包保存至mbuf后,mbuf的入队从原本的M个ring队列变为扩展后的M+X个ring队列,mbuf入队后其中引用计数的值也从原本的M变为M+X,使得新的X个数据包处理服务能够与原本的M个数据包处理服务共享数据包,从而实现服务的动态扩展。因此,当存在待扩展的数据包处理服务时,只需要将服务与预创建的多个ring队列中未使用的ring队列绑定即可,而当需要减少数据包处理服务的个数时,也只需要将待解绑数据包处理服务与对应的ring队列解绑即可,解绑后的ring队列将等待与新的数据包处理服务绑定,本实施例提供的方法使得服务的动态扩展十分便捷。
具体的,可以在数据包处理服务的启动参数或者配置脚本中预先作有相应的配置,每当一个数据包处理服务启动时,将自动从多余的ring队列中选取一个ring队列进行绑定,而在数据包处理服务退出时,则自动将其与已绑定的ring队列进行解绑,以释放mbuf资源。具体也可以向每个数据包处理服务提供应用程序编程接口API,数据包处理服务在启动或者退出时通过调用API来实现查找、绑定以及解绑的过程。
本实施例提供的数据包处理方法具有如下特点:(1)DPDK从绑定的网卡中读取数据包后,将数据包保存在内存池中的mbuf中,并将mbuf入队到已绑定的ring队列中,每个ring队列类似于虚拟交换机中的一个虚拟端口,上层应用服务通过绑定ring队列从队列中读包,由于每个ring队列中存储的mbuf是相同的,是共享的,因此多个数据包处理服务可以共用这一数据包,实现多服务间数据包的共享;(2)该方法基于DPDK收取网卡的数据包,具有高性能的数据采集特性,采集到的数据包不做转发,而是利用mbuf和多个ring队列实现共享,由于DPDK运行在用户态,绕过了Linux内核态协议栈,能够减少中断,提升数据处理效率,并且区别于现有的虚拟交换机,实现数据包的零拷贝,有效提升性能。
本实施例中的数据包处理方法,通过共享大页内存、无锁ring队列、设定引用计数等,不仅能满足网络数据处理场景中多个服务共用数据包的需求,实现多线程或多进程共享数据包,而且不需要部署虚拟交换机,减少了环境配置,且使用DPDK进行数据包采集,能获得优越的性能。该方法可部署在通用服务器或者任一具有网络通信能力的电子设备上,大大减少对硬件设备的依赖。
基于同一发明构思,请参照图3,本申请实施例还提供一种基于DPDK的数据包处理装置200,装置200包括:
读取模块201,用于在DPDK运行环境中,从至少一个网卡中读取数据包,并将数据包保存在mbuf中;
共享模块202,用于将mbuf分别加入到预先创建的多个无锁队列中,多个无锁队列中的每个无锁队列分别与一个数据包处理服务绑定,以使数据包处理服务从绑定的无锁队列中读取mbuf并处理mbuf中的数据包。
可选的,共享模块202还用于:设定数据包的引用计数,并在mbuf中存储引用计数的值。
可选的,共享模块202还用于:在mbuf中引用计数的值为0的情况下,释放mbuf。
可选的,装置200还包括:初始化模块,用于初始化DPDK,以确定网卡的工作模式、申请内存池以及创建多个无锁队列。
可选的,该无锁队列为ring队列,装置200还包括:服务扩展模块,用于在存在多余的ring队列时,且有待扩展数据包处理服务,则从多余的ring队列中选取与待扩展数据包处理服务数量相同的ring队列作为目标ring队列,并将目标ring队列分别与一个待扩展数据包处理服务进行绑定。
本申请实施例所提供的基于DPDK的数据包处理装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容,在此不做赘述。
本申请实施例还提供一种存储介质,该存储介质上存储有计算机程序,当该计算机程序被处理器运行时执行如本申请上述实施例提供的数据包处理方法。
请参照图4,本实施例提供一种电子设备300,包括处理器301和存储器302,存储器302中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器301加载并执行,以实现上述实施例提供的数据包处理方法。电子设备300还可以包括通信总线303,其中,处理器301和存储器302通过通信总线303完成相互间的通信。存储器302可以包括高速随机存取存储器(作为缓存),还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。通信总线303是连接所描述的元素的电路并且在这些元素之间实现传输。例如,处理器301通过通信总线303从其它元素接收到命令,解码接收到的命令,根据解码的命令执行计算或数据处理。
电子设备300上安装有至少一个网卡且运行有DPDK程序,DPDK通过轮询驱动能够获取该至少一个网卡接收到的数据包,并将数据包存放在mbuf中,应用层中的多个服务通过绑定的ring队列读取mbuf中的数据包,从而电子设备300上运行的多个服务能够共享数据包。电子设备300可以包括但不限于台式计算机、个人计算机、服务器等具有网络通信能力的计算设备。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种基于DPDK的数据包处理方法,其特征在于,包括:
在DPDK运行环境中,从至少一个网卡中读取数据包,并将所述数据包保存在mbuf中;
将mbuf分别加入到预先创建的多个无锁队列中,所述多个无锁队列中的每个无锁队列分别与一个数据包处理服务绑定,以使所述数据包处理服务从绑定的无锁队列中读取所述mbuf并处理所述mbuf中的数据包。
2.根据权利要求1所述的方法,其特征在于,在将mbuf分别加入到预先创建的多个无锁队列中之前,所述方法还包括:
设定数据包的引用计数,并在所述mbuf中存储引用计数的值。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在mbuf中引用计数的值为0的情况下,释放所述mbuf。
4.根据权利要求1所述的方法,其特征在于,在从至少一个网卡中读取数据包之前,所述方法还包括:
初始化所述DPDK,以确定所述网卡的工作模式、申请内存池以及创建多个无锁队列。
5.根据权利要求1所述的方法,其特征在于,所述无锁队列为ring队列,所述方法还包括:
当存在多余的ring队列时,且有待扩展数据包处理服务,则从所述多余的ring队列中选取与所述待扩展数据包处理服务数量相同的ring队列作为目标ring队列,并将所述目标ring队列分别与一个所述待扩展数据包处理服务进行绑定。
6.一种基于DPDK的数据包处理装置,其特征在于,包括:
读取模块,用于在DPDK运行环境中,从至少一个网卡中读取数据包,并将所述数据包保存在mbuf中;
共享模块,用于将mbuf分别加入到预先创建的多个无锁队列中,所述多个无锁队列中的每个无锁队列分别与一个数据包处理服务绑定,以使所述数据包处理服务从绑定的无锁队列中读取所述mbuf并处理所述mbuf中的数据包。
7.根据权利要求6所述的装置,其特征在于,所述共享模块还用于:设定数据包的引用计数,并在所述mbuf中存储引用计数的值。
8.根据权利要求6所述的装置,其特征在于,所述无锁队列为ring队列,所述装置还包括:服务扩展模块,用于在存在多余的ring队列时,且有待扩展数据包处理服务,则从所述多余的ring队列中选取与所述待扩展数据包处理服务数量相同的ring队列作为目标ring队列,并将所述目标ring队列分别与一个所述待扩展数据包处理服务进行绑定。
9.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-5任一项所述的方法。
10.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1-5任一项所述的方法。
CN201910990606.7A 2019-10-17 2019-10-17 一种基于dpdk的数据包处理方法及装置 Pending CN110719234A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910990606.7A CN110719234A (zh) 2019-10-17 2019-10-17 一种基于dpdk的数据包处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910990606.7A CN110719234A (zh) 2019-10-17 2019-10-17 一种基于dpdk的数据包处理方法及装置

Publications (1)

Publication Number Publication Date
CN110719234A true CN110719234A (zh) 2020-01-21

Family

ID=69212784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910990606.7A Pending CN110719234A (zh) 2019-10-17 2019-10-17 一种基于dpdk的数据包处理方法及装置

Country Status (1)

Country Link
CN (1) CN110719234A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111813547A (zh) * 2020-06-30 2020-10-23 武汉虹旭信息技术有限责任公司 基于dpdk的数据包处理方法及装置
CN112286679A (zh) * 2020-10-20 2021-01-29 烽火通信科技股份有限公司 一种基于DPDK的多核间buffer动态迁移方法与装置
CN112905303A (zh) * 2021-03-05 2021-06-04 深圳市网心科技有限公司 一种基于有线网卡的无感知网络桥接方法及其装置
CN113434287A (zh) * 2021-06-03 2021-09-24 中国联合网络通信集团有限公司 任务数据传输方法、系统、电子设备及存储介质
CN113518270A (zh) * 2021-05-24 2021-10-19 北京邮电大学 面向移动网络的异构数据采集装置和方法
CN113595959A (zh) * 2020-04-30 2021-11-02 海信集团有限公司 网络流量数据的处理方法及服务器
CN114095572A (zh) * 2020-07-30 2022-02-25 大唐移动通信设备有限公司 数据搬运方法及装置
CN114124503A (zh) * 2021-11-15 2022-03-01 北京邮电大学 一种逐级并发缓存优化效能的智能网络感知方法
CN114205150A (zh) * 2021-12-07 2022-03-18 北京天融信网络安全技术有限公司 容器环境的入侵防御方法及装置、电子设备、存储介质
CN114363276A (zh) * 2021-12-17 2022-04-15 北京六方云信息技术有限公司 流量分发方法、装置、终端设备及介质
CN115102875A (zh) * 2022-07-15 2022-09-23 深信服科技股份有限公司 一种数据包处理方法、装置、设备及介质
CN115150464A (zh) * 2022-06-22 2022-10-04 北京天融信网络安全技术有限公司 应用代理方法、装置、设备及介质
CN115412502A (zh) * 2022-11-02 2022-11-29 之江实验室 一种网络端口扩展和报文快速均衡处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105357151A (zh) * 2015-11-19 2016-02-24 成都科来软件有限公司 一种基于dpdk的抓包及镜像流量转发方法
CN108632166A (zh) * 2018-04-25 2018-10-09 湖北锐世数字医学影像科技有限公司 一种基于dpdk的收包二级缓存方法及系统
CN108900327A (zh) * 2018-06-20 2018-11-27 昆明理工大学 一种基于dpdk的天文数据采集和实时处理方法
CN109617832A (zh) * 2019-01-31 2019-04-12 新华三技术有限公司合肥分公司 报文缓存方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105357151A (zh) * 2015-11-19 2016-02-24 成都科来软件有限公司 一种基于dpdk的抓包及镜像流量转发方法
CN108632166A (zh) * 2018-04-25 2018-10-09 湖北锐世数字医学影像科技有限公司 一种基于dpdk的收包二级缓存方法及系统
CN108900327A (zh) * 2018-06-20 2018-11-27 昆明理工大学 一种基于dpdk的天文数据采集和实时处理方法
CN109617832A (zh) * 2019-01-31 2019-04-12 新华三技术有限公司合肥分公司 报文缓存方法及装置

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113595959A (zh) * 2020-04-30 2021-11-02 海信集团有限公司 网络流量数据的处理方法及服务器
CN111813547B (zh) * 2020-06-30 2023-10-31 武汉虹旭信息技术有限责任公司 基于dpdk的数据包处理方法及装置
CN111813547A (zh) * 2020-06-30 2020-10-23 武汉虹旭信息技术有限责任公司 基于dpdk的数据包处理方法及装置
CN114095572B (zh) * 2020-07-30 2023-04-07 大唐移动通信设备有限公司 数据搬运方法及装置
CN114095572A (zh) * 2020-07-30 2022-02-25 大唐移动通信设备有限公司 数据搬运方法及装置
CN112286679A (zh) * 2020-10-20 2021-01-29 烽火通信科技股份有限公司 一种基于DPDK的多核间buffer动态迁移方法与装置
CN112905303A (zh) * 2021-03-05 2021-06-04 深圳市网心科技有限公司 一种基于有线网卡的无感知网络桥接方法及其装置
CN112905303B (zh) * 2021-03-05 2024-04-09 深圳市网心科技有限公司 一种基于有线网卡的无感知网络桥接方法及其装置
CN113518270A (zh) * 2021-05-24 2021-10-19 北京邮电大学 面向移动网络的异构数据采集装置和方法
CN113434287A (zh) * 2021-06-03 2021-09-24 中国联合网络通信集团有限公司 任务数据传输方法、系统、电子设备及存储介质
CN114124503A (zh) * 2021-11-15 2022-03-01 北京邮电大学 一种逐级并发缓存优化效能的智能网络感知方法
CN114124503B (zh) * 2021-11-15 2022-09-27 北京邮电大学 一种逐级并发缓存优化效能的智能网络感知方法
CN114205150A (zh) * 2021-12-07 2022-03-18 北京天融信网络安全技术有限公司 容器环境的入侵防御方法及装置、电子设备、存储介质
CN114205150B (zh) * 2021-12-07 2024-01-23 北京天融信网络安全技术有限公司 容器环境的入侵防御方法及装置、电子设备、存储介质
CN114363276A (zh) * 2021-12-17 2022-04-15 北京六方云信息技术有限公司 流量分发方法、装置、终端设备及介质
CN115150464A (zh) * 2022-06-22 2022-10-04 北京天融信网络安全技术有限公司 应用代理方法、装置、设备及介质
CN115150464B (zh) * 2022-06-22 2024-03-15 北京天融信网络安全技术有限公司 应用代理方法、装置、设备及介质
CN115102875A (zh) * 2022-07-15 2022-09-23 深信服科技股份有限公司 一种数据包处理方法、装置、设备及介质
CN115102875B (zh) * 2022-07-15 2024-04-09 深信服科技股份有限公司 一种数据包处理方法、装置、设备及介质
CN115412502A (zh) * 2022-11-02 2022-11-29 之江实验室 一种网络端口扩展和报文快速均衡处理方法
CN115412502B (zh) * 2022-11-02 2023-03-24 之江实验室 一种网络端口扩展和报文快速均衡处理方法

Similar Documents

Publication Publication Date Title
CN110719234A (zh) 一种基于dpdk的数据包处理方法及装置
CN108984264B (zh) 虚拟gpu的实现方法、装置及系统
CN107690622B (zh) 实现硬件加速处理的方法、设备和系统
EP3073374B1 (en) Thread creation method, service request processing method and related device
EP1722301B1 (en) Partition bus
US7900031B2 (en) Multiple, cooperating operating systems (OS) platform system and method
US9858241B2 (en) System and method for supporting optimized buffer utilization for packet processing in a networking device
US8918568B2 (en) PCI express SR-IOV/MR-IOV virtual function clusters
CN114138422B (zh) 可扩展性的NVMe存储虚拟化方法和系统
EP3350700B1 (en) Multi root i/o virtualization system
CN109960569B (zh) 一种虚拟化处理方法及装置
US20230289156A1 (en) Dynamic partition customization method and apparatus, and device
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
CN115167996A (zh) 调度方法及装置、芯片、电子设备及存储介质
CN111158868A (zh) 计算系统及用于操作计算系统的方法
CN111813547A (zh) 基于dpdk的数据包处理方法及装置
CN111176829A (zh) 虚拟化处理系统中的物理功能和虚拟功能的灵活资源分配
CN113467964A (zh) 接入用户态协议栈的实现方法、系统、装置及存储介质
US11283723B2 (en) Technologies for managing single-producer and single consumer rings
US11042394B2 (en) Method for processing input and output on multi kernel system and apparatus for the same
JP2003271448A (ja) スタック管理方法及び情報処理装置
CN111158911A (zh) 一种处理器配置方法、装置、处理器及网络设备
KR102063281B1 (ko) 파일에 접근하기 위한 방법과 장치, 및 저장 시스템
CN109617832B (zh) 报文缓存方法及装置
KR20090053487A (ko) 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200121