[发明专利]多进程协同式网络流量解析方法及装置有效
申请号: | 201911089657.9 | 申请日: | 2019-11-08 |
公开(公告)号: | CN110908798B | 公开(公告)日: | 2022-11-25 |
发明(设计)人: | 丁剑明;刘鹏 | 申请(专利权)人: | 丁剑明 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;H04L69/08;H04L69/22 |
代理公司: | 北京锺维联合知识产权代理有限公司 11579 | 代理人: | 周利星 |
地址: | 719315 陕西省*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 进程 协同 网络流量 解析 方法 装置 | ||
本发明涉及一种多进程协同式网络流量解析方法,包括:主流量审计引擎进程即主TAA进程创建指定数量的子TAA进程以用于处理网络流量;子TAA进程和主TAA进程之间设置进程间通信链路,每一个子TAA进程和主TAA进程之间都会共享一个全局结构体,所述全局结构体的成员包括一个保存了分发给子TAA进程的流量文件的队列以及一个计数标识,针对每一个流量文件,每解析其一条报文则将所述计数标识加一;主TAA进程将采集进程保存的流量文件依次分发给子TAA进程,分发到子TAA进程的各个流量文件被依次插入其队列中。本发明还涉及一种多进程协同式网络流量解析装置。通过本发明,能够有效提升数据解析速率,同时降低丢包率。
技术领域
本发明涉及网络流量解析领域,尤其涉及一种多进程协同式网络流量解析方法及装置。
背景技术
网络流量解析是一种旨在采集网络流量,并针对网络流量进行解析审计的操作,流量经由网卡被采集后被传输到应用层进行解析,最终得到应用层数据,例如wireshark对modbus的解析流程如下:
1、网卡采集流量(报文/原始流量报文);
2、将报文按照OSI模型依次由低向高解析出frame数据、ether数据、ip数据、tcp数据和modbus数据等;
3、将上述得到的结果输出。
上述操作中采集由一个进程单独进行,解析处理(包括输出)由另一个进程负责,这也是当前整个市场以及学术界普遍采用的方式。这种方式简洁易懂,采用了一对一的生产者消费者模型。
然而,经研究发现,对于不太大的网络流量采用上述方式是一种良好的解决方案,但是面对大流量的冲击,上述方式会导致严重的丢包问题,丢包率与流量大小呈正相关。且当流量达到一定量后报文处理能力趋于饱和,继续加大流量则多出来的流量负载基本上会被完全抛弃。观察此时CPU占用,会发现单CPU占用达到100%左右,而整体CPU占用相对宽裕,使用的系统环境为:CPU:Intel(R)Core(TM)i7-3555LE CPU@2.50GHz,memory:16G,流量解析平台使用流量审计引擎TAA。经过分析,可以认定是在报文处理时出现了“一核有难,多核围观”的现象。当降低网络流量时,系统CPU的占用从100%开始降低,丢包率也随之降低。由此可见,单核CPU性能是影响报文解析的最直接因素。
发明内容
为了解决上述问题,本发明提供了一种多进程协同式网络流量解析方法及装置,在网络流量剧烈时,将多条报文缓存起来批量写入文件,这样减少了系统的IO操作频率,在一定程度了降低了系统CPU的占用,更重要的是,创建与系统CPU数量相同的多个进程来协同并行处理网络流量,从而提升了报文解析的性能,避免在大流量的冲击下严重丢包。
根据本发明的一方面,还提供了一种多进程协同式网络流量解析方法,所述方法包括:
主流量审计引擎进程即主TAA进程创建指定数量的子TAA进程以用于处理网络流量;
子TAA进程和主TAA进程之间设置进程间通信链路,每一个子TAA进程和主TAA进程之间都会共享一个全局结构体,所述全局结构体的成员包括一个保存了分发给子TAA进程的流量文件的队列以及一个计数标识,针对每一个流量文件,每解析其一条报文则将所述计数标识加一;
主TAA进程将采集进程保存的流量文件依次分发给子TAA进程,针对每一个子TAA进程,分发到的各个流量文件被依次插入所述子TAA进程的流量文件的队列中,并给出所述子TAA进程一个队列起始文件的位置以作为所述子TAA进程开始读取流量文件的位置;
其中,子TAA进程每解析完一个流量文件则从所述子TAA进程的队列中将其移除,同时将所述计数标识归零;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于丁剑明,未经丁剑明许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911089657.9/2.html,转载请声明来源钻瓜专利网。