一种海量数据分流方法

文档序号:6584492阅读:174来源:国知局
专利名称:一种海量数据分流方法
技术领域
本发明属于通讯网络的数据传输和协议解析领域,具体涉及一种海量数据分流方
法,可以实现对骨干网上的海量信息进行高速分流和并行协议解析。
背景技术
在网络数据处理过程中经常出现的一些概念包括 五元组源IP地址,目的IP地址,源端口号,目的端口号,传输层协议;
IP对源IP地址,目的IP地址; 流突发的一系列相同源到相同目的的所有数据包的集合,主要通过五元组进行 描述。 流的关联性由于Voip、 Video等业务的需要,及实时传输方式的动态改变,网络 上的一次实际交互行为需要通过多个流来实现,那么为了实现同一次会话而产生的多个流 便具有流关联性。 协议的承载性在Voip、Video等业务的实际应用中,常将HTTP等协议作为其底层 协议,这时便认为此作为底层协议的应用层协议具有承载性。 Client IP :与服务器IP相对,表示普通上网用户的IP地址,由于这部分IP地址是 固定分配的,所以数量相对固定; 目前,40Gb/s在骨干网上已进入实用阶段,100Gb/s即将到来。网络速度的快速 提高对千兆网络数据流处理提出了新的挑战,流分类技术是千兆网络数据处理中的关键 技术,在流量监测与审计、入侵检测等方面有着广泛的应用,也是解决目前网络检测中的 Voip、Video、Radius等业务的先决条件,其性能常常成为影响整个网络数据处理的关键。但 是网络数据流具有量大、特征条目多、协议具有承载性、流具有关联性等特点,为了能实现 高效并行协议解析,一种性能突出、具有将流按其关联性分类能力、准确性高的流分类算法 便成为当务之急。 传统的方法通常是利用包内的IP信息或五元组信息等网络层、传输层特征进行 流分类,而且过多的将研究重心放在了分流速度、分流的自适应性及动态性上,很少对流的 正确性给予足够的重视。而实际上随着Voip相关协议等多媒体协议的广泛应用,流关联性 将会越来越重要,而由于流关联涉及到应用层协议,仅从网络层和传输层的特性来进行流 量的处理必将导致大量相互关联的流被截断。又由于协议具有承载性的特点,导致大量协 议被误判。这些问题最终将直接引发后续业务的性能下降流量监测和审计的错误率的升 高,和入侵检测的漏报率的升高。

