一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种网络数据包处理方法和装置与流程

2022-02-20 04:51:39 来源:中国专利 TAG:


1.本发明涉及通信技术领域,尤其涉及一种网络数据包处理方法和装置。


背景技术:

2.随着5g(5th generation mobile networks,第五代移动通信技术)的快速发展,网络上传输的数据流量也在飞速增长。在大数据时代,关于大量数据的存储、分析、挖掘数据潜在价值等成为5g发展过程中尤为重要的环节,也是5g发展过程中需要面临的难题。
3.现有技术中,传统的网络数据包处理过程通常需要经过网卡、硬中断、取包分发至内核线程、软中断、内核线程在协议栈中处理包、处理完毕通知用户层、用户层收包、网络层等步骤。所述传统的网络数据包处理过程需要经历内核态与用户态的切换过程,所述切换过程会导致cpu(central processing unit,中央处理器)消耗严重,影响网络数据的处理的整体进程。
4.例如,传统数据包捕获机制中的bpf(berkeley packet filter,柏克莱封包过滤器)数据包捕获机制、libpcap(packet capture libray,数据包捕获函数库)数据包捕获机制和pf-ring数据包捕获机制,所述传统数据包捕获机制均涉及到内核态与用户态的切换过程,会导致数据捕获与分析的过程耗时过长,尤其是在数据流量大的情况下,会影响整个数据传输的效率。


技术实现要素:

