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

一种基于DPDK的报文去重处理方法和装置与流程

2022-03-26 16:44:43 来源:中国专利 TAG:

一种基于dpdk的报文去重处理方法和装置
技术领域
1.本发明涉及网络通信技术领域,尤其涉及一种基于dpdk的报文处理方法和实现该报文去重处理方法的装置。


背景技术:

2.在网络中,数据流量千变万化。出于对网络性能分析的需要,网络流量的可视化是网络维护保障的发展趋势。而进行网络流量的可视化分析的底层基础是对网络中实时传输的数据报文进行采集和捕获,根据采集到的数据报文进行统计分析,而在数据采集的过程中,通常需要进行报文去重处理,这里所说的报文去重是指去掉重复的报文。
3.网络数据包捕获(俗称抓包),通常采用两个方式,一种是采用网络设备端口镜像的方式,另一种是通过分光、高阻、以太网(电口)分路器等方式从链路旁路的方式。从客户端(client)发往服务器(server)的数据报文a,会经过网络的传递。对于网络可视化系统来说,通常会在全网的端到端布设多个数据采集点,可在各个采集点分别会捕获到报文a1、a2、a3、a4、a5,这些报文都是与原始报文a相关的报文,称为同源报文。报文去重就是要去除同源报文中的冗余部分,保留一份数据报文输出给后端的网络可视化分析系统。前端采集捕获的数据包,会发给后端的网络可视化分析工具进行进一步的解码,重复数据包的采集会给后端分析工具带来影响,比如会增加处理压力、增加业务处理的复杂度,因而需要进行去重处理,将去重后的数据报文转发至分析工具。
4.然而,现有技术中,去重方式多种多样,如基于netflow的报文去重方法,又如采用基于fpga的报文去重方法。对于基于netflow的报文去重方法,受限于netflow流表资源数量和硬件集成电路的限制,可去重的流的数量不会太多(netflow流表资源有限),可扩展性很差(受限于硬件集成电路),开发周期长且造价昂贵(需要专门设计对应的asic芯片)。而对于基于fpga的报文去重方法,最大去重能力受限于fpga的流量带宽,可扩展性虽然较netflow方案有所增加,但还是不够灵活。


技术实现要素:

