一种建链报文的无锁处理系统及方法技术方案

技术编号:29214886 阅读:20 留言:0更新日期:2021-07-10 00:52
本发明专利技术提供了一种建链报文的无锁处理系统及方法,涉及数据处理领域;无锁处理系统设置于处理器中;包括多个独立的处理单元,每个处理单元分别包括:链路层解析模块,用于对建链报文进行解析;流表查询模块,用于流表查询单元中查询对应的流表信息;应用层解析模块,用于流表查询单元中存在对应的流表时,进行应用层解析,并将最终解析结果汇总至数据库中进行保存。上述技术方案的有益效果是:通过无锁处理系统,可以直接对流表进行查询和创建。通过本发明专利技术解决相关技术中建链报文效率低、丢包和报错等问题,提供一种建链报文的无锁处理系统及方法,简化协议栈交互形式,提高建链报文的效率和降低丢包以及报错的发生概率。的效率和降低丢包以及报错的发生概率。的效率和降低丢包以及报错的发生概率。

【技术实现步骤摘要】
一种建链报文的无锁处理系统及方法


[0001]本专利技术涉及数据处理领域,尤其涉及一种建链报文的无锁处理系统及方法。

技术介绍

[0002]随着大数据时代的到来,各种数据以指数级增长,流量包数据越来越大,快速采集还原数据流成为发展趋势,现有技术中数据采集通常是使用的共享的TCP/IP协议栈,接收到流量包后先经链路层解析,解析完再用读锁的方式查询流表,查到流表后,进入应用层解析并发往数据库,当未读到流表时,需要TCP协议栈用写锁的方式去创建流表,创建流表后再进行应用层解析,再发往数据库。
[0003]现有技术中,当多线程同时进行数据采集时必须通过解锁和写锁的的方式与TCP/IP协议栈进行交互,交互复杂,且会导致数据采集的时候建链报文效率低,单线程处理时,因为流量包过大,超出协议栈处理能力,会出现丢包和报错等问题。

技术实现思路

