发明名称 |
一种万兆协议解析方法及系统 |
摘要 |
本发明公开一种万兆协议解析方法,包括步骤:网卡驱动单元计算出数据包的第一hash值以及数据包处理线程ID,将数据包分发到相应的CPU数据包处理线程;数据包处理单元对应每个CPU分别创建一个虚拟网络接口,对接收到的数据包进行过滤并送到相应的CPU;协议解析单元监听到虚拟网络接口收到数据包后计算出数据包的第二hash值及协议解析线程ID,判断数据包分发表中是否存在与第二hash值相等的第一hash值,若存在,将数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上,对协议解析数据链表上的信号量方式的数据包进行协议解析、还原、入库、建索引操作。本发明公开一种万兆协议解析系统。 |
申请公布号 |
CN103179116A |
申请公布日期 |
2013.06.26 |
申请号 |
CN201310087219.5 |
申请日期 |
2013.03.19 |
申请人 |
厦门市美亚柏科信息股份有限公司 |
发明人 |
王先高;高峰 |
分类号 |
H04L29/06(2006.01)I |
主分类号 |
H04L29/06(2006.01)I |
代理机构 |
深圳市博锐专利事务所 44275 |
代理人 |
张明 |
主权项 |
一种万兆协议解析系统,其特征在于,包括:网卡驱动单元、数据包处理单元、协议解析单元以及存储单元,所述存储单元中存储有配置文件、数据包分发表以及协议解析数据链表,所述配置文件中记载有应用层设定的数据包过滤规则;所述网卡驱动单元包括:数据包处理线程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对应的协议解析数据链表上;协议解析模块,用于以信号量方式读取协议解析数据链表上的数据包并对其进行协议解析、还原、入库、建索引操作。 |
地址 |
361000 福建省厦门市软件园二期观日路12号美亚柏科大厦 |