发明内容
针对网络流量大、特征条目多、协议具有承载性、流具有关联性等新特点所带来的
互联网监测技术难题,本发明提出了一种海量数据分流方法,该方法可以实现对骨干网上
的海量信息进行高速分流和并行协议解析。本方案的基本思想是由于具有流关联性的多个流具有ClientIP(客户端地址)相同的特点,所以可以将ClientIP作为数据分流的基本
单位,这样能够屏蔽掉多流关联性的影响;而加入应用层协议的特征检测,从根本上解决了
传统分流方案试图利用底层网络特征来解决应用层特征引起的流关联性问题,同时也避免
了常用的分流算法因为承载协议而引起的应用层协议错判问题。 本发明的技术方案为 —种海量数据分流方法,其步骤为 1)分别建立一 ClientIP表和UnClientIP表;所述ClientIP表用于维护客户端 IP和输出端口的对应关系,所述UnClientIP表用于维护数据包IP对和输出端口的对应关 系; 2)对接收到的数据包进行解码,获取数据包中的IP对和端口信息; 3)查询所述ClientIP表中是否含有上述解码得到的IP,如果有对应的IP,则利用
该IP在所述ClientIP表中对应的输出端口对该数据包进行转发; 4)如果所述ClientIP表中没有IP对中的任一 IP,则查询所述UnClientIP表中 是否含有该数据包的IP对,若有则按照UnClientIP表中该表项对应的输出端口对该数据 包进行转发; 5)如果所述UnClientIP表中没有该数据包的IP对,则选择一输出端口对该数据 包进行转发,同时在所述UnClientIP表中增加一表项,记录该数据包的IP对和所选输出端 口的对应关系。 进 一 步的,所述ClientIP表表项包括ClientIP和输出端口字段;所述 UnClientIP表表项包括IP对和输出端口字段。 进一步的,所述方法中采用多级Hash或Hash表结合平衡二叉树的方法查询所述 ClientIP表,实现对IP的快速查找。 进一步的,所述步骤3)中,对数据包进行转发的方法为 1)如果所述ClientIP表中有IP对中的一个IP,则利用该IP在所述ClientIP表 中对应的输出端口对该数据包进行转发; 2)如果所述CIientIP表中有IP对中的两个IP,则判断两个IP在所述ClientIP 表中对应的输出端口是否相同,如果两输出端口相同则利用该输出端口对该数据包进行 转发;如果两输出端口不同,则往每个端口均转发一份该数据包,并在该数据包上打上双 ClientIP数据标志。 进一步的,所述步骤4)中,如果所述ClientIP表中没有IP对中的任一IP,则采用 应用层协议的方向特征获得客户端IP,然后查询该IP在所述UnClientIP表中是否有相应 的IP表项,若有,则删除该表项并在所述ClientIP表中添加新的表项,记录该IP及其在所 述UnCl ientIP表中对应的输出端口 ;若无,则选择一输出端口对该数据包进行转发,同时 在所述ClientIP表中增加一表项,记录客户端IP和所选输出端口的对应关系。
进一步的,所述选择的输出端口为负载最低的输出端口 。 进一步的,所述方法中,通过应用层的协议特征来获得所述应用层协议的方向特 征;所述协议特征包括服务器端口或协议的特征字段。 进一步的,所述方法中,通过在应用层起始位置找固定偏移,并利用应用层协议的 方向特征与该偏移处字段进行字符串匹配的方式,得到应用层协议的方向特征。
进一步的,所述方法中,采用多模匹配算法进行所述字符串匹配。
本方案主要由以下七个模块组成(模块层次图参见附图1):
1.底层解码模块 底层解码模块主要进行数据包的网络层和传输层的解码,获取包的五元组信息 (源IP地址,目标IP地址,源端口号,目的端口号,传输协议);由于解码过程相对固定,可 以采用硬件来辅助实现。
2. ClientIP管理模块 主要负责维护Client IP表,负责管理Client IP和输出端口的对应关系,以实现对 某特定IP的固定转发。 ClientIP表表项主要包括"ClientIP"和"输出端口"字段。ClientIP表为了实 现对特定IP的快速查找,可以采用多级Hash或Hash表结合平衡二叉树的方式来实现。当 数据包为双ClientIP进行交互时,交给双ClientIP处理模块进行处理。
3.双ClientIP(客户端到客户端的数据)处理模块 主要负责当数据包为双ClientIP交互的特殊情况的处理,以确定包的转发端口 。 可以采取多种方法来实现双ClientIP包的后续处理,因为双ClientIP包的量很小,所以可 以采取同时发送两份数据到两个输出端口的方式,也可以采取先缓冲再处理的方式。主要 依据后续处理模块的不同来选择具体的处理方式。
4. ClientIP判断模土央 主要负责通过应用层协议的方向特征来获得数据包中ClientIP,由于本分流算法
的依据是ClientIP,所以获取ClientIP对于后续的包转发来说至关重要。 应用层协议的方向特征主要通过应用层的协议特征来获得,协议特征可以是服务
器端口,也可以是协议的特征字段。比如HTTP协议的GET特征字段表明该数据包的方向
一定是从客户端到服务器端的,MSN协议的1863端口通常为MSN服务器端口等; 本方案主要采取在应用层起始位置找固定偏移,并利用应用层协议的方向特征与
该偏移处字段进行字符串匹配的方式,实现方向特征的判断。待匹配的方向特征的实际种
类与分流时需要考虑的应用层协议数相同,为了提高匹配速度,实现时使用多模匹配算法实现。 5.无ClientIP数据管理模块 主要负责无ClientIP的数据包,通过UnClientIP表对数据包IP地址进行管理, 管理数据包IP对和输出端口的对应关系。 UnClientIP表的主要内容包括"IP对"和"输出端口",可以采用HASH表来提高查 询速度。 6.负载均衡模块 主要负责查询各输出端口的负载信息,实现整个分流的负载平衡,为数据转发模 块提供实时的负载参数,即当前负载最低的输出端口号信息。负载均衡方法主要采取将数 据包分发到负载最低的输出端口的原则。
7.数据转发模块 主要负责依据包转发端口的查找结果和负载均衡参数进行包的转发。
本发明的积极效果为
本发明采用ClientIP作为分流的基本因素,有效的避免了流关联对分流正确性的影响和承载协议的影响。通过本发明技术可以高效准确的进行网络数据分流,与传统的网络数据分流方法相比,具有高准确性,不破坏会话流的特点。能够为后续审计、流量监控等业务提供高可靠性的数据流。


