数据包处理方法、装置、系统、调度设备和存储介质与流程

专利2022-05-09  105



1.本发明涉及数据处理领域,具体而言,涉及一种数据包处理方法、装置、系统、调度设备和存储介质。


背景技术:

2.在计算机网络中,各主机通过数据包进行网络传输,开发或测试人员常需要将数据包捕获下来,进行分析处理,用于流量监测、流量录制回放等场景。具体来讲,需要将捕获下来的原始数据包解析成上层网络协议报文,使数据包可读性增强,方便排查问题,或者方便对数据包进行二次修改,进而满足某些流量回放的场景等。
3.目前的数据包解析方法,一般是采用专门的数据包分析工具(例如wireshark)对数据包进行协议解析,其解析过程只能单机执行,依赖单机性能,不支持同时对多台主机进行数据包解析。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种数据包处理方法、装置、系统、调度设备和存储介质,其能够同时对多台主机进行数据包抓取和解析。
5.为了实现上述目的,本发明实施例采用的技术方案如下:
6.第一方面,本发明提供一种数据包处理方法,应用于调度设备,所述调度设备与多个解析设备通信连接,所述调度设备与一数据存储容器关联,所述数据存储容器还与至少一个抓包进程关联,所述抓包进程用于抓取所述抓包进程所在主机上的数据包,并将所述数据包传输到所述数据存储容器;所述方法包括:
7.获取所述数据存储容器中的数据包;
8.根据所述数据包从所述多个解析设备中选取出目标解析设备;
9.将所述数据包传输给所述目标解析设备进行解析。
10.在可选的实施方式中,所述根据所述数据包从所述多个解析设备中选取出目标解析设备,包括:
11.确定所述数据包对应的调度关键字;所述调度关键字用于标识所述数据包所属tcp连接;
12.根据所述调度关键字从所述多个解析设备中选取出目标解析设备。
13.在可选的实施方式中,所述根据所述调度关键字从所述多个解析设备中选取出目标解析设备,包括:
14.对所述调度关键字进行一致性哈希运算,得到一致性哈希值;
15.根据所述一致性哈希值从所述多个解析设备中选取出目标解析设备。
16.在可选的实施方式中,所述调度关键字根据所述数据包对应的源ip地址、源端口、目标ip地址和目标端口确定。
17.第二方面,本发明提供一种数据包处理装置,应用于调度设备,所述调度设备与多
个解析设备通信连接,所述调度设备与一数据存储容器关联,所述数据存储容器还与至少一个抓包进程关联,所述抓包进程用于抓取所述抓包进程所在主机上的数据包,并将所述数据包传输到所述数据存储容器;所述装置包括:
18.获取模块,用于获取所述数据存储容器中的数据包;
19.调度模块,用于根据所述数据包从所述多个解析设备中选取出目标解析设备;
20.发送模块,用于将所述数据包传输给所述目标解析设备进行解析。
21.第三方面,本发明提供一种数据包处理系统,包括至少一个调度设备和至少一个主机,所述主机上运行有抓包进程,所述调度设备与多个解析设备通信连接,所述调度设备与一数据存储容器关联,所述数据存储容器还与至少一个抓包进程关联;
22.所述抓包进程用于抓取所述抓包进程所在主机上的数据包,并将所述数据包传输到所述数据存储容器;
23.所述调度设备用于获取所述数据存储容器中的数据包,根据所述数据包从所述多个解析设备中选取出目标解析设备,并将所述数据包传输给所述目标解析设备进行解析。
24.在可选的实施方式中,所述数据包处理系统还包括控制台,所述控制台与所述抓包进程、所述调度设备、所述解析设备均通信连接,所述控制台中维护有数据存储容器列表,所述数据存储容器列表包括至少一个数据存储容器的标识信息;
25.所述控制台用于在确定需要抓取数据包的目标抓包进程后,根据所述数据存储容器列表为所述目标抓包进程选取对应的目标数据存储容器,并向所述目标抓包进程发送抓包指令,所述抓包指令中携带所述目标数据存储容器的标识信息。
26.在可选的实施方式中,所述数据包处理系统还包括监控设备,所述监控设备与所述调度设备、所述解析设备、所述控制台均通信连接;
27.所述监控设备用于根据所有调度设备各自对应的第一缓冲区大小计算第一平均值,在所述第一平均值大于第一设定阈值的情况下,向所述控制台发送第一扩容指令;所述第一扩容指令用于指示所述控制台增加新的调度设备和第一解析设备,并设置所述新的调度设备关联新的数据存储容器,所述第一解析设备向所述新的调度设备注册;所述第一缓冲区大小为每个调度设备中当前等待被处理的解析包的总大小;
28.所述监控设备还用于根据每个调度设备下的所有解析设备各自对应的第二缓冲区大小计算第二平均值,若存在目标调度设备对应的第二平均值大于第二设定阈值,向所述控制台发送第二扩容指令;所述第二扩容指令用于指示所述控制台增加第二解析设备,并设置所述第二解析设备向所述目标调度设备注册;所述第二缓冲区大小为所述调度设备下的所有解析设备中当前等待被处理的解析包的总大小。
29.第四方面,本发明提供一种调度设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现前述实施方式任一项所述的方法。
30.第五方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述实施方式任一项所述的方法。
31.本发明实施例提供的数据包处理方法、装置、系统、调度设备和存储介质,由于调度设备与一数据存储容器关联,且该数据存储容器还与至少一个抓包进程关联,每个抓包进程抓取自身所在主机上的数据包,并将数据包传输到该数据存储容器,从而实现对多台主机上的数据包进行抓取。调度设备从自己关联的数据存储容器中获取数据包,并根据数
据包从多个解析设备中选取出目标解析设备,将数据包传输至该目标解析设备进行解析。如此,实现了同时对多台主机上的数据包进行解析,并且,通过把数据存储容器中的数据包调度给多个解析设备进行处理,能够将数据包解析的压力分摊到该多个解析设备上,则对于企业来讲,不必专门采购高性能设备进行数据包解析,仅需利用若干低配设备,有效节省了资源成本。
32.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
33.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
34.图1示出了本发明实施例提供的数据包处理系统的一种组成示意图;
35.图2示出了本发明实施例提供的数据包处理系统的另一种组成示意图;
36.图3示出了本发明实施例提供的数据包处理方法的一种流程示意图;
37.图4示出了抓包进程、数据存储容器以及调度设备的关联示意图;
38.图5示出了本发明实施例提供的数据包处理方法的另一种流程示意图;
39.图6示出了本发明实施例提供的数据包处理装置的一种功能模块图;
40.图7示出了本发明实施例提供的调度设备的一种方框示意图。
41.图标:10

