基于NetFlow的流量统计系统的设计与实现

2014-12-23 01:27曹建业董永吉冶晓隆龚莉萍
计算机工程与设计 2014年2期
关键词:表项网络流量哈希

曹建业,董永吉,冶晓隆,龚莉萍

(1.国家数字交换系统工程技术研究中心,河南 郑州450002;2.中国人民解放军75779部队,广东 广州510000)

0 引 言

网络流量统计及分析是掌握网络行为的基础[1],是用于分析网络状况、掌握流量特性的有效方法,可以通过收集数据或报文踪迹,定量的分析不同的网络应用在网络中活动规律。目前流统计的设计大都是基于NetFlow[2]实现的,基于NetFlow 的流量统计方法[3]可以获得包括源地址IP、目的地址IP、源端口、目的端口和协议字段的五元组信息等详细信息,根据这些信息可以对协议 (应用)、主机IP (用户)以及AS域等进行统计和趋势分析,从而实现网络流量监测,用户应用监控,网络安全,网络规划以及异常流量检测[4]等功能。

传统的流量统计系统通常都是基于微处理器,通过软件实现流量采集功能,并将所采集数据包的五元组信息进行整理,得到流统计表项并存储于专用存储器中,为后续的流量收集器进行网络流量属性分析提供依据。随着网络链路速率的不断提高,传统的流量统计方式已经难以满足高速提取、实时处理的需求。因此,本文在研究NetFlow实现机制的基础上,提出了一种基于硬件实现的网络流量统计系统,本系统一方面充分利用了硬件本身处理速度的优势,采用硬件实现流量的采集处理,满足系统对高速处理性能的要求,另一方面,采用外部存储器件,解决数据流统计信息存储空间不足的问题,从而使得系统的整体性能有了很大提升。

1 NetFlow简介

典型NetFlow 是思科公司提出的一种基于Cisco IOS的应用,主要用于网络流量的监测统计和分析,目前已成为业界的标准,它动态地收集网络中的流量信息,并以特定的格式将收集的信息发往分析服务器进行统计分析[5],如图1所示。基于NetFlow 的应用系统根据流记录的五元组信息以及Flow 的开始和结束时间、包数、字节数等信息进行综合分析,可获取大量有用信息,如某段时间内网络的流量大小、协议分布、流量用户排行和应用排行、用户之间的详细通话信息、以及各种应用的流量随时间变化的趋势等等。通过较长时间的数据采集分析[6],就可以了解整体网络流量和某些重要应用的带宽占用比例和变化趋势等信息,为网络规划和升级提供参考依据。

图1 基于NetFlow 流量统计结构框架

NetFlow 技术作为业界流量统计的标准之一,已集成到大多数的网络设备中 (交换机/路由器等),具有配置方便安装简单的优点,其采集到的流量信息可以作为网络规划、管理和流量计费与病毒检测的依据。现有的交换机或路由器本身承担着网络数据报文路由转发任务,NetFlow功能的开启会极大的占用设备CPU 计算能力,严重影响设备的性能。为缓解处理器的压力,一般采用抽样技术对网络流量进行抽样输出,不可避免会导致部分流量统计信息的丢失。考虑到实时上报的数据量较大,传输和存储相关信息的工作量较大,需要有专门的数据分析统计和存储数据库用于实时分析和维护历史统计[7]。若采用软件实现上述功能,将大大占用设备本身的CPU 和存储资源,严重影响流统计的速率和准确率。

2 系统设计与实现

为了提高流统计的速率和改善流统计的准确率,本文提出一种基于FPGA 实现的网络流量采集系统[8],该系统基于Xilinx公司的FPGA 实现,用VHDL语言完成协议解析、流信息提取和表项存储管理等处理,并采用外部DDRII存储器作为外部传输设备,FPGA 直接控制DDRII存储器[9],用于存储提取的流统计信息。FPGA 作为本系统设计中的重点和难点,基于流水线处理方式,将流量采集系统划分为协议解析模块、流信息提取模块、时间戳标记模块、哈希处理模块、流信息匹配模块、流表项管理模块和NetFlow 格式封装输出模块,如图2所示。

图2 硬件FPGA 处理流程

(1)流信息提取模块

该模块在数据包中提取流统计需要的各种信息,主要包括:源IP地址 (Src IP Address)、目的IP地址 (Dst IP Address)、源端口号 (Src Port)、目的端口号 (Dst Port)、协议号 (Protocol)、接口号 (Interface)、TCP 标志 (TCP Flags)、Tos(服务类型)、包计数 (Packet Count)、字节计数 (Byte Count)等。流信息提取模块只对数据提出相关信息,并不影响原数据流设备中的正常转发处理,提出的信息送至后续模块继续进行处理。