5.本发明的目的在于提供一种基于dpdk的报文去重处理方法,能够灵活的实现报文去重处理,具有可扩展性好、成本低廉的优点,同时,还提供一种实现该方法的装置。
6.为实现上述目的,本发明提出一种基于dpdk的报文去重处理方法,所述报文处理方法包括:
7.交换芯片接收报文并判断所述报文是否需要进行去重处理;
8.响应于报文需要进行去重处理,在报文中添加去重标签,所述去重标签包括用于标识报文需要进行去重处理的标签字段和用于标识报文所属流量的流编号字段;
9.交换芯片根据报文携带的五元组信息将报文通过不同的接口通道输送至通用处理器中;
10.通用处理器将同一个接口通道接收到的报文分配至其不同的处理器内核中;
11.每个处理器内核对报文进行解析,获取报文携带的关键字,并根据关键字进行哈希值计算,进一步利用计算出的哈希值查找哈希表;
12.判断查找结果与哈希值和关键字段是否均匹配,以及相应的哈希表项是否老化,在查找结果与哈希值和关键字段均匹配以及相应的哈希表项未老化时确定该报文重复并将其丢弃。
13.作为本发明所述方法的一种改进,交换芯片根据报文携带的五元组信息将报文通过不同的接口通道输送至通用处理器中。
14.作为本发明所述方法的一种改进,通用处理器将同一个接口通道接收到的报文根据五元组信息分配分配至不同的处理器内核中。
15.作为本发明所述方法的一种改进,每个接口通道对应若干个报文处理队列,每个报文处理队列对应一处理器内核,通用处理器将同一个接口通道接收到的报文根据五元组信息分配至不同的报文处理队列中,以将同一个接口通道接收到的报文分配至不同的处理器内核。
16.作为本发明所述方法的一种改进,每个处理器内核对应一个哈希表,所述哈希表的存储空间为使能报文去重时静态分配的数组。
17.作为本发明所述方法的一种改进,判断哈希表是否老化包括:
18.计算接收报文的时间戳与哈希表项中存储的时间戳的差值;
19.判断该差值是否小于或等于老化周期;
20.当差值小于或等于老化周期时,确定哈希表未老化;当差值大于老化周期时,确定哈希表老化。
21.作为本发明所述方法的一种改进,还包括:
22.通用处理器将去重后的报文发送至交换芯片中,交换芯片根据报文中携带的流编号字段将报文发往对应的出端口。
23.本发明还揭示了一种基于dpdk的报文去重处理装置,所述装置包括:
24.第一判断模块,用于使交换芯片接收报文并判断所述报文是否需要进行去重处理;
25.标签添加模块,用于在第一判断模块判断报文需要进行去重处理时使交换芯片在报文中添加去重标签,所述去重标签包括用于标识报文需要进行去重处理的标签字段和用于标识报文所属流量的流编号字段;
26.报文发送模块,用于使交换芯片根据报文携带的五元组信息将报文通过不同的接口通道输送至通用处理器中;
27.报文接收模块,用于使通用处理器将同一个接口通道接收到的报文分配至其不同的处理器内核中;
28.查找模块,用于使处理器内核对报文进行解析,获取报文携带的关键字,并根据关键字进行哈希值计算,进一步利用计算出的哈希值查找哈希表;
29.第二判断模块,用于判断查找结果与哈希值和关键字段是否均匹配,以及相应的哈希表项是否老化;
30.去重模块,用于在查找结果与哈希值和关键字段均匹配以及相应的哈希表项未老化时确定该报文重复并将其丢弃。
31.作为本发明所述装置的一种改进,所述报文发送模块根据报文携带的五元组信息将报文通过不同的接口通道输送至通用处理器中。
32.作为本发明所述装置的一种改进,每个处理器内核对应一个哈希表,所述哈希表的存储空间为使能报文去重时静态分配的数组。
33.本发明的有益效果是:
34.本发明通过在通用处理器上利用dpdk实现报文去重处理,具有可扩展性好、成本低廉的优点。
附图说明
35.图1是本发明一实施例中基于dpdk的报文去重处理方法的流程图;
36.图2是报文格式示意图;
37.图3是本发明一实施例中基于dpdk的报文去重装置的结构框图。
具体实施方式
38.下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
39.如图1所示,为本发明所揭示的一种基于dpdk的报文去重处理方法,包括如下步骤:
40.s100,交换芯片接收报文并判断所述报文是否需要进行去重处理;
41.具体地,在进行报文去重处理时,交换芯片,如asic(application specific integretedn circult,专用集成电路)等,对于接收到的报文进行判断,以确定其是否需要进行处理。对于需要去重处理的报文,则进一步将报文输送至通用处理器(如cpu等)中进行去重处理,而对于不需要去重处理的报文,则进行转发处理。实施时,可通过acl(access control list,访问控制列表)匹配报文中携带的信息,以确定报文是否需要进行去重处理。这里的acl是一种基于包过滤的访问控制技术,其可根据设定的报文匹配策略对数据包进行匹配过滤,其中,报文匹配策略通常由报文中携带的信息构成,信息如源地址、目的地址、端口号等等。当通过acl进行报文匹配时,对于匹配的报文则需要进行去重处理,而对于不匹配的报文,则无需进行去重处理。
42.s200,响应于报文需要进行去重处理,在报文中添加去重标签,所述去重标签包括用于标识报文需要去重处理的标签字段和用于标识报文所属流量的流编号字段;
43.具体地,当通过acl匹配出需要去重处理的报文后,进一步对报文进行编辑处理,以在报文中添加去重标签,去重标签可用于标识该报文需要进行去重处理,以将其与其他报文进行区分。本实施例中,去重标签优选添加于二层头和三层头之间,当然,其他实施例中,可根据实际需求设置去重标签的位置。
44.进一步地,如图2所示,去重标签包括标签类型字段和流编号字段,其中,标签类型字段占用2个字节,用于标识报文需要去重处理;流编号字段占用2个字节,用于标识该报文所属的流量,也即该报文属于哪一个流量,以区分不同的流量。实施时,属于同一流量的报文,其携带的流编号字段的值相同。
45.s300,交换芯片将报文通过不同的接口通道输送至通用处理器中,通用处理器进一步将同一个接口通道接收到的报文分配至不同的处理器内核中;
46.具体地,交换芯片与通用处理器之间通过接口模块进行连接,该接口模块具有多个接口通道。该通用处理器中运行dpdk,其可进行报文去重处理。对于添加去重标签后的报文,交换芯片进一步选择合适的接口通道,以将报文输送至通用处理器中。实施时,交换芯片根据报文携带的五元组信息进行哈希运算,根据运算结果将报文分配至不同的接口通道上,也即,对于相同五元组的报文被分配至同一接口通道。这里的五元组信息包括报文的源ip地址、目的ip地址、协议号、源端口号和目的端口号。
47.由于通用处理器通常包括多个处理器内核(core)。因而,对于同一个接收通道内接收到的报文需要进一步处理,以确定该报文需要输送至哪一个处理器内核进行处理。实施时,可通过dpdk工具包中的网卡管理,为每个接口通道分配若干个报文处理队列,每个报文处理队列分配一些用于接收报文的环形无锁队列。同时,利用dpdk工具包中的线程-处理器内核亲和性,为每个报文处理队列分配一个处理器内核。当同一个接收通道内接收到报文后,进一步根据报文携带的五元组信息进行哈希计算,依据运算结果选择相应的报文处理队列,进而可将报文发送至与该报文处理队列对应的处理器内核中。也就是说,首先根据报文携带的五元组信息进行哈希运算,以选择一个接口通道。每个接口通道对于接收到的报文进一步根据携带的五元组信息进行哈希运算,依据哈希运算结果选择一个报文处理队列,进而可将报文发送至相应的处理器内核中。
48.s400,每个处理器内核对报文进行解析,获取报文携带的关键字,并根据关键字进行哈希值计算,进一步利用哈希值查找哈希表;
49.s500,判断查找结果与哈希值和关键字段是否均匹配,以及相应的哈希表项是否老化,在查找结果与哈希值和关键字段均匹配以及相应的哈希表项未老化时则确定该报文重复并将其丢弃。
50.具体地,处理器内核接收到报文后,每个处理器内核会启动一个去重线程,该去重线程不间断地轮询其所管理的报文处理队列,以获取报文处理队列中的报文,并进行后续去重处理。处理器内核在对接收到的报文进行去重处理时,首先对接收到的报文进行解析,以获取报文携带的关键字段,如源ip地址字段、目的ip地址字段、协议号字段、源端口号字段和目的端口号字段等等。当获取这些关键字段后,通过哈希函数计算出哈希值。进一步利用该哈希值去查找哈希表,以判断报文是否重复,这里的哈希表中记录报文所对应的信息,如哈希值、关键字段、报文的时间戳等。并且该哈希表的存储空间是使能去重功能时静态分配的数组。通过采用数组而非采用动态加载链表,可减少内存读写、存储空间动态申请释放、cpu预算的开销等,提升处理性能。
51.进一步地,在确定报文是否重复时,可根据查找结果与哈希值和关键字段是否均匹配来判断。当查找到相应的哈希值且哈希值所对应的哈希表项中关键字段也匹配,并且哈希表项未老化,则可确定报文重复,并进行丢弃处理。而当查找结果与哈希值和关键字不同或者哈希表项老化时,则可确定报文没有重复,此时,需进一步将哈希值、关键字和报文的时间戳存储在哈希表内。实施时,哈希表项是否老化可根据如下步骤进行判断:内核处理器接收到报文时,记录接收到报文的时间戳。进一步计算该时间戳与查找到的哈希表项内记录的时间戳的差值。当该差值小于或等于老化周期时,则可确定该哈希表项未老化。当该差值大于老化周期时,则可确定该哈希表项老化。通过利用接收报文的时间戳在查找哈希表的过程中来确定哈希表是否老化,而非采用定时去遍历哈希表项来删除已老化的哈希表
项,可减少通用处理器的计算开销。并且每个内核处理器对应一个哈希表,而非内核间共享,避免了多个线程共同访问同一块内存,实现了无锁查找,并提升通用处理器的性能。
52.当处理器内核完成报文去重处理后,将报文发送至交换芯片中,交换芯片进一步根据报文中的流编号将报文发送至不同的出端口,实现报文的转发。
53.如图3所示,本发明还揭示了一种基于dpdk的报文去重处理装置,包括第一判断模块、标签添加模块、报文发送模块、报文接收模块、查找模块、第二判断模块和去重模块。其中,第一判断模块用于使交换芯片接收报文并判断所述报文是否需要进行去重处理;标签添加模块用于在第一判断模块判断报文需要进行去重处理时使交换芯片在报文中添加去重标签,所述去重标签包括用于标识报文需要进行去重处理的标签字段和用于标识报文所属流量的流编号字段;报文发送模块用于使交换芯片根据报文携带的五元组信息将报文通过不同的接口通道输送至通用处理器中;报文接收模块用于使通用处理器将同一个接口通道接收到的报文分配至其不同的处理器内核中;查找模块用于使处理器内核对报文进行解析,获取报文携带的关键字,并根据关键字进行哈希值计算,进一步利用计算出的哈希值查找哈希表;第二判断模块用于判断查找结果与哈希值和关键字段是否均匹配,以及相应的哈希表项是否老化;去重模块用于在查找结果与哈希值和关键字段均匹配以及相应的哈希表项未老化时确定该报文重复并将其丢弃。
54.具体地,在进行报文去重处理时,交换芯片通过第一判断模块对接收到的报文进行判断,以确定其是否需要进行处理。第一判断模块如何判断报文需要进行去重处理,详见上述在此不再一一赘述。对于需要进行去重处理的报文,进一步对报文进行编辑处理,通过标签添加模块在报文中添加去重标签,去重标签可用于标识该报文需要进行去重处理,以将其与其他报文进行区分。去重标签详见上述,在此不再一一赘述。对于添加去重标签后的报文,交换芯片进一步通过报文发送模块选择合适的接口通道,以将报文输送至通用处理器中。当同一个接收通道内接收到报文后,进一步根据报文携带的五元组信息进行哈希计算,依据运算结果选择相应的报文处理队列,进而可将报文发送至与该报文处理队列对应的处理器内核中。处理器内核接收到报文后,每个处理器内核会启动一个去重线程,该去重线程不间断地轮询其所管理的报文处理队列,以获取报文处理队列中的报文,并进行后续去重处理。处理器内核在去重时,首先通过查找模块对接收到的报文进行解析,以获取报文携带的关键字段,如源ip地址字段、目的ip地址字段、协议号字段、源端口号字段和目的端口号字段等等。当获取这些关键字段后,通过哈希函数计算出哈希值。当计算出哈希值后,进一步利用该哈希值去查找哈希表,并通过第二判断模块判断报文是否重复。当查找到相应的哈希值且哈希值所对应的哈希表项中关键字段也匹配,并且哈希表项未老化,则可通过去重模块确定报文重复,并进行丢弃处理。
55.本发明通过在通用处理器上利用dpdk实现报文去重处理,具有可扩展性好、成本低廉的优点。
56.本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。
再多了解一些

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

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

相关文献