数据包处理系统;100

调度设备;200

主机;300

集群服务器;400

解析设备;500

控制台;600

监控设备;700

数据包处理装置;110

存储器;120

处理器;130

通信模块;710

获取模块;720

调度模块;730

发送模块。
具体实施方式
42.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
43.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
45.请参照图1,为本发明实施例提供的数据包处理系统10的一种组成示意图,该数据
包处理系统10包括至少一个调度设备100和至少一个主机200,每个调度设备100和每个主机200均与一集群服务器300通信连接;每个主机200上运行有抓包进程(agent),每个调度设备100与多个解析设备400通信连接。
46.其中,该集群服务器300可以包括一个或者多个服务器,用于存储创建的数据存储容器,每个调度设备100与一数据存储容器关联,且每个数据存储容器还与至少一个抓包进程关联。
47.该数据存储容器可以理解为集群服务器300中用于存放数据包的容器,其可以消息队列、数据库、缓存等形式存在。该数据存储容器在进行数据包的分发时,可以采用队列、主题等模式。本实施例主要以主题模式为例进行说明,当采用主题模式时,该数据存储容器对应的消息模型可以为发布

订阅模型,此时消息(数据包)的发送方称为发布者,消息的接收方称为订阅者。发布者将消息发送到主题(即数据存储容器)中,订阅者在接收消息之前需要先订阅主题,订阅后,即可接收到该主题中的所有消息。
48.在本实施例中,当数据存储容器采用主题模式进行数据包的分发时,则调度设备100可以采用订阅主题的方式与该数据存储容器建立关联,每个主机200上运行的抓包进程即为发布者,该抓包进程用于抓取该抓包进程所在主机200上的数据包,并将该数据包传输到与该抓包进程关联的数据存储容器。调度设备100用于获取数据存储容器中的数据包,根据数据包从多个解析设备400中选取出目标解析设备,并将数据包传输给目标解析设备进行解析。
49.例如,在每个调度设备100上部署用于调度数据包的进程服务(scheduler),并设置不同的scheduler订阅不同的数据存储容器,scheduler与agent通过数据存储容器建立联系,一个scheduler会服务于其订阅的数据存储容器关联的所有agent。在每个解析设备400上部署用于对数据包进行协议解析的进程服务(parser),且每个parser只向一个scheduler注册,调度设备100通过scheduler将从数据存储容器获取到的数据包调度给scheduler所维护的parser集群,使得数据包解析的压力能够分摊到更多的parser上;解析设备400通过parser对从scheduler接收到的数据包进行协议解析,输出解析结果,并存储到存储介质。
50.可见,本发明实施例提供的数据包处理系统10,通过设置每个调度设备100关联一个数据存储容器,且该数据存储容器还与至少一个抓包进程关联,每个抓包进程抓取自身所在主机200上的数据包,并将该数据包传输到与该抓包进程关联的数据存储容器,以便后续统一进行数据包解析,从而实现同时对多台主机200上的数据包进行抓取。通过给不同调度设备100分配不同的数据存储容器,使得每个调度设备100只需服务其关联的数据存储容器对应的所有抓包进程,调度设备100获取数据存储容器中的数据包后,根据数据包从多个解析设备400中选取出目标解析设备,并将数据包传输给目标解析设备进行解析,实现了同时对多台主机200上的数据包进行解析。此外,通过把数据存储容器中的数据包调度给多个解析设备400进行处理,能够将数据包解析的压力分摊到该多个解析设备400上,则对于企业来讲,不必专门采购高性能设备进行数据包解析,仅需利用若干低配设备,有效节省了资源成本。
51.可选地,请参照图2,该数据包处理系统10还可以包括控制台500和监控设备600,该控制台500与抓包进程、调度设备100、解析设备400、集群服务器300均通信连接,该监控
设备600与调度设备100、解析设备400、控制台500均通信连接。其中,控制台500与每个抓包进程、每个调度设备100、每个解析设备400以及集群服务器300的具体连接关系未在图1中示出,监控设备600与每个调度设备100、每个解析设备400的具体连接关系也未在图1中示出。
52.该控制台500会接收用户发送的抓包解析指令,同时也负责agent、scheduler、parser的启停管理。该控制台500中维护有数据存储容器列表,该数据存储容器列表包括至少一个数据存储容器的标识信息,该标识信息可以唯一标识数据存储容器。也即是说,针对集群服务器300中存储的每个数据存储容器,其对应的标识信息都会被记录到控制台500维护的数据存储容器列表中,这样控制台500根据数据存储容器列表便可知道当前有哪些数据存储容器可以被使用。
53.在本实施例中,该控制台500用于在确定需要抓取数据包的目标抓包进程后,根据数据存储容器列表为目标抓包进程选取对应的目标数据存储容器,并向目标抓包进程发送抓包指令,抓包指令中携带目标数据存储容器的标识信息。
54.也即是说,控制台500每次向抓包进程发送抓包指令前,需要先根据其维护的数据存储容器列表挑选出一个数据存储容器,作为该抓包进程本次抓包所要传输到的数据存储容器(即目标数据存储容器),然后将确定出的目标数据存储容器的标识信息携带在抓包指令中,并将该抓包指令发送给目标抓包进程,通过该抓包指令指示该目标抓包进程进行数据包抓取,同时告知该目标抓包进程抓取到的数据包需要传输到哪个数据存储容器。
55.其中,控制台500在选取目标数据存储容器时,可以随机挑选一个数据存储容器,也可以根据数据存储容器列表中各数据存储容器对应的当前使用情况(集群服务器300中各数据存储容器的使用情况可以实时反馈给控制台500)来选取合适的数据存储容器,例如,可以选取当前剩余容量最多的数据存储容器作为目标数据存储容器。
56.例如,用户向控制台500发出抓包解析指令“对主机a、主机b和主机c进行抓包解析”,控制台500接收到抓包解析指令后,检查主机a、主机b和主机c上是否已经部署抓包进程,若没有部署,则对主机a、主机b和主机c进行抓包进程的部署;在主机a、主机b和主机c上均部署抓包进程后,将主机a上运行的抓包进程、主机b上运行的抓包进程、主机c上运行的抓包进程,确定为需要抓取数据包的目标抓包进程。控制台500从维护的数据存储容器列表中随机选出3个数据存储容器,标识信息分别为a、b、c,将数据存储容器a作为主机a上的抓包进程关联的目标数据存储容器,将数据存储容器b作为主机b上的抓包进程关联的目标数据存储容器,将数据存储容器c作为主机c上的抓包进程关联的目标数据存储容器。控制台500分别向主机a、主机b和主机c上的抓包进程发出对应的抓包指令,主机a上的抓包进程根据接收到的抓包指令对主机a上的数据包进行抓取,并将抓取的数据包传输至数据存储容器a;主机b上的抓包进程根据接收到的抓包指令对主机b上的数据包进行抓取,并将抓取的数据包传输至数据存储容器b;主机c上的抓包进程根据接收到的抓包指令对主机c上的数据包进行抓取,并将抓取的数据包传输至数据存储容器c。
57.可见,本发明实施例提供的数据包处理系统10,通过控制台500为需要进行数据包抓取的抓包进程分配对应的数据存储容器,使得每个抓包进程在抓取主机200上的数据包后,将数据包发送到控制台500指定的数据存储容器中,然后与该数据存储容器关联的调度设备100便可将该数据存储容器中的数据包调度到各解析设备400上进行数据包解析,从而
实现同时对多台主机200进行数据包抓取和解析。
58.可选地,考虑到业务快速增长的场景下,调度设备100、解析设备400可能会因为待处理的数据包过多而遭遇性能瓶颈的问题,本发明实施例可以通过监控设备600来监控系统中各调度设备100构成的集群(调度设备集群)、每个调度设备100下的各解析设备400构成的集群(解析设备集群)是否达到性能瓶颈,进而实现调度设备集群和解析设备集群的动态扩容,使其具备弹性伸缩的能力。
59.该监控设备600用于根据所有调度设备100各自对应的第一缓冲区大小计算第一平均值,在第一平均值大于第一设定阈值的情况下,向控制台500发送第一扩容指令;第一扩容指令用于指示控制台500增加新的调度设备和第一解析设备,并设置新的调度设备关联新的数据存储容器,第一解析设备向新的调度设备注册;第一缓冲区大小为每个调度设备100中当前等待被处理的解析包的总大小。
60.在本实施例中,第一缓冲区大小可以字节为单位;每个调度设备100从自己关联的数据存储容器中获取到数据包后,会将数据包先存放在自己的缓冲区(第一缓冲区)中,以利用自身的内存做数据的缓冲,调度设备100会不断从缓冲区中获取数据包进行后续的调度处理,若后续的调度处理足够快,则缓冲区可能为空。
61.针对调度设备100,监控设备600主要监控调度设备集群的平均每节点缓冲区大小。具体的,该监控设备600获取每个调度设备100对应的第一缓冲区大小,对获取的所有第一缓冲区大小进行平均值计算,得到第一平均值(即调度设备集群的平均每节点缓冲区大小)。
62.在本实施例中,设定每个调度设备100的总内存大小相同,第一设定阈值根据单个调度设备100的总内存大小设置,例如,第一设定阈值为单个调度设备100的总内存大小的50%;当然,系统管理员也可以根据自身业务对第一设定阈值进行相应的调整,以保证系统稳定运行。
63.假设判断调度设备集群是否达到性能瓶颈的条件为:调度设备集群的平均每节点缓冲区大小大于单个调度设备100的总内存大小的50%,则监控设备600在计算出第一平均值并根据第一平均值判断当前调度设备集群达到性能瓶颈的情况下,向控制台500发送第一扩容指令。控制台500根据该第一扩容指令创建新的scheduler和新的parser,并将新的scheduler部署到新的调度设备上运行,以及将新的parser部署到新的解析设备(第一解析设备)上运行,该新的调度设备关联新的数据存储容器,负责监听该新的数据存储容器中的数据包,该新的解析设备启动时会向新的调度设备进行注册,以告知该新的调度设备可以将获取的数据包调度给该新的解析设备进行处理,实现调度设备集群的动态扩容。
64.需要说明的是,该新的数据存储容器可以由控制台500在接收到第一扩容指令后生成并发送给集群服务器300存储,也可以由控制台500在接收到第一扩容指令后指示集群服务器300生成并存储,本实施例对此不作限定。在新的数据存储容器生成后,该控制台500会将该新的数据存储容器的标识信息记录到所维护的数据存储容器列表中,当该新的数据存储容器被分配给某个抓包进程后,该抓包进程便会把抓取到的数据包传输到该新的数据存储容器中,进而由该新的调度设备将该新的数据存储容器中的数据包调度到第一解析设备进行解析。
65.该监控设备600还用于根据每个调度设备100下的所有解析设备400各自对应的第
二缓冲区大小计算第二平均值,若存在目标调度设备对应的第二平均值大于第二设定阈值,向控制台500发送第二扩容指令;第二扩容指令用于指示控制台500增加第二解析设备,并设置第二解析设备向目标调度设备注册;第二缓冲区大小为调度设备100下的所有解析设备400中当前等待被处理的解析包的总大小。
66.在本实施例中,第二缓冲区大小也可以字节为单位;每个解析设备400接收到调度设备100发送的数据包后,将数据包存放在自己的缓冲区(第二缓冲区)中,然后从缓冲区中取出数据包进行协议解析。
67.值得注意的是,监控设备600不是一视同仁地监控数据包处理系统10中的所有解析设备400,而是以每个调度设备100下所维护的解析设备集群作为监控对象,这是因为每个解析设备400只向一个调度设备100进行注册,有可能某个调度设备100下的解析设备集群的性能负载比另一个调度设备100下的解析设备集群低很多。因此,监控设备600需要分别监控每个调度设备100所维护的解析设备集群的平均每节点缓冲区大小。具体的,该监控设备600获取每个调度设备100下的每个解析设备400对应的第二缓冲区大小,对获取的所有第二缓冲区大小进行平均值计算,得到第二平均值(每个调度设备100所维护的解析设备集群的平均每节点缓冲区大小)。
68.在本实施例中,设定每个解析设备400的总内存大小相同,第二设定阈值根据单个解析设备400的总内存大小设置,例如,第二设定阈值为单个解析设备400的总内存大小的50%;当然,系统管理员也可以根据自身业务对第二设定阈值进行相应的调整,以保证系统稳定运行。
69.假设判断每个调度设备100下的解析设备集群是否达到性能瓶颈的条件为:解析设备集群的平均每节点缓冲区大小大于单个解析设备400的总内存大小的50%,则监控设备600在计算出第二平均值并根据第二平均值判断目标调度设备下的解析设备集群达到性能瓶颈的情况下,向控制台500发送第二扩容指令。控制台500根据该第二扩容指令创建新的parser,并将新的parser部署到新的解析设备(第二解析设备)上运行,该新的解析设备启动时会向该目标调度设备进行注册,以告知该目标调度设备后续可调度数据包给该新的解析设备进行处理,实现解析设备集群的动态扩容。
70.可见,本发明实施例提供的数据包处理系统10,通过设置监控设备600监控调度设备集群以及每个调度设备100所维护的解析设备集群是否达到性能瓶颈,当调度设备集群达到性能瓶颈时,可通过控制台500向该调度设备集群中增加新的调度设备,当某个调度设备100所维护的解析设备集群达到性能瓶颈时,可通过控制台500向该解析设备集群中增加新的解析设备,实现了对调度设备集群以及每个调度设备100下的解析设备集群的动态扩容,从而整体提高数据包解析性能,尤其针对业务快速增长的场景,能够快速满足业务需求。
71.可选地,请参照图3,为本发明实施例提供的数据包处理方法的一种流程示意图。本实施例主要以该方法应用于图1中的调度设备100来举例说明。需要说明的是,本发明实施例提供的数据包处理方法并不以图3以及以下的具体顺序为限制,应当理解,在其他实施例中,本发明实施例提供的数据包处理方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。下面将对图3所示的具体流程进行详细阐述。
72.步骤s201,获取数据存储容器中的数据包。
73.在本实施例中,由于控制台500在向主机200上的抓包进程发送抓包指令时,会在抓包指令中携带为该抓包进程分配的数据存储容器的标识信息,这样每个抓包进程在抓取到自己所在主机200上的数据包后,就会发送到该抓包指令中指定的数据存储容器中,从而将数据存储容器与至少一个抓包进程建立关联。每个调度设备100关联一个数据存储容器,且不同调度设备100所关联的数据存储容器不同,则每个调度设备100与抓包进程可以通过数据存储容器建立关联,使得每个调度设备100只需服务其关联的数据存储容器对应的所有抓包进程,即调度设备100从自己关联的数据存储容器中获取的数据包,实际上是该数据存储容器关联的至少一个抓包进程所抓取的数据包。
74.如图4所示,假设主机a、主机b和主机c上运行有对应的抓包进程,分别为agent1、agent2和agent3,其中agent1和agent2均与数据存储容器m关联,agent3与数据存储容器n关联,调度设备e关联了数据存储容器m,调度设备f关联了数据存储容器n,则agent1抓取主机a上的数据包后,会将该数据包传输到数据存储容器m,agent2抓取主机b上的数据包后,会将该数据包传输到数据存储容器m,agent3抓取主机c上的数据包后,会将该数据包传输到数据存储容器n,关联了数据存储容器m的调度设备e将获取到数据存储容器m中的数据包,关联了数据存储容器n的调度设备f将获取到数据存储容器n中的数据包。
75.步骤s202,根据数据包从多个解析设备中选取出目标解析设备。
76.步骤s203,将数据包传输给目标解析设备进行解析。
77.在本实施例中,每个调度设备100在获取到自己关联的数据存储容器中的数据包后,通过从该多个解析设备400中选取出目标解析设备,可将数据存储容器中的数据包调度到各个解析设备400上进行协议解析,从而使得数据包解析的压力被分摊到更多的设备。
78.例如,当需要对一台高性能的主机进行抓包解析,但没有性能匹配的机器能直接进行数据包解析,并且当前存在可以利用的若干低配机器,则可以采用本发明实施例提供的数据包处理方法,通过该调度设备100调度多个低配机器进行分布式数据包解析,实现相应的场景需求。
79.可见,本发明实施例提供的数据包处理方法中,由于调度设备100与一数据存储容器关联,且该数据存储容器还与至少一个抓包进程关联,每个抓包进程抓取自身所在主机200上的数据包,并将数据包传输到该数据存储容器,从而实现对多台主机200上的数据包进行抓取。调度设备100从自己关联的数据存储容器中获取数据包,并根据数据包从多个解析设备400中选取出目标解析设备,将数据包传输至该目标解析设备进行解析,实现了同时对多台主机200上的数据包进行解析,并且,通过把数据存储容器中的数据包调度给多个解析设备400进行处理,能够将数据包解析的压力分摊到该多个解析设备400上,则对于企业来讲,不必专门采购高性能设备进行数据包解析,仅需利用若干低配设备,有效节省了资源成本。
80.可选地,考虑到同一个tcp(transmission control protocol,传输控制协议)连接的数据包集合必须在同一个解析设备400上才能完全解析,调度设备100可以按照图5所示的流程选取出目标解析设备,便于目标解析设备输出准确的数据包解析结果。如图5所示,上述的步骤s202具体可以包括如下子步骤:
81.子步骤s2021,确定数据包对应的调度关键字;调度关键字用于标识数据包所属tcp连接。
82.在本实施例中,该调度关键字可以根据数据包对应的源ip地址、源端口、目标ip地址和目标端口确定。例如,调度设备100获取到其关联的数据存储容器中的数据包后,解析出该数据包的源ip地址、源端口、目标ip地址和目标端口,利用这些信息进行排序拼接,生成一个调度关键字,这个调度关键字能作为该数据包所属tcp连接的唯一标识。需要说明的是,在实际应用中,该调度关键字也可以采用其他方式确定,只要该调度关键字能够唯一标识该数据包所属tcp连接即可。
83.子步骤s2022,根据调度关键字从多个解析设备中选取出目标解析设备。
84.在本实施例中,由于数据包对应的调度关键字可以唯一标识该数据包所属tcp连接,则同一个tcp连接的数据包所对应的调度关键字必然是相同的,进而根据调度关键字选取出的目标解析设备也是相同的,这样,就可将一个tcp连接相关的数据包都调度到同一个目标解析设备上进行协议解析,目标解析设备接收到数据包后,对源ip地址、源端口、目标ip地址和目标端口都相同的数据包进行分组,即对tcp连接相同的数据包进行分组,一个tcp连接的数据包传输只会用一种网络协议,所以在每个分组内,可以对数据包进行协议解析,最后输出解析结果并存储到存储介质,有效确保了同一个tcp连接的数据包解析的准确性。
85.在实际应用中,考虑到调度设备100所维护的解析设备集群可能存在动态增加或者删除节点的情况,为了尽可能不改变原有的调度关键字与目标解析设备的映射关系,调度设备100可以采用一致性哈希算法选取目标解析设备,即该调度设备100在确定该数据包对应的调度关键字后,可对调度关键字进行一致性哈希运算,得到一致性哈希值,然后根据该一致性哈希值从多个解析设备400中选取出目标解析设备,最后将数据包传输给该目标解析设备。
86.为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种数据包处理装置的实现方式。本实施例主要以该装置应用于图1中的调度设备100来举例说明。请参照图6,为本发明实施例提供的数据包处理装置700的一种功能模块图。需要说明的是,本实施例所提供的数据包处理装置700,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该数据包处理装置700包括:获取模块710、调度模块720和发送模块730。
87.该获取模块710,用于获取数据存储容器中的数据包。
88.可以理解,该获取模块710可以执行上述步骤s201。
89.该调度模块720,用于根据数据包从多个解析设备400中选取出目标解析设备。
90.可以理解,该调度模块720可以执行上述步骤s202。
91.该发送模块730,用于将数据包传输给目标解析设备进行解析。
92.可以理解,该发送模块730可以执行上述步骤s203。
93.可选地,该调度模块720可以用于确定数据包对应的调度关键字;调度关键字用于标识数据包所属tcp连接;根据调度关键字从多个解析设备中选取出目标解析设备。
94.其中,该调度模块720具体用于对调度关键字进行一致性哈希运算,得到一致性哈希值;根据一致性哈希值从多个解析设备400中选取出目标解析设备。
95.可以理解,该调度模块720可以执行上述子步骤s2021、子步骤s2022。
96.本发明实施例提供的数据包处理装置700,由于调度设备100与一数据存储容器关
联,且该数据存储容器还与至少一个抓包进程关联,每个抓包进程抓取自身所在主机200上的数据包,并将数据包传输到该数据存储容器,从而实现对多台主机200上的数据包进行抓取。该数据包处理装置700通过获取模块710从调度设备100关联的数据存储容器中获取数据包,调度模块720根据数据包从多个解析设备400中选取出目标解析设备,最后通过发送模块730将数据包传输至该目标解析设备进行解析,实现了同时对多台主机200上的数据包进行解析,并且,通过把数据存储容器中的数据包调度给多个解析设备400进行处理,能够将数据包解析的压力分摊到该多个解析设备400上,则对于企业来讲,不必专门采购高性能设备进行数据包解析,仅需利用若干低配设备,有效节省了资源成本。
97.请参照图7,是本发明实施例提供的调度设备100的一种方框示意图。该调度设备100包括存储器110、处理器120及通信模块130。存储器110、处理器120以及通信模块130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
98.其中,存储器110用于存储程序或者数据。存储器110可以是,但不限于,随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read