[0004]本专利技术提供了一种建链报文的无锁处理系统及方法的技术方案,旨在有效地改善乃至解决建链报文的效率低的问题,提升协议栈在数据采集的效率。
[0005]根据本专利技术,提供了一种建链报文的无锁处理系统,设置于处理器中;包括多个独立的处理单元,每个所述处理单元的输入端分别连接至网卡的输出端,每个所述处理单元的输出端分别连接至一数据库,每个所述处理单元的查询端分别连接至一流表查询单元;
[0006]每个所述处理单元用于承载一个处理线程,每个所述处理线程分别对应于一个协议栈;
[0007]则每个所述处理单元分别包括:
[0008]链路层解析模块,用于获取所述网卡输出的所述建链报文并进行解析,输出解析结果;
[0009]流表查询模块,连接所述链路层解析模块,用于根据所述解析结果,于所述流表查询单元中查询对应的流表信息,并输出查询结果;
[0010]应用层解析模块,连接所述流表查询模块,用于在所述查询结果为所述流表查询单元中存在对应的流表时,根据所述流表对所述建链报文进行应用层解析,并将最终解析结果汇总至所述数据库中进行保存。
[0011]进一步地,该无锁处理系统,其中,还包括一建表单元,分别连接每个所述处理单元以及所述流表查询单元,用于在所述查询结果为所述流表查询单元不存在对应的流表时,在所述流表查询单元中创建对应的流表。
[0012]进一步地,该无锁处理系统,其中,所述链路层解析模块解析得到的所述解析结果中包括所述建链报文的报文长度以及报文序号。
[0013]进一步地,该无锁处理系统,其中,所述流表查询模块采用无锁处理的方式对所述流表查询单元发起查询。
[0014]进一步地,该无锁处理系统,其中,所述建表单元采用无锁处理的方式在所述流表查询单元中建立对应的流表。
[0015]进一步地,该无锁处理系统,其中,所述建表单元为TCP协议栈。
[0016]进一步地,该无锁处理系统,其中,所有所述应用层解析模块输出的所述最终解析结果以聚合方式被送入至所述数据库中进行保存。
[0017]一种建链报文的无锁处理方法,应用于处理器;包括上述的无锁处理系统并包括:
[0018]步骤S1,将所述建链报文分别送入多个独立的处理线程中进行链路层解析;
[0019]步骤S2,分别根据链路层解析得到的解析结果查询是否存在对应的流表:
[0020]若否,则转向步骤S3;
[0021]若是,则转向步骤S4;
[0022]步骤S3,采用TCP协议栈创建对应的流表,随后转向步骤S4;
[0023]步骤S4,分别采用对应的流表对所述建链报文进行应用层解析;
[0024]步骤S5,将应用层解析得到的最终解析结果进行聚合后送入数据库中进行保存。
[0025]进一步地,该无锁处理方法,其中,所述步骤S2中,采用无锁处理的方式查询是否存在对应的流表。
[0026]进一步地,该无锁处理方法,其中,所述步骤S3中,采用无锁处理的方式创建对应的流表。
[0027]通过本专利技术提供的一种建链报文的无锁处理系统及方法,具有如下的有益效果:
[0028]1)简化协议栈交互形式;
[0029]2)提高建链报文的效率;
[0030]3)降低丢包以及报错的发生概率。
附图说明
[0031]构成本申请的一部分的附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及说明用于解释本专利技术,并不构成对本专利技术的不当限定,在附图中:
[0032]图1是现有技术中的建链报文处理流程图;
[0033]图2是本专利技术的较佳的实施例中,无锁处理系统的处理单元框图;
[0034]图3是本专利技术的较佳的实施例中,经过无锁处理的建链报文处理流程图;
[0035]图4是本专利技术的较佳的实施例中,无锁处理方法的流程图。
具体实施方式
[0036]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0037]需要说明的是,在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。
[0038]下面结合附图和具体实施例对本专利技术作进一步说明,但不作为本专利技术的限定。
[0039]现有技术中,当多线程同时进行数据采集时必须通过解锁和写锁的的方式与TCP/
IP协议栈进行交互,会导致数据采集的时候建链报文效率低下,单线程处理时,因为流量包过大,超出协议栈处理能力,会出现丢包和报错等问题。现有技术中协议栈的处理流程如图1中所示,网卡1接收建链报文,并送入处理单元2、处理单元5以及处理单元8,每个处理单元都承载一个独立的处理线程,处理单元2接收到网卡1发送的建链报文,进入链路层解析模块21中进行链路层解析并输出解析结果,将解析结果发送到流表查询模块22,进入流表查询单元3进行流表查询;同时处理单元5接收到网卡1发送的建链报文,进入链路层解析模块51中进行链路层解析并输出解析结果,将解析结果发送到流表查询模块52,进入流表查询单元3进行流表查询,同时处理单元8接收到网卡1发送的建链报文,进入链路层解析模块81中进行链路层解析并输出解析结果,将解析结果发送到流表查询模块82,进入流表查询单元3进行流表查询;当流表查询单元3中未查到所对应的流表,则进入建表单元4,通过建表单元4在流表查询单元3中建立相应的流表,并分别进入对应的处理单元2、处理单元5及处理单元8所对应的应用层解析模块23,应用层解析模块53及应用层解析模块83中作应用层解析,并输出最终的解析结果,以聚合方式送入数据库11中进行保存;当流表查询单元3中查到所对应的流表,进入对应的处理单元2、处理单元5及处理单元8所对应的应用层解析模块23,应用层解析模块53及应用层解析模块83中作应用层解析,并输出最终的解析结果,所有最终的解析结果以聚合方式送入数据库11中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种建链报文的无锁处理系统,设置于处理器中;其特征在于,包括多个独立的处理单元,每个所述处理单元的输入端分别连接至网卡的输出端,每个所述处理单元的输出端分别连接至一数据库,每个所述处理单元的查询端分别连接至一流表查询单元;每个所述处理单元用于承载一个处理线程,每个所述处理线程分别对应于一个协议栈;则每个所述处理单元分别包括:链路层解析模块,用于获取所述网卡输出的所述建链报文并进行解析,输出解析结果;流表查询模块,连接所述链路层解析模块,用于根据所述解析结果,于所述流表查询单元中查询对应的流表信息,并输出查询结果;应用层解析模块,连接所述流表查询模块,用于在所述查询结果为所述流表查询单元中存在对应的流表时,根据所述流表对所述建链报文进行应用层解析,并将最终解析结果汇总至所述数据库中进行保存。2.如权利要求1所述的无锁处理系统,其特征在于,还包括一建表单元,分别连接每个所述处理单元以及所述流表查询单元,用于在所述查询结果为所述流表查询单元不存在对应的流表时,在所述流表查询单元中创建对应的流表。3.如权利要求1所述的无锁处理系统,其特征在于,所述链路层解析模块解析得到的所述解析结果中包括所述建链报文的报文长度以及报文序号。4.如权利要求1所述的无锁处理系统,其特征在于,所述流表查询模块...

【专利技术属性】
技术研发人员:周明富樊志杰陈家明
申请(专利权)人:上海辰锐信息科技公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1