(2)时间戳标记模块

该模块在流信息中加入数据包到达的时间标签,为后续的流超时判定提供依据,计数精度为毫秒,系统设定的时间戳长度是32bit,它的溢出时间是接近50 天,所以完全可以满足时间精度的要求。

(3)哈希处理模块

本设计中将五元组信息作为哈希运算的关键词,运算结果用作存储统计信息的地址。CRC[10]计算利用FPGA 内部并行计算的优势,可以实现快速计算,利用FPGA 实现完全可以忽略计算时延。对104bit五元组信息在FPGA 内部采用并行D64-CRC24算法,实现两个周期计算出哈希地址,利用该哈希值作为写内存表项的地址,可以很简单的实现流表项的存储和更新[11]。

如图3所示,指数曲线表示哈希长度为104 (五元组长度),流表项空间占用率分别为25%,35%,45%和50%时查表次数和冲突概率的指数关系,在占用表项为25%时,如果采用8 次查表,则可以满足冲突概率低于1x10-4,可以保证流统计信息最大输出速率要求。

图3 多次查找的哈希冲突概率

(4)流信息匹配模块

该模块通过FPGA DDRII控制器接口与片外存储器进行数据的交互,实现流表项空间的遍历查找功能。状态遍历流程如图4所示。

具体步骤如下:

步骤1 将外部存储器中遍历的初始地址清零;

步骤2 检查外部存储器中遍历地址上存储的有效指示位,判断是否具备被轮询检测表项的条件。如果不具备,则执行步骤3,否则就执行步骤4;

图4 状态遍历流程

步骤3 将指示位无效的流统计地址输出;

步骤4 检查外部存储器遍历地址是否已全部被遍历,如果是,执行步骤6,否则执行步骤5;

步骤5 将外部存储器的遍历地址顺序移至下一个未被检测的地址;

步骤6 将有效流的数目输出给格式封装模块。

(5)流表项管理模块

流表项管理模块负责对各类表项进行记录上报判定,及时更新释放超时表项的空间以容纳新表项。根据由数据流五元组哈希得到的地址,从存储器中读出表项,再将该数据流的五元组与该表项中存储的五元组信息进行比较,根据比较结果对存储器中的表项进行更新或超时删除等操作。表项管理处理流程如图5所示。

图5 流表项管理操作流程

具体步骤如下:

步骤1 判断从哈希处理模块输出的流记录中的五元组信息是否与表项空间中的表项地址上的表中的五元组匹配,如果是,执行步骤3,否则执行步骤2;

步骤2 检查表项空间中的表项地址上是否都已经建立了流记录表 (表项空间是否已经被占满),如果是,执行步骤6,否则执行步骤7;

步骤3 通过从流单元表中的提取的时间戳判断需要匹配的流记录表是否已经超时,如果是,执行步骤4,否则执行步骤5;

步骤4 删除超时的流记录信息,并将该条流信息送至格式封装模块进行封装;

步骤5 对流记录表中的包长,包个数及时间戳等信息进行更新;

步骤6 删除表项记录空间中的一条流记录表项,并将删除的该流记录表信息送至格式封装模块封装输出;

步骤7 在表项空间中未被占用的地址上为新流创建流记录表。

(6)格式封装输出模块

该模块的输出参照NetFlowV5信息格式封装,输出时外加UDP头和IP 头发送给指定服务器进行分析处理。输出信息格式封装如图6所示。

图6 输出流格式封装

流记录信息包括NetFlow 头信息和流记录信息。头信息包含版本号、流记录数、系统时间、流序列号等信息;流记录信息包 含 五 元组信息 (sip、dip、sport、dport、pro)、接口号、Tos和流中报文个数等信息。

3 系统测试与分析

为了对本文所提出的设计方案进行功能和性能验证,我们采用专用网络测试仪 (斯博伦TestCenter3.61)进行实际发包测试,采用逐步增大测试流数目的方法测试本系统在处理不同流数目情况下的识别率。通过测试仪分别模拟4个数据源见表1。

表1 测试流介绍

采用以上4种数据源分别对软件实现的流识别系统和本设计实现的流识别系统进行对比测试,测试结果如图7所示。

图7 性能测试结果

从图6中看以看出,软件系统的流识别率随着测试流数目的增大急剧下降,本系统的流识别率随着测试流数目的增大稍微下降,流识别的准确率比软件实现的识别率最大高出了37%。

测试分析结果表明,由于软件实现是基于串行处理的,识别率急剧下降主要是由于处理能能力的不足导致的;本系统实现是基于硬件并行处理的,流识别率的稍微下降,说明系统的流处理能力不是瓶颈,流识别率下降的根本原因是产生了哈希冲突。通过以上分析我们得出以下结论,本系统在处理能力和流识别率上都有很大提高。