only memory,prom),可擦除只读存储器(erasable programmable read

only memory,eprom),电可擦除只读存储器(electric erasable programmable read

only memory,eeprom)等。
99.处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。例如,处理器120执行存储器110中存储的计算机程序时,可以实现本发明实施例揭示的数据包处理方法。
100.通信模块130用于通过网络建立调度设备100与其它通信终端之间的通信连接,并用于通过网络收发数据。
101.应当理解的是,图7所示的结构仅为调度设备100的结构示意图,调度设备100还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。图7中所示的各组件可以采用硬件、软件或其组合实现。
102.本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器120执行时可以实现本发明实施例揭示的数据包处理方法。
103.在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
104.另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
105.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
106.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.一种数据包处理方法,其特征在于,应用于调度设备,所述调度设备与多个解析设备通信连接,所述调度设备与一数据存储容器关联,所述数据存储容器还与至少一个抓包进程关联,所述抓包进程用于抓取所述抓包进程所在主机上的数据包,并将所述数据包传输到所述数据存储容器;所述方法包括:获取所述数据存储容器中的数据包;根据所述数据包从所述多个解析设备中选取出目标解析设备;将所述数据包传输给所述目标解析设备进行解析。2.根据权利要求1所述的方法,其特征在于,所述根据所述数据包从所述多个解析设备中选取出目标解析设备,包括:确定所述数据包对应的调度关键字;所述调度关键字用于标识所述数据包所属tcp连接;根据所述调度关键字从所述多个解析设备中选取出目标解析设备。3.根据权利要求2所述的方法,其特征在于,所述根据所述调度关键字从所述多个解析设备中选取出目标解析设备,包括:对所述调度关键字进行一致性哈希运算,得到一致性哈希值;根据所述一致性哈希值从所述多个解析设备中选取出目标解析设备。4.根据权利要求2或3所述的方法,其特征在于,所述调度关键字根据所述数据包对应的源ip地址、源端口、目标ip地址和目标端口确定。5.一种数据包处理装置,其特征在于,应用于调度设备,所述调度设备与多个解析设备通信连接,所述调度设备与一数据存储容器关联,所述数据存储容器还与至少一个抓包进程关联,所述抓包进程用于抓取所述抓包进程所在主机上的数据包,并将所述数据包传输到所述数据存储容器;所述装置包括:获取模块,用于获取所述数据存储容器中的数据包;调度模块,用于根据所述数据包从所述多个解析设备中选取出目标解析设备;发送模块,用于将所述数据包传输给所述目标解析设备进行解析。6.一种数据包处理系统,其特征在于,包括至少一个调度设备和至少一个主机,所述主机上运行有抓包进程,所述调度设备与多个解析设备通信连接,所述调度设备与一数据存储容器关联,所述数据存储容器还与至少一个抓包进程关联;所述抓包进程用于抓取所述抓包进程所在主机上的数据包,并将所述数据包传输到所述数据存储容器;所述调度设备用于获取所述数据存储容器中的数据包,根据所述数据包从所述多个解析设备中选取出目标解析设备,并将所述数据包传输给所述目标解析设备进行解析。7.根据权利要求6所述的系统,其特征在于,所述数据包处理系统还包括控制台,所述控制台与所述抓包进程、所述调度设备、所述解析设备均通信连接,所述控制台中维护有数据存储容器列表,所述数据存储容器列表包括至少一个数据存储容器的标识信息;所述控制台用于在确定需要抓取数据包的目标抓包进程后,根据所述数据存储容器列表为所述目标抓包进程选取对应的目标数据存储容器,并向所述目标抓包进程发送抓包指令,所述抓包指令中携带所述目标数据存储容器的标识信息。8.根据权利要求7所述的系统,其特征在于,所述数据包处理系统还包括监控设备,所
述监控设备与所述调度设备、所述解析设备、所述控制台均通信连接;所述监控设备用于根据所有调度设备各自对应的第一缓冲区大小计算第一平均值,在所述第一平均值大于第一设定阈值的情况下,向所述控制台发送第一扩容指令;所述第一扩容指令用于指示所述控制台增加新的调度设备和第一解析设备,并设置所述新的调度设备关联新的数据存储容器,所述第一解析设备向所述新的调度设备注册;所述第一缓冲区大小为每个调度设备中当前等待被处理的解析包的总大小;所述监控设备还用于根据每个调度设备下的所有解析设备各自对应的第二缓冲区大小计算第二平均值,若存在目标调度设备对应的第二平均值大于第二设定阈值,向所述控制台发送第二扩容指令;所述第二扩容指令用于指示所述控制台增加第二解析设备,并设置所述第二解析设备向所述目标调度设备注册;所述第二缓冲区大小为所述调度设备下的所有解析设备中当前等待被处理的解析包的总大小。9.一种调度设备,其特征在于,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1

4任一项所述的方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1

4任一项所述的方法。
技术总结
本发明实施例提出一种数据包处理方法、装置、系统、调度设备和存储介质,涉及数据处理领域。该调度设备与多个解析设备通信连接,该调度设备与一数据存储容器关联,数据存储容器还与至少一个抓包进程关联,每个抓包进程抓取自身所在主机上的数据包,并将数据包传输到数据存储容器,从而实现对多台主机上的数据包进行抓取。调度设备从自己关联的数据存储容器中获取数据包,并根据数据包从多个解析设备中选取出目标解析设备,将数据包传输至该目标解析设备进行解析。如此,实现了同时对多台主机上的数据包进行解析,并且,通过把数据存储容器中的数据包调度给多个解析设备进行处理,能够将数据包解析的压力分摊到该多个解析设备上。数据包解析的压力分摊到该多个解析设备上。数据包解析的压力分摊到该多个解析设备上。


技术研发人员:翁佳林 陈景雄
受保护的技术使用者:广州虎牙科技有限公司
技术研发日:2021.03.26
技术公布日:2021/6/29

转载请注明原文地址:https://doc.8miu.com/read-195.html

最新回复(0)