1.本发明涉及网络技术领域,尤其涉及一种报文去重方法及实现该报文去重方法的装置和存储介质。
背景技术:
2.在网络中,数据流量千变万化。出于对网络性能分析的需要,网络流量的可视化是网络维护保障的发展趋势。而进行网络流量的可视化分析的底层基础是对网络中实时传输的数据报文进行采集和捕获,根据采集到的数据报文进行统计分析,而在数据采集的过程中,通常需要进行报文去重处理,这里所说的报文去重是指去掉重复的报文。
3.网络数据包捕获(俗称抓包),通常采用两个方式,一种是采用网络设备端口镜像的方式,另一种是通过分光、高阻、以太网(电口)分路器等方式从链路旁路的方式。从客户端(client)发往服务器(server)的数据报文a,会经过网络的传递。对于网络可视化系统来说,通常会在全网的端到端布设多个数据采集点,可在各个采集点分别会捕获到报文a1、a2、a3、a4、a5,这些报文都是与原始报文a相关的报文,称为同源报文。报文去重就是要去除同源报文中的冗余部分,保留一份数据报文输出给后端的网络可视化分析系统。前端采集捕获的数据包,会发给后端的网络可视化分析工具进行进一步的解码,重复数据包的采集会给后端分析工具带来影响,比如会增加处理压力、增加业务处理的复杂度,因而需要进行去重处理,将去重后的数据报文转发至分析工具。
4.然而,现有技术中,去重方式多种多样,如基于netflow的报文去重方法,又如采用基于fpga的报文去重方法。对于基于netflow的报文去重方法,受限于netflow流表资源数量和硬件集成电路的限制,可去重的流的数量不会太多(netflow流表资源有限),可扩展性很差(受限于硬件集成电路),开发周期长且造价昂贵(需要专门设计对应的asic芯片)。而对于基于fpga的报文去重方法,最大去重能力受限于fpga的流量带宽,可扩展性虽然较netflow方案有所增加,但还是不够灵活。
技术实现要素:
5.本发明的目的在于提供一种报文去重方法,能够灵活的实现流量去重处理,并且可扩展性更好,可降低硬件设计成本。同时,还提供一种实现该报文去重方法的装置和存储介质。
6.为实现上述目的,本发明提出一种报文去重方法,所述报文去重方法包括:
7.接收报文并判断所述报文是否需要进行去重处理;
8.响应于报文需要进行去重处理,在报文中添加去重报文头,所述去重报文头包括用于标识报文所属流量的流编号字段和用于标识去重要求指标的指标字段;
9.根据报文携带的去重报文头查询所有去重引擎并判断是否存在处理过该种报文的去重引擎;
10.响应于判断结果,若存在处理过该种报文的去重引擎,则将报文发送至处理过该
报文的去重引擎中;若不存在处理过该种报文的去重引擎,则根据报文对应的去重要求指标将报文发送至相应的去重引擎中。
11.优选地,所述判断所述报文是否需要进行去重处理包括:
12.通过acl匹配报文所携带的信息,并在匹配时确定报文需要进行去重处理。
13.优选地,所述去重指标字段选自去重优先级、去重率、时延中的一种或多种,其中,去重优先级用于标识流量的去重等级;去重率用于标识流量所需的最低去重率;时延用于标识去重时所使用的最高时延。
14.优选地,每个所述去重引擎对应一信息表,所述信息表用于记录去重引擎的当前状态信息和固有属性参数信息,所述当前状态信息包括当前报文吞吐速率、处理过的流量所对应的流编号;所述固有属性参数信息包括最大报文吞吐速率、去重时延、去重率。
15.优选地,根据报文携带的去重报文头查询所有去重引擎并判断是否存在处理过该种报文的去重引擎包括:
16.查询所有去重引擎所对应的信息表中是否记录报文对应的流编号;
17.响应于信息表中记录了报文对应的流编号,则确定信息表对应的去重引擎处理过该种报文。
18.优选地,还包括:
19.在去重引擎过载时,将报文流发送至其他空闲并满足去重要求指标的去重引擎中,所述过载为去重引擎的当前报文吞吐速率接近或者大于自身的最大报文吞吐速率,所述空闲为去重引擎的当前报文吞吐速率低于自身的最大报文吞吐速率。
20.优选地,所有去重引擎并行处理报文。
21.本发明还揭示了一种报文去重装置,包括:
22.若干个去重引擎模块,用于对报文进行去重处理;
23.报文匹配模块,用于接收报文并判断所述报文是否需要进行去重处理;
24.报文编辑模块,用于响应于报文需要进行去重处理,在报文中添加去重报文头,所述去重报文头包括用于标识报文所属流量的流编号字段和用于标识去重要求指标的指标字段;
25.查找模块,用于根据报文携带的去重报文头查询所有去重引擎并判断是否存在处理过该种报文的去重引擎;
26.分流模块,用于响应于判断结果,在存在处理过该种报文的去重引擎时将报文发送至处理过该报文的去重引擎中,在不存在处理过该种报文的去重引擎时根据报文对应的去重要求指标将报文发送至相应的去重引擎中。
27.本发明还揭示了一种报文去重装置,所述报文去重装置包括:
28.至少一个处理器;
29.以及至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理器并且存储用于由所述至少一个处理器执行的计算机程序,所述计算机程序由所述至少一个处理器执行时,使得所述装置执行上述所述的方法。
30.本发明还揭示了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被机器执行时实现上述所述的方法。
31.本发明的有益效果是:
32.本发明能够灵活的实现流量去重处理,并且可扩展性更好,可降低硬件设计成本。
附图说明
33.图1是本发明一实施例中报文去重方法的流程图;
34.图2是去重报文头格式示意图。
35.图3是本发明一实施例中报文去重装置的结构框图。
具体实施方式
36.下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
37.由于现有技术中所采用的流量去重方案存在可扩展性差,不够灵活的缺点,本发明能够更加灵活的实现流量去重处理,且可扩展性更好。
38.如图1所示,为本发明所揭示的一种报文去重方法,包括如下步骤:
39.s100,接收报文并判断所述报文是否需要进行去重处理;
40.具体地,对于接收到的报文首先判断其是否需要进行去重处理,对于需要进行去重处理的报文,则进一步进行去重处理,而对于无需进行去重处理的报文,则进行转发处理。实施时,可通过acl(access control lists,访问控制列表)匹配报文中携带的信息,以确定报文是否需要进行去重处理。这里的acl是一种基于包过滤的访问控制技术,其可根据设定的报文匹配策略对数据包进行匹配过滤,其中,报文匹配策略通常由报文中携带的信息构成,信息如源地址、目的地址、端口号等等。当通过acl进行报文匹配时,对于匹配的报文则需要进行去重处理,而对于不匹配的报文,则无需进行去重处理。
41.s200,响应于报文需要进行去重处理,在报文中添加去重报文头,所述去重报文头包括用于标示报文所属流量的流编号和用于标示去重要求指标的指标字段;
42.具体地,当通过acl匹配出需要进行去重处理的报文后,进一步对报文进行编辑处理,以在报文中添加去重报文头,去重报文头用于区分不同的流量并标记该流量的去重要求指标。实施时,去重报文头优选设于原始报文之前,当然,可根据实际需求设置去重报文头的位置。
43.进一步地,如图2所示,为去重报文头的格式,其包括去重优先级字段、去重率字段、时延字段和流编号字段。其中,优先级字段占用1个字节,用于标识该流量的去重优先级,去重优先级高的优先处理;去重率字段占用1个字节,用于标识该流量所需的最低去重率;时延字段占用2个字节,用于标识该流量去重时所能使用的最高时延;流编号字段占用2个字节,用于标识该报文所属的流量,也即该报文属于哪一个流量。实施时,处于同一流量的报文会被添加上相同的去重报文头。
44.s300,根据报文携带的去重报文头查询所有去重引擎并判断是否存在处理过该种报文的去重引擎;
45.具体地,本发明采用了若干个不同的去重引擎来进行报文去重处理,若干个不同的去重引擎可并行处理。若干个不同的去重引擎可满足不同的去重要求指标,即不同的去重引擎根据自身的特性会有不同的性能参数,性能参数包括时延、去重率、可靠性、吞吐量等等,可适用于不同的流量,进而可实现流量的灵活去重处理。同时,这些去重引擎可根据实际需求进行灵活添加或删除,可扩展性更高。这里的去重引擎可以是基于fpga的去重引
擎,可以是基于netflow的去重引擎,还可以是基于cpu的去重引擎。也即是说,本发明所采用的去重引擎可以是上述去重引擎中的至少两种,当然,并不限于上述几种去重引擎,也可以采用其他能够实现去重处理的引擎。
46.当报文被添加上去重报文头后,进一步进行分流处理,也即确定报文需要到哪一个去重引擎中进行去重处理。实施时,根据报文携带的去重报文头去查询所有的去重引擎,以确定是否存在处理过该报文的去重引擎。在查找相应去重引擎时,首先对报文携带的去重报文头进行解析处理,以获取去重报文头中的流编号。当获取到流编号后,进一步查询所有去重引擎所对应的信息表,以确定哪一信息表中存在流编号。当某一信息表中存在该流编号时,则该信心表对应的去重引擎处理过该报文。当所有的信息表中均未存在该流编号,则表示没有一个去重引擎处理过该报文。
47.本实施例中,每个去重引擎均对应一个信息表,信息表用于记录去重引擎的一些信息,信息表可记录去重引擎的当前状态信息和固有属性参数信息,其中,当前状态信息包括当前报文吞吐速率、处理过的流量所对应的流编号;固有属性参数信息包括最大报文吞吐速率、去重时延、去重率。这里的报文吞吐率指的是去重引擎每秒能够处理的报文数量。实施时,每个去重引擎针对处理过的流量会将相应流编号记录在对应的信息表中。
48.s400,响应于判断结果,若存在处理过该种报文的去重引擎,则将报文发送至处理过该报文的去重引擎中;若不存在处理过该种报文的去重引擎,则根据报文对应的去重要求指标将报文发送至相应的去重引擎中。
49.具体地,当确定存在处理过该报文的去重引擎时,也即去重引擎所对应的信息表中记录的流量与该报文属于同一个流,因而将该报文发送至处理过该报文的去重引擎中。当确定不存在处理过该报文的去重引擎时,则为该报文从若干个去重引擎中选择一个满足相应去重要求指标的去重引擎,如对于时延要求低的报文,可选择基于netflow的去重引擎等。
50.进一步地,每个去重引擎在短时间内接收到较多的报文时,优选处理去重优先级高的报文。同时,当去重引擎当前的报文吞吐率接近或者超过最大的报文吞吐率时,则表示该去重引擎已经处于过载状态,进一步将该去重引擎处理的流量分配至其他处于空闲状态且满足去重要求指标的去重引擎中,这里的过载为去重引擎的当前报文吞吐速率接近或者大于自身的最大报文吞吐速率,空闲为去重引擎的当前报文吞吐速率低于自身的最大报文吞吐速率。
51.如图3所示,本发明还揭示了一种报文去重装置,包括报文匹配模块、报文编辑模块、报文解析模块、分流模块和若干个去重引擎模块。其中,报文匹配模块用于接收报文并判断所述报文是否需要进行去重处理;报文编辑模块用于响应于报文需要进行去重处理,在报文中添加去重报文头,去重报文头包括用于标识报文所属流的流编号字段和用于标识去重要求指标的指标字段;查找模块用于根据报文中去重报文头携带的信息查询所有去重引擎并判断是否存在处理过该种报文的去重引擎;分流模块用于响应于判断结果,在存在处理过该种报文的去重引擎时将报文发送至处理过该报文的去重引擎中,在不存在处理过该种报文的去重引擎时根据报文对应的去重要求指标将报文发送至相应的去重引擎中。
52.具体地,报文匹配模块通过acl匹配报文携带的信息,以确定报文是否需要进行去重处理,具体详见上述,在此不再一一赘述。当报文匹配模块匹配出需要进行去重处理的报
文后,将报文发送至报文编辑模块。报文编辑模块对报文进行编辑处理,将报文中添加去重报文头,去重报文头具体详见上述,在此在此不再一一赘述。
53.当报文添加去重报文头后,其被发送至查找模块,查找模块对报文携带的去重报文头进行解析,以获得流编号,并进一步查找每个去重引擎模块所对应的信息表,以确定是否存在处理过该报文的去重引擎模块。当查找到相应的去重引擎模块时,将报文发送至该去重引擎模块中进行去重处理。当未查找到相应的去重引擎模块时,根据去重报文头中所携带的去重要求指标,将报文发送至相应的去重引擎模块中。
54.通过采用多个不同的去重引擎模块,可满足不同的去重要求指标,适用于不同的流量,进而可实现流量的灵活去重处理。同时,多个去重引擎模块可根据不同的场景和不同的性能要求灵活的添加或删除,可扩展性好。实施时,当添加新的去重引擎模块时,将新的去重引擎模块与分流模块建立连接,该去重引擎模块的性能参数(如时延、去重率等等)需关联至分流模块中,以供分流模块依据报文携带的去重要求指标选择相应的去重引擎模块。
55.本发明还揭示了一种报文去重装置,包括存储器、处理器以及计算器程序,其中,计算器程序存储于处理器中并可在处理器中运行,如报文去重程序等。实施时,处理器执行该计算器程序时可实现上述方法中的各个步骤,如实现接收报文并判断所述报文是否需要进行去重处理的步骤等等。
56.示例性的,该计算器程序可被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器中,并由所述存储器执行,以完成本发明。其中,一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该计算机程序指令段用于描述计算机程序在所述报文去重装置中的执行过程。
57.本发明还揭示了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时,可实现上述方法。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、可执行文件或某些中间形式等,所述计算机可读介质可以包括能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)等等。
58.本发明能够灵活的实现流量去重处理,并且可扩展性更好,可降低硬件设计成本。
59.本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。
技术特征:
1.一种报文去重方法,其特征在于,所述报文去重方法包括:接收报文并判断所述报文是否需要进行去重处理;响应于报文需要进行去重处理,在报文中添加去重报文头,所述去重报文头包括用于标识报文所属流量的流编号字段和用于标识去重要求指标的指标字段;根据报文携带的去重报文头查询所有去重引擎并判断是否存在处理过该种报文的去重引擎;响应于判断结果,若存在处理过该种报文的去重引擎,则将报文发送至处理过该报文的去重引擎中;若不存在处理过该种报文的去重引擎,则根据报文对应的去重要求指标将报文发送至相应的去重引擎中。2.根据权利要求1所述的报文去重方法,所述判断所述报文是否需要进行去重处理包括:通过acl匹配报文所携带的信息,并在匹配时确定报文需要进行去重处理。3.根据权利要求1所述的报文去重方法,所述去重指标字段选自去重优先级、去重率、时延中的一种或多种,其中,去重优先级用于标识流量的去重等级;去重率用于标识流量所需的最低去重率;时延用于标识去重时所使用的最高时延。4.根据权利要求1所述的报文去重方法,每个所述去重引擎对应一信息表,所述信息表用于记录去重引擎的当前状态信息和固有属性参数信息,所述当前状态信息包括当前报文吞吐速率、处理过的流量所对应的流编号;所述固有属性参数信息包括最大报文吞吐速率、去重时延、去重率。5.根据权利要求4所述的报文去重方法,根据报文携带的去重报文头查询所有去重引擎并判断是否存在处理过该种报文的去重引擎包括:查询所有去重引擎所对应的信息表中是否记录报文对应的流编号;响应于信息表中记录了报文对应的流编号,则确定信息表对应的去重引擎处理过该种报文。6.根据权利要求1所述的报文去重方法,还包括:在去重引擎过载时,将报文流发送至其他空闲并满足去重要求指标的去重引擎中,所述过载为去重引擎的当前报文吞吐速率接近或者大于自身的最大报文吞吐速率,所述空闲为去重引擎的当前报文吞吐速率低于自身的最大报文吞吐速率。7.根据权利要求1所述的报文去重方法,所有去重引擎并行处理需要去重的报文。8.一种实现权利要求1~7任意一项所述的报文去重方法的报文去重装置,包括:若干个去重引擎模块,用于对报文进行去重处理;报文匹配模块,用于接收报文并判断所述报文是否需要进行去重处理;报文编辑模块,用于响应于报文需要进行去重处理,在报文中添加去重报文头,所述去重报文头包括用于标识报文所属流量的流编号字段和用于标识去重要求指标的指标字段;查找模块,用于根据报文携带的去重报文头查询所有去重引擎并判断是否存在处理过该种报文的去重引擎;分流模块,用于响应于判断结果,在存在处理过该种报文的去重引擎时将报文发送至处理过该报文的去重引擎中,在不存在处理过该种报文的去重引擎时根据报文对应的去重要求指标将报文发送至相应的去重引擎中。
9.一种报文去重装置,其特征在于,所述报文去重装置包括:至少一个处理器;以及至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理器并且存储用于由所述至少一个处理器执行的计算机程序,所述计算机程序由所述至少一个处理器执行时,使得所述装置执行根据权利要求1至7任一项所述的方法。10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被机器执行时实现根据权利要求1至7中任一项所述的方法。
技术总结
本发明揭示了一种报文去重方法、装置及存储介质,方法包括接收报文并判断报文是否需要进行去重处理;当需要时,在报文中添加去重报文头;根据报文携带的去重报文头查询所有去重引擎并判断是否存在处理过该种报文的去重引擎;若存在处理过该种报文的去重引擎,则将报文发送至处理过该报文的去重引擎中;若不存在处理过该种报文的去重引擎,则根据报文对应的去重要求指标将报文发送至相应的去重引擎中。本发明能够灵活的实现流量去重处理,并且可扩展性更好,可降低硬件设计成本。可降低硬件设计成本。可降低硬件设计成本。
技术研发人员:郭晓董 马佳彪 万欢 唐云丰
受保护的技术使用者:苏州盛科通信股份有限公司
技术研发日:2021.12.15
技术公布日:2022/3/8