基于NetFlow的流量监测系统研究

2012-08-06 09:38杭静文罗洪斌
铁路计算机应用 2012年8期
关键词:收集器采集器数据流

杭静文,罗洪斌,刘 颖

(北京交通大学电子信息工程学院,北京100044)

近年来,随着互联网技术的发展和企业大量业务的需要,构建在网络上的应用越来越多,其复杂程度及对网络的依赖程度也日益提高,各种各样的网络问题也随之产生。然而,由于网络的异构性和复杂性,对网络行为及其特征的了解仍然有限,因此采用网络测量方法获取网络参数是研究网络性能、进行网络管理的有效方法,同时它对解决网络问题及进行网络规划有着重要意义。

网络流量监测方法主要有基于SNMP、基于分组嗅探、基于ROMN和基于Flow技术等几种[1]。其中,NetFlow是一种网络数据包交换技术,并可同步实现对高速转发的IP数据流进行测量和统计。最新的NetflowV9版本已经提交给IETF以IPFIX(IP Flow Information Export)[2]的名称进行标准化,在正式获得采纳前,NetFlow已经获得许多主流厂商的支持,被广泛应用于网络安全管理[3]与流量监测[4~5]。

本文首先介绍现有的网络流量监测方法,对各自的优缺点进行简单分析,详细介绍了NetFlow技术,并提出了一种基于NetFlow的流量监测系统模型。该模型利用NetFlow技术进行流量监测,通过提取相应信息组成流记录,将流记录汇总存入数据库,为进一步数据挖掘提供依据。该模型采用自定义模板采集流量信息,灵活性高,可扩展性强。测试证明了该模型的可行性,能够为网络流量分析提供合理高效的数据支持,对于网络管理、异常检测以及网络规划等方面有重要意义。

1 网络流量监测方法

网络流量监测是指捕获网络中流动的数据包,并通过查看分组内部数据以及进行相关的协议、流量分析、统计等来发现网络运行中出现的问题,它是网络和系统管理人员进行网络故障和性能诊断的有效工具,下面介绍几种常见的网络流量监测方法。

1.1 基于SNMP的数据流采集

简单网络管理协议(Simple Network Management Protocol, SNMP)[6]是专门设计在IP网络中管理网络节点(路由器、交换机等)的一种标准协议,它是一种应用层协议,是TCP/IP协议族的一部分。基于SNMP的流量信息采集的核心思想是在每个网络节点上存放一个管理信息库(Management Information Base, MIB),并由节点上的代理Agent负责维护,管理站中的网络管理系统(Network Management System, NMS)通过应用层协议对这些信息库进行统一管理。

1.2 基于分组嗅探的数据流采集

当网络设备不支持SNMP,或者用户需要细节网络流信息,如网络协议类型、某特定IP地址的流量时,经常采用实时抓包分析的分组嗅探方法[7]。然而这种方法只能通过某个网络接口进行抓包,并且几乎所有现存的分组嗅探工具都是基于Libpcap[8]程序包运行的,其中包括最早的TcpDump[9]、当前流行的Wireshark[10]、Sniffer等。

1.3 基于RMON的数据流采集

远程网络监控(Remote Network Monitoring,RMON)是IETF定义的MIB[11],它是为了解决SNMP协议在日益扩大的分布式网络中的局限性所提出的。RMON MIB的主要目的是使SNMP更为有效、更为积极主动地监控远程设备,提高传送管理信息的有效性、减少管理站的负担,满足监控网络性能的目的。

1.4 基于Flow的数据流采集

目前基于流(Flow)的分析技术主要有2种:sFlow和NetFlow。sFlow采用数据流随机采样技术,可以使用超大网络流量环境下的流量分析,为用户提供详细实时的流量性能分析,并能分析流量趋势以及存在的问题,目前只有HP、Extreme Networks等少数厂商部分型号的交换机支持sFlow,它的缺陷是输出信息都是单个数据包,没有会话的概念,进行数据分析时需要聚合计算。NetFlow的特点是其流量统计基于IP流,IP流包含了丰富的信息,非常适合网络性能的监测和分析。

综上所述,基于SNMP和RMON[12]的流量监测方法,主要检测网络设备端口整体流量,流量信息内容过于简单,无法针对用户与业务进行分析;基于分组嗅探的流量监测方法,由于其需要采集的数据量过大,因此不适合大流量的网络环境,并且输出信息不支持会话概念。以上这些方法都无法满足高带宽网络环境的性能要求和分析需求,目前大多数流量监测系统采用NetFlow作为主要的流量采集手段。

2 NetFlow技术介绍

NetFlow是一种网络数据包交换技术,它首先被用于网络设备对数据交换进行加速,并可同步实现对高速转发的IP数据流进行测量和统计。

NetFlow以“流”为采集单位进行数据统计,能对IP网络的通信流量进行详细的行为模式分析和计量。NetFlow中的关键概念是“流”(flow),它由以下7个关键域定义:

