CN103179116A - 一种万兆协议解析方法及系统 - Google Patents

一种万兆协议解析方法及系统 Download PDF

Info

Publication number
CN103179116A
CN103179116A CN2013100872195A CN201310087219A CN103179116A CN 103179116 A CN103179116 A CN 103179116A CN 2013100872195 A CN2013100872195 A CN 2013100872195A CN 201310087219 A CN201310087219 A CN 201310087219A CN 103179116 A CN103179116 A CN 103179116A
Authority
CN
China
Prior art keywords
protocol analysis
thread
packet
hash value
protocol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2013100872195A
Other languages
English (en)
Other versions
CN103179116B (zh
Inventor
王先高
高峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Meiya Pico Information Co Ltd
Original Assignee
Xiamen Meiya Pico Information Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Meiya Pico Information Co Ltd filed Critical Xiamen Meiya Pico Information Co Ltd
Priority to CN201310087219.5A priority Critical patent/CN103179116B/zh
Publication of CN103179116A publication Critical patent/CN103179116A/zh
Application granted granted Critical
Publication of CN103179116B publication Critical patent/CN103179116B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开一种万兆协议解析方法,包括步骤:网卡驱动单元计算出数据包的第一hash值以及数据包处理线程ID,将数据包分发到相应的CPU数据包处理线程;数据包处理单元对应每个CPU分别创建一个虚拟网络接口,对接收到的数据包进行过滤并送到相应的CPU;协议解析单元监听到虚拟网络接口收到数据包后计算出数据包的第二hash值及协议解析线程ID,判断数据包分发表中是否存在与第二hash值相等的第一hash值,若存在,将数据包以信号量方式分发到协议解析线程ID对应的协议解析数据链表上,对协议解析数据链表上的信号量方式的数据包进行协议解析、还原、入库、建索引操作。本发明公开一种万兆协议解析系统。

Description

一种万兆协议解析方法及系统
技术领域
本发明涉及一种万兆协议解析方法及系统。
背景技术
由于互联网高速发展,互联网上的结构化、非结构化、半结构化数据流量也呈指数增长,根据对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使用率*第一权重值+线程数据处理流量*第二权重值。
其中,所述第一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并存入数据包分发表。
其中,所述指标情况还包含协议解析线程处理的数据包总数、异常数据包数、线程CPU使用率、线程数据处理流量,所述配置文件中还记载有第一权重值和第二权重值,所述线程负载=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并存入数据包分发表。
其中,所述指标情况还包含协议解析线程处理的数据包总数、异常数据包数、线程CPU使用率、线程数据处理流量,所述配置文件中还记载有第一权重值和第二权重值,所述线程负载=CPU使用率*第一权重值+线程数据处理流量*第二权重值。
其中,所述第一hash值和第二hash值的计算公式为,hash=((数据包源IP地址^数据包目的IP地址)^(数据包源端口^数据包目的端口))%最大四元组链表数据长度。
其中,所述配置文件中还记载有指标情况刷新周期S和分发表清空周期M,所述协议解析单元每隔时间S统计并刷新每个协议解析线程的指标情况,所述数据包分发表每隔时间M清空一次。
本发明的万兆协议解析系统及方法,通过计算数据包hash值并与CPU个数和协议解析线程数量分别获取数据包处理线程ID、协议解析线程ID,网卡驱动单元将数据包分发相应的数据包处理线程ID,数据包处理单元对应CPU创建虚拟网络接口并通过虚拟网络接口将数据包分发到相应的协议解析线程ID,当监听到虚拟接口接收到数据包时协议解析单元将数据包以信号量方式分发到协议解析数据链表上,并对协议解析数据链表记录的数据包进行解析。实现网卡驱动单元、数据包处理单元,协议解析单元对数据包进行并行处理,并考虑了负载均衡策略,大大提高整体协议解析系统的处理性能,在万兆流量下做到协议解析不丢包。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

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清空一次。
CN201310087219.5A 2013-01-18 2013-03-19 一种万兆协议解析方法及系统 Active CN103179116B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310087219.5A CN103179116B (zh) 2013-01-18 2013-03-19 一种万兆协议解析方法及系统

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310018499.4 2013-01-18
CN201310018499 2013-01-18
CN201310087219.5A CN103179116B (zh) 2013-01-18 2013-03-19 一种万兆协议解析方法及系统

Publications (2)

Publication Number Publication Date
CN103179116A true CN103179116A (zh) 2013-06-26
CN103179116B CN103179116B (zh) 2016-02-03

Family

ID=48638739

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310087219.5A Active CN103179116B (zh) 2013-01-18 2013-03-19 一种万兆协议解析方法及系统

Country Status (1)

Country Link
CN (1) CN103179116B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647666A (zh) * 2013-12-13 2014-03-19 北京中创信测科技股份有限公司 一种统计呼叫详细记录报文并实时输出结果的方法及装置
CN105426252A (zh) * 2015-12-17 2016-03-23 浪潮(北京)电子信息产业有限公司 一种分布式文件系统的线程分配方法及系统
CN106371921A (zh) * 2016-08-31 2017-02-01 成都科来软件有限公司 一种多线程分析的均衡分流方法
CN116737172A (zh) * 2023-08-11 2023-09-12 杭州初灵信息技术股份有限公司 一种小颗粒数据包的解析系统和方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101958902A (zh) * 2010-09-30 2011-01-26 北京锐安科技有限公司 一种网络数据包的解析方法与装置
CN102523208A (zh) * 2011-12-06 2012-06-27 无锡聚云科技有限公司 多核架构下的应用层协议并行处理方法
KR20120085375A (ko) * 2011-01-24 2012-08-01 주식회사 옥시젠컴퓨팅 로그데이터 분석시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101958902A (zh) * 2010-09-30 2011-01-26 北京锐安科技有限公司 一种网络数据包的解析方法与装置
KR20120085375A (ko) * 2011-01-24 2012-08-01 주식회사 옥시젠컴퓨팅 로그데이터 분석시스템
CN102523208A (zh) * 2011-12-06 2012-06-27 无锡聚云科技有限公司 多核架构下的应用层协议并行处理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647666A (zh) * 2013-12-13 2014-03-19 北京中创信测科技股份有限公司 一种统计呼叫详细记录报文并实时输出结果的方法及装置
CN105426252A (zh) * 2015-12-17 2016-03-23 浪潮(北京)电子信息产业有限公司 一种分布式文件系统的线程分配方法及系统
CN106371921A (zh) * 2016-08-31 2017-02-01 成都科来软件有限公司 一种多线程分析的均衡分流方法
CN116737172A (zh) * 2023-08-11 2023-09-12 杭州初灵信息技术股份有限公司 一种小颗粒数据包的解析系统和方法
CN116737172B (zh) * 2023-08-11 2023-12-12 杭州初灵信息技术股份有限公司 一种小颗粒数据包的解析系统和方法

Also Published As

Publication number Publication date
CN103179116B (zh) 2016-02-03

Similar Documents

Publication Publication Date Title
KR100834570B1 (ko) 실시간 상태 기반 패킷 검사 방법 및 이를 위한 장치
US20160359701A1 (en) Parallel coordinate charts for flow exploration
CN105745870B (zh) 从用于检测大流的串行多级过滤器去除头部过滤器以便清除流以实现延长操作
US8510830B2 (en) Method and apparatus for efficient netflow data analysis
CN107241186A (zh) 应用签名生成和分发
US9674080B2 (en) Proxy for port to service instance mapping
CN103067218B (zh) 一种高速网络数据包内容分析装置
CN110855493B (zh) 用于混合环境的应用拓扑图绘制装置
US20170237836A1 (en) Coalescing messages using a network interface controller
CN103179116A (zh) 一种万兆协议解析方法及系统
US10819640B1 (en) Congestion avoidance in multipath routed flows using virtual output queue statistics
CN107547671A (zh) 一种url匹配方法及装置
CN109271793A (zh) 物联网云平台设备类别识别方法及系统
CN113364624B (zh) 基于边缘计算的混合云流量采集方法和系统
CN107294966A (zh) 一种基于内网流量的ip白名单构建方法
US10069797B2 (en) 10Gbps line rate stream to disk with fast retrieval (metadata) and network statistics
CN106357726A (zh) 负载均衡方法及装置
CN114039875B (zh) 一种基于eBPF技术的数据采集方法、装置及系统
WO2013139678A1 (en) A method and a system for network traffic monitoring
CN107133231A (zh) 一种数据获取方法和装置
AU2016306553B2 (en) Automated electronic computing and communication system event analysis and management
CN107040405A (zh) 网络环境下被动式多维度主机指纹模型构建方法及其装置
CN106649344A (zh) 一种网络日志压缩方法和装置
US20130322450A1 (en) Communication apparatus and communication method
CN107241251A (zh) 多路can报文实时接收的软件实现方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant