多路端口镜像混合数据流分流方法及设备的制作方法

文档序号:7740203阅读:397来源:国知局
专利名称:多路端口镜像混合数据流分流方法及设备的制作方法
技术领域
本发明涉及网络数据传输和网络安全领域,更具体地,涉及一种对多路端口镜像混合数据流进行分流的方法及设备,可以实现将骨干网上的海量镜像数据分流给多个处理机进行处理,可根据TCP/IP协议的传输层的端口号,将数据流按应用层协议分流,并支持数据流多副本分发,对应于一套数据流的多种处理目的。
背景技术
近年来,随着网络技术的普及和发展,网络带宽和流量呈指数级的速度增长,根据CNNIC发布的《第27次中国互联网络发展状况统计报告》,中国国际出口带宽2010年底达到1,098,956. 82Mbps,年增长率为26.8%。面对日益增长的庞大网络流量,安全系统中需要处理的数据量也越来越大,数据流的实时处理要求更高的性能。
通常网络内容安全检测和分析系统监控模式可以分为串联监控模式和旁路监控模式。旁路模式一般是指通过交换机等网络设备的“端口镜像”功能来实现监控,在此模式下,监控设备只需要连接到交换机的指定镜像端口 ;而串联模式一般是通过网关或者网桥的模式来进行监控,监控设备串联在网络中。相对于串联监控模式,旁路监控模式部署起来比较灵活方便,不会影响现有的网络结构,同时旁路模式分析的是镜像端口拷贝过来的数据,对原始传递的数据包不会造成延时,不会对网速造成任何影响,另外旁路监控设备一旦故障或者停止运行,不会影响现有网络的正常运行。旁路监控模式下,单处理机处理网络流量大致范围在IG左右,无法满足对骨干网的海量端口镜像数据的处理需求。为了使网络内容安全检测和分析系统能够处理骨干网海量数据,一方面需设计更好的算法提高系统性能,另一方面需将海量数据分流成若干份,交由不同的处理机处理。基于纯链路层的交换机可以接收包含多个目的mac地址的混合数据流,但是无法分流。基于网络层的设备可以接收混合数据流并且分流,但是只能处理混合数据流中的一路数据流,不适用于多路端口镜像混合数据流。

发明内容
为了解决传统的分流方法不适用于多路端口镜像混合数据流的问题,本发明提出一种对多路端口镜像混合数据流进行分流的方法和设备,通过捕获数据包,根据TCP/IP协议的传输层的端口号,将数据流按应用层协议分流,根据对源IP和目的IP做hash运算的结果修改数据包的目的mac地址,为某路数据流的数据包直接设定对应的链路层mac地址,不同于传统的查找mac地址表过程和转发数据包过程。本发明能够实现对骨干网上的海量数据进行高速分流,同时保持流量均衡,并支持对多协议、多副本、多路端口的镜像混合数据流进行分流。根据本发明的一个方面,提供了一种对多路端口镜像混合数据流进行分流的方法,包括接收网络数据包,解析其源IP地址、目的IP地址和端口号;根据所述端口号获取与端口对应的分流策略;根据所述源IP地址和所述目的IP地址,按照双向流量均衡的方式,获取所述分流策略中的相应的MAC地址和相应的输出接口 ;将所接收的网络数据包的目的MAC地址修改为所述相应的MAC地址;以及将修改过目的MAC地址的网络数据包发送到所述相应的输出接口。根据本发明的另一方面,提出一种对多路端口镜像混合数据流进行分流的设备,包括数据包接收模块,接收网络数据包,解析其源IP地址、目的IP地址和端口号;应用层分流模块,根据所述端口号获取与端口对应的分流策略,根据所述源IP地址和所述目的IP地址,按照双向流量均衡的方式,获取所述分流策略中的相应的MAC地址和相应的输出接口 ;MAC地址修改模块,将所接收的网络数据包的目的MAC地址修改为所述相应的MAC地址;以及数据包发送模块,将修改过目的MAC地址的网络数据包发送到所述相应的输出接□。


通过下面结合

