作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。
标题 | 基于NetFlow的网络流量采集系统设计 |
技术领域 | 工业以太网 |
行业 | |
简介 | |
内容 |
摘 要:本文主要介绍流量分析中主要使用的NetFlow技术,并根据NetFlow的特点,给出了一个基于NetFlow的网络流量采集系统设计实例。
关键词:NetFlow;流量采集;多线程 Abstract: By analyzing the principles of the widely-used NetFlow technology,this paper,according to the characteristics of data flow of NetFlow,Provides us with a practical illustration of system design on collecting data of NetFlow. Key words: NetFlow; flow collection; multi-thread 引言
随着网络技术的飞速发展,各种基于网络的业务和应用不断增加,这些业务和应用对网络性能和安全提出了更高的要求。在这种环境下,网络流量数据对网络服务质量和网络安全管理等变得十分重要。因此,对网络流量及相关情况的深入分析,是网络管理的重要环节。 目前,网络流量分析技术主要有基于SNMP(简单网络管理协议)、基于包嗅探和基于Flow(流)等几种。本文研究探讨的NetFlow则是基于Flow技术。 1 NetFlow技术
1.1 NetFlow技术介绍 NetFlow技术于1996年由Cisco的Darren Kerr和Barry Bruins发明,它起初用于网络设备对数据交换进行加速,并同步实现对高速转发的IP数据流(Flow)进行测量和统计。经过多年的技术演变和发展,NetFlow技术已成为当前最主要的网络流量分析和计量行业标准。利用NetFlow技术可以实现网络流量监测、用户行为监控、网络安全、网络规划以及流量计费等功能。 NetFlow技术已经在大多数Cisco路由器和交换机中广泛应用,并得到了主流厂商(诸如Juniper、Foundry、Extreme等)的支持。国内华为推出的NetStream技术与NetFlow技术兼容。 1.2 NetFlow技术原理 NetFlow技术基于流。所谓流,就是在高速数据交换中一定时间段内给定的源端和目的端所发生的具有相同属性的连续数据包的集合。一条NetFlow流一般由以下7个关键字段惟一标识:
每当路由器或交换机的端口上接收到数据包时,NetFlow就会扫描这7个字段,判断此数据包是否属于一个已经存在的流。若是,则相应流的流量统计将增加。否则,在NetFlow的高速缓冲中生成一条新的流记录。在新的流不断产生的同时,NetFlow的高速缓冲内过期的流以UDP数据报的方式导出。
路由器每秒检查一次NetFlow的高速缓存,在如下情况时输出流:
1.3 NetFlow数据格式
NetFlow导出的数据由1个包头和1~30个流记录组成。NetFlow导出的数据格式共有5个版本,它们分别是Version 1、Version 5、Version 7、Version 8和Version 9,其中V5是最为流行和成熟的版本,目前已得到最广泛的使用,而最新的V9已经被列入IETF的标准。NetFlow V5版本数据包的包头格式和流记录格式分别如图1和图2所示。 ![]() 图1 V5版本数据包的包头格式 ![]() 图2 V5版本数据包的流记录格式
2 NetFlow网络流量采集与聚合
2.1 系统概述 根据NetFlow技术的特点结合华北科学院图书馆网络环境,本文设计并实现了一个网络流量采集系统。系统结构如图3所示: ![]() 图3 NetFlow流量采集与聚合系统结构
系统在Windows平台下使用C#作为开发语言,SQL SERVER 2005作为数据库。 2.2 NetFlow在Cisco Catalyst 6509上的配置 华北科技学院图书馆网络环境中配置1台Cisco Catalyst 6509交换机。NetFlow在交换机上配置如下:
配置完成后可以使用Show mls netflow ip命令显示NetFlow高速缓冲中的流记录详情。
2.3 NetFlow流量采集与聚合 由于NetFlow数据是由UDP数据报的形式导出,因而随着数据量的增加数据解析速度跟不上数据包到达速度,则会出现严重的丢包现象。为了实现大流量数据及时接收和低丢包率,NetFlow流量采集与聚合采用多线程实现。 NetFlow流量采集与聚合器结构如图4所示:
![]() 图4 NetFlow流量采集与聚合器结构
(1)UDP监听线程
根据在交换机上配置的端口,系统启动相应的监听端口,并采集从交换机上送来的UDP数据报,对采集到的每个数据报,取出其净载(即NetFlow数据),并将该NetFlow数据压入队列(Queue)。以下为部分代码: ![]() (2)NetFlow数据拆分线程 首先定义流记录结构,然后从队列取出NetFlow数据,再根据定义的结构将NetFlow数据进行拆分,分离出源IP、目的lP、源端口、目的端口、数据包大小、协议类型等信息,最后将这些数据压入内存数据表(DataTable)中。以下为部分代码: ![]() (3)聚合与写数据库线程 每隔3分钟,从内存数据表中取出数据,根据源IP、目的IP进行聚合,将聚合结果保存在数据库。以下为部分代码:
![]() 3 实际的流量采集与监测
在本系统的支持下,系统数据库为前端分析提供了充足且多样化的数据准备,前端程序只需通过简单的查询语句即可得到所需的数据集,极大简化了查询的工作量。图5为某时段系统采集的数据生成的流量监测图。 ![]() 图5 某时段流量监测图
4 结束语
本文基于NetFlow的特点,提出了一套适用于高速大流量网络的流量采集方案。流量采集通过多线程实现,有效提高了流量采集的可靠性。采集的原始流经聚合和存储,为前端的数据分析提供了全面支持。本系统在实际应用中取得了良好效果。 参考文献:
[1] Cisco System Inc. NetFlow Services Solution Guide. 2007. [2] Cisco System Inc. Introduction to Cisco IOS NetFlow – A Technique Overview. 2007. [4] 郭剑云,曹庆华. NetFlow流量采集与聚合的研究实现. 现代电子技术,2009(7). [5] 袁梅宇. 高效率多线程网络流量采集处理的关键技术和算法. 计算机工程,2004(增). [6] 徐川,唐红,赵国锋. 降低高速网络流量测量器报文丢失率技术的研究. 计算机工程 2006(16). |