保持连接特性的高速过滤分流方法 【技术领域】
本发明涉及的是一种宽带网高流量数据处理方法,特别是一种适用于宽带网数据的保持连接特性的高速过滤分流方法,用于网络信息技术领域。
背景技术
近两年,我国骨干网与城域网的建设已达到相当的规模,骨干网的带宽通常在2.5G以上。现阶段的网络安全产品如防火墙、入侵检测系统、网络安全审计等对网络数据包的处理性能是保证系统能否对网络中发生的安全事件做出正确有效分析与判断的首要前提。现有安全产品对于2.5G、10G以上宽带网络的海量数据处理需求存在很大地局限性:
1、基于单计算机方式的IDS、审计系统等产品依靠CPU实现网络数据的处理,但内存、CPU等部件存在数量和速度上的限制,不可能无限制地支持大数据量的处理需求。因此,此类安全产品无法直接用于2.5G以上的高速网络。
2、基于七层交换技术的负载均衡设备与各类IDS、审计系统的结合是目前针对高流量网络数据处理的理想方式。但目前的负载均衡处理机制是以连接表的形式保存TCP连接的地址信息,随着网络规模的扩大及复杂化,连接表将随网络规模的扩大呈指数增长。此外,在网络上还存在大量无用的虚假连接,连接表数据规模的不断膨胀还会加大在查表过程中的资源消耗,即使采用高性能的NPU也很难适应超大连接数据的处理需求。
3、连接表快速查找问题限制了数据处理能力的提高。采用软件实现,数据检索速度较慢;基于硬件如内容关联存储器(CAM)的实现方案,存储成本过高,不可能满足无限庞大的连接表的存储和快速查找。
以色列Radware公司的安全应用交换机FireProof,可对多台防火墙FireWall、VPN、IDS做流量的负载均衡。FireProof中使用了多种传统的负载均衡算法,如轮循算法、加权最少用户法、加权最少字节法、加权最少数据包法。为了保证能够对属于同一连接的双向数据包经负载均衡算法数据结果处理一致,在FireProof中需要跟踪并记录每个连接双向的数据信息,通过检测这些信息来保证后续通信数据能得到相同的负载均衡处理。对于高数据流量的网络,FireProof采用传统的Hash表方法,为每个连接在Hash表中建立一条记录,当这个连接的下一个报文到达时,从Hash表中可以得到对该连接分配的输出地址和端口,将报文传给原选定的防火墙。当连接终止或超时,FireProof将这个连接的信息从Hash表中删除。该产品不足之处在于:为了保证对属于同一连接的双向数据包处理的一致性,必须在该产品中为每条连接记录与处理相关的信息,随着网络规模的不断扩大,日益庞大的连接信息的存储及查找问题无法满足高速宽带网络的数据处理需求。
互联网的宽带化发展使得网络流量迅速增长,面对核心网、骨干网上的海量数据,仅能满足百兆网络、千兆网络的数据处理能力的网络安全产品,由于无法对高流量的数据进行有效报文采集和处理,造成数据采集缺失而出现漏报,已经成为这些安全产品在电信骨干网络领域应用的一个主要瓶颈。
【发明内容】
本发明的目的主要是针对防火墙、入侵检测、安全审计等产品在高速骨干网络应用中海量数据处理机制的这些缺陷,提出一种保持连接特性的高速过滤分流方法。使其依据用户自定义的过滤分流规则结合基于Hash处理的分流算法,将从网络上接收到的原始数据包中对业务处理有意义的数据实时有效、并保持连接地转发到相应的后端集群处理系统进行进一步的业务处理,有效地解决在高速骨干网环境下,构建入侵检测、流量统计、内容审计、网络监测、负载均衡以及其它应用系统时,对海量数据流进行高速转发和集群处理的需求。
本发明是通过以下技术方案实现的,首先是设置输出端口分组规则和过滤分流规则。输出端口分组规则的配置是首先将各输出端口按照对应的后端应用系统的业务处理类型进行分组,然后再根据组内各端口对应的后端系统的处理能力决定每个端口在该组中数据包处理流量的分配比例。过滤分流规则的配置是根据IP地址信息或特殊字段将不同的数据包划分到各个分组当中。数据过滤分流的处理过程是首先通过协议分析,从网络上接收到的原始数据包中提取出IP数据包,根据设置好的过滤分流规则从大量的原始数据中滤掉与后续处理无关的部分,将相关数据划分到不同的输出端口分组中。然后将划分到每个组中的数据包的地址和端口信息进行Hash运算,Hash值再与该分组所包含的端口总数取模,得到的结果就是该数据包在所属的分组中对应的输出端口序号。
以下对本发明作进一步的说明,具体内容如下:
1.规则设置:对原始数据进行过滤分流处理之前首先要设置规则。规则分为两部分,一部分是输出端口分组配置规则,另一个部分是过滤分流规则。
■输出端口分组配置规则
将输出端口进行分组处理的优点是为了配合过滤规则,将对应业务处理需求相近的输出端口以分组的方式集中统一处理,与每个端口分开独立处理的方式相比,分组方式的处理过程更为简单高效。输出端口的分组主要遵循以下几点原则:
(1)输出端口的分组首先依据后端处理系统的业务需求,按照不同的业务处理类型进行分组。但是由于一个系统可能与多个系统分别在过滤规则属性中互相有重叠,因此同一个输出端口可以出现在不同的分组中。
(2)在每个分组内部,考虑到各个系统处理能力存在不均衡的情况,为了保证数据处理任务能够实现均衡分配,同一个输出端口可以多次出现在同一个组中,即在分组内按照每个端口对应的后端系统的数据处理能力决定每个端口在该组中数据包流量的分配比例。
(3)组内各输出端口的分配在保证负载均衡的同时,还必须保证同一条TCP连接(双向)的所有数据包必须转发到同一个输出端口上,以便于后端对所接收到的数据的汇总和还原。
■过滤分流规则
过滤分流规则的设置包括两种方式:一种是将数据包的IP地址和端口信息,如源IP地址、源IP掩码、源端口、目的IP地址、目的IP掩码、目的端口作为直接监控对象,基于这些IP地址信息将规则设置在基于地址信息的过滤分流规则表中。另一种是基于特殊字段信息的规则设置方式,即用户只需设置特殊字段、该字段的偏移量、该字段的长度、该字段的匹配内容以及相应的过滤分流行为。
基于数据包的IP地址和端口信息的过滤分流规则表的格式如下:规则号源IP地址源IP掩码源端口目的IP地址目的IP掩码目的端口过滤分流行为
基于特殊字段信息的过滤分流规则表的格式如下:规则号字段偏移量字段长度匹配内容过滤分流行为
其中:
规则号:每个规则的唯一标识序号
源/目的IP地址:数据包传输的源端和目的端的IP地址值
源/目的IP掩码:数据包传输的源端和目的端IP字段的子网掩码
源/目的端口:数据包传输的源端和目的端的端口号
字段偏移量:从IP数据包内容开始计算的需要匹配的特殊字段的偏移量
字段长度:需要匹配的特殊字段的长度
匹配内容:特殊字段的匹配值,这些特殊字段可以包括如URL地址、Email信件中的收信人和发信人地址字段。
过滤分流行为:“0”表示将该数据包丢弃;“1”表示将该数据包转发到组1;“2”表示将该数据包转发到组2;……“N”表示将该数据报转发到组N;“-1”表示该条规则无效,适用于某条规则不便于立即删除但当前又不可以使用的情况。如果过滤分流规则表中除过滤分流行为字段外的所有字段都为0,则表示该条规则适用于所有数据包。
过滤分流规则的设定将作为此后的过滤分流处理的依据。当从网络上接收到的数据包和一条基于数据包的IP地址和端口信息的过滤分流规则匹配时,数据包将根据该规则设定的过滤分流行为转发到相应的分组;如果从网络上接收到的数据包中包含与预先设置的特殊字段值相同的数据时,将提取出该数据包的IP地址信息,连同预先设置的相应的过滤分流行为,形成一条基于IP地址和端口信息的动态过滤分流规则,写入基于数据包的IP地址和端口信息的过滤分流规则表中。该数据包以及该数据包所属的TCP/UDP连接的所有后续包都将根据此规则设定的过滤分流行为转发到相应的分组。基于特征字段匹配形成的过滤分流规则具有时效特性,当这条连接结束后,基于数据包的IP地址和端口信息的过滤分流规则表中对应的这条规则也将被删除,对于新接收到的数据包,同样要按照上述特殊字段匹配的过程重新生成新的基于IP地址和端口信息的动态过滤分流规则。
2.数据过滤分流处理:规则设置好后,就可以开始对网络上的原始数据包进行过滤分流处理。这一数据处理过程包括以下几个环节:
(1)初始化:将过滤分流规则导入内存,如果采用CAM技术实现,则将规则设置到CAM系统中。系统会根据用户在“基于数据包的IP地址和端口信息的过滤分流规则表”和“基于特殊字段信息的过滤分流规则表”中设定的内容,生成基于数据包的IP地址和端口信息的过滤分流规则表和基于特殊字段信息的过滤分流规则表两张表。其中,基于数据包的IP地址和端口信息的过滤分流规则表包含静态设置的规则和动态设定的规则两部分,静态设置的规则是用户设定的内容,动态设定的规则是系统在进行基于特殊字段信息的过滤分流规则匹配时动态生成的规则内容,详见下文关于过滤处理的过程。由于动态设定的规则具有时效性,因此导入到内存的基于数据包的IP地址和端口信息的过滤分流规则表增加“动态/静态”和“超时计数”两个字段,格式为:规则号源IP地址源IP掩码源端口目的IP地址目的IP掩码目的端口过滤分流行为动态/静态超时计数
(2)截取原始数据包:截取网络上的数据包,进行协议分析,根据网络协议数据包格式提取出IP数据包。
(3)过滤处理:
首先,系统将获取的IP数据包按照预先设置的基于数据包的IP地址和端口信息的过滤分流规则表进行匹配,如果匹配成功,则按照规则表中设置的“过滤分流行为”,将数据包划分到不同的输出端口分组中。如果匹配到的规则属于动态设定规则,并且数据包属于连接结束包,则清除该条动态设定规则,否则,将该条规则的超时计数清0。对于超过计数值仍未处理完成的情况,该条动态设定的规则也将被删除。
此后,对于没能与基于数据包的IP地址和端口信息的过滤分流规则表中规则匹配成功的数据包,再与基于特殊字段信息的过滤分流规则表中设置的规则进行匹配,如果匹配成功,根据该条特殊字段信息的过滤分流规则中设定的过滤分流行为将数据包划分到不同的输出端口分组中,并根据该数据包的源IP、目的IP地址和此规则的过滤分流行为生成一条基于数据包的IP地址和端口信息的动态过滤分流规则加入到基于数据包的IP地址和端口信息的过滤分流规则表中,通过与这条新形成的动态规则进行匹配,将会提取出该数据包所属连接的后续数据包。如果数据包未能与基于特殊字段信息的过滤分流规则相匹配,则丢弃该数据包。
由于动态生成的基于数据包的IP地址和端口信息的过滤分流规则是针对匹配到特殊字段内容的连接,因此不会产生巨大的动态规则数量,也不会受到类似SYNFlooding(同步泛滥)攻击的超大连接数影响,通常的CAM技术能够满足需求。
(4)分流处理:分流算法是将划分到每个分组中的每个数据包的源IP地址和目的IP地址进行高低位按位异或运算,如果是TCP/UDP数据包,则再将TCP/UDP端口号与运算结果再次进行异或,最终得到一个运算结果HASH值。再将此运算结果HASH值与该分组中所包含的输出端口总数取模,得到的结果就是该数据包在所属分组中对应的输出端口序号。
采用这种分流算法的原理是:以IP地址可以从网络上的所有数据包中确定出属于某一个源主机和目的主机之间进行数据交换的数据包,而异或运算的特点是运算结果与输入数据的顺序无关,因此可以保证同一个连接上的双向数据包的IP地址和端口号运算得到的值相同,同时按位异或运算具有一定的离散特性,基本能够保证不同的连接经异或处理后得到不同的结果值,因此再通过与分组中的输出端口总数取模后,就可以保证既能够将不同的数据包均衡地分配到不同的输出端口上,又可以将属于同一连接的数据包从相同的端口输出,从而实现不依赖连接表又能够保持连接情况下的负载均衡的分流处理。
本发明具有实质性特点和显著进步:(1)利用过滤分流规则对原始数据包进行粗粒度过滤的预处理方法,可以大大减少后端的数据处理负担;此外,还能对数据包内容进行匹配,能够对匹配特殊内容的数据包所属连接的后续数据包进行分流处理。(2)既能根据数据包类型进行分流,又能对同一类型数据包根据流量比例进行分流。(3)利用Hash算法取模实现的分流处理,不需要依赖连接表同样可以保持连接,解决了传统的负载均衡算法存在的连接表太大难于维护和存储的不足,并且只需要根据取模后的结果即可以直接确定输出端口,避免了传统算法需要对连接表中的数据进行逐条检索造成的查找效率低等问题,保证了更高的检索效率,从而能够满足高速骨干网上海量数据流无上限并发处理的需求。(3)本方法适合采用现场可编程门阵列(FPGA)和内容可寻址存储器(CAM)芯片等专用硬件技术实现,能够达到较高的性价比,保证在高速骨干网络的线速处理需求。如果限定一组内输出端口数量为2的幂次方,则可采用按位“与”的方式实现,更适合硬件实现,进一步提高效率降低成本。
【附图说明】
图1本发明实施的系统示意图
【具体实施方式】
如图1所示,在核心骨干网络环境中,接入多台入侵检测设备、审计设备和网络监测设备对网络系统的运营状况进行安全监控。这些安全设备需要从核心骨干网里的海量数据中提取出自身处理所需的信息作为后端分析与判别的依据。采用本发明中提出的技术方案,可以满足大容量数据转发处理器无法满足数据的分类转发处理的需求。下面阐述本发明技术方案的具体实施例。
(1)设置输出端口分组配置规则:假设高速网过滤分流接入平台具有8个输出端口,端口标识号分别为:0、1、2、3、4、5、6、7,这些端口分别对应后端的各个安全监测设备。根据每个安全监测设备的业务类型处理需求和各自的数据处理能力,将各个端口划分成四个分组:分组号 输出端口标识号1 3;2;0;22 1;43 5;7;5;6;74 0;4
划分到同一个分组中的端口说明它们将处理相同类型的数据包,其中端口2在分组1中出现两次,说明端口2对应的后端处理设备将接收并处理该输出端口中二四分之一的数据量;端口4被划分到2和4两个分组当中,说明端口4将负责转发来自这两个分组的数据。
(2)设置过滤分流规则:过滤分流规则的设置是为了实现粗粒度的数据过滤分流,将对后端处理无用的数据滤除掉,将后端每个处理设备所需的数据划分到指定的端口分组中。过滤分流规则设置的示例如下所示:
基于数据包的IP地址和端口信息的过滤分流规则表: 规 则 号 源IP地址 源IP掩码 目的IP地 址 目的IP掩码 源端 口号 目的 端口 号 过滤分 流行为 动态/ 静态 超时 计数 0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0 21 1 静态 / 1 0.0.0.0 0.0.0.0. 0.0.0.0 0.0.0.0 5050 0 0 静态 / 2 61.125.2.1 255.255.255.255 0.0.0.0 0.0.0.0 0 0 2 静态 / 3 0.0.0.0 0.0.0.0 61.125.2.1 255.255.255.255 0 0 3 静态 / 4 61.125.34.3 255.255.255.255 0.0.0.0 0.0.0.0 0 0 2 静态 / 5 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 80 0 1 静态 / 6 61.125.3.8 255.255.255.0 0.0.0.0 0.0.0.0 90 0 4 静态 /
基于特殊字段信息的过滤分流规则表:规则号字段偏移量字段长度匹配内容过滤分流行为3014215xy@yahoo.com.cn3
(3)对从核心骨干网络上截取到的数据包进行协议分析,将IP数据包提取出来。假定截获到以下两个数据包:
数据包a由源地址61.125.3.8,源IP掩码255.255.255.0,源端口90,发向目的地址10.10.25.30,目的IP掩码255.255.255.0,目的端口为1290。
数据包b是基于SMTP协议发送邮件时截取到的数据包,源地址为10.10.19.131,源IP掩码255.255.255.0,源端口为1664,目的地址为216.136.173.18,目的IP掩码255.255.255.0,目的端口为25,发信人的邮件地址为xy@yahoo.com.cn。
(4)将每个IP数据包分别与过滤分流规则表中的各个规则进行匹配,如果匹配到过滤分流行为是0的规则,将该数据包丢弃,对其余保留下来的数据包用分组号进行标记,标明各个数据包的分组结果。如果某一个数据包不能与任何一条规则匹配,则将该数据包丢弃。
从上述定义的规则可以得出,划分到组1的数据是:目的端口号为21的数据包、源端口号为80的数据包;划分到组2的数据是:从IP地址为61.125.2.1、IP掩码为255.255.255.255发出的数据包和从IP地址为61.125.34.3、IP掩码为255.255.255.255发出的数据包;划分到组3的数据是:发向IP地址为61.125.2.1,IP掩码为255.255.255.255的数据包,以及在数据包IP包头后的第0X42字节开始的15个字节中包含xy@yahoo.com.cn内容的所属连接的所有数据包;划分到组4的数据是:从IP地址为261.125.3.8、IP掩码为255.255.255.0、端口号为90发出的数据包。此外,如果规则匹配完成后,用分组号来标识每个数据包。
根据(3)中假定的情况对数据包a的处理过程:将数据包a的IP地址信息与基于数据包的IP地址和端口信息的过滤分流规则表中设置的规则逐一进行匹配,匹配结果发现该数据包的IP地址信息满足规则6,因此数据包a按照规则6中设置的过滤分流行为被划分到分组4处理。
根据(3)中假定的情况对数据包b的处理过程:将数据包b中的地址信息与基于数据包的IP地址和端口信息的过滤分流规则表中设置的规则逐一进行匹配,匹配结果发现没有与任何一条规则匹配成功,再将该数据包中字段偏移量为0X42字节之后的15个字节的值“xy@yahoo.com.cn”提取出来与基于特殊字段信息的过滤分流规则表中的规则进行逐一匹配,匹配结果满足规则301。按照规则301中设置的过滤分流行为,将数据包b划分到分组3,并提取出该数据包中的IP地址信息,连同规则301中设置的过滤分流行为,生成一条新的动态过滤分流规则加入到基于数据包的IP地址和端口信息的过滤分流规则表中,即:规则号 源IP地址源IP掩码目的IP地址目的IP掩码源端口号目的端口号过滤分流行为动态/静态超时计数7 10.10.19.131255.255.255.0216.136.173.18255.255.255.01664253动态200
(5)对划分到每个分组的数据,按照本发明中提出的分流算法进行分流处理。数据包a的源IP地址61.125.3.8和目的IP地址10.10.25.30高低位按位异或,得到的结果值再与源端口号90和目的端口号1290的异或结果进行按位异或,最终得到的结果与分组4中的端口总数取模,即:
{(0X3D7D_0X0A0A)_(0X0308_0X191E)_(0X005A_0X050A)}mod2={0X3777_0X1A16_0X0550}mod 2=1
运算结果为1,表明该数据包a应从分组4中的第2个端口输出,即端口4输出。
数据包b的源IP地址10.10.19.131和目的IP地址216.136.173.18高低字节按位异或,得到的结果值再与源端口号1664和目的端口号25的异或结果进行按位异或,最终得到的结果与分组3中的端口总数取模,即:
{(0X0A0A_0XD888)_(0X1383_0XAD12)_(0X0680_0X0019)}mod5={0XD282_0XBE91_0X0699}=4
运算结果为4,表明该数据包b应从分组3中的第5个端口输出,即端口7输出。
(6)假定收到数据包a、b所属连接的后续包,由于所属同一连接数据包的IP地址和端口相同,因此经上述运算过程得到的结果也相同,所以保证了相同连接的所有后续包仍然从相同的端口输出。
(7)收到数据包b所属连接的结束包,则清除动态设置的规则7。
本发明提出的不依赖连接表的高速过滤分流方法如果采用CAM技术实现,对于12路2.5G POS接入,具备30G的数据接入能力,满足高速骨干网络的线速数据接入需求。