专利名称:一种网络流量还原方法
技术领域:
本发明涉及互联网技术领域,尤其涉及一种通过网络流量分流以并行方式充分发
挥现有多核心计算机效率的还原网络流量至应用层文件的方法。
背景技术:
改革开放以来,我国经济的持续快速增长和网络技术的发展共同推动了互联网事业的发展,2009年7月16日,中国互联网络信息中心(CNNIC)发布报告显示,今年上半年我国网民规模已突破3亿。网民规模、宽带网民数、国家顶级域名注册量(1296万)三项指标仍然稳居世界第一,互联网普及率稳步提升。 同时,网络信息安全成为当前各界十分关注的问题,且CNNIC《报告》显示,目前我国网民在娱乐、信息和社交类使用上比例较高,除了论坛/BBS夕卜,这三类网络应用在网民中的普及率均在50%以上,特别是当网络用户数高达数亿之后,互联网上传播的信息更是爆炸式的增长,因此如何监管网络上传输的信息,防止不良信息等的快速传播是一个严重的问题,该问题现在面临两个主要的困难首先,在网络中传输的网络流量(数据包)是程序无法直接理解的,即网络上传输的应用层文件对计算机来说是"不可见"的,必须要通过处理转化为计算机可处理的信息格式;其次,网络技术的发展和网络带宽的需求促使网络设备向更高速的方向发展,因此如何解决计算机在高带宽网络环境下的实时流量采集还原瓶颈同样是一个严峻的问题。 本发明旨在解决在高速网络带宽下将"不可见"网络流量转换为计算机可直接处理的信息的问题,为识别和阻断不良非法的网络信息传播提供技术支持。
发明内容
本发明的目的在于解决现有网络流量中传输数据"不可见"和在高带宽网络环境下的实时流量采集还原瓶颈的问题,且充分利用现有计算机的处理器多核并发运算优势,提升设备的处理能力,该发明采用二级并行策略方法以充分挖掘现有多核计算机的处理效率首先通过捕获并二次分流原始流量为多个细网络流量实现在流量级别上的一级并行;然后在细网络流量还原流程中有数据传递的工作模块之间采用"生产者_消费者模型"松耦合的多线程架构实现在线程层次上的二级并行。该发明通过TCP会话重组和应用层协议解析还原"不可见"的网络流量到"可见"的应用层文件,这样就为识别和阻断网络上不良信息的传播提供了技术支持。此外,该方法对每一细网络流量的还原流程实现智能负载均衡,且同时支持IPv4和IPv6协议。 本发明解决其技术问题所采用的技术方案是一种网络流量还原方法,其特征在于 该网络流量还原方法首先通过流量捕获模块捕获原始网络流量并通过对MAC地址做哈希运算将原始流量分流成多个粗网络流量,与此同时通过流量分流模块将每一个粗网络流量再进一步分流,分流成多个细网络流量;然后对每一细网络流量的IP数据包(IPv4和IPv6)采用TCP会话重组模块进行TCP会话重组得到TCP会话,同时更新相应会话的会话状态,会话状态转变为结束或超时时,该会话将被转存于待还原TCP会话队列;最后采用智能解析还原模块按序提取待还原TCP会话队列中的会话,通过协议解析、解码和解压縮操作把该会话还原到应用层文件,将该应用层文件信息与对应会话信息提交至数据库,同时智能解析还原模块自动化地实现该细网络流量的负载均衡; 上述流量捕获模块根据服务器计算核心数目设置粗网络流量数目m,相应地设置粗网络流量编号依次为0、1、……、m-l ;该模块包括以下步骤
(l-l)、该模块从高速网络中抓取原始数据包; (1-2)、对抓取到的数据包进行协议过滤,只保留IPv4和IPv6数据包; (1-3)、对每一个IP数据包提取SMAC(源MAC地址)和DMAC(目的MAC地址)两
个字段值; (l-4)、将SMAC和DMAC做异或运算后的结果对m(粗网络流量数目)取余,得到的结果即为该IP数据包将被分流到的粗网络流量编号,然后将该IP数据包分流到具有该编号的粗网络流量; 上述流量分流模块对每一粗网络流量均进行流量分流,并根据粗网络流量数目m,设置每一粗网络流量分成的细网络流量数目为n,细网络流量编号依次为0、……、n-l ;对一个粗网络流量进行分流包括以下步骤
(2-1)、从该粗网络流量中提取数据包;(2-2)、对每一个IP数据包提取SIP(源IP地址)和DIP(目的IP地址)两个字段值; (2-3)、将SIP和DIP做异或运算并将结果对n取余,得到的结果即为该IP数据包将被分流到的细网络流量编号,然后将该IP数据包分流到具有相同编号的细网络流量;
上述TCP会话重组模块以TCP会话的源IP地址SIP (SIPv4或SIPv6)、目的IP地址DIP(DIPv4或DIPv6)、源端口号(SP)和目的端口号(DP)组成的四元组为key,并以上述四个参数经异或运算计算哈希值,分别创建对应于IPv4和对应于IPv6的TCP会话散列表;散列表的节点为一个TCP会话, 一个TCP会话包含两个链表,分别存放该TCP会话源端发送的数据包和目的端发送的数据包,且每一个链表中的数据包都按TCP序列号和确认号重新排列;该模块包括以下步骤 (3-1) 、 TCP重组模块获取IP碎片重组模块处理后的IP数据包,提取其IP协议版本(IPv4或者IPv6);判断其是否是TCP数据包,如果是,则转步骤(3-2);否则转步骤(3-1); (3-2)、提取数据包中的四元组(key),通过哈希计算并在相应会话散列表(对应于IPv4或者IPv6)中查找是否存在同一四元组(key)的TCP会话,如果是,则取得该key的TCP会话并转步骤(3-3);否则转步骤(3-4); (3-3)、获取该数据包TCP包头中的FIN、 RST、 ACK、序列号、确认号、窗口大小等字段值,然后把该数据包在步骤(3-2)中查找到的TCP会话中利用上述获得的FIN、RST、ACK、序列号、确认号、窗口大小等字段值进行重组排序操作,并且更新该TCP会话的状态,如果状态变为结束、重置或超时,则转步骤(3-5),否则转步骤(3-1); (3-4)、由于在相应会话散列表(对应于IPv4或IPv6)中不存在同一 Key的TCP会话,所以在该会话散列表(对应于相应IP协议版本)中创建具有相应Key的散列表(即哈希表)节点(即TCP会话),转步骤(3-1); (3-5)、将TCP会话从与其对应的会话散列表中取出并转移到待处理的TCP会话队列中; (3-6)、在TCP重组的过程中启动一个定时器,每隔5秒或者自行设定的时间去扫描分别对应于IPv4和IPv6的两个TCP会话散列表,以清除超过10秒或者自行设定的时间内没有更新(即没有新的数据包到来)的TCP会话,并将被清除的会话转移至待处理的TCP会话队列中; 上述智能解析还原模块包括以下步骤 (4-l)、计算该细网络流量的负载指数I,并将该指数与给定的负载阈值(默认
为0. 95或者自行设定)比较如果I大于负载阈值,则该细网络流量负载状态为重载,转
(4-2);如果I小于等于负载阈值,则该细网络流量负载状态为轻载,转(4-3); (4-2)、从TCP会话重组模块生成的待处理TCP会话队列中顺序提取TCP会话,然
后将该会话完整保存于会话缓存文件中,同时将缓存会话数加一,转(4-1); (4-3)、判断缓存会话数是否为零,如果是,转(4-4);否则,转(4_5); (4-4)、从TCP会话重组模块生成的待处理TCP会话队列中顺序提取TCP会话,并
智能分析该会话对应的时间、应用层协议、会话数据大小等会话信息,然后将该会话递交给
相应应用层协议处理模块,进行解析、解码、解压縮以完成还原处理,转(4-6); (4-5)、从会话缓存文件中顺序提取系统处于重载状态时缓存的会话,并将缓存会
话数减一,然后智能分析该会话对应的应用层协议、会话数据大小等会话信息,并根据会话
信息将该会话递交给相应的应用层协议解析还原模块,进行解析、解码、解压縮以完成还原
处理,转(4-6); (4-6)、将还原后的文件后缀名与常规文件后缀名库进行匹配,如果该后缀名不属于常规后缀名库,则通过智能分析其对应会话信息、文件头信息和文件数据信息以确定该文件格式,然后给该文件添加正确的后缀名,最后存储还原生成的文件,同时将该文件的信息和对应会话信息提交至数据库,转(4-1)。 其中,所述根据服务器计算核心数目设置粗网络流量数目m是指粗网络流量数目m的取值等于服务器计算核心的数目;所述根据粗网络流量数目m,设置每一粗网络流量分成的细网络流量数目为n是指n取值为2或4;所述步骤(4-6)中的文件后缀名库包含网页文件、音/视频文件、文档文件、二进制文件等各种常规文件类型的后缀名。
由于在还原过程中存在频繁的动态内存操作,因此为了提高系统的效率和稳定性,整个还原流程中频繁的动态内存操作均采用内存池(Memory Pool)技术实现。
智能解析还原模块中的会话缓存文件存取采用"FIFO"策略,待还原TCP会话队列中的会话存取也采用"FIF0"策略。 整个还原方法采用二级并行策略首先通过流量分流实现在流量级别上的一级并行;然后在细流量还原流程中有数据传递的工作模块之间采用"生产者_消费者模型"松耦合的多线程架构以实现在线程层次上的二级并行。 所述步骤(4-6)中细网络流量的负载指数(L)取决于如下参数对应计算核心使用率(P)、该细网络流量重组模块中分别对应于IPv4与IPv6的会话散列表的装填因子(即aV4、 aV6),即L = P ( a V4+a V6);散列表的装填因子定义为装填因子=填入表中的元素(即节点)个数/散列表的长度。 所述步骤(1-4)和步骤(2-3)中的异或运算采用2个字节为单位进行计算,步骤(3-2)中的哈希计算也采用2个字节为单位进行计算将所有参与异或运算的参数均拆分成2个字节(16位)等大小的单元,如果参数大小刚好为16位则不用拆分,然后对所有拆分后的单元进行异或计算。
图1是本发明的总体框架示意 图2是图1中TCP会话重组模块流程 图3是图1中智能解析还原模块流程图。
具体实施例方式
参见图1 ,是本发明的整体流程。 首先对利用流量捕获模块从骨干网络上截取到原始数据包并进行协议过滤和分流,由于实验用服务器CPU为四核心处理器,所以设置粗(网络)流量数目为4,则此时图1中的粗(网络)流量数目m取值为4。首先过滤原始网络流量提取IP数据包(包括IPv4与IPv6数据包),然后对提取的IP数据包采用哈希算法实现分流,该算法采用IP数据包中的源MAC(SMAC)和目的MAC(DMAC)做异或运算,然后将运算结果对m取余的结果作为哈希值,具体异或运算为把源(目的)MAC拆分成16位(2字节)大小的3个值,然后把该16位大小的值(单元)依次做异或运算。经哈希计算后的哈希值取值范围为集合{0,1,2,3},分别对应于粗网络流量0、粗网络流量1、粗网络流量2和粗网络流量3 ;即如果数据包(IP数据包)的源MAC和目的MAC经哈希函数计算得到的哈希值为l,则该数据包将被分流到粗(网络)流量1中,其它哈希值以此类推。 上述流量分流中的哈希函数以源MAC和目的MAC字段值作为参数可以保证原始网络流量中TCP会话的所有数据包都分流在同一个粗网络流量中,即保证了分流后的粗网络流量中TCP会话的完整性,也保证后续的流量分流模块和TCP会话重组模块的可行性;对分流后的4个粗网络流量均通过流量分流模块进行第二次流量分流,即将粗网络流量进一步分流为细网络流量;最后对细网络流量进行IP碎片重组、TCP会话重组,并且智能解析还原重组后的TCP会话。 在具体实施时,针对具体还原流程中存在大量的内存操作的现实和现有动态内存
管理的缺陷,整个重组还原流程内存管理采用内存池(Memory Pool)技术实现,不仅提高流
量还原的效率,而且能够减少内存碎片的产生,提高程序的稳定性。 参见图2,是图1所述网络流量还原的方法中TCP会话重组模块的流程。 TCP会话重组模块以TCP会话的源IP (IPv4或者IPv6)、目的IP (IPv4或者IPv6)、
源端口号和目的端口号组成的四元组为key,并以上述四个参数计算哈希值,分别创建对应
于IPv4与ipv6的TCP会话散列(哈希)表。会话散列表的节点为一个TCP会话。 一个
TCP会话有两个链表,分别存放该TCP会话源端发送的数据包和目的端发送的数据包,属于
该会话的数据包要在插入链表时进行重新组合序。
在TCP会话重组模块初始时,启动一个定时器,每隔固定时间(默认5秒)去扫描两个TCP会话散列表(分别对应于IPv4与IPv6),及时清除一些超过给定时间(默认10秒)内没有新的数据包到来的TCP会话,且将超时TCP会话都按序递交至待还原TCP会话队列。 以下是TCP会话重组模块的具体步骤 步骤一 TCP会话重组首先顺序提取IP碎片重组模块处理后的IP数据包的IP协议版本(IPv4或者IPv6),判断经IP碎片重组处理后的IP数据包是否是TCP数据包,如果是,则转步骤二 ;否则丢弃该数据包并且转步骤一。 步骤二 提取该TCP数据包中的源IP (v4/v6)、目的IP (v4/v6)、源端口号和目的端口号组成的四元组(key),通过哈希计算在相应TCP会话散列表中查找是否存在相同key的TCP会话,如果是,则取得该具有相同key的TCP会话并转步骤三;否则转步骤四。
步骤三获取该数据包TCP包头中的序列号、确认号、窗口大小、FIN、RST、ACK等字段值,然后在步骤二中查找到的TCP数据流中利用上面获取的序列号、确认号、窗口大小、FIN、 RST、 ACK等信息进行TCP重组排序操作如果该数据包是来自源端的,则把该数据包在相应TCP会话的源(source)端数据包链表中进行重组排序操作,否则在TCP会话的目的(destination)端数据包链表中进行重组排序操作。在重组排序的同时更新该TCP会话的状态,如果TCP会话状态变为结束、重置或超时,则转步骤五,否则转步骤
步骤四由于在相应TCP会话散列表中(即分别对应于IPv4或IPv6)不存在相应Key的TCP会话,所以根据该TCP数据包中包含的SYN等字段值,判断是否是新到达的TCP会话,如果是,则在相应TCP会话散列表中创建具有相应Key的TCP会话;如果否,则丢弃该数据包,转步骤一。 步骤五将该TCP会话从相应TCP会话散列表中取出并转移到待处理的TCP会话队列中。此时在待处理TCP会话对列中TCP会话都是经过重新组合的,TCP包头之后数据按照顺序拼接起来即得到该会话实际传输的应用层数据。 参见图3,是图1所述网络流量还原方法中智能解析还原模块的流程图。 首先初始化该智能解析还原模块,包括设置细网络流量负载阈值等。该智能解析
还原模块包括以下步骤 步骤一 计算该细网络流量的负载指数I,并将该指数与给定的负载阈值比较如果I大于负载阈值,则该细网络流量负载状态为重载,转步骤二 ;如果I小于等于负载阈值,则该细网络流量负载状态为轻载,转步骤三; 步骤二 从TCP会话重组模块生成的待处理TCP会话队列中顺序提取TCP会话,然后将该会话完整保存于会话缓存文件中,同时将缓存会话数加一,转步骤一 ;通过缓存系统处于重载时的待还原会话可以有效的均衡相应细网络流量的负载,从而实现该细网络流量的负载均衡。
步骤三判断缓存会话数是否为零,如果是,转步骤四;否则,转步骤五; 步骤四从TCP会话重组模块生成的待处理TCP会话队列中顺序提取TCP会话,并
智能分析该会话对应的时间、应用层协议、会话数据大小等会话信息,然后将该会话递交给
相应应用层协议处理模块进行协议解析、解码、解压縮处理,完成还原处理,转步骤六; 步骤五从会话缓存文件中顺序提取系统处于重载状态时缓存的会话,并将缓存
8会话数减一,然后智能分析该会话对应的应用层协议、会话数据大小等会话信息并根据会话信息将该会话递交给相应的应用层协议解析还原模块进行协议解析、解码、解压縮处理,完成还原处理,转步骤六; 步骤六将还原后的文件后缀名与常规文件后缀名库进行匹配,如果该后缀名不属于常规后缀名库,则通过智能分析其对应会话信息、文件头信息和文件数据信息以确定该文件格式,然后给该文件添加正确的后缀名,最后存储还原后生成的文件,同时将该文件的信息和对应会话信息提交至数据库,转步骤一。 以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定
本发明的具体实施方式
仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所
提交的权利要求书确定专利保护范围。
权利要求
一种网络流量还原方法,其特征在于,按照如下步骤该网络流量还原方法(1)通过流量捕获模块捕获原始网络流量并通过对MAC地址做哈希运算将原始流量分流成多个粗网络流量,与此同时通过流量分流模块将每一个粗网络流量再进一步分流,分流成多个细网络流量;(2)对每一细网络流量的IP数据包采用TCP会话重组模块进行TCP会话重组得到TCP会话,同时更新相应会话的会话状态,会话状态转变为结束或超时时,该会话将被转存于待还原TCP会话队列;(3)采用智能解析还原模块按序提取待还原TCP会话队列中的会话,通过协议解析、解码和解压缩操作把该会话还原到应用层文件,将该应用层文件信息与对应会话信息提交至数据库,同时智能解析还原模块自动化地实现该细网络流量的负载均衡。
2. 如权利要求1所述一种网络流量还原方法,其特征在于,所述步骤(1)是 流量捕获模块根据服务器计算核心数目设置粗网络流量数目m,相应地设置粗网络流量编号依次为0、1、……、m-l ;包括以下步骤: (l-l)、该模块从高速网络中抓取原始数据包;(1-2)、对抓取到的数据包进行协议过滤,只保留IPv4和IPv6数据包;(1-3)、对每一个IP数据包提取源MAC地址SMAC和目的MAC地址DMAC两个字段值;(1-4)、将SMAC和DMAC做异或运算后的结果对m取余,得到的结果即为该IP数据包将被分流到的粗网络流量编号,然后将该IP数据包分流到具有该编号的粗网络流量;流量分流模块对每一粗网络流量均进行流量分流,并根据粗网络流量数目m,设置每一粗网络流量分成的细网络流量数目为n,细网络流量编号依次为0、……、n-l ;对一个粗网络流量进行分流包括以下步骤(2-1)、从该粗网络流量中提取数据包;(2-2)、对每一个IP数据包提取SIP和DIP两个字段值;(2-3)、将SIP和DIP做异或运算并将结果对n取余,得到的结果即为该IP数据包将被 分流到的细网络流量编号,然后将该IP数据包分流到具有相同编号的细网络流量。
3. 如权利要求1所述一种网络流量还原方法,其特征在于,所述步骤(2)是TCP会话重组模块以TCP会话的源IP地址SIP、目的IP地址DIP、源端口号和目的端口 号组成的四元组为key,并以上述四个参数经异或运算计算哈希值,分别创建对应于IPv4 和对应于IPv6的TCP会话散列表;散列表的节点为一个TCP会话, 一个TCP会话包含两个 链表,分别存放该TCP会话源端发送的数据包和目的端发送的数据包,且每一个链表中的 数据包都按TCP序列号和确认号重新排列;包括以下步骤(3-1) 、 TCP重组模块获取IP碎片重组模块处理后的IP数据包,提取其IP协议版本; 判断其是否是TCP数据包,如果是,则转步骤(3-2);否则转步骤(3-1);(3-2)、提取数据包中的四元组,通过哈希计算并在相应会话散列表中查找是否存在 同一四元组的TCP会话,如果是,则取得该key的TCP会话并转步骤(3_3);否则转步骤 (3-4);(3-3)、获取该数据包TCP包头中的FIN、RST、ACK、序列号、确认号、窗口大小等字段值, 然后把该数据包在步骤(3-2)中查找到的TCP会话中利用上述获得的FIN、 RST、 ACK、序列 号、确认号、窗口大小等字段值进行重组排序操作,并且更新该TCP会话的状态,如果状态 变为结束、重置或超时,则转步骤(3-5),否则转步骤(3-1);(3-4)、由于在相应会话散列表中不存在同一 Key的TCP会话,所以在该会话散列表中 创建具有相应Key的散列表节点,转步骤(3-1);(3-5)、将TCP会话从与其对应的会话散列表中取出并转移到待处理的TCP会话队列中;(3-6)、在TCP重组的过程中启动一个定时器,每隔5秒或者自行设定的时间去扫描分 别对应于IPv4和IPv6的两个TCP会话散列表,以清除超过10秒或者自行设定的时间内没 有更新的TCP会话,并将被清除的会话转移至待处理的TCP会话队列中。
4. 如权利要求1所述一种网络流量还原方法,其特征在于,所述步骤(3)是(4-1)、计算该细网络流量的负载指数I,并将该指数与给定的负载阈值比较如果I大 于负载阈值,则该细网络流量负载状态为重载,转(4-2);如果I小于等于负载阈值,则该细 网络流量负载状态为轻载,转(4-3);(4-2)、从TCP会话重组模块生成的待处理TCP会话队列中顺序提取TCP会话,然后将 该会话完整保存于会话缓存文件中,同时将缓存会话数加一,转(4-1);(4-3)、判断缓存会话数是否为零,如果是,转(4-4);否则,转(4-5);(4-4)、从TCP会话重组模块生成的待处理TCP会话队列中顺序提取TCP会话,并智能 分析该会话对应的时间、应用层协议、会话数据大小等会话信息,然后将该会话递交给相应 应用层协议处理模块,进行解析、解码、解压縮以完成还原处理,转(4-6);(4-5)、从会话缓存文件中顺序提取系统处于重载状态时缓存的会话,并将缓存会话 数减一,然后智能分析该会话对应的应用层协议、会话数据大小等会话信息,并根据会话信 息将该会话递交给相应的应用层协议解析还原模块,进行解析、解码、解压縮以完成还原处 理,转(4-6);(4-6)、将还原后的文件后缀名与常规文件后缀名库进行匹配,如果该后缀名不属于常 规后缀名库,则通过智能分析其对应会话信息、文件头信息和文件数据信息以确定该文件 格式,然后给该文件添加正确的后缀名,最后存储还原生成的文件,同时将该文件的信息和 对应会话信息提交至数据库,转(4-1)。
5. 如权力要求2所述一种网络流量还原方法,其特征在于,所述根据服务器计算核心 数目设置粗网络流量数目m是指粗网络流量数目的取值等于服务器计算核心的数目;所 述根据粗网络流量数目m,设置每一粗网络流量分成的细网络流量数目为n是指n取值为 2或4。
6. 如权利要求l所述一种网络流量还原方法,其特征在于,所述步骤(4-6)中细网络流 量的负载指数L取决于如下参数对应计算核心使用率P、该细网络流量重组模块中分别对 应于IPv4与IPv6的会话散列表的装填因子aV4禾P a V6,即L = P ( a V4+a V6);散列表 的装填因子定义为装填因子=填入表中的节点个数/散列表的长度。
7. 如权利要求l所述一种网络流量还原方法,其特征在于,所述步骤(1-4)和步骤 (2-3)中的异或运算采用2个字节为单位进行计算,步骤(3-2)中的哈希计算也采用2个字 节为单位进行计算将所有参与异或运算的参数均拆分成2个字节等大小的单元,如果参 数大小刚好为16位则不用拆分,然后对所有拆分后的单元进行异或计算。
全文摘要
本发明涉及的网络流量还原方法属于互联网技术领域,本发明公开了一种还原网络流量至文件的方法,该方法采用二级并行策略方法以充分挖掘多核计算机的处理效率首先捕获高速流量,采用Mac地址异或和IP地址异或的方法进行两次分流,将捕获到的初始流量分解为多个细流量,实现流量的二级并行分解;然后在细流量还原流程中有数据传递的工作模块之间采用“生产者-消费者模型”松耦合的多线程架构实现在线程层次上的并行。另外该方法对每一细流量实现负载均衡,且同时支持IPv4和IPv6协议。本发明旨在解决在高速网络带宽下将“不可见”网络流量转换为计算机可直接处理的信息的问题,为识别和阻断不良非法的网络信息传播提供技术支持。
文档编号H04L29/06GK101795230SQ20101011258
公开日2010年8月4日 申请日期2010年2月23日 优先权日2010年2月23日
发明者倪华, 郑庆华, 陶敬 申请人:西安交通大学