图1为本发明模块层次 图2为本发明的网络数据分流逻辑 图3为本发明的网络数据分流的流程 图4为本发明的双ClientIP数据处理流程图。
具体实施例方式
下面结合附图和具体实施方式
对本发明作进一步详细描述 参见附图2,是网络数据分流算法逻辑图,通过分流模块进行网络数据分流,在不破坏原始流顺序及相互关联性的前提下,将流均匀的转发到不同的输出端口 ,供后续各处理节点进行进一步的处理。 参见附图3,是分流算法的数据流程图,其包转发过程主要有以下步骤 1)初始化操作新建ClientIP表和UnClientIP表。转步骤2); 2)对新到达的网络包进行底层解码,以获取IP和端口信息。转步骤3); 3)利用解码出的IP对,调用ClientIP管理模块进行ClientIP查询,判断IP对
中是否存在已经被转发过的IP地址,如果有一个IP地址被转发过,则依据该IP地址在
ClientIP表中的输出端口信息进行转发,转步骤9);如果该IP对均在ClientIP表中查找
到相应表项,则调用双ClientIP处理模块进行进一步的判断,以获得输出端口信息,并依
据该输出端口进行包转发,转步骤9);如果IP对没有转发过,转步骤4); 4)调用ClientIP判断模块进行数据包的ClientIP判断,如果能获得ClientIP,
转步骤5),如果不能判断出ClientlP,转步骤7); 5)调用无ClientIP数据管理模块,查看该IP是否在UnClientIP表中有相应的IP表项,若有,则删除该表项,并在ClientIP管理模块的ClientIP表中添加新的表项,并沿用该IP在UnClientIP表中输出端口,转步骤9);若无,转步骤6); 6)在ClientIP表中添加新的表项,并调用负载均衡模块,转发到负载最低的输出端口进行包转发,转步骤9); 7)调用无ClientIP数据管理模块,查询UnClientIP表中是否含有本数据包的IP对信息,若有,按照UnClientIP表中该表项对应的输出端口进行包转发,转步骤9);若无,转步骤8); 8)调用负载均衡模块查找当前负载最低的输出端口 PortA,调用无ClientIP数据管理模块,依据本包的IP对和PortA新建UnClientIP表表项,并依据PortA进行包转发,转步骤9); 9)转发数据包,本包转发完毕,转步骤2); 参见附图4,双ClientIP数据处理流程图,这里主要采用将数据包分发到两个输出端口的方式进行说明,其包分类过程主要有以下步骤 1)从ClientIP表中获取两个ClientIP对应的输出端口信息,如果两个端口相同,则转步骤3);否则转步骤2); 2)往每个端口均转发一份该数据包,并在转发的同时打上双Cl ientIP数据标志,转步骤3); 3)返回转发的输出端口信息给转发模块,供转发模块进行包转发,转步骤4);
4)后续处理节点收到数据包后,依据自身具体业务情况进行具体处理,不属于本分流方法的组成部分,对于没有双ClientIP的数据包,按照正常业务流程处理;对于有双ClientIP的数据包,由于双ClientIP的数据包的量非常少,所以多转发的一份数据包拷贝不会对整个分流系统的性能造成影响;后续处理节点也可以通过同步的方式来保证两份数据包只被处理一次,具体实现与后续处理节点具体的业务相关。
权利要求
一种海量数据分流方法,其步骤为1)分别建立一ClientIP表和UnClientIP表;所述ClientIP表用于维护客户端IP和输出端口的对应关系,所述UnClientIP表用于维护数据包IP对和输出端口的对应关系;2)对接收到的数据包进行解码,获取数据包中的IP对和端口信息;3)查询所述ClientIP表中是否含有上述解码得到的IP,如果有对应的IP,则利用该IP在所述ClientIP表中对应的输出端口对该数据包进行转发;4)如果所述ClientIP表中没有IP对中的任一IP,则查询所述UnClientIP表中是否含有该数据包的IP对,若有则按照UnClientIP表中该表项对应的输出端口对该数据包进行转发;5)如果所述UnClientIP表中没有该数据包的IP对,则选择一输出端口对该数据包进行转发,同时在所述UnClientIP表中增加一表项,记录该数据包的IP对和所选输出端口的对应关系。
2. 如权利要求1所述的方法,其特征在于所述ClientIP表表项包括ClientIP和输出 端口字段;所述UnClientIP表表项包括IP对和输出端口字段。
3. 如权利要求1或2所述的方法,其特征在于采用多级Hash或Hash表结合平衡二叉 树的方法查询所述ClientIP表,实现对IP的快速查找。
4. 如权利要求3所述的方法,其特征在于所述步骤3)中,对数据包进行转发的方法为1) 如果所述ClientIP表中有IP对中的一个IP,则利用该IP在所述ClientIP表中对 应的输出端口对该数据包进行转发;2) 如果所述ClientIP表中有IP对中的两个IP,则判断两个IP在所述ClientIP表 中对应的输出端口是否相同,如果两输出端口相同则利用该输出端口对该数据包进行转 发;如果两输出端口不同,则往每个端口均转发一份该数据包,并在该数据包上打上双 ClientIP数据标志。
5. 如权利要求1所述的方法,其特征在于所述步骤4)中,如果所述ClientIP表中没 有IP对中的任一 IP,则采用应用层协议的方向特征获得客户端IP,然后查询该IP在所述 UnClientIP表中是否有相应的IP表项,若有,则删除该表项并在所述ClientIP表中添加新 的表项,记录该IP及其在所述UnClientIP表中对应的输出端口 ;若无,则选择一输出端口 对该数据包进行转发,同时在所述ClientIP表中增加一表项,记录客户端IP和所选输出端 口的对应关系。
6. 如权利要求1或5所述的方法,其特征在于所述选择的输出端口为负载最低的输出 端口。
7. 如权利要求5所述的方法,其特征在于通过应用层的协议特征来获得所述应用层协 议的方向特征;所述协议特征包括服务器端口或协议的特征字段。
8. 如权利要求7所述的方法,其特征在于通过在应用层起始位置找固定偏移,并利用 应用层协议的方向特征与该偏移处字段进行字符串匹配的方式,得到应用层协议的方向特 征。
9. 如权利要求8所述的方法,其特征在于采用多模匹配算法进行所述字符串匹配。
全文摘要
本发明公开了一种海量数据分流方法,属于网络数据传输领域。该方法为1)分别建立一ClientIP表和UnClientIP表;2)对接收到的数据包进行解码出IP对和端口信息;3)查询ClientIP表中是否有所解码出的IP,如果有则利用该IP在ClientIP表中对应的输出端口对该数据包进行转发;如果没有则查询UnClientIP表中是否含有该数据包的IP对,若有则按照UnClientIP表中对应的输出端口对该数据包进行转发;4)如果UnClientIP表中没有该数据包的IP对,则选择一输出端口对该数据包进行转发,同时在UnClientIP表中增加一表项。本发明具有高准确性、不破坏会话流的特点。
文档编号G06F17/30GK101699802SQ20091023628
公开日2010年4月28日 申请日期2009年10月23日 优先权日2009年10月23日
发明者周晗, 张弛 申请人:北京锐安科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1