(1)源IP地址(Source IP address);

(2)目的IP地址(Destination IP address);

(3)源端口号(Source Port Number);

(4)目的端口号(Destination Port Number);

(5)协议类型(Layer 3 Protocol Type);

(6)服务类型(Type of Service);

(7)输入逻辑接口(Input Logical Interface)。

一个NetFlow流定义为在一个源IP地址和目的IP地址间传输的单向数据包流,且所有数据包具有共同的传输层源、目的端口号。不同数据包,如果以上7个关键域都匹配,将被视为同一股流。每股流的开始时间、持续时间,流中报文数、字节数等信息都被记录下来。当该股流结束或到期后,输出过程将这些流信息根据自定义的模板组成NetFlow报文。

在NetFlow技术的演进过程中,开发出了5个主要的实用版本,即NetFlow V1,V5,V7,V8和V9,NetFlow V9[13]目前被IETF组织从5个候选方案中确定为IPFIX标准。不同版本间的差异直观的表现在输出报文格式上,NetFlow V9是一种全新的灵活可扩展的NetFlow数据输出格式,采用了基于模板(Template)的统计数据输出,可以很方便地添加需要输出的数据域,解决了数据类型不断变化的需求,同时支持多种NetFlow新功能如Multicase NetFlow,BGP Next Hop V9,NetFlow for IPv6等。

3 流量监测系统的设计与实现

3.1 系统概述

流量监测系统中的采集对象是指产生NetFlow流记录的网络设备,主要是中高端路由器和高端交换机。对于采集对象的选择,要根据网络结构以及流量监测系统的综合情况来决定,可以是网络的聚合层设备,也可以是核心层设备。流量监测系统由采集器和收集器以及数据库组成。本文所提出的流量监测系统模型,如图1所示。

图1 流量监测系统模型

采集器可以布置在任何产生流量的地方,当系统规模较大时,需要配置多个采集器。本文采用收集器和数据库集中部署,由多个采集器共同负责采集全网内路由器上产生的流量。

该模型的优点:采集器分散在各个采集域的边缘,可以监测到整个域内的流量信息,收集器和数据库集中部署,便于统一管理和维护,提高了设备的利用率。

3.2 数据采集

采集器模块的功能:捕获原始网络流量,提取相应信息按自定义模板封装成NetFlow报文,以UDP包的形式不断发送给收集器。

采集器模块的工作原理:调用pcap类库从数据链路层进行抓包,提取流量信息封装成Netflow报文,然后发送到收集器。采集器处理流程简图见图2。

图2 采集器处理流程

(1)抓包过程主要由Pcap_thread线程负责。主要功能是调用系统库函数从数据链路层进行抓包,然后在抓取的包中提取相关的信息并存入FLOW链表中。

(2)分析和封装过程由Unpending_thread和Scan_thread来完成。

Unpending_thread线程的主要功能是不停的把FLOW链表里的数据通过hash计算放入到指针数组FLOWS[] 里。在放入的过程中,如果FLOWS[] 之前没有此数据,则直接复制进来;如果之前有数据,则更新。Scan_thread线程的操作很简单,就是把FLOWS[] 里所关联的数据根据不同的属性送到不同的链表中,完整且满足活动期要求的数据存放flow_emit链表中,不完整且超过生存期的数据存放scan_flag_drag链表中,以便进行下一步的操作。

(3)发送过程由emit_thread完成,它的主要功能就是发送NetFlow格式的数据包。

其中,自定义的NetFlow报文模板包括以下选项:IPVersion,ProtocolIdentifier,SourceIPv-4Address,DestinationIPv4Address,SourceIP-v6Address,DestinationIPv6Address,Source-TransportPort,DestinationTransportPort,Flow-StartSysUpTime,FlowEndSysUpTime,Octet-DeltaCount,PacketDeltaCount。该模板是根据用户网络行为分析的需要所定义,确定了后续发送的包含流记录的数据包的格式和长度,便于收集器对数据包的处理。模板中各字段域在文献[14] 中进行了详细说明。除了模板信息和流信息外,NetFlow报文中还包含了报文输出时间、序列号和采集区域ID,收集器可以以此来区分每个NetFlow报文的到达时间和采集器。

3.3 数据收集

收集器负责解析来自采集器的数据报文,依据模板进行处理,提取出流记录信息,然后存储到数据库中。收集器处理流程如图3。

图3 收集器处理流程

数据收集的过程比较简单,关键是收集器必须有模板,所以采集器在发送NetFlow报文前,需要先将模板发送给收集器,使收集器能够依据模板正确处理NetFlow报文中的流信息。收集器接收来自各个采集器的NetFlow报文,按照模板提取出流信息,然后存储到数据库中,为进一步流量分析提供数据支持。

4 验证与测试

4.1 测试流程

