The invention provides a method for equalizing shunt of multi thread analysis. The first query packet four tuple information is contained in the hash table, if it is found in the hash table, the packet should thread corresponding to the sequence of values, the packet is assigned directly to the thread for processing; if not, the query of the current data packet data packet sequence reads the thread value. The corresponding to the number of data packets is not up to a thread from the array space, if not directly assigned to the thread; if it is, then check the data packet is the first session of the packet data is not, if not, the data package to the thread; if it is, then the the data packets to the current data waiting to be processed a minimum number of threads. To achieve efficient and uniform distribution of processing packets.
【技术实现步骤摘要】
本专利技术涉及一种多线程分析的均衡分流方法,特别是涉及一种适用于网络通信领域的多线程分析的均衡分流方法。
技术介绍
在网络分析领域,通常都是通过采集网络通信中的数据包,然后再通过分析数据包的tcp/ip层及具体的应用层数据,进而得到网络中存在的诸如网络性能问题,网络攻击安全问题等相关信息;在网络数据包分析中,数据包数据通常能达到100W个每秒到最高1000W个每秒;同时按照数据包的tcp/ip的4层协议属性,将具体相同的ip地址对和端口对的相同的数据包,称之为同一个通信会话的数据包;正常网络中将这些数据按照通信会话数来统计,一般会话数能达到10W到最多1000W,不等;在现有的计算机刀片服务器的架构下,为了保证服务器能够对每秒1000W个数据包及1000W通信会话的状态下能够及时处理分析掉,一般都需要充分的利用CPU(电脑处理器)的多核心特性,通过多线程的方式,将数据以通信会话为单位分散在各个分析线程中;由于每个分析线程处理能力是有限的,而单位时间内的数据包又需要保证被及时的分析处理完,故而必须保证每个分析线程都处理于均衡的状态,所谓均衡的状态,就是指的将单位时间内的数据包,以通信会话聚合形式,保证具有相同通信会话属性的数据包能够分配给相同的线程,同时,保证每个分析线程都能够在单位时间内分析处理完其被分配的数据包;若分析线程出现了数据包分配不均衡时,将导致某一些分析线程分析过多的数据包,而某些分析线程将分析较少的数据包,进而出现分析很多数据包的线程占用更多的分析时间,使其不能够在单位时间内分析处理完毕,从而拖慢系统整体的分析性能,出现数据包分析处理不及时 ...
【技术保护点】
一种多线程分析的均衡分流方法,具体方法为,对于N个线程,从线程0‑(N‑1),依次为每个线程分配一个线程序列值ThreadIndexID;所述N为大于1的整数;所述线程每个线程用于分析分配得到的数据包;创建一个数组空间,该数组空间包括N个数组,一一对应N个线程;每个线程所对应的那个数组用于存放该线程当前等待处理的数据个数;当向一个线程投递一个数据包时,该线程所对应的那个数组中用于存放该线程当前等待处理的数据个数值自加;当线程分析完一个数据包时,数组中用于存放该线程当前等待处理的数据个数值自减;数据包采集线程采集到数据包,按照tcp/ip协议的规范,得到每个数据包的四元组信息,进而得到每个数据包的哈希值;使用得到的哈希值与分析线程个数求模得到每个数据包关于线程的数据包线程序列值ThreadIndex;所述数据包线程序列值ThreadIndex指示该数据包所应该分配到的实际线程,该实际线程的线程序列值ThreadIndexID等于该数据包线程序列值ThreadIndex;定义一个用于均匀分流的哈希表,将数据包的四元组信息作为哈希表的key值,用于查询,将该数据包的实际分配线程序列值Thre ...
【技术特征摘要】
1.一种多线程分析的均衡分流方法,具体方法为,对于N个线程,从线程0-(N-1),依次为每个线程分配一个线程序列值ThreadIndexID;所述N为大于1的整数;所述线程每个线程用于分析分配得到的数据包;创建一个数组空间,该数组空间包括N个数组,一一对应N个线程;每个线程所对应的那个数组用于存放该线程当前等待处理的数据个数;当向一个线程投递一个数据包时,该线程所对应的那个数组中用于存放该线程当前等待处理的数据个数值自加;当线程分析完一个数据包时,数组中用于存放该线程当前等待处理的数据个数值自减;数据包采集线程采集到数据包,按照tcp/ip协议的规范,得到每个数据包的四元组信息,进而得到每个数据包的哈希值;使用得到的哈希值与分析线程个数求模得到每个数据包关于线程的数据包线程序列值ThreadIndex;所述数据包线程序列值ThreadIndex指示该数据包所应该分配到的实际线程,该实际线程的线程序列值ThreadIndexID等于该数据包线程序列值ThreadIndex;定义一个用于均匀分流的哈希表,将数据包的四元组信息作为哈希表的key值,用于查询,将该数据包的实际分配线程序列值ThreadIndexID作为哈希表的value值写入;数据包分配的具体方法步骤为:S1、查询当前数据包的四元组信息是否在哈希表中,如果是,则找到其在哈希表中对应的value值,从而找到该数据包实际应该对应的线程序列值ThreadIndexID,将该数据包直...
【专利技术属性】
技术研发人员:罗鹰,黄江,林康,
申请(专利权)人:成都科来软件有限公司,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。