一种万兆协议解析方法及系统的制作方法

文档序号:7553577阅读:185来源:国知局
专利名称:一种万兆协议解析方法及系统的制作方法
技术领域
本发明涉及一种万兆协议解析方法及系统。
背景技术
由于互联网高速发展,互联网上的结构化、非结构化、半结构化数据流量也呈指数增长,根据对ISP、IDC数据机房的监测,目前很多互联网服务商的机房数据出入口千兆已经普及,万兆也在快速发展建设之中,所以适应万兆流量的协议解析系统将是主流。对于镜像数据的协议解析来说,协议解析的性能是关键,当前百兆、千兆协议解析系统都是基于Iibpcap (网络数据包捕获函数)来抓包,受限于Iibpcap本身抓包性能的影响其丢包率非常严重,效果非常不好,当数据流量超过协议解析的瓶颈时,原本可以解析或还原的数据就会解析出错或还原不出来,随着互联网服务商机房设备的升级,百兆、千兆的方式其可用价值将逐步弱化并最终消失。百兆、千兆的协议解析系统其本身大部分都没有考虑多进程、多线程来并行处理数据包,没有充分利用硬件资源,主要原因是协议解析本身需要对接收的数据包进行组包、过滤、分析,需要一种并行处理框架实现万兆协议数据的正确还原。