在实验中,对终端A产生的数据流进行监测,采集器和收集器集成在一台服务器上。首先运行数据捕获程序通过集线器将网络内流量镜像到服务器的eth0口,然后将eth0口收到的数据转化成NetFlow流,使用NetFlow模板发送到回环地址的特定端口,收集器从这个端口提取流记录存入数据库。测试环境拓扑如图4。

图4 测试环境拓扑图

4.2 测试结果

终端A文件下载完成之后,立即终止流量监测系统的相应进程。查看服务器中数据库文件,使用IPv6协议的数据流,信息存入表 receive_pkt_v6中。查询表receive_pkt_v6中终端A有关的流记录信息,查询语句:mysql> select * from receive_pkt_v6 where src_ip='2001:da8:205:2060:20c:29ff:fe66:ca59' or dst_ip='2001:da8:205:2060:20c:29ff:fe66:ca59 '; 表中部分数据如图5。

图5 表receive_pkt_v6中数据

使用IPv4协议的数据流,信息存入表 receive_pkt_v4中,查看表中终端A有关的流记录信息, 表中部分数据如图6。

图6 表receive_pkt_v4中数据

图5与图6中,各字段用“|”隔开,数据中各字段的含义:| 序号 | 接收时间 | 源地址 | 目的地址 | 协议类型 | 源端口 | 目的端口 | 流开始时间| 流结束时间 | 字节数 | 包数量 |。图5和图6中的流记录分别表示终端A接收和发出的流量,序号为71的记录,表示源地址2001:da8:8000:1::80,目的地址为终端A的IPv6数据流,源端口80,目的端口32767协议类型为6(TCP),流量大小为3919173 byte,流量持续时间为5 s,该股流的数据包数量为2615;其它记录信息与此类似,不再表述。

从图5、图6中数据可以看出,已经完整监测到终端A产生的IPv4和IPv6流量,每股流量的开始与结束时间,流量大小等信息。至此,实现了利用NetFlow技术进行流量监测的目的,且拥有较高的性能。

5 结束语

本文提出了一种基于NetFlow的网络流量监测系统模型,采用自定义的NetFlow模板来采集处理流信息,能同时处理IPv4和IPv6数据流,并对所设计的方案进行了测试,证明了该方案的可行性和较高的性能。在今后的工作中,将继续研究利用NetFlow进行数据挖掘和流量分析的方法,发挥NetFlow在流量监测分析方面的优势。

[1] 王志. 基于NetFlow的流量统计分析系统设计与实现[D] .北京:北京邮电大学,2007.

[2] CLAISE B. Specification of the IP Flow Information Export(IPFIX) Protocol for the Exchange of IP Traffic Flow Information[S] . RFC 5101. January 2008.

[3] 刘广义,卢泉,杨国良. 基于NetFlow流量采样的误差分析[J] . 电信科学,2005, 21(5):68-70.

[4] 曾国鉴,鲁士文. 分布式异常流量监测系统的设计[J] . 计算机应用与软件,2008,25(11):154-156.

[5] 刘璇,张凤荔,叶李. 基于NetFlow的用户行为挖掘算法设计[J] . 计算机应用研究,2009,26(2): 713-715.

[6] GALVIN J, MCCLOGHRIE K. Administrative Model for version 2 of the Simple Network Management Protocol (SNMPv2)[S] . RFC 1445. April 1993.

[7] FUENTES F, KAR D C. Ethereal vs. Tcpdump: a comparative study on packet sniffing tools educational purpose[J] . Journal of Computing Sciences in Colleges. 2005, Vol. 20, No. 4. pp.169-176.

[8] Programming with Pcap[EB/OL] . [2011-10-13] . http://www.tcpdump.org/pcap. htm.

[9] TCPdump[EB/OL] .[2011-11-16] . http://www.tcpdump.org.

[10] Wireshark[EB/OL] . [2011-09-07] . http://www.wireshark.org.

[11] WALDBUSSER S. Remote Network Monitoring Management Information Base[S] . RFC 1757, May 2000.

[12] 田海燕, 王换招, 李玉鹏. 基于RMON的网络流量测量系统设计及实现[J] . 计算机工程与应用,2004,40(5):160-162.

[13] CLAISE B. Cisco Systems NetFlow Services Export Version 9[S] . RFC 3954. October 2004. http://www.ietf.org/rfc/rfc3954.txt.

[14] QUITTEK J, BRYANT S, CLAISE B, et al. Information Model for IP Flow Information Export[S] . RFC 5102. January 2008. http://www.ietf.org/rfc/rfc5102.txt.

猜你喜欢
收集器采集器数据流
一种病房用24小时尿蛋白培养收集器的说明
一种用于内镜干燥的酒精收集器的设计与应用
COVID-19大便标本采集器的设计及应用
汽车维修数据流基础(上)
汽车维修数据流基础(下)
基于Cortex-M4的油气管道微功耗数据采集器软件设计应用
基于ZigBee的大型公共建筑能耗采集器设计
基于LabVIEW的多数据采集器自动监控软件设计与开发
基于数据流的结构化功能安全分析方法
雷电收集器