[发明专利]一种万兆协议解析方法及系统有效
| 申请号: | 201310087219.5 | 申请日: | 2013-03-19 |
| 公开(公告)号: | CN103179116A | 公开(公告)日: | 2013-06-26 |
| 发明(设计)人: | 王先高;高峰 | 申请(专利权)人: | 厦门市美亚柏科信息股份有限公司 |
| 主分类号: | H04L29/06 | 分类号: | H04L29/06 |
| 代理公司: | 深圳市博锐专利事务所 44275 | 代理人: | 张明 |
| 地址: | 361000 福建省厦门*** | 国省代码: | 福建;35 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 协议 解析 方法 系统 | ||
技术领域
本发明涉及一种万兆协议解析方法及系统。
背景技术
由于互联网高速发展,互联网上的结构化、非结构化、半结构化数据流量也呈指数增长,根据对ISP、IDC数据机房的监测,目前很多互联网服务商的机房数据出入口千兆已经普及,万兆也在快速发展建设之中,所以适应万兆流量的协议解析系统将是主流。对于镜像数据的协议解析来说,协议解析的性能是关键,当前百兆、千兆协议解析系统都是基于libpcap(网络数据包捕获函数)来抓包,受限于libpcap本身抓包性能的影响其丢包率非常严重,效果非常不好,当数据流量超过协议解析的瓶颈时,原本可以解析或还原的数据就会解析出错或还原不出来,随着互联网服务商机房设备的升级,百兆、千兆的方式其可用价值将逐步弱化并最终消失。
百兆、千兆的协议解析系统其本身大部分都没有考虑多进程、多线程来并行处理数据包,没有充分利用硬件资源,主要原因是协议解析本身需要对接收的数据包进行组包、过滤、分析,需要一种并行处理框架实现万兆协议数据的正确还原。
发明内容
本发明要解决的问题在于,提供一种万兆协议解析方法及系,能够通过并行处理实现万兆协议数据的正确还原。为解决上述问题,本发明采用的一个技术方案是:
提供一种万兆协议解析系统,包括:网卡驱动单元、数据包处理单元、协议解析单元以及存储单元,所述存储单元中存储有配置文件、数据包分发表以及协议解析数据链表,所述配置文件中记载有应用层设定的数据包过滤规则;所述网卡驱动单元包括:数据包处理线程ID运算模块,用于当接收到数据包后计算出数据包的第一hash值,并将第一hash值与系统CPU个数取模得到数据包处理线程ID,以及将第一hash值关联数据包处理线程ID并存入所述数据包分发表;以及第一数据包分发模块,用于根据数据包处理线程ID将数据包分发到相应的CPU数据包处理线程;
所述数据包处理单元包括:虚拟网络接口创建模块,用于对应每个CPU分别创建一个虚拟网络接口;数据包抓取模块,用于根据数据包处理线程在CPU注册的函数接收数据包;数据包过滤模块,用于根据数据包过滤规则对接收到的数据包进行过滤,然后将过滤后的数据包通过虚拟网络接口发送到相应的CPU;
所述协议解析单元包括:协议解析线程开启模块,用于对应每个CPU分别开启一个协议解析线程;监听模块,用于通过协议解析线程监听相应CPU的虚拟网络接口;过滤规则分发模块,用于从配置文件读取数据包过滤规则并发送至数据包处理单元,其中,每个协议解析线程对应各自的协议解析数据链表;协议解析线程ID运算模块,用于当监听模块监听到虚拟网络接口收到数据包后计算出数据包的第二hash值,并将第二hash值与协议解析线程个数取模得到协议解析线程ID;hash值比对模块,用于检索并判断所述数据包分发表中是否存在与第二hash值相等的第一hash值;第二数据包分发模块,用于当hash值比对模块确定所述数据包分发表中存与第二hash值相等的第一hash值时,将数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上;协议解析模块,用于以信号量方式读取协议解析数据链表上的数据包并对其进行协议解析、还原、入库、建索引操作。
其中,所述配置文件还记载有线程开启负载均衡阀值,所述存储单元中存储有指标情况,所述指标情况包含线程负载值;所述协议解析单元还包括:线程开启判定模块,用于当hash值比对模块确定所述数据包分发表中不存在与第二hash值相等的第一hash值时,根据指标情况判断协议解析线程ID对应的线程负载值是否大于所述线程开启负载均衡阀值;所述第二数据包分发模块还用于当线程开启判定模块确定线程负载值大于线程开启负载均衡阀值时,查找线程负载值最小的第二协议解析线程ID,并把数据包将以信号量方式分发到第二协议解析线程ID对应的协议解析数据链表上,以及将第二hash值关联第二协议解析线程ID并存入数据包分发表;所述第二数据包分发模块还用于当线程开启判定模块确定线程负载值小于线程开启的负载均衡阀值时,直接把数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上,以及将第二hash值关联协议解析线程ID并存入数据包分发表。
其中,所述指标情况还包含协议解析线程处理的数据包总数、异常数据包数、线程CPU使用率、线程数据处理流量,所述配置文件中还记载有第一权重值和第二权重值,所述线程负载=CPU使用率*第一权重值+线程数据处理流量*第二权重值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门市美亚柏科信息股份有限公司,未经厦门市美亚柏科信息股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310087219.5/2.html,转载请声明来源钻瓜专利网。