5.本发明实施例提供一种网络数据包处理方法和装置,可以网络数据包处理过程中内核态与用户态之间的切换次数。
6.本发明实施例提供了一种网络数据包处理方法,应用于网络数据包处理系统,所述系统包括dpdk抓包框架、kafka分布式订阅框架、以及geode分布式内存数据库;所述kafka分布式订阅框架包括kafka生产者接口、kafka集群以及kafka消费者,所述方法包括:
7.基于所述dpdk抓包框架,在用户层抓取网络数据;
8.将抓取的所述网络数据组织成预设格式的数据包;
9.通过调用所述kafka生产者接口,将所述数据包发送至所述kafka集群;
10.通过多台虚拟机上部署的kafka消费者,分别消费所述kafka集群中的数据包;
11.将消费后的数据包保存至所述geode分布式内存数据库;
12.对所述geode分布式内存数据库中的所述消费后的数据包进行解析,得到目标数据包。
13.本发明实施例提供了一种网络数据包处理装置,应用于网络数据包处理系统,所述系统包括dpdk抓包框架、kafka分布式订阅框架、以及geode分布式内存数据库;所述kafka分布式订阅框架包括kafka生产者接口、kafka集群以及kafka消费者,所述装置包括:
14.抓取模块,用于基于所述dpdk抓包框架,在用户层抓取网络数据;
15.组织模块,用于将抓取的所述网络数据组织成预设格式的数据包;
16.调用模块,用于通过调用所述kafka生产者接口,将所述数据包发送至所述kafka集群;
17.消费模块,用于通过多台虚拟机上部署的kafka消费者,分别消费所述kafka集群中的数据包;
18.第一保存模块,用于将消费后的数据包保存至所述geode分布式内存数据库;
19.解析模块,用于对所述geode分布式内存数据库中的所述消费后的数据包进行解析,得到目标数据包。
20.本发明实施例包括以下优点:
21.本发明实施例基于dpdk抓包框架,在用户层抓取网络数据,将抓取的所述网络数据组织成预设格式的数据包,并在用户层将所述数据包发送至kafka分布式订阅框架进行网络数据包处理,能够在所述网络数据包处理过程中减少用户层和内核层之间的切换次数。
附图说明
22.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
23.图1示出了本发明的一种网络数据包处理方法实施例的流程图;
24.图2示出了本发明的一种网络数据包处理系统的结构示意图;
25.图3示出了本发明的一种网络数据包处理装置实施例的结构框图;
26.图4示出了本发明的另一种网络数据包处理装置实施例的结构框图。
具体实施方式
27.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.方法实施例
29.参照图1,示出了本发明的一种网络数据包处理方法实施例的流程图,应用于网络数据包处理系统,所述系统包括dpdk抓包框架、kafka分布式订阅框架、以及geode分布式内存数据库;所述kafka分布式订阅框架包括kafka生产者接口、kafka集群以及kafka消费者,所述方法具体可以包括:
30.步骤101,基于所述dpdk抓包框架,在用户层抓取网络数据;
31.步骤102,将抓取的所述网络数据组织成预设格式的数据包;
32.步骤103,通过调用所述kafka生产者接口,将所述数据包发送至所述kafka集群;
33.步骤104,通过多台虚拟机上部署的kafka消费者,分别消费所述kafka集群中的数据包;
34.步骤105,将消费后的数据包保存至所述geode分布式内存数据库;
35.步骤106,对所述geode分布式内存数据库中的所述消费后的数据包进行解析,得到目标数据包。
36.本发明应用于网络数据包处理系统,所述网络数据包处理系统用于抓取网络数据,并对抓取的所述网络数据进行缓存及解析操作。所述系统预设有dpdk抓包框架、kafka分布式订阅框架、以及geode分布式内存数据库。所述dpdk抓包框架用于抓取网络数据,所述kafka分布式订阅框架用于缓存及解析所述抓取的数据包,所述geode分布式内存数据库一方面用于保存kafka消费者消费后的数据,供所述网络数据包处理系统动态调配解析线程,另一方面用于保存解析后的数据包,以供本领域技术人员查阅。所述系统部署于服务器,所述服务器安装有操作系统如linux操作系统,所述操作系统对应有内存缓存。
37.所述操作系统从逻辑上划分为用户态空间(用户层)和内核态空间(内核层),其中,所述用户态空间为上层应用程序的活动空间,所述内核态空间为系统的活动空间。在现有技术中,网络数据包处理过程需要经历内核态空间与用户态空间的切换过程,所述切换过程会导致cpu(central processing unit,中央处理器)消耗严重,影响网络数据的处理的整体进程。因此,本发明提供了一种网络数据包处理方法,以减少内核态与用户态的切换次数。
38.所述dpdk(data plane development kit,数据平面开发套件)抓包框架采用大页内存、控制层和数据层分离、多核编程技术代替多线程技术、无锁缓存队列、uio(userspace i/o,用户空间的i/o)等技术,基于所述dpdk抓包框架,能够在用户态快速且稳定的从所述操作系统的网卡中抓取网络数据。
39.具体的,所述大页内存技术能够减少缓存缺失(cache miss),提高cpu利用率;所述控制层和数据层分离技术能够将数据包处理、内存管理、处理器调度等任务转移到用户态去完成,而内核仅仅负责部分控制指令的处理;所述多核编程技术代替多线程技术的技术能够减少dpdk抓包框架中的线程切换开销,提高cache命中率;所述无锁缓存队列技术能够解决资源竞争问题;所述uio技术能够控制dpdk抓包框架中的用户态轮询驱动运行在用户层,从而在用户层采用轮询方式从网卡中收取数据,能够绕过系统内核,避免内核态到用户态的数据拷贝过程,提高收发数据的效率。因此,本发明实施例基于所述dpdk抓包框架,在用户层抓取网络数据,并在用户层将抓取的所述网络数据组织成预设格式的数据包,能够在提高cpu利用率、减少cpu开销、解决资源竞争问题的基础上,在用户态完成数据的抓取和预设格式处理的操作。
40.所述预设格式为本领域技术人员根据业务需要进行设置,为便于描述,本发明实施例中所述预设格式以pcap(packet capture,数据包捕获)格式为例,可以理解,本发明实施例对所述预设格式的设置不加以限制。
41.需要说明的是,传统的网络数据包处理过程需要经历内核态与用户态的切换过程,例如,所述dpdk抓包框架执行数据包缓存的操作,通常是将抓取并处理后的数据包直接写入操作系统的磁盘中,其中,写入磁盘的操作需要在内核态进行,若所述dpdk抓包框架在用户态完成数据抓取的操作之后,继续在所述dpdk抓包框架中执行数据包缓存操作,不可避免的需要进行用户态与内核态之间的来回切换,所述切换过程会引起dpdk抓包丢失问题,降低网络数据包处理的成功率。
42.本发明采用所述kafka分布式订阅框架执行数据包缓存操作,能够分开执行所述
数据抓取的操作与数据包缓存的操作,且所述kafka分布式订阅框架的页缓存技术能够将数据包写入内存缓存,由内存缓存决定数据包写入磁盘的时机,因此,采用所述kafka分布式订阅框架执行数据包缓存的技术方案能够减少用户态与内核态之间切换次数,克服所述dpdk抓包丢失问题,能够提高网络数据包处理的成功率。
43.所述kafka分布式订阅框架通过页缓存技术、磁盘顺序读写、零拷贝技术,能够实现每秒上百万的高并发写入,其具有实时处理大量数据、高吞吐量、低时延、高并发等功能。
44.所述kafka分布式订阅框架基于zookeeper进行协调,所述框架包括kafka生产者接口、kafka集群以及kafka消费者。所述kafka集群(kafka cluser)中包含至少一个kafka实例,每个实例称为broker,所述kafka集群承担中间缓存和分发的作用;所述kafka生产者即数据的发布者(kafka producer),所述kafka生产者能够将基于所述dpdk抓包框架获得的数据包发送到kafka集群中;所述kafka消费者即数据的接收者(kafka consumer),所述kafka消费者部署于所述网络数据包处理系统中的多台虚拟机上,能够从所述kafka集群中读取数据,其中,每个kafka消费者作为一个消费者线程,每个消费者线程对应一台虚拟机。所述zookeeper是一个针对分布式框架中的数据进行协调管理的服务软件,基于所述zookeeper能够对分布式框架中的配置文件进行统一管理、对分布式框架中数据的发布与订阅进行管理、为分布式框架提供分布式锁、保证分布式框架中数据的一致性等,本发明可基于所述zookeeper,在kafka集群与所述消费者线程之间进行负载均衡。
45.本发明基于所述dpdk抓包框架,获得预设格式的数据包之后,能够在所述dpdk抓包框架中通过调用kafka生产者接口的方式,将所述数据包发送至所述kafka集群,由所述kafka集群通过页缓存技术缓存所述数据包,再将所述数据包分发至消费者线程,分别消费所述数据包。所述页缓存技术还能够提高数据包缓存的速度,通过快速保存所述dpdk抓包框架抓取数据后得到的数据包,能够保证所述dpdk抓包框架抓取数据的稳定性。另外,当所述数据包流量变大时,本发明能够通过增加所述kafka集群的方式,便捷地、灵活地进行动态扩容,从而进一步保证网络数据包处理的效率,并降低耦合。
46.所述geode分布式内存数据库具有数据持久化、动态扩展等功能,本发明能够根据数据包流量,调配geode分布式内存数据库的个数。
47.另外,本发明能够根据所述geode分布式内存数据库中的实际数据包流量,合理的调配解析线程的数量。因此,本发明实施例能够提高网络数据包处理过程中解析的性能。
48.对所述数据包进行解析操作,能够将所述数据包解析为本领域技术人员需要的目标数据包。可选的,本发明实施例还能够在网络数据包处理系统(后台)获得目标数据包之后,将所述目标数据包发送至显示平台(前台),供本领域技术人员查看所述目标数据包中的详细数据。因此,本发明实现了在后台处理网络数据包以及在前台显示处理后的网络数据,前台和后台交互的技术方案。
49.综上,本发明实施例基于dpdk抓包框架,在用户层抓取网络数据,将抓取的所述网络数据组织成预设格式的数据包,并在用户层将所述数据包发送至kafka分布式订阅框架进行网络数据包解析操作,能够在所述网络数据包抓取和缓存过程中减少用户层和内核层之间的切换次数。另外,本发明实施例无需额外开发高性能的硬件设备,所述网络数据包处理系统可部署在普通服务器中运行,因此,可以降低网络数据包处理成本。
50.在本发明的一种可选实施例中,所述dpdk抓包框架中包括无锁缓存队列,步骤101
所述基于所述dpdk抓包框架,在用户层抓取网络数据之后,所述方法还包括:
51.将所述网络数据存入所述无锁缓存队列中。
52.可选的,步骤102所述将抓取的所述网络数据组织成预设格式的数据包,包括:
53.将所述无锁缓存队列中的网络数据组织成预设格式的数据包。
54.所述无锁缓存队列(ring)具有先进先出、无锁、并发入/出队等特性,能够提高缓存数据的速度,且实现过程简单。
55.所述预设格式为本领域技术人员根据业务需要进行设置,为便于描述,本发明实施例中所述预设格式以pcap(packet capture,数据包捕获)格式为例,可以理解,本发明实施例对所述预设格式的设置不加以限制。
56.可选的,步骤101所述基于所述dpdk抓包框架,在用户层抓取网络数据之前,所述方法还包括:
57.初始化所述dpdk抓包框架中的dpdk抓包端口以及所述dpdk抓包框架对应的配置文件。
58.可选的,基于所述dpdk抓包框架,启动dpdk抓包线程,所述dpdk抓包线程包括:第一抓包线程和第二抓包线程,所述第一抓包线程用于在用户层抓取网络数据,并将所述网络数据存入所述无锁缓存队列中;所述第二抓包线程用于将所述无锁缓存队列中的网络数据组织成预设格式的数据包,并调用所述kafka生产者接口,将所述数据包发送至所述kafka集群。
59.在本发明的一种可选实施例中,步骤103所述将所述数据包发送至所述kafka集群之后,所述方法还包括:
60.所述kafka集群将所述数据包存入内存缓存中。
61.通常在现有技术中采用直接操作磁盘的方式进行数据缓存操作,即,现有技术中抓取到数据后,需要重复的进行磁盘写入数据的用户态到内核态的切换操作。
62.所述kakfa集群采用页缓存技术,先将获取的数据包存入所述操作系统的内存缓存(os cache)中,所述操作系统决定数据包由os cache写入磁盘文件的时机。因此,基于所述kakfa集群进行数据包的缓存操作,能够减少用户态与内核态之间的切换次数。
63.可选的,步骤104所述分别消费所述kafka集群中的数据包之前,所述方法还包括:
64.步骤s11,根据所述内存缓存中所述数据包的流量,确定第一数量的kafka消费者线程;
65.步骤s12,通过所述第一数量的kafka消费者线程,分别从所述内存缓存中获取所述数据包。
66.启动所述第一数量的kafka消费者线程,从所述内存缓存中获取所述数据包,本发明能够根据所述内存缓存中所述数据包的流量,动态确定第一数量的kafka消费者线程,从而保证以最优调配性能消费所述数据包。
67.在本发明的一种可选实施例中,步骤106所述对所述geode分布式内存数据库中的所述消费后的数据包进行解析,得到目标数据包,包括:
68.步骤s21,根据所述geode分布式内存数据库中的所述消费后的数据包的流量,确定第二数量的解析程序线程;
69.步骤s22,通过所述第二数量的解析程序线程,分别解析所述消费后的数据包,得
到目标数据包。
70.本发明能够通过所述第二数量的解析程序线程,分别解析所述消费后的数据包,得到目标数据包。所述解析程序用于解析所述数据包,如wireshark二次开发程序,所述解析程序由本领域技术人员预先设计编写。需要说明的是,本发明能够根据业务需要,如,添加新协议,通过替换或者升级所述解析程序的方式,在无需新增开发量的情况下,灵活的获得目标数据包。
71.在本发明的一种可选实施例中,步骤106所述得到目标数据包之后,所述方法还包括:
72.将所述目标数据包保存至所述geode分布式内存数据库。
73.获取所述目标数据包之后,将所述目标数据包保存至所述geode分布式内存数据库,从而本领域技术人员能够根据需要获取所述目标数据包,并通过显示平台查看所述目标数据包中的详细数据。
74.参见图2,示出了本发明的一种网络数据包处理系统的结构示意图。所述网络数据包处理系统包括网络数据包抓取模块201,网络数据包缓存模块202、网络数据包处理模块203以及zookeeper服务模块204。所述网络数据包抓取模块201用于基于所述dpdk抓包框架,在用户层抓取网络数据,并将所述数据组织成预设格式的数据包,通过调用kafka生产者(producer)接口将所述数据包发送至kafka集群;所述网络数据包缓存模块202用于基于所述kafka集群将数据包存入内存缓存;所述网络数据包处理模块203用于通过kafka消费者线程,消费所述kafka集群中的数据包,将消费后的数据包保存至geode分布式内存数据库,根据所述geode分布式内存数据库中消费后的数据包的流量,确定解析程序的线程,解析所述消费后的数据包,以得到目标数据包,并将所述目标数据包保存至所述geode分布式内存数据库,以供本领域技术人员查阅;所述zookeeper服务模块204用于通过zookeeper在所述kafka集群和所述kafka消费者线程之间进行负载均衡。
75.综上,本发明实施例基于dpdk抓包框架,在用户层抓取网络数据,将抓取的所述网络数据组织成预设格式的数据包,并能够直接在用户层将所述数据包发送至kafka分布式订阅框架,由所述kafka集群通过页缓存技术缓存所述数据包,从而本发明能够在减少用户态和内核态之间的切换次数的情况下,快速实现数据包的抓取、缓存操作。另外,本发明能够根据数据的流量情况,灵活的调整kafka消费者线程对应的第一数量、解析程序线程对应的第二数量以及geode分布式内存数据库的个数,提高网络数据包处理的性能。
76.装置实施例
77.参照图3,示出了本发明的一种网络数据包处理装置实施例的结构框图,应用于网络数据包处理系统,所述系统包括dpdk抓包框架、kafka分布式订阅框架、以及geode分布式内存数据库;所述kafka分布式订阅框架包括kafka生产者接口、kafka集群以及kafka消费者,所述装置具体可以包括:
78.抓取模块301,用于基于所述dpdk抓包框架,在用户层抓取网络数据。
79.组织模块302,用于将抓取的所述网络数据组织成预设格式的数据包。
80.调用模块303,用于通过调用所述kafka生产者接口,将所述数据包发送至所述kafka集群。
81.消费模块304,用于通过多台虚拟机上部署的kafka消费者,分别消费所述kafka集
群中的数据包。
82.第一保存模块305,用于将消费后的数据包保存至所述geode分布式内存数据库。
83.解析模块306,用于对所述geode分布式内存数据库中的所述消费后的数据包进行解析,得到目标数据包。
84.可选的,所述dpdk抓包框架中包括无锁缓存队列。
85.可选的,所述装置还包括:
86.第一缓存模块,用于将所述网络数据存入所述无锁缓存队列中。
87.可选的,所述组织模块302,包括:
88.组织子模块,用于将所述无锁缓存队列中的网络数据组织成预设格式的数据包。
89.可选的,所述装置还包括:
90.第二缓存模块,用于所述kafka集群将所述数据包存入内存缓存中;
91.可选的,所述装置还包括:
92.确定线程模块,用于根据所述内存缓存中所述数据包的流量,确定第一数量的kafka消费者线程。
93.获取数据包模块,用于通过所述第一数量的kafka消费者线程,分别从所述内存缓存中获取所述数据包。
94.可选的,所述解析模块306,包括:
95.确定子模块,用于根据所述geode分布式内存数据库中的所述消费后的数据包的流量,确定第二数量的解析程序线程。
96.解析子模块,用于通过所述第二数量的解析程序线程,分别解析所述消费后的数据包,得到目标数据包。
97.可选的,所述装置还包括:
98.第二保存模块,用于将所述目标数据包保存至所述geode分布式内存数据库。
99.综上,本发明实施例基于dpdk抓包框架,在用户层抓取网络数据,将抓取的所述网络数据组织成预设格式的数据包,并在用户层将所述数据包发送至kafka分布式订阅框架进行网络数据包处理,能够在所述网络数据包处理过程中减少用户层和内核层之间的切换次数。
100.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
101.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
102.本发明实施例还提供了一种用于网络数据包处理的装置,参见图4,包括:一个或多个处理器401、一个或多个可读存储介质402以及存储在所述存储介质上并可在所述处理器上运行的计算机程序4021,所述处理器执行所述计算机程序时实现前述实施例的网络数据包处理方法。
103.本发明实施例还提供了一种可读存储介质,当所述存储介质中的计算机程序由网络数据包处理装置的处理器执行时,使得网络数据包处理装置能够执行前述实施例的网络数据包处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的可读存储介质,如只读存储器(read-only memory,简称rom)、随机存取存
储器(random access memory,简称ram)、磁碟或者光盘等。
104.本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
105.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
106.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
107.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
108.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
109.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
110.以上对本发明所提供的一种网络数据包处理方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献