发明内容
本发明要解决的问题在于,提供一种万兆协议解析方法及系,能够通过并行处理实现万兆协议数据的正确还原。为解决上述问题,本发明采用的一个技术方案是:提供一种万兆协议解析系统,包括:网卡驱动单元、数据包处理单元、协议解析单元以及存储单元,所述存储单元中存储有配置文件、数据包分发表以及协议解析数据链表,所述配置文件中记载有应用层设定的数据包过滤规则;所述网卡驱动单元包括:数据包处理线程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并存入数据包分发表。其中,所述指标情况还包含协议解析线程处理的数据包总数、异常数据包数、线程(PU使用率、线程数据处理流量,所述配置文件中还记载有第一权重值和第二权重值,所述线程负载=CPU使用率*第一权重值+线程数据处理流量*第二权重值。其中,所述第一 hash值和第二 hash值的计算公式为,hash=((数据包源IP地址~数据包目的IP地址)~ (数据包源端口 ~数据包目的端口))%最大四元组链表数据长度。其中,所述配置文件中还记载有指标情况刷新周期S和分发表清空周期M,所述协议解析单元每隔时间S统计并刷新每个协议解析线程的指标情况,所述数据包分发表每隔时间M清空一次。本发明采用的另一个技术方案是:提供一种万兆协议解析方法,运行于所述的万兆协议解析系统中,包括步骤:网卡驱动单元接收到数据包后计算出数据包的第一 hash值,并将第一 hash值与系统CPU个数取模得到数据包处理线程ID,然后将第一 hash值关联数据包处理线程ID并存入一数据包分发表,以及根据数据包处理线程ID将数据包分发到相应的CPU数据包处理线程;数据包处理单元对应每个CPU分别创建一个虚拟网络接口,以及根据数据包处理线程在CPU注册的函数接收数据包,并根据数据包过滤规则对接收到的数据包进行过滤,然后将过滤后的数据包通过虚拟网络接口发送到相应的CPU ;协议解析单元对应每个CPU分别开启一个协议解析线程,并通过协议解析线程监听相应CPU的虚拟网络接口,以及从配置文件读取应用层设定的数据包过滤规则并发送至数据包处理单元,其中,每个协议解析线程对应各自的协议解析数据链表;协议解析单元监听到虚拟网络接口收到数据包后计算出数据包的第二 hash值,并将第二 hash值与协议解析线程个数取模得到协议解析线程ID ;协议解析单元检索并判断所述数据包分发表中是否存在与第二 hash值相等的第一 hash值;当确定所述数据包分发表中存与第二 hash值相等的第一 hash值时,协议解析单元将数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上;协议解析单元以信号量方式读取协议解析数据链表上的数据包并对其进行协议解析、还原、入库、建索引操作。
其中,所述的一种万兆协议解析方法还包括:当确定所述数据包分发表中不存在与第二 hash值相等的第一 hash值时,协议解析单元根据指标情况判断协议解析线程ID对应的线程负载值是否大于配置文件设置的线程开启负载均衡阀值,其中,所述指标情况包含线程负载值;当确定线程负载值大于线程开启负载均衡阀值时,协议解析单元查找线程负载值最小的第二协议解析线程ID,把数据包以信号量方式分发到第二协议解析线程ID对应的协议解析数据链表上,同时将第二 hash值关联第二协议解析线程ID并存入数据包分发表;当确定线程负载值小于线程开启的负载均衡阀值时,协议解析单元直接把数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上,同时将第二 hash值关联协议解析线程ID并存入数据包分发表。其中,所述指标情况还包含协议解析线程处理的数据包总数、异常数据包数、线程(PU使用率、线程数据处理流量,所述配置文件中还记载有第一权重值和第二权重值,所述线程负载=CPU使用率*第一权重值+线程数据处理流量*第二权重值。其中,所述第一 hash值和第二 hash值的计算公式为,hash=((数据包源IP地址~数据包目的IP地址)~ (数据包源端口 ~数据包目的端口))%最大四元组链表数据长度。其中,所述配置文件中还记载有指标情况刷新周期S和分发表清空周期M,所述协议解析单元每隔时间S统计并刷新每个协议解析线程的指标情况,所述数据包分发表每隔时间M清空一次。本发明的万兆协议解析系统及方法,通过计算数据包hash值并与CPU个数和协议解析线程数量分别获取数据包处理线程ID、协议解析线程ID,网卡驱动单元将数据包分发相应的数据包处理线程ID,数据包处理单元对应CPU创建虚拟网络接口并通过虚拟网络接口将数据包分发到相应的协议解析线程ID,当监听到虚拟接口接收到数据包时协议解析单元将数据包以信号量方式分发到协议解析数据链表上,并对协议解析数据链表记录的数据包进行解析。实现网卡驱动单元、数据包处理单元,协议解析单元对数据包进行并行处理,并考虑了负载均衡策略,大大提高整体协议解析系统的处理性能,在万兆流量下做到协议解析不丢包。


图1是本发明一实施方式中一种万兆协议解析系统的整体框图;图2是本发明一实施方式中网卡驱动单元的结构框图;图3是本发明一实施方式中数据包处理单元的结构框图;图4是本发明一实施方式中协议解析单元的结构框图;图5是本发明一实施方式中一种万兆协议解析方法的流程图。主要元件符号说明网卡驱动单元10 ;数据包处理单元20 ;协议解析单元30 ;存储单元40 ;CPU50 ;处理线程ID运算模块11 ;第一数据包分发模块12 ;虚拟网络接口创建模块21 ;数据包抓取模块22 ;数据包过滤模块23 ;协议解析线程开启模块31 ;监听模块32 ;过滤规则分发模块33 ;协议解析线程ID运算模块34 ;hash值比对模块35 ;第二数据包分发模块36 ;协议解析模块37 ;线程开启判定模块38。
具体实施例方式为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。请一并参阅图1、图2,图1是本发明一实施方式中一种万兆协议解析系统的整体框图。图2是本发明一实施方式中网卡驱动单元的结构框图。一种万兆协议解析系统包括网卡驱动单元10、数据包处理单元20、协议解析单元30、存储单元40以及多个CPU50,所述存储单元40中存储有配置文件、数据包分发表以及协议解析数据链表,所述配置文件中记载有应用层设定的数据包过滤规则。所述网卡驱动单元10包括数据包处理线程ID运算模块11、第一数据包分发模块
12。所述数据包处理线程ID运算模块11用于当接收到数据包后计算出数据包的第一 hash值,并将第一 hash值与系统CPU个数取模得到数据包处理线程ID,以及将第一 hash值关联数据包处理线程ID并存入所述数据包分发表。所述第一数据包分发模块12用于根据数据包处理线程ID将数据包分发到相应的CPU数据包处理线程。请参阅图3,是本发明一实施方式中数据包处理单元的结构框图。所述数据包处理单元20包括虚拟网络接口创建模块21、数据包抓取模块22、数据包过滤模块23。所述虚拟网络接口创建模块21用于对应每个CPU50分别创建一个虚拟网络接口。所述数据包抓取模块22用于根据数据包处理线程在CPU50注册的函数接收数据包。所述数据包过滤模块23用于根据数据包过滤规则对接收到的数据包进行过滤,然后将过滤后的数据包通过虚拟网络接口发送到相应的CPU50。请参阅图4,是本发明一实施方式中协议解析单元的结构框图。所述协议解析单元30包括协议解析线程开启模块31、监听模块32、过滤规则分发模块33、协议解析线程ID运算模块34、hash值比对模块35、第二数据包分发模块36以及协议解析模块37。所述协议解析线程开启模块31用于对应每个CPU50分别开启一个协议解析线程,所述监听模块32用于通过协议解析线程监听相应CPU50的虚拟网络接口,所述过滤规则分发模块33用于从配置文件读取数据包过滤规则并发送至数据包处理单元20,其中,每个协议解析线程对应各自的协议解析数据链表。所述协议解析线程ID运算模块34用于当监听模块32监听到虚拟网络接口收到数据包后计算出数据包的第二 hash值,并将第二 hash值与协议解析线程个数取模得到协议解析线程ID。hash值比对模块35用于检索并判断所述数据包分发表中是否存在与第二 hash值相等的第一 hash值。第二数据包分发模块36用于当hash值比对模块35确定所述数据包分发表中存与第二 hash值相等的第一 hash值时,将数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上。所述配置文件还记载有线程开启负载均衡阀值,所述存储单元中存储有指标情况,所述指标情况包含线程负载值。所述协议解析单元30还包括线程开启判定模块38,用于当hash值比对模块35确定所述数据包分发表中不存在与第二 hash值相等的第一 hash值时,根据指标情况判断协议解析线程ID对应的线程负载值是否大于所述线程开启负载均衡阀值。在本实施方式中,所述指标情况还包含协议解析线程处理的数据包总数、异常数据包数、线程CPU使用率、线程数据处理流量,所述配置文件中还记载有第一权重值和第二权重值,所述线程负载=CPU使用率*第一权重值+线程数据处理流量*第二权重值。所述第二数据包分发模块36还用于当线程开启判定模块38确定线程负载值大于线程开启负载均衡阀值时,查找线程负载值最小的第二协议解析线程ID,并把数据包以信号量方式分发到第二协议解析线程ID对应的协议解析数据链表上,以及将第二 hash值关联第二协议解析线程ID并存入数据包分发表。所述第二数据包分发模块36还用于当线程开启判定模块38确定线程负载值小于线程开启的负载均衡阀值时,直接把数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上,以及将第二 hash值关联协议解析线程ID并存入数据包分发表。所述协议解析模块37用于以信号量方式读取协议解析数据链表上的数据包并对其进行协议解析、还原、入库、建索引操作。其中,所述第一 hash值和第二 hash值的计算公式为,hash=((数据包源IP地址~数据包目的IP地址Γ (数据包源端口 '数据包目的端口))%最大四元组链表数据长度。 在本实施方式中,所述配置文件中还记载有指标情况刷新周期S和分发表清空周期M,所述协议解析单元每隔时间S统计并刷新每个协议解析线程的指标情况,所述数据包分发表每隔时间M清空一次,保持负载均衡策略的稳定性。请参阅图5,是本发明一实施方式中一种万兆协议解析方法的执行流程图。一种万兆协议解析方法,运行于上述万兆协议解析系统中,包括:步骤S1、网卡驱动单元接收到数据包后计算出数据包的第一 hash值,并将第一hash值与系统CPU个数取模得到数据包处理线程ID,然后将第一 hash值关联数据包处理线程ID并存入一数据包分发表,以及根据数据包处理线程ID将数据包分发到相应的CPU数据包处理线程;步骤S2、数据包处理单元对应每个CPU分别创建一个虚拟网络接口,以及根据数据包处理线程在CPU注册的函数接收数据包,并根据数据包过滤规则对接收到的数据包进行过滤,然后将过滤后的数据包通过虚拟网络接口发送到相应的CPU ;步骤S3、协议解析单元对应每个CPU分别开启一个协议解析线程,并通过协议解析线程监听相应CPU的虚拟网络接口,以及从配置文件读取应用层设定的数据包过滤规则并发送至数据包处理单元,其中,每个协议解析线程对应各自的协议解析数据链表;步骤S4、协议解析单元监听到虚拟网络接口收到数据包后计算出数据包的第二hash值,并将第二 hash值与协议解析线程个数取模得到协议解析线程ID ;步骤S5、协议解析单元检索并判断所述数据包分发表中是否存在与第二 hash值相等的第一 hash值;步骤S6、当确定所述数据包分发表中存与第二 hash值相等的第一 hash值时,协议解析单元将数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上;步骤S7、协议解析单元以信号量方式读取协议解析数据链表上的数据包并对其进行协议解析、还原、入库、建索引操作。其中,所述的万兆协议解析方法还包括:步骤S8、当确定所述数据包分发表中不存在与第二 hash值相等的第一 hash值时,协议解析单元根据指标情况判断协议解析线程ID对应的线程负载值是否大于配置文件设置的线程开启负载均衡阀值,其中,所述指标情况包含线程负载值;步骤S9、当确定线程负载值大于线程开启负载均衡阀值时,协议解析单元查找线程负载值最小的第二协议解析线程ID,把数据包以信号量方式分发到第二协议解析线程ID对应的协议解析数据链表上,同时将第二 hash值关联第二协议解析线程ID并存入数据包分发表;步骤S10、当确定线程负载值小于线程开启的负载均衡阀值时,协议解析单元直接把数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上,同时将第二hash值关联协议解析线程ID并存入数据包分发表。其中,所述指标情况还包含协议解析线程处理的数据包总数、异常数据包数、线程(PU使用率、线程数据处理流量,所述配置文件中还记载有第一权重值和第二权重值,所述线程负载=CPU使用率*第一权重值+线程数据处理流量*第二权重值。其中,所述第一 hash值和第二 hash值的计算公式为,hash=((数据包源IP地址~数据包目的IP地址)~ (数据包源端口 ~数据包目的端口))%最大四元组链表数据长度。其中,所述配置文件中还记载有指标情况刷新周期S和分发表清空周期M,所述协议解析单元每隔时间S统计并刷新每个协议解析线程的指标情况,所述数据包分发表每隔时间M清空一次。本发明的万兆协议解析系统及方法,通过计算数据包hash值并与CPU个数和协议解析线程数量分别获取数据包处理线程ID、协议解析线程ID,网卡驱动单元将数据包分发相应的数据包处理线程ID,数据包处理单元对应CPU创建虚拟网络接口并通过虚拟网络接口将数据包分发到相应的协议解析线程ID,当监听到虚拟接口接收到数据包时协议解析单元将数据包以信号量方式分发到协议解析数据链表上,并对协议解析数据链表记录的数据包进行解析。实现网卡驱动单元、数据包处理单元,协议解析单元对数据包进行并行处理,并考虑了负载均衡策略,大大提高整体协议解析系统的处理性能,在万兆流量下做到协议解析不丢包。以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种万兆协议解析系统,其特征在于,包括:网卡驱动单元、数据包处理单元、协议解析单元以及存储单元,所述存储单元中存储有配置文件、数据包分发表以及协议解析数据链表,所述配置文件中记载有应用层设定的数据包过滤规则; 所述网卡驱动单元包括: 数据包处理线程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对应的协议解析数据链表上; 协议解析模块,用于以信号量方式读取协议解析数据链表上的数据包并对其进行协议解析、还原、入库、建索引操作。
2.根据权利要求1所述的一种万兆协议解析系统,其特征在于,所述配置文件还记载有线程开启负载均衡阀值,所述存储单元中存储有指标情况,所述指标情况包含线程负载值; 所述协议解析单元还包括: 线程开启判定模块,用于当hash值比对模块确定所述数据包分发表中不存在与第二hash值相等的第一 hash值时,根据指标情况判断协议解析线程ID对应的线程负载值是否大于所述线程开启负载均衡阀值; 所述第二数据包分发模块还用于当线程开启判定模块确定线程负载值大于线程开启负载均衡阀值时,查找线程负载值最小的第二协议解析线程ID,并把数据包将以信号量方式分发到第二协议解析线程ID对应的协议解析数据链表上,以及将第二 hash值关联第二协议解析线程ID并存入数据包分发表; 所述第二数据包分发模块还用于当线程开启判定模块确定线程负载值小于线程开启的负载均衡阀值时,直接把数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上,以及将第二 hash值关联协议解析线程ID并存入数据包分发表。
3.根据权利要求2所述的一种万兆协议解析系统,其特征在于,所述指标情况还包含协议解析线程处理的数据包总数、异常数据包数、线程CPU使用率、线程数据处理流量,所述配置文件中还记载有第一权重值和第二权重值,所述线程负载=CPU使用率*第一权重值+线程数据处理流量*第二权重值。
4.根据权利要求1所述的一种万兆协议解析系统,其特征在于,所述第一hash值和第二 hash值的计算公式为,hash=((数据包源IP地址~数据包目的IP地址)~ (数据包源端口 ■'数据包目的端口))%最大四元组链表数据长度。
5.根据权利要求1-4任意一项所述的一种万兆协议解析系统,其特征在于,所述配置文件中还记载有指标情况刷新周期S和分发表清空周期M,所述协议解析单元每隔时间S统计并刷新每个协议解析线程的指标情况,所述数据包分发表每隔时间M清空一次。
6.一种万兆协议解析方法,运行于权利要1-4任意一项所述的万兆协议解析系统中,其特征在于,包括步骤: 网卡驱动单元接收到数据包后计算出数据包的第一 hash值,并将第一 hash值与系统CPU个数取模得到数据包处理线程ID,然后将第一 hash值关联数据包处理线程ID并存入一数据包分发表,以及根据数据包处理线程ID将数据包分发到相应的CPU数据包处理线程; 数据包处理单元对应每个CPU分别创建一个虚拟网络接口,以及根据数据包处理线程在CPU注册的函数接收数据包,并根据数据包过滤规则对接收到的数据包进行过滤,然后将过滤后的数据包通过虚拟网络接口发送到相应的CPU ; 协议解析单元对应每个CPU分别开启一个协议解析线程,并通过协议解析线程监听相应CPU的虚拟网络接口,以及从配置文件读取应用层设定的数据包过滤规则并发送至数据包处理单元,其中,每个协议解析线程对应各自的协议解析数据链表; 协议解析单元监听到虚拟网络接口收到数据包后计算出数据包的第二 hash值,并将第二 hash值与协议解析线程个数取模得到协议解析线程ID ; 协议解析单元检索并判断所述数据包分发表中是否存在与第二 hash值相等的第一hash 值; 当确定所述数据包分发表中存与第二 hash值相等的第一 hash值时,协议解析单元将数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上; 协议解析单元以信号量方式读取协议解析数据链表上的数据包并对其进行协议解析、还原、入库、建索引操作。
7.根据权利要求6所述的一种万兆协议解析方法,其特征在于,还包括: 当确定所述数据包分发表中不存在与第二 hash值相等的第一 hash值时,协议解析单元根据指标情况判断协议解析线程ID对应的线程负载值是否大于配置文件设置的线程开启负载均衡阀值,其中,所述指标情况包含线程负载值; 当确定线程负载值大于线程开启负载均衡阀值时,协议解析单元查找线程负载值最小的第二协议解析线程ID,把数据包以信号量方式分发到第二协议解析线程ID对应的协议解析数据链表上,同时将第二 hash值关联第二协议解析线程ID并存入数据包分发表; 当确定线程负载值小于线程开启的负载均衡阀值时,协议解析单元直接把数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上,同时将第二 hash值关联协议解析线程ID并存入数据包分发表。
8.根据权利要求7所述的一种万兆协议解析方法,其特征在于,所述指标情况还包含协议解析线程处理的数据包总数、异常数据包数、线程CPU使用率、线程数据处理流量,所述配置文件中还记载有第一权重值和第二权重值,所述线程负载=CPU使用率*第一权重值+线程数据处理流量*第二权重值。
9.根据权利要求6所述的一种万兆协议解析方法,其特征在于,所述第一hash值和第二 hash值的计算公式为,hash=((数据包源IP地址~数据包目的IP地址)~ (数据包源端口 数据包目的端口))%最大四元组链表数据长度。
10.根据权利要求6-9任意一项所述的一种万兆协议解析方法,其特征在于,所述配置文件中还记载有指标情况刷新周期S和分发表清空周期M,所述协议解析单元每隔时间S统计并刷新每个协议解析线程的指标情况,所述数据包分发表每隔时间M清空一次。
全文摘要
本发明公开一种万兆协议解析方法,包括步骤网卡驱动单元计算出数据包的第一hash值以及数据包处理线程ID,将数据包分发到相应的CPU数据包处理线程;数据包处理单元对应每个CPU分别创建一个虚拟网络接口,对接收到的数据包进行过滤并送到相应的CPU;协议解析单元监听到虚拟网络接口收到数据包后计算出数据包的第二hash值及协议解析线程ID,判断数据包分发表中是否存在与第二hash值相等的第一hash值,若存在,将数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上,对协议解析数据链表上的信号量方式的数据包进行协议解析、还原、入库、建索引操作。本发明公开一种万兆协议解析系统。
文档编号H04L29/06GK103179116SQ201310087219
公开日2013年6月26日 申请日期2013年3月19日 优先权日2013年1月18日
发明者王先高, 高峰 申请人:厦门市美亚柏科信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1