本发明的实施例,将使本发明的上述及其它目的、特征和优点更加清楚,其中图I示出了本发明的一个应用场景;图2示出了根据本发明一个实施例的分流方法的流程图;图3示出了根据本发明一个实施例的分流设备的框图;图4示出了本发明的一个软件实现的数据结构图。
具体实施例方式为了清楚详细的阐述本发明的实现过程,下面给出了一些本发明的具体实施例。参照附图对本发明的实施例进行详细说明,在描述过程中省略了对于本发明来说是不必要的细节和功能,以防止对本发明的理解造成混淆。图I示出了本发明的一个应用场景,骨干网路由器通过端口镜像方式将多路流量镜像到分流设备上,分流设备修改网络数据包目的MAC地址为处理机MAC地址后发往处理机。图2示出了根据本发明一个实施例的分流方法的流程图。首先在步骤S200中,将配置信息数组C初始化为存放与每一个端口对应的分流策略,配置信息数组C的大小为65536,下标为对应于端口号的O至65535,配置信息数组C的元素为指向DivideInfo结构体的指针,未配置的端口号的指针置为空(NULL),参见图4,其在图的左侧给出了配置信息数组C的一个示例。所述DivideInfo结构体表示分流策略,其包含以下信息协议类型protocal_type、分流的路数branch_num、每一路分流的副本数量copy_num、以及对处理机的MAC地址和输出接口进行存储的二维数组L。参见图4,其示出了两个DivideInfo结构体的示例,分别以Dividelnfo: ftp和Dividelnfo: http作为标题,它们分别对应于针对ftp协议(端口号21)的分流策略的结构体和针对http协议(端口号80)的分流策略的结构体。二维数组L存储处理机mac地址addr和输出接口 inf,其每一列代表一路分流,其每一行代表所有分流的一个副本。参见图4,其在图中右侧示出了两个二维数组L,以及其中的一个元素的内容。流量统计数组F存储二维数组L每一列的流量,即每一路分流的流量,将保存流量信息的流量统计数组F初始化为F中的元素值均为O。参见图4,其在图中右侧示出了两个流量统计数组F。索引数组T存储二维数组L的列索引,初始化后的索引数组T中的元素值与其索引相同,其初始值分别为O至branch_num-l。参见图4,其在图中右侧示出了两个索引数组T。 二维数组L具有copy_num行和branch_num列,流量统计数组F以及索引数组T的长度均为branch_num。回到图2,继续该分流方法。 在步骤S210中,接收数据包;在步骤S220中,解析接收到的数据包。从数据包头中获取源IP地址、目的IP地址、端口号以及数据包大小;在步骤S230中,根据端口号查询配置信息数组C,获得相应的分流策略。在本示例中,以所述端口号作为配置信息数组C的下标,来获取与端口对应的分流策略。在步骤S240中,按照双向流量均衡的方式,求得索引值J,计算公式为Index = hash(SrcIP, DestIP)mod branch_num其中,hash是可以对源IP地址和目的IP地址进行散列映射的函数,在本示例中,该hash函数是逐比特的“与”运算,在其它示例中,也可以是满足要求的任何运算;SrcIP为源IP地址的数值表示形式,DestIP为目的IP地址的数值表示形式;mod代表模运算;branch_num为分流策略的分流路数。之后,令j = T [Index], PJ j为所求索引值J,其中,T [Index]为索引数组T中的索引为Index的元素的值。在步骤S250中,根据副本数量copy_num,循环在二维数组L中取列索引为J的元素的值,该值即为数据包的目的处理机mac地址addr以及输出接口 inf ; 在步骤S260中,将数据包的目的mac地址修改为addr ;在步骤S280中,将数据包长度累加到F [j],更新流量统计数组F以统计流量;在步骤S290中,以预定时间间隔,根据流量统计数组F,动态更新索引数组T,以影响之后的数据流分流,从而达到负载均衡;在步骤S270中,将数据发送到输出接口 inf。之后,方法结束,直至接收到下一个网络数据包,方法重新开始。在其它实施例中,步骤S280和步骤S290可以不按照上述实施例给出的顺序发生在步骤S260和S270之间。而是可以发生在步骤S270之后,或发生在步骤S250和S260之间,或其他任何适合的地方。此外,在步骤S290中,更新索引数组T的示例步骤可以包括查找流量统计数组F中最大值的下标,记为I1,查找流量统计数组F中最小值的下标,记为In,判断相应元素的值F[I1]和F[In]之差是否大于阈值R,如果大于,则交换T [I1]和 T [In];查找流量统计数组F中第二大值的下标,记为12,查找流量统计数组F中第二小值的下标,记为Ilri,判断相应元素的值F[I2]和F[In_J之差是否大于阈值R,如果大于,则交换 T [I2]和 T [In_J ;依此类推,如果N为偶数,则在比较过F[In/2]和F[In/2+1]之差,并在进行可能的交换之后停止,如果N为奇数,则在比较过F[I(n_1)/2]和F[I(n+3)/2]之差,并在进行可能的交换之后停止,其中N为所述流量统计数组F的长度branch_num。当然,更新索引数组T的方法还可以包括其他步骤,其不受限于上述示例步骤。图3示出了根据本发明一个实施例的分流设备30的框图。如图3所示,分流设备30包括数据包接收模块310、应用层分流模块370、MAC地址修改模块320以及数据包发送模块340。数据包接收模块310,接收网络数据包,解析其源IP地址、目的IP地址和端口号(以及数据包大小);
应用层分流模块370,根据端口号获取与端口对应的分流策略,根据源IP地址和目的IP地址,按照双向流量均衡的方式,获取分流策略中的相应的MAC地址和相应的输出接口 ;MAC地址修改模块320,将所接收的网络数据包的目的MAC地址修改为相应的MAC地址;以及数据包发送模块340,将修改过目的MAC地址的网络数据包发送到相应的输出接□。此外,在其它实施例中,分流设备30可以包括比上述实施例更多、更少或不同的功能模块,只要这些模块总体上能实现上述分流方法即可。例如,设备30还可以包括分流策略配置模块350,在配置信息数组C中存储分流策略列表,以及对配置信息数组C、二维数组L、流量统计数组F以及索引数组T进行各种与分流策略的操作相关的操作;流量统计模块330,根据目的MAC地址和数据包大小,更新分流策略的流量统计数组F;以及负载均衡模块360,以设定的时间间隔,根据流量统计数组F,更新分流策略的索引数组T。至此已经结合优选实施例对本发明进行了描述。应该理解,本领域技术人员在不脱离本发明的精神和范围的情况下,可以进行各种其它的改变、替换和添加。因此,本发明的范围不局限于上述特定实施例,而应由所附权利要求限定。
权利要求
1.一种对多路端口镜像混合数据流进行分流的方法,包括 接收网络数据包,解析其源IP地址、目的IP地址和端口号; 根据所述端口号获取与端口对应的分流策略; 根据所述源IP地址和所述目的IP地址,按照双向流量均衡的方式,获取所述分流策略中的相应的MAC地址和相应的输出接口 ; 将所接收的网络数据包的目的MAC地址修改为所述相应的MAC地址;以及 将修改过目的MAC地址的网络数据包发送到所述相应的输出接口。
2.根据权利要求I所述的方法,其中,解析网络数据包的步骤还包括解析其数据包大小,并且所述方法还包括以下步骤 根据所述目的MAC地址和所述数据包大小,更新所述分流策略的流量统计数组F ; 以设定的时间间隔,根据所述流量统计数组F,更新所述分流策略的索引数组T。
3.根据权利要求I或2所述的方法,其中,获取所述分流策略中的相应的MAC地址和相应的输出接口的步骤包括 根据所述源IP地址和所述目的IP地址,按照双向流量均衡的方式,求得索引值J ; 以及根据所述索引值J,获取所述分流策略中的相应的MAC地址和相应的输出接口。
4.根据权利要求2或3所述的方法,其中, 获取与端口对应的分流策略的步骤包括通过以所述端口号作为配置信息数组C的下标,来获取与端口对应的分流策略,其中,所述配置信息数组C满足 在所述配置信息数组C中存储与每一个端口对应的分流策略,所述配置信息数组C的长度为65536,下标为对应于端口号的O至65535,所述配置信息数组C的元素为指向DivideInfo结构体的指针,未配置的端口号的指针置为空(NULL), 其中,所述DivideInfo结构体表示分流策略,其包含以下信息协议类型、分流的路数branch_num、每一路分流的副本数量copy_num、以及对处理机的MAC地址和输出接口进行存储的二维数组, 其中,所述二维数组的每一列表示一路分流,所述二维数组的每一行表示所有分流的一个副本, 其中,所述流量统计数组F存储所述二维数组的每一列的流量,即存储每一路分流的流量, 其中,所述索引数组T存储所述二维数组的列索弓丨,其初始值分别为O至branch_num-1, 其中,所述二维数组具有copy_num行和branch_num列,所述流量统计数组F以及所述索引数组T的长度均为branch_num。
5.根据权利要求4所述的方法,获取所述分流策略中的相应的MAC地址和相应的输出接口的步骤包括 根据所述索引值J,在所述索引数组T中取出所述二维数组的列索引, 根据所述副本数量copy_num和所述列索引,循环取出MAC地址和输出接口。
6.根据权利要求4或5所述的方法,其中,按照双向流量均衡的方式求得索引值J的步骤包括 对所述源IP地址和所述目的IP地址执行hash运算,以得到结果X ;将结果X对branch_num求模,得到结果I ; 则所述索引数组T的第I个元素的值即为所求索引值J。
7.根据权利要求6所述的方法,其中,所述hash运算是逐比特的“与”运算。
8.根据权利要求2至7中任一项所述的方法,其中,更新所述分流策略的流量统计数组F的步骤包括 将所述数据包大小与所述流量统计数组F中的第J个元素的值相加,并将结果存储在所述流量统计数组F的所述第J个元素中。
9.根据权利要求2至8中任一项所述的方法,其中,更新所述分流策略的索引数组T的步骤包括 查找所述流量统计数组F中最大值的下标,记为I1,查找所述流量统计数组F中最小值的下标,记为In,判断相应元素的值F[IJ和F[In]之差是否大于阈值R,如果大于,则交换TtI1]和 T[In]; 查找所述流量统计数组F中第二大值的下标I2和第二小值的下标Ilri,判断相应元素的值F[I2]和F[In_J之差是否大于阈值R,如果大于,则交换T[I2]和T[In_J ; 依此类推,如果N为偶数,则在比较过F[In/2]和F[In/2+1]之差,并在进行可能的交换之后停止,如果N为奇数,则在比较过F[I(n_1)/2]和F[I(n+3)/2]之差,并在进行可能的交换之后停止,其中N为所述流量统计数组F的长度。
10.一种对多路端口镜像混合数据流进行分流的设备,包括 数据包接收模块,接收网络数据包,解析其源IP地址、目的IP地址和端口号; 应用层分流模块,根据所述端口号获取与端口对应的分流策略,根据所述源IP地址和所述目的IP地址,按照双向流量均衡的方式,获取所述分流策略中的相应的MAC地址和相应的输出接口; MAC地址修改模块,将所接收的网络数据包的目的MAC地址修改为所述相应的MAC地址;以及 数据包发送模块,将修改过目的MAC地址的网络数据包发送到所述相应的输出接口。
全文摘要
本发明提出了一种对多路端口镜像混合数据流进行分流的方法,该方法包括根据TCP/IP协议的传输层的端口号,将数据流按应用层协议分流,然后再通过根据对源IP做hash运算、对目的IP做hash运算或对源IP和目的IP做hash运算的结果修改mac地址,达到多路分流的目的,并支持流量多副本分发,以及对应于一套数据流的多种处理目的。此外,本发明提出了一种相应的设备,其支持对多协议、多副本、多路端口的镜像混合数据流进行分流,配置灵活,并可根据数据流的协议和流量,调整用于处理每种协议的设备数目。其有效地使用了计算能力,同时具有高性能、流量均衡等特点。
文档编号H04L12/803GK102916896SQ20111021818
公开日2013年2月6日 申请日期2011年8月1日 优先权日2011年8月1日
发明者黄友俊, 李星, 吴建平, 李威, 何旭 申请人:赛尔网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1