面向3G核心网入侵检测的数据分流方法
2012-08-06程冕唐勇苏金树陈曙晖
程冕 唐勇 苏金树 陈曙晖
国防科技大学计算机学院 湖南 410073
0 引言
如何将核心网流量完整均匀地分配到每一台入侵检测设备中,是当前需要迫切解决的问题。传统的多元组(指源目IP,源目端口等)哈希函数调度方式因无法准确识别每个数据报文的用户归属,无法满足3G核心网中按用户进行分流的要求。因此本文提出一种基于用户终端IP的数据分流方法,识别出报文中的用户终端IP后再进行分流,使得同一用户产生的所有数据都能在同一台入侵检测设备中进行分析还原,确保了用户数据的完整性以及还原的准确性。
1 基于用户终端IP的数据分流方法
1.1 分流目标
针对3G核心网域流量大且报文结构复杂的特点,为适应多台入侵检测设备并行处理的方式,分流方法必须满足以下两点:
(1) 数据流完整原则。一方面为应对目前出现的入侵检测的逃避技术,如TCP分片攻击,我们必须保证同一个会话被分流到同一个检测系统中。可以采用基于多元组的哈希函数调度方法来实现这一目的。另一方面在3G核心网域,为检测针对用户的攻击,还要求能够完整还原每一个用户的数据信息,这就需要将所有同一用户产生的数据报文分流到同一台入侵检测设备中。
(2) 负载均衡原则。3G核心网所覆盖的范围很大,因此流量也非常惊人,单一的入侵检测设备已经远远无法满足线速处理的要求。因此在并行处理的基础上,我们要求分流方法能够将数据流完整均匀地转发至每一台入侵检测设备,以完成线速处理的要求。
1.2 分流方法
基于以上原则,为有效识别用户终端IP地址,本方法总体分为四个模块来完成分流功能。程序初始化时会首先建立存放PDSN/GGSN地址的表M1和存放目的MAC地址的哈希表H1。图1为本分流算法的简单流程图。
图1 分流算法流程图
接下来分模块对本分流方法进行详细介绍。
(1) 学习模块。此模块用于3G核心网链路中PDSN/GGSN地址的提取及存储。算法1是学习模块运行过程的简单描述。
算法1 学习模块(1)Initialize M1;(2)WHILE (Packet from 3G core network);IF(Data Packet) THEN Send Packet;Continue;IF(Control Packet) THEN Get PDSN/GGSN address;Compare each address in Table M1;IF(Match)THEN Send Packet;Continue;IF(Match not found ) THEN Write address into Table M1;Send Packet;Continue;ELSE Drop Packet;END IF;END WHILE;
(2) 上下行判定模块。此模块用于进行数据报文上下行状态的判定,在判定结束后会给每个数据报文填上特定的标签。算法2是上下行判定模块运行过程的简单描述。算法中报文上下行状态的判定根据如下:
算法2 上下行判定模块(1)WHILE (Packet from 学习模块 );IF(Data Packet)THEN Get Source IP and Destination IP;Compare each address in Table M1;IF(Source IP Match) THEN Write Up Link Sign;Send Packet;Continue;IF(Destination IP Match) THEN Write Down Link Sign;Send Packet;Continue;IF(Control Packet) THEN Send Packet;Continue;END IF;END WHILE;
① 若数据报文的源IP地址与表M1中的PDSN/GGSN地址匹配,说明此报文为PDSN/GGSN端往PCF/SGSN端通信的报文,即为下行链路报文。
② 若数据报文的目的IP地址与表M1中的PDSN/GGSN地址匹配,说明此报文为PCF/SGSN端往PDSN/GGSN端通信的报文,即为上行链路报文。
(3) 解封装模块。此模块用于数据报文隧道封装结构的解封装处理。这里应用文献[11]中的报文提取方法即可完成相应处理,得到内层的用户数据报文,最后将其发往分流模块。
(4) 分流模块。此模块用于对用户终端IP的判定,并以此对用户数据报文进行分流并发送至入侵检测系统中。算法3是分流模块运行过程的简单描述。
算法3 分流模块(1)Initialize H1;(2)WHILE (Packet from 解封装模块 );IF(Up Link Packet) THEN Get Source IP;Run HASH Algorithm;Match MAC address in Table H1;Write MAC address into Packet;Send Packet;Continue;IF(Down Link Packet) THEN Get Destination IP;Run HASH Algorithm;Match MAC address in Table H1;Write MAC address into Packet;Send Packet;Continue;END IF;END WHILE;
算法中用户终端IP的判定根据如下:
① 若为上行链路报文,可知是从用户终端发往Internet网络的报文,判定源IP地址即为用户终端IP地址。
② 若为下行链路报文,可知是从Internet网络回复给用户终端的报文,判定目的IP地址即为用户终端IP地址。
2 实验结果
为证明本文数据分流方法的可行性,我们通过回放实际3G链路中采集的原始数据包来测试使用本方法所形成的3G流量处理分流设备。测试数据包采集自某省实际的CDMA2000核心网链路。
测试分为功能测试和性能测试两方面。功能方面主要测试是否满足负载均衡性和数据流完整性,性能方面则进行大流量下的丢包率统计,测试其性能瓶颈。测试仪采用EXFO公司的IPRO 10G测试仪以及IXIA公司的Optixia XM2 10G测试仪进行原始数据报文的回放,均可支持最大10Gbit/s的回放速率。设备结构如图2所示。
图2 测试设备结构图
2.1 功能测试
本测试只使用IPRO 10G测试仪,测试数据包的大小为2GB,包含有1816784个GRE隧道封装报文,通过程序统计其中包含了647条用户数据流,经过3G流量处理分流设备处理后实际输出1280011个用户数据报文,测试时回放速率为1.5Gbit/s。入侵检测设备使用六台带有千兆网卡的主机,主机硬件配置为CPU主频2.66GHz、内存2G,操作系统为CentOS 5.6。同时在入侵检测设备上运行OmniPeek网络数据包采集分析软件进行数据包采集,并通过设定过滤条件排除了非隧道封装数据报文的采集。图3为负载均衡方面的测试结果,S1~S6代表六台不同的入侵检测系统。测试结果表明本数据分流方法在负载均衡原则上已基本达到要求。
图3 负载均衡测试结果
表1 数据完整性测试结果
表1为数据完整性方面的测试结果。可以发现每个入侵检测系统收到的用户流数目相加正好等于从3G流量处理分流设备中发出的用户流总数,可确定没有任何一条用户数据流被分离到两台测试主机上。如果有任何一条用户流被分发到两台不同的入侵检测系统中,最后收到的用户数之和必大于发出的用户数。证明本文提出的分流方法可以满足用户数据完整性的要求。
2.2 性能测试
为证明在实际应用中的作用,本分流方法通过Verilog硬件编程语言在FPGA中实现。
测试仪仍使用EXFO公司的IPRO 10G测试仪,因为3G核心网实际链路的流量巨大,为测试速率超过10Gbit/s的情况,增加一台IXIA公司的Optixia XM2 10G测试仪。两台测试仪同时进行原始数据报文的回放,可以使数据报文进入3G流量处理分流设备的最高速率达到20Gbit/s。
测试数据包大小共为374GB,包含报文6.71x108个,平均报文长度为573字节,其中GRE隧道封装报文约3.49x108个,全部报文长度分布如图4所示。
图4 测试用流量报文长度分布
图5为测试数据包采集地某工作日3G核心网域的流量分布示意图,观测时间为8:00至18:00。
将以上数据包分为两份通过两台测试仪进行同时回放,回放速率从10Gbit/s开始每次增加1Gbit/s。测试结果如图6所示。
图5 某工作日3G核心网流量分布示意图
图6 3G流量处理分流设备的报文丢失率
从图6可以发现,在报文发送速率达到15Gbit/s前,系统一直能保持线速处理的状态;在报文发送速率达到20Gbit/s时,数据丢失率不超过1%。
基于以上实验结果,本文提出的基于用户终端IP地址的数据分流算法完全能够适应3G核心网用户数据分流的要求。
3 结束语
为适应入侵检测系统并行处理前数据报文按用户进行分流的需要,针对3G核心网数据流量大,报文结构复杂的特点,本文提出了一种基于用户终端IP的数据分流方法,该方法首先通过核心网链路中的控制报文获取链路上所有的PDSN/GGSN地址,然后将每个报文外层的源目IP与获取的PDSN/GGSN地址进行比较,得到报文的上下行状态,最后根据上下行状态的结果判定每个报文内的用户终端IP并以此进行分流。本方法保证了每一条完整的用户数据流都能被分流到同一台入侵检测设备中。通过功能性实验证明,本分流方法在负载均衡和数据完整性方面完全可以满足当前3G核心网对于用户数据分流的需要。性能测试的结果也显示基于本分流方法形成3G流量处理分流设备可以承受3G核心网大流量的冲击。
[1] CDMA2000 Technical summary.http://www.umtsworld.com/html//technology/cdma2000.htm.
[2] WCDMA (UMTS): FDD Technical summary.http://www.Umtswo rld. com/technology/wcdma.htm.
[3] 蒋建春,马恒太,任党恩,卿斯汉.网络安全入侵检测.软件学报.2000.
[4] 陈培鑫,陈曙晖,苏金树.软硬结合的CDMA2000核心网终端报文提取方法.通信学报.2011.