4 结束语

传统的流统计系统一般都是基于软件实现流量采集功能的,采集流量信息所带来的系统开销会消耗大量的处理器资源,导致系统处理系能急剧下降。本文研究了Netflow的实现机制,提出了一种基于硬件实现的流量采集系统。该系统充分发挥了硬件实现在处理性能上的优势,弥补了软件实现处理能力的不足;采用全流统计模式,信息统计的更加精细,弥补了采用抽样统计容易造成信息偏差的不足;采用外部存储器,使得存储空间相当丰富,采用哈希算法,优化了表项匹配速率。所以,用本系统实现流量采集功能,可以满足对现有网络进行流量统计的需求。

[1]CHEN Shuhui,SU Jinshu.Protocol identification research based on content analysis[J].Journal of National University of Defense Technology,2008,30 (4):82-87 (in Chinese).[陈曙晖,苏金树.基于内容分析的协议识别研究 [J].国防科技大学学报,2008,30 (4):82-87.]

[2]Bilge L,Balzarotti D,Robertson W,et al.Disclosure:Detecting botnet command and control servers through large-scale NetFlow analysis[C]//Proceedings of the 28th Annual Computer Security Applications Conference. ACM, 2012:129-138.

[3]Lo C H,Peng W C,Chen C W,et al.Carweb:A traffic data collection platform [C]//9th International Conference on Mobile Data Management,2008:221-222.

[4]Wagner C,Engel T.Detecting anomalies in netflow record time series by using a kernel function [G].LNCS 7279:Dependable Networks and Services.Berlin:Springer Berlin Heidelberg,2012:122-125.

[5]MENG Xiaobei.Network flux collection technique base on Net-Flow and its application [J].Journal of Wuhan University of Technology,2009,31 (23):155-158 (in Chinese). [孟晓蓓.基于NetFlow 的网络流量采集技术和应用 [J].武汉理工大学学报,2009,31 (23):155-158.]

[6]CHENG Guang,TANG Yongning.Estimation algorithms of the flow number from sampled packets on approximate approaches[J].Journal of Software,2013,24 (2):255-265 (in Chinese).[程光,唐永宁.基于近似方法的抽样报文流数估计算法 [J].软件学报,2013,24 (2):255-265.]

[7]QI Kaiyuan,ZHAO Zhuofeng,FANG Jun,et al.Real-time processing for high speed data stream over larger scale data[J].Chinese Journal of Computers,2012,35 (3):477-490(in Chinese).[亓开元,赵卓峰,房俊,等.针对高速数据流的大规模数据实时处理方法 [J].计算机学报,2012,35(3):477-490.]

[8]ZHANG Xiaochu,YANG Ruijun,WU Weihang,et al.Design and implementation of internet traffic collection and analysis system [J].Computer Engineering,2012,38 (3):321-325 (in Chinese).[张晓初,杨瑞君,吴伟航,等.互联网流量采集分析系统设计与实现 [J].计算机工程,2012,38(3):321-325.]

[9]ZHOU Liang,WANG Juan,HU Changhua,et al.Design of DDR2SDRAM controller based on Verilog HDL [J].Journal of Hefei University of Technology (Nature Science Edition),2010,33 (8):1253-1256 (in Chinese).[周亮,王娟,胡畅华,等.基于Verilog HDL 的DDR2SDRAM 控制器设计[J].合 肥 工 业 大 学 学 报 (自 然 科 学 版),2010,33 (8):1253-1256.]

[10]DU Rui,ZHANG Weigong,DENG Zhe,et al.Parallel CRC algorithm design and implementation of new bus [J].Computer Engineering and Design,2013,34 (1):131-135 (in Chinese).[杜瑞,张伟功,邓哲,等.新型总线中并行CRC算法的设计与实现 [J].计算机工程与设计,2013,34 (1):131-135.]

[11]Mishra T,Sahni S.PETCAM-A power efficient TCAM architecture for forwarding tables [J].IEEE Transactions on Computers,2012,61 (1):3-17.

[12]Ma G L,Tang W.Efficient intrusion detection for high-speed networks [J].Applied Mechanics and Materials,2013,263:2915-2919.

猜你喜欢
表项网络流量哈希
基于多元高斯分布的网络流量异常识别方法
一种改进的TCAM路由表项管理算法及实现
基于神经网络的P2P流量识别方法
文件哈希值处理一条龙
基于ARMA模型预测的交换机流表更新算法
AVB网络流量整形帧模型端到端延迟计算
SDN数据中心网络基于流表项转换的流表调度优化
基于OpenCV与均值哈希算法的人脸相似识别系统
巧用哈希数值传递文件
网络流量监控对网络安全治理的重要性