CN114070900A - 一种基于dpdk的抓包处理方法和装置 - Google Patents
一种基于dpdk的抓包处理方法和装置 Download PDFInfo
- Publication number
- CN114070900A CN114070900A CN202010732522.6A CN202010732522A CN114070900A CN 114070900 A CN114070900 A CN 114070900A CN 202010732522 A CN202010732522 A CN 202010732522A CN 114070900 A CN114070900 A CN 114070900A
- Authority
- CN
- China
- Prior art keywords
- packet
- tcpdump
- resource
- dpdk
- capturing
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种基于DPDK的抓包处理方法和装置,应用于运行数据面开发套件DPDK和网络数据采集分析工具Tcpdump的网络设备,所述Tcpdump以所述DPDK的从进程模式运行,其中的方法包括:通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中;通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包。本发明实施例可以通过DPDK抓取数据包,并由Tcpdump对所述数据包进行采集和后续分析,能够基于DPDK抓包稳定的基础上,提升数据的抓取效率和分析处理效率,以及提高网络设备***的稳定性。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种基于DPDK的抓包处理方法和装置。
背景技术
在移动通信网络中,对网络设备进行数据采集和分析是尤为重要的环节,可以及时反映网络设备端口的网络状态。
目前,通常采用Tcpdump工具对网络设备进行数据的截获、采集和分析。Tcpdump工具能够灵活的对采集到的数据进行过滤、解码和分析等操作,但是Tcpdump工具只能应用于运行在内核态的普通网卡,并且需要在内核态进行抓取数据包的操作,再将抓取的数据包传输到用户态进行后续缓存和处理等操作。
因此,使用Tcpdump工具抓取网络设备的数据包,需要在网络设备的内核态与用户态之间进行多次切换,不仅影响数据抓取的效率,而且会影响网络设备***的稳定性。
发明内容
本发明实施例提供一种基于DPDK的抓包处理方法和装置,可以提升数据的抓取效率和分析处理效率,以及提高网络设备***的稳定性。
本发明实施例提供了一种基于DPDK的抓包处理方法,应用于运行数据面开发套件DPDK和网络数据采集分析工具Tcpdump的网络设备,所述Tcpdump以所述DPDK的从进程模式运行,所述方法包括:
通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中;
通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包。
本发明实施例提供了一种基于DPDK的抓包处理装置,其特征在于,应用于运行数据面开发套件DPDK和网络数据采集分析工具Tcpdump的网络设备,所述Tcpdump以所述DPDK的从进程模式运行,所述装置包括:
抓取模块,用于通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中;
获取模块,用于通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包。
本发明实施例包括以下优点:
本发明实施例通过Tcpdump获取DPDK的主进程在用户态抓取到的数据包,并在用户态对抓取的所述数据进行采集和后续分析,构建一个完全用户态的程序工作流程,能够提升数据的抓取效率和分析处理效率,以及提高网络设备***的稳定性。此外,通过本发明实施例使得Tcpdump可以动态抓取正在运行的DPDK接管的网口数据,可以扩展Tcpdump的应用范围。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明的一种基于DPDK的抓包处理方法实施例一的流程图;
图2示出了本发明的一种Tcpdump调用LibPcap示意图;
图3示出了本发明的一种基于DPDK的抓包处理方法的整体流程关系示意图;
图4示出了本发明的一种基于DPDK的抓包处理装置实施例的结构框图;
图5示出了本发明的另一种基于DPDK的抓包处理装置实施例的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
方法实施例一
参照图1,示出了本发明的一种基于DPDK的抓包处理方法实施例一的流程图,应用于运行数据面开发套件DPDK和网络数据采集分析工具Tcpdump的网络设备,所述Tcpdump以所述DPDK的从进程模式运行,具体可以包括:
步骤101,通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中;
步骤102,通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包。
本发明实施例提出了一种基于DPDK(Data Plane Development Kit,数据面开发套件)框架下的抓包处理方法,可以动态的截获、采集DPDK接管的网口数据,并且可以合理的继承网络数据采集分析工具Tcpdump的工作分析功能,来提升数据的抓取效率和分析处理效率,以及扩展Tcpdump的使用范围。
本发明实施例的抓包处理方法可应用于运行DPDK和Tcpdump的网络设备,所述网络设备可以为网络中的网元设备。本发明实施例对于网络设备的具体形式不加以限制。例如,所述网络设备可以包括基站、MME(Mobility Management Entity,移动管理实体)、网关、路由器等。为便于描述,本发明实施例均以基站为例进行说明,其它应用场景相互参照即可。
DPDK采用大页内存、控制层和数据层分离、多核编程技术代替多线程技术、无锁缓存队列、UIO(Userspace I/O,用户空间的I/O)等技术,基于DPDK,能够在用户态快速且稳定的从所述DPDK的抓包端口中抓取NIC(Network Interface Card,网卡)中的网络数据包。
DPDK可以支持多进程,在启动所述网络设备中的DPDK时,可以通过启动参数“--proc-type:”指定一个进程实例为primary主进程,指定另一个进程实例为secondary从进程,所述主进程用于抓取到达目标端口的数据包,并将所述数据包放入抓包资源中,所述从进程用于从所述抓包资源中获取数据包,以供后续对数据包的分析处理等操作。
Tcpdump是一个网络数据采集分析工具,所述Tcpdump由两个组件组成,一个是内核组件,运行在内核态,负责从网络上抓取数据以及过滤数据;另一个是用户组件,运行在用户态,负责处理用户界面、格式化显示以及完成其他过滤数据的操作,所述用户组件使用LibPcap数据包捕获函数库组件与内核组件进行通讯。通常所述Tcpdump的抓包过程是通过所述内核组件将抓取的数据包保存至所述Tcpdump的缓存区中,通过所述LibPcap组件能够将所述缓存区中的数据包取出,并将所述数据包提交各应用程序,所述Tcpdump的抓包过程不可避免的进行用户态与内核态之间的切换,影响抓包的稳定性和效率。
需要说明的是,所述LibPcap组件中构建有基于DPDK的封装接口,所述LibPcap组件中包含PCAP_SUPPORT_DPDK宏开关,本发明通过所述PCAP_SUPPORT_DPDK宏开关能够控制DPDK的主进程对DPDK的端口进行扫描,从而DPDK主进程能够根据Tcpdump中设置的目标端口参数,抓取到达所述目标端口的数据包。因此,本发明实施例能够通过DPDK在用户态抓取数据包,并由Tcpdump在用户态对抓取的所述数据进行采集和后续分析,能够提升数据的抓取效率和分析处理效率,提高网络设备***的稳定性,以及扩展Tcpdump的应用范围。
本发明实施例结合DPDK和Tcpdump的上述特点,在所述网络设备中将Tcpdump以DPDK的从进程模式运行。从进程的Tcpdump可以通过调用LibPcap的接口,控制DPDK的主进程启动抓包操作,抓取到达目标端口的数据包,并将抓取到的数据包放入(enqueue)抓包资源中,Tcpdump再从所述抓包资源中获取(dequeue)数据包,以供Tcpdump后续对抓取的数据包进行分析处理等操作,能够继承Tcpdump的数据分析优势,所述数据分析优势包括灵活过滤、解码、分析数据等。
由此,本发明实施例通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中,能够通过DPDK在用户态抓取数据包。
传统的抓取数据包的过程包括:在内核态抓取数据包,再将所述数据包传输到用户态,以进行后续缓存和处理等操作。传统的抓取数据包的过程不可避免的要经历内核态与用户态的切换过程,该切换过程会影响数据包抓取的效率和稳定性。而DPDK是一个用户态下的程序操作,数据的收发是不经过操作***的内核,在用户态程序抓取数据包,并在用户态对数据进行后续缓存和处理操作,可以提高抓包效率。
参照图2,示出了本发明实施例的一种Tcpdump调用LibPcap示意图。如图2所示,Tcpdump可以通过调用LibPcap,以实现数据包的抓取。所述LibPcap中对应有DPDK的封装接口,因此,通过修改LibPcap的DPDK插件函数,即可在保证Tcpdump的实现,并能够在不修改DPDK的主进程的情况下,将LibPcap和DPDK关联起来。本发明的设计流程可以实现动态的截获、采集到DPDK接管的端口,使得Tcpdump可以获取所述DPDK的主进程在用户态抓取到的数据包,并在用户态对抓取的所述数据进行采集和后续分析,构建一个完全用户态的程序工作流程,能够提升数据的抓取效率和分析处理效率,并且使得Tcpdump可以动态抓取正在运行的DPDK接管的网口数据,可以扩展Tcpdump的应用范围。
在本发明的一种可选实施例中,在运行所述Tcpdump之前,所述方法还可以包括:
在所述Tcpdump的用户态组件LibPcap中将所述Tcpdump的启动模式设置为所述DPDK的从进程模式。
LibPcap为Tcpdump用户态组件,并且已经构建基于DPDK的基本pcap封装接口,本发明实施例通过将Tcpdump的启动模式修改为所述DPDK的从进程模式,使得Tcpdump可以无缝实现对正在运行的DPDK程序的网络数据的抓取、分析功能。
可选地,为了消除使用软件程序过程中对***预安装软件的依赖限制,本发明实施例将实现代码按照静态库编译实现。具体地,修改DPDK初始化设计,设置Tcpdump按照Secondary(从进程)方式进行初始化。
示例如,在所述Tcpdump的用户态组件LibPcap中,修改“ptr_dpdk_cfg”参数,将所述“ptr_dpdk_cfg”参数按照“-c 1-n4--proc-type=secondary”模式配置,以将所述Tcpdump的启动模式设置为所述DPDK的从进程模式。
在本发明的一种可选实施例中,步骤101所述通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中之前,所述方法还包括:
步骤S11,通过所述Tcpdump配置待采集数据包的目标端口的参数信息;
步骤S12,在所述网络设备中运行所述Tcpdump,在所述Tcpdump解析到所述参数信息时,按照从进程模式进行初始化;
步骤S13,通过从进程模式运行的Tcpdump调用所述LibPcap中的第一函数,以创建抓包资源;
步骤S14,通过所述Tcpdump向所述主进程发送抓包开启消息,所述抓包开启消息用于通知所述主进程启动抓包操作,所述抓包开启消息中携带有所述抓包资源和所述目标端口的参数信息。
所述LibPcap中的PCAP_SUPPORT_DPDK宏开关能够控制DPDK主进程对DPDK的端口进行扫描,并根据Tcpdump中设置的目标端口的参数信息,抓取到达所述目标端口的数据包。因此,可以先通过所述Tcpdump配置待采集数据包的目标端口的参数信息dpdk:{portid},示例如,通过所述Tcpdump的-i参数配置参数信息为dpdk:{1},则可以控制主进程抓取到达1号端口的数据包。
在所述网络设备中运行所述Tcpdump,当所述Tcpdump解析到所述参数信息时,按照从进程模式进行初始化,并在以从进程模式运行的过程中,调用所述LibPcap中的第一函数,示例如,pcap_dpdk_activate,以创建抓包资源,所述抓包资源用于缓存所述主进程在目标端口抓取到的数据包。
从进程的Tcpdump创建抓包资源之后,通过所述Tcpdump向所述主进程发送抓包开启消息,所述抓包开启消息用于通知所述主进程启动抓包操作,所述抓包开启消息中携带有所述抓包资源和所述目标端口的参数信息,所述主进程根据所述抓包资源和所述目标端口的参数信息进行抓包操作。具体的,调用DPDK中的API(Application ProgrammingInterface,应用程序接口)函数抓取到达所述目标端口的接收方向(RX)和发送方向(TX)的数据包,并将所述数据包缓存入所述抓包资源中。所述API函数如:接收方向rte_eth_rx_burst和发送方向rte_eth_tx_burst。
可选的,通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包之后,所述方法还包括:
通过所述Tcpdump查询获取的所述数据包对应的目标端口的参数信息和所述网络设备的信息。
示例如:通过所述Tcpdump的-D参数,查询获取的所述数据包对应的目标端口的参数信息和所述网络设备的信息。
可选的,步骤S14所述第一函数用于通知所述主进程在所述目标端口注册回调函数,所述回调函数用于将到达所述目标端口的数据包拷贝至所述抓包资源中。
所述第一函数用于调用DPDK中的rte_pdump_enable函数,以通知所述主进程在所述目标端口注册回调函数,所述回调函数用于将到达所述目标端口的数据包拷贝至所述抓包资源中。
可选的,步骤101所述通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中,包括:
通过所述主进程调用所述回调函数,在所述目标端口的接收方向和发送方向执行抓包操作,并将抓取到的数据包拷贝至所述抓包资源中。
可选的,步骤102所述通过所述Tcpdump从所述主进程中获取所述主进程抓取到的数据包,包括:
通过所述Tcpdump调用所述LibPcap中的第二函数,以从所述抓包资源中获取所述主进程抓取到的数据包。
所述第二函数,示例如pcap_dpdk_dispatch,通过所述第二函数,所述从进程能够从所述抓包资源中获取所述主进程抓取到的数据包。
在本发明的一种可选实施例中,步骤S13所述通过从进程模式运行的Tcpdump调用所述LibPcap中的第一函数,以创建抓包资源,包括:
步骤S21,判断所述待采集数据包的目标端口的参数信息是否有效;
步骤S22,当判定所述目标端口的参数信息有效时,根据所述目标端口的参数信息创建内存池资源名称和无锁缓存队列资源名称;
步骤S23,检测所述内存池资源名称和无锁缓存队列资源名称是否已存在;
步骤S24,当检测到所述内存池资源名称和无锁缓存队列资源名称未存在时,创建所述内存池资源名称对应的内存池资源和所述无锁缓存队列资源名称对应的无锁缓存队列资源。
示例如,所述DPDK抓包端口包括1号端口、2号端口、3号端口和4号端口,若在所述Tcpdump配置待采集数据包的目标端口的参数信息为dpdk:{5},表示目标端口为5号端口,则判定目标端口的参数信息无效,若在所述Tcpdump配置待采集数据包的目标端口的参数信息为dpdk:{3},表示目标端口为3号端口,判定目标端口的参数信息有效。当判定所述目标端口的参数信息有效之后,根据有效的所述目标端口的参数信息,创建内存池资源mempool名称和无锁缓存队列ring资源名称,检测所述内存池资源名称和无锁缓存队列资源名称在Tcpdump中是否已存在,当所述内存池资源名称和无锁缓存队列资源名称未存在时,创建所述内存池资源名称对应的内存池资源(PdumpPool)和所述无锁缓存队列资源名称对应的无锁缓存队列资源(PdumpRing)。所述内存池资源和所述无锁缓存队列资源用于缓存所述主进程抓取的数据包。
在本发明的一种可选实施例中,步骤102所述通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包之后,所述方法还可以包括:
步骤S31,通过所述Tcpdump调用所述LibPcap中的第三函数,以通过所述第三函数判断从所述抓包资源中获取数据包的阻塞类型;
步骤S32,当所述第三函数判定所述阻塞类型为阻塞状态时,通过所述Tcpdump调用所述LibPcap中的第四函数,以向所述Tcpdump返回当前从所述抓包资源中获取的数据包的可用数目信息;
步骤S33,当所述第三函数判定所述阻塞类型为非阻塞状态,且判定从所述抓包资源中获取的数据包满足预设条件时,通过预设周期调用所述LibPcap中的第四函数,向所述Tcpdump返回当前从所述抓包资源中获取的数据包的可用数目信息。
可选的,所述预设条件包括如下任意一项:所述抓包资源中缓存的数据包非空、所述Tcpdump从所述抓包资源中获取数据包超时、所述Tcpdump调用所述第四函数的次数超过预设次数。
通过所述Tcpdump调用所述LibPcap中的第三函数,示例如:dpdk_read_with_timeout,以通过所述第三函数监控所述Tcpdump获取所述数据包的过程,并判断从所述抓包资源中获取数据包的阻塞类型。所述阻塞类型包括阻塞状态和非阻塞状态。所述第四函数示例如:rte_ring_dequeue_burst,通过所述第四函数能够向所述Tcpdump返回获取的数据包的可用数目信息。
所述DPDK主进程抓取到达所述目标端口的接收方向RX和发送方向TX的数据包,并将所述数据包缓存入所述抓包资源中。通过所述Tcpdump调用所述LibPcap中的第二函数,如pcap_dpdk_dispatch,以从所述抓包资源中获取所述主进程抓取到的数据包,再调用所述LibPcap中的第三函数,如:dpdk_read_with_timeout,监控所述Tcpdump从抓包资源中获取所述数据包的过程。所述Tcpdump从抓包资源中获取所述数据包之后,便可对所述数据包进行格式化显示,过滤等操作。
可选的,所述通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包之后,所述方法还包括:
通过所述Tcpdump调用所述LibPcap中的第五函数,所述第五函数用于退出所述主进程的抓包操作。
所述第五函数示例如:pcap_dpdk_close,所述第五函数在Tcpdump中断退出或抓取数据包结束时调用,通过所述第五函数能够控制所述主进程关闭抓包操作,并释放所述主进程占用的抓包资源。
参照图3,示出了本发明实施例的一种基于DPDK的抓包处理方法的整体流程关系示意图。如图3所示,本发明整体流程关系如下:首先在DPDK用户态的主进程中开启抓包功能,所述开启抓包功能的步骤包括调用所述DPDK的librte_pdump库中的rte_pdump_init,当所述抓包功能开启之后,所述主进程可以响应于从进程的请求,在DPDK的端口执行抓包操作;其次,在操作***的shell(命令解析器)上运行Tcpdump,并在Tcpdump中通过-i参数确定DPDK的目标端口的参数信息“dpdk:{portid}”,所述Tcpdump解析所述参数信息,并调用用户态组件LibPcap中的dpdk_pre_init函数将所述Tcpdump的启动模式设置为所述DPDK的从进程模式,调用pcap_dpdk_activate函数创建抓包资源,并将创建的所述抓包资源的信息通过所述DPDK的librte_pdump库中rte_pdump_enable函数,通知给DPDK主进程,进行的MP-Channel-Thread处理,以使得所述DPDK主进程在目标端口注册回调函数,当数据包经过所述目标端口时,所述DPDK主进程通过所述回调函数拷贝所述数据包,并将所述数据包缓存到所述抓包资源中,最后,所述Tcpdump调用pcap_dpdk_dispatch函数,将所述抓包资源中的数据发送给Tcpdump,所述Tcpdump调用dpdk_read_with_timeout函数,监控所述Tcpdump从抓包资源中获取所述数据包的过程,当所述Tcpdump中断退出或抓取数据包结束时调用pcap_dpdk_close函数,通过所述pcap_dpdk_close函数控制所述主进程关闭抓包操作,并释放所述主进程占用的抓包资源。所述Tcpdump退出后,会自动停止抓包功能。
所述DPDK对应有librte_pdump函数库,所述Tcpdump对应有LibPcap数据包捕获函数库,因此,本发明可以在不需要预安装其他函数库的情况下,直接运行。
综上,本发明实施例通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中,通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包,从而能够使得Tcpdump可以获取所述DPDK的主进程在用户态抓取到的数据包,并在用户态对抓取的所述数据进行采集和后续分析,构建一个完全用户态的程序工作流程,能够提升数据的抓取效率和分析处理效率,以及提高网络设备***的稳定性。此外,通过本发明实施例使得Tcpdump可以动态抓取正在运行的DPDK接管的网口数据,可以扩展Tcpdump的应用范围。
装置实施例
参照图4,示出了本发明的一种基于DPDK的抓包处理装置实施例的结构框图,应用于运行数据面开发套件DPDK和网络数据采集分析工具Tcpdump的网络设备,所述Tcpdump以所述DPDK的从进程模式运行,所述装置具体可以包括:
抓取模块401,用于通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中。
获取模块402,用于通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包。
可选的,所述装置还包括:
设置从进程模块,用于在所述Tcpdump的用户态组件LibPcap中将所述Tcpdump的启动模式设置为所述DPDK的从进程模式。
可选的,所述装置还包括:
配置模块,用于通过所述Tcpdump配置待采集数据包的目标端口的参数信息。
初始化模块,用于在所述网络设备中运行所述Tcpdump,在所述Tcpdump解析到所述参数信息时,按照从进程模式进行初始化。
第一调用模块,用于通过从进程模式运行的Tcpdump调用所述LibPcap中的第一函数,以创建抓包资源。
发送模块,用于通过所述Tcpdump向所述主进程发送抓包开启消息,所述抓包开启消息用于通知所述主进程启动抓包操作,所述抓包开启消息中携带有所述抓包资源和所述目标端口的参数信息。
可选的,所述第一函数用于通知所述主进程在所述目标端口注册回调函数,所述回调函数用于将到达所述目标端口的数据包拷贝至所述抓包资源中。
可选的,所述抓取模块401,包括:
拷贝子模块,用于通过所述主进程调用所述回调函数,将到达所述目标端口的数据包拷贝至所述抓包资源中。
可选的,所述获取模块402,包括:
调用子模块,用于通过所述Tcpdump调用所述LibPcap中的第二函数,以从所述抓包资源中获取所述主进程抓取到的数据包。
可选的,所述第一调用模块,包括:
判断子模块,用于判断所述待采集数据包的目标端口的参数信息是否有效。
创建名称子模块,用于当判定所述目标端口的参数信息有效时,根据所述目标端口的参数信息创建内存池资源名称和无锁缓存队列资源名称。
检测子模块,用于检测所述内存池资源名称和无锁缓存队列资源名称是否已存在。
创建资源子模块,用于当检测到所述内存池资源名称和无锁缓存队列资源名称未存在时,创建所述内存池资源名称对应的内存池资源和所述无锁缓存队列资源名称对应的无锁缓存队列资源。
可选的,所述装置还包括:
第二调用模块,用于通过所述Tcpdump调用所述LibPcap中的第三函数,以通过所述第三函数判断从所述抓包资源中获取数据包的阻塞类型。
第一返回可用数目信息模块,用于当所述第三函数判定所述阻塞类型为阻塞状态时,通过所述Tcpdump调用所述LibPcap中的第四函数,以向所述Tcpdump返回当前从所述抓包资源中获取的数据包的可用数目信息。
第二返回可用数目信息模块,用于当所述第三函数判定所述阻塞类型为非阻塞状态,且判定从所述抓包资源中获取的数据包满足预设条件时,通过预设周期调用所述LibPcap中的第四函数,向所述Tcpdump返回当前从所述抓包资源中获取的数据包的可用数目信息。
可选的,所述预设条件包括如下任意一项:所述抓包资源中缓存的数据包非空、所述Tcpdump从所述抓包资源中获取数据包超时、所述Tcpdump调用所述第四函数的次数超过预设次数。
综上,本发明实施例通过DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中,通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包,从而能够使得Tcpdump可以获取所述DPDK的主进程在用户态抓取到的数据包,并在用户态对抓取的所述数据进行采集和后续分析,构建一个完全用户态的程序工作流程,能够提升数据的抓取效率和分析处理效率,以及提高网络设备***的稳定性。此外,通过本发明实施例使得Tcpdump可以动态抓取正在运行的DPDK接管的网口数据,可以扩展Tcpdump的应用范围。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本发明实施例还提供了一种基于DPDK的抓包处理装置,参见图5,包括:一个或多个处理器501、一个或多个可读存储介质502以及存储在所述存储介质上并可在所述处理器上运行的计算机程序5021,所述处理器执行所述计算机程序时实现前述实施例的基于DPDK的抓包处理方法。
本发明实施例还提供了一种可读存储介质,当所述存储介质中的计算机程序由基于DPDK的抓包处理装置的处理器执行时,使得基于DPDK的抓包处理装置能够执行前述实施例的基于DPDK的抓包处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(RandomAccess Memory,简称RAM)、磁碟或者光盘等。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种基于DPDK的抓包处理方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (16)
1.一种基于DPDK的抓包处理方法,其特征在于,应用于运行数据面开发套件DPDK和网络数据采集分析工具Tcpdump的网络设备,所述Tcpdump以所述DPDK的从进程模式运行,所述方法包括:
通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中;
通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包。
2.根据权利要求1所述的方法,其特征在于,在运行所述Tcpdump之前,所述方法还包括:
在所述Tcpdump的用户态组件LibPcap中将所述Tcpdump的启动模式设置为所述DPDK的从进程模式。
3.根据权利要求2所述的方法,其特征在于,所述通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中之前,所述方法还包括:
通过所述Tcpdump配置待采集数据包的目标端口的参数信息;
在所述网络设备中运行所述Tcpdump,在所述Tcpdump解析到所述参数信息时,按照从进程模式进行初始化;
通过从进程模式运行的Tcpdump调用所述LibPcap中的第一函数,以创建抓包资源;
通过所述Tcpdump向所述主进程发送抓包开启消息,所述抓包开启消息用于通知所述主进程启动抓包操作,所述抓包开启消息中携带有所述抓包资源和所述目标端口的参数信息。
4.根据权利要求3所述的方法,其特征在于,所述第一函数用于通知所述主进程在所述目标端口注册回调函数,所述回调函数用于将到达所述目标端口的数据包拷贝至所述抓包资源中;
所述通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中,包括:
通过所述主进程调用所述回调函数,将到达所述目标端口的数据包拷贝至所述抓包资源中;
所述通过所述Tcpdump从所述主进程中获取所述主进程抓取到的数据包,包括:
通过所述Tcpdump调用所述LibPcap中的第二函数,以从所述抓包资源中获取所述主进程抓取到的数据包。
5.根据权利要求3所述的方法,其特征在于,所述通过从进程模式运行的Tcpdump调用所述LibPcap中的第一函数,以创建抓包资源,包括:
判断所述待采集数据包的目标端口的参数信息是否有效;
当判定所述目标端口的参数信息有效时,根据所述目标端口的参数信息创建内存池资源名称和无锁缓存队列资源名称;
检测所述内存池资源名称和无锁缓存队列资源名称是否已存在;
当检测到所述内存池资源名称和无锁缓存队列资源名称未存在时,创建所述内存池资源名称对应的内存池资源和所述无锁缓存队列资源名称对应的无锁缓存队列资源。
6.根据权利要求1所述的方法,其特征在于,所述通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包之后,所述方法还包括:
通过所述Tcpdump调用所述LibPcap中的第三函数,以通过所述第三函数判断从所述抓包资源中获取数据包的阻塞类型;
当所述第三函数判定所述阻塞类型为阻塞状态时,通过调用所述LibPcap中的第四函数,向所述Tcpdump返回当前从所述抓包资源中获取的数据包的可用数目信息;
当所述第三函数判定所述阻塞类型为非阻塞状态,且判定从所述抓包资源中获取的数据包满足预设条件时,通过预设周期调用所述LibPcap中的第四函数,向所述Tcpdump返回当前从所述抓包资源中获取的数据包的可用数目信息。
7.根据权利要求6所述的方法,其特征在于,所述预设条件包括如下任意一项:所述抓包资源中缓存的数据包非空、所述Tcpdump从所述抓包资源中获取数据包超时、所述Tcpdump调用所述第四函数的次数超过预设次数。
8.一种基于DPDK的抓包处理装置,其特征在于,应用于运行数据面开发套件DPDK和网络数据采集分析工具Tcpdump的网络设备,所述Tcpdump以所述DPDK的从进程模式运行,所述装置包括:
抓取模块,用于通过所述DPDK的主进程将到达所述DPDK的目标端口的数据包抓取到抓包资源中;
获取模块,用于通过所述Tcpdump从所述抓包资源中获取所述主进程抓取到的数据包。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
设置从进程模块,用于在所述Tcpdump的用户态组件LibPcap中将所述Tcpdump的启动模式设置为所述DPDK的从进程模式。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
配置模块,用于通过所述Tcpdump配置待采集数据包的目标端口的参数信息;
初始化模块,用于在所述网络设备中运行所述Tcpdump,在所述Tcpdump解析到所述参数信息时,按照从进程模式进行初始化;
第一调用模块,用于通过从进程模式运行的Tcpdump调用所述LibPcap中的第一函数,以创建抓包资源;
发送模块,用于通过所述Tcpdump向所述主进程发送抓包开启消息,所述抓包开启消息用于通知所述主进程启动抓包操作,所述抓包开启消息中携带有所述抓包资源和所述目标端口的参数信息。
11.根据权利要求10所述的装置,其特征在于,所述第一函数用于通知所述主进程在所述目标端口注册回调函数,所述回调函数用于将到达所述目标端口的数据包拷贝至所述抓包资源中;
所述抓取模块,包括:
拷贝子模块,用于通过所述主进程调用所述回调函数,将到达所述目标端口的数据包拷贝至所述抓包资源中;
所述获取模块,包括:
调用子模块,用于通过所述Tcpdump调用所述LibPcap中的第二函数,以从所述抓包资源中获取所述主进程抓取到的数据包。
12.根据权利要求10所述的装置,其特征在于,所述第一调用模块,包括:
判断子模块,用于判断所述待采集数据包的目标端口的参数信息是否有效;
创建名称子模块,用于当判定所述目标端口的参数信息有效时,根据所述目标端口的参数信息创建内存池资源名称和无锁缓存队列资源名称;
检测子模块,用于检测所述内存池资源名称和无锁缓存队列资源名称是否已存在;
创建资源子模块,用于当检测到所述内存池资源名称和无锁缓存队列资源名称未存在时,创建所述内存池资源名称对应的内存池资源和所述无锁缓存队列资源名称对应的无锁缓存队列资源。
13.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二调用模块,用于通过所述Tcpdump调用所述LibPcap中的第三函数,以通过所述第三函数判断从所述抓包资源中获取数据包的阻塞类型;
第一返回可用数目信息模块,用于当所述第三函数判定所述阻塞类型为阻塞状态时,通过所述Tcpdump调用所述LibPcap中的第四函数,以向所述Tcpdump返回当前从所述抓包资源中获取的数据包的可用数目信息;
第二返回可用数目信息模块,用于当所述第三函数判定所述阻塞类型为非阻塞状态,且判定从所述抓包资源中获取的数据包满足预设条件时,通过预设周期调用所述LibPcap中的第四函数,向所述Tcpdump返回当前从所述抓包资源中获取的数据包的可用数目信息。
14.根据权利要求13所述的装置,其特征在于,所述预设条件包括如下任意一项:所述抓包资源中缓存的数据包非空、所述Tcpdump从所述抓包资源中获取数据包超时、所述Tcpdump调用所述第四函数的次数超过预设次数。
15.一种基于DPDK的抓包处理装置,其特征在于,包括:
一个或多个处理器;和
其上存储有计算机程序的一个或多个可读存储介质,当所述计算机程序由所述一个或多个处理器执行时,使得所述装置执行如权利要求1至7任一项所述的基于DPDK的抓包处理方法。
16.一种计算机可读存储介质,其特征在于,其存储的计算机程序使得处理器执行如权利要求1至7任一项所述的基于DPDK的抓包处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010732522.6A CN114070900B (zh) | 2020-07-27 | 2020-07-27 | 一种基于dpdk的抓包处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010732522.6A CN114070900B (zh) | 2020-07-27 | 2020-07-27 | 一种基于dpdk的抓包处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114070900A true CN114070900A (zh) | 2022-02-18 |
CN114070900B CN114070900B (zh) | 2023-04-07 |
Family
ID=80226578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010732522.6A Active CN114070900B (zh) | 2020-07-27 | 2020-07-27 | 一种基于dpdk的抓包处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114070900B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070248029A1 (en) * | 2004-12-23 | 2007-10-25 | Merkey Jeffrey V | Method and Apparatus for Network Packet Capture Distributed Storage System |
CN101488944A (zh) * | 2008-01-16 | 2009-07-22 | 上海宝信软件股份有限公司 | Ethernet设备与BSC串口设备通信的***及方法 |
US20150244804A1 (en) * | 2014-02-21 | 2015-08-27 | Coho Data, Inc. | Methods, systems and devices for parallel network interface data structures with differential data storage service capabilities |
US20160094668A1 (en) * | 2014-09-29 | 2016-03-31 | Alcatel-Lucent Usa Inc. | Method and apparatus for distributed customized data plane processing in a data center |
CN105635045A (zh) * | 2014-10-28 | 2016-06-01 | 北京启明星辰信息安全技术有限公司 | 一种基于驱动零拷贝模式***下的tcpdump抓包实现方法和装置 |
CN106161398A (zh) * | 2015-04-21 | 2016-11-23 | 北京信威通信技术股份有限公司 | 抓包方法及装置 |
CN106789242A (zh) * | 2016-12-22 | 2017-05-31 | 广东华仝九方科技有限公司 | 一种基于手机客户端软件动态特征库的识别应用智能分析引擎 |
CN107196870A (zh) * | 2017-07-20 | 2017-09-22 | 哈尔滨工业大学 | 一种基于dpdk的流量动态负载均衡方法 |
CN109309626A (zh) * | 2018-09-10 | 2019-02-05 | 南京知常容信息技术有限公司 | 一种基于dpdk的高速网络数据包捕获分流及缓存方法 |
CN109445944A (zh) * | 2018-10-25 | 2019-03-08 | 武汉虹旭信息技术有限责任公司 | 一种基于dpdk的网络数据采集处理***及其方法 |
CN109669792A (zh) * | 2018-12-24 | 2019-04-23 | 网宿科技股份有限公司 | 分析数据报文的方法及业务服务器 |
US20190334880A1 (en) * | 2018-04-26 | 2019-10-31 | Vmware, Inc. | Packet capture in software-defined networking (sdn) environments |
CN110650100A (zh) * | 2019-10-16 | 2020-01-03 | 南京中孚信息技术有限公司 | 抓取网卡数据包的方法、装置及电子设备 |
CN111147391A (zh) * | 2019-12-05 | 2020-05-12 | 深圳市任子行科技开发有限公司 | DPDK用户态与linux内核网络协议栈之间的数据传输方法及*** |
-
2020
- 2020-07-27 CN CN202010732522.6A patent/CN114070900B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070248029A1 (en) * | 2004-12-23 | 2007-10-25 | Merkey Jeffrey V | Method and Apparatus for Network Packet Capture Distributed Storage System |
CN101488944A (zh) * | 2008-01-16 | 2009-07-22 | 上海宝信软件股份有限公司 | Ethernet设备与BSC串口设备通信的***及方法 |
US20150244804A1 (en) * | 2014-02-21 | 2015-08-27 | Coho Data, Inc. | Methods, systems and devices for parallel network interface data structures with differential data storage service capabilities |
US20160094668A1 (en) * | 2014-09-29 | 2016-03-31 | Alcatel-Lucent Usa Inc. | Method and apparatus for distributed customized data plane processing in a data center |
CN105635045A (zh) * | 2014-10-28 | 2016-06-01 | 北京启明星辰信息安全技术有限公司 | 一种基于驱动零拷贝模式***下的tcpdump抓包实现方法和装置 |
CN106161398A (zh) * | 2015-04-21 | 2016-11-23 | 北京信威通信技术股份有限公司 | 抓包方法及装置 |
CN106789242A (zh) * | 2016-12-22 | 2017-05-31 | 广东华仝九方科技有限公司 | 一种基于手机客户端软件动态特征库的识别应用智能分析引擎 |
CN107196870A (zh) * | 2017-07-20 | 2017-09-22 | 哈尔滨工业大学 | 一种基于dpdk的流量动态负载均衡方法 |
US20190334880A1 (en) * | 2018-04-26 | 2019-10-31 | Vmware, Inc. | Packet capture in software-defined networking (sdn) environments |
CN109309626A (zh) * | 2018-09-10 | 2019-02-05 | 南京知常容信息技术有限公司 | 一种基于dpdk的高速网络数据包捕获分流及缓存方法 |
CN109445944A (zh) * | 2018-10-25 | 2019-03-08 | 武汉虹旭信息技术有限责任公司 | 一种基于dpdk的网络数据采集处理***及其方法 |
CN109669792A (zh) * | 2018-12-24 | 2019-04-23 | 网宿科技股份有限公司 | 分析数据报文的方法及业务服务器 |
CN110650100A (zh) * | 2019-10-16 | 2020-01-03 | 南京中孚信息技术有限公司 | 抓取网卡数据包的方法、装置及电子设备 |
CN111147391A (zh) * | 2019-12-05 | 2020-05-12 | 深圳市任子行科技开发有限公司 | DPDK用户态与linux内核网络协议栈之间的数据传输方法及*** |
Non-Patent Citations (7)
Title |
---|
BRIAN CASWELL JAY BEALE JAMES C.FOSTER JEFFREY POSLUNS: "《Snort 2.0入侵检测》", 31 January 2004, 国防工业出版社 * |
JIAQIAN LI等: ""The Comparison and Verification of Some Efficient Packet Capture and Processing Technologies"", 《IEEE》 * |
JON C.SNADER著,刘江林译: "《高级TCP/IP编程》", 31 August 2001, 中国电力出版社 * |
OSC_SFM9HGDB: ""DPDK — PDUMP 抓包工具"", 《HTTPS://MY.OSCHINA.NET/U/4412037/BLOG/4292768》 * |
朱莉等: ""基于Tcpdump命令网络抓包脚本工具的设计"", 《指挥信息***与技术》 * |
郭乐深等: "《信息安全工程技术》", 31 July 2011, 北京邮电大学出版社 * |
龚俭等: "《计算机网络安全导论 第2版》", 30 September 2007, 东南大学出版社 * |
Also Published As
Publication number | Publication date |
---|---|
CN114070900B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210092643A1 (en) | User plane resource management method, user plane network element, and control plane network element | |
EP2620872B1 (en) | Method and device for callback processing in telecommunication capacity opening | |
WO2020228449A1 (zh) | 一种节点选择方法和装置 | |
CN105099989A (zh) | 用于处理业务请求及获取业务处理结果的方法、装置和*** | |
US20170223035A1 (en) | Scaling method and management device | |
KR20220065822A (ko) | 5g 에지의 미디어 능력의 디스커버리를 위한 방법 | |
CN110933075B (zh) | 服务调用方法、装置、电子设备及存储介质 | |
CN103023906A (zh) | 针对远程过程调用协议进行状态跟踪的方法及*** | |
CN108989151B (zh) | 用于网络或应用性能管理的流量采集方法 | |
WO2014032509A1 (en) | Data transfer method and system | |
CN114244560B (zh) | 流量处理方法及装置,电子设备,存储介质 | |
US20170039083A1 (en) | Proxy response program, proxy response device and proxy response method | |
JP2022126821A5 (zh) | ||
CN109343983B (zh) | 功能模块间的信息交互方法、装置、设备及存储介质 | |
WO2019218478A1 (zh) | 一种通话服务的响应方法及设备 | |
CN114070900B (zh) | 一种基于dpdk的抓包处理方法和装置 | |
CN112162873B (zh) | 一种远程调用方法、电子装置和存储介质 | |
CN103517373B (zh) | 一种网络接入的方法和设备 | |
CN106980534B (zh) | 基于sdk组件的业务执行方法及装置 | |
CN103036895A (zh) | 一种状态跟踪方法及*** | |
CN112888033B (zh) | 移动终端驻留网络的切换方法、装置、设备和存储介质 | |
US20220210248A1 (en) | Information interaction methods, apparatuses, devices, and systems and storage media | |
JP6412641B2 (ja) | 通信リンクの送信方法、装置及び端末 | |
CN113852522A (zh) | 一种基于多平台的摄像头绑定和解绑方法 | |
CN107959661B (zh) | 一种信息处理方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |