NetFlow的IP网络状态监测系统设计与实现

ZDNet 安全频道频道 更新时间:2008-06-13 作者:佚名 来源:SohuIT

本文关键词:NetFlow 状态监测系统 IP网络

  随着IP网的普及和壮大,IP业务得到了迅速的发展。然而,由于IP协议固有的无连接特性和“尽力而为”的服务原则,使得当前基于IP的互联网无法向用户提供有效的服务质量(QoS),也不能实现网络资源的有效监控和管理。所以,IP业务就非常需要对整个网络进行监测,得到网络性能和服务质量参数,从而合理规划网络,为IP语音服务提供服务质量保障。这样,对IP网络性能的监控就成了管理IP网络的重要内容。



  目前,存在的网络监测工具主要有:MRTG、SnifferPortable、ROMIIProbe、NetDetector和NetFlow等。其中,NetFlow成本最低,实施最方便,而且不受速率的限制,是IP网络监测的发展方向。



  一、网络状态监测技术



  网络状态监测是网络管理和系统管理的一个重要组成部分,网络状态数据为网络的运行和维护提供了重要信息。这些数据对网络的资源分布、容量规划、服务质量分析、错误监测与隔离、安全管理都十分重要。网络状态监测包括两部分内容:网络流量的采集和网络数据的分析。一般的工具均同时具备这两个功能。



  1.网络流量的分类



  网络流量按照其包含信息内容的不同可以分为以下四类:



  (1)网络节点端口流量指的是网络节点设备端口流入和流出的数据包的信息统计。包括数据包的个数、字节数、包大小分布、丢包数等多种统计信息。



  (2)端到端的IP流量 指的是在网络层从一个源到一个目的IP包的统计信息。相对于网络节点端口流量而言,端到端的IP流量包含了更为丰富的信息,通过对其分析,可以了解到网络中的用户都访问了哪些目的网络,是网络分析、规划、设计和优化的重要依据。



  (3)业务层流量它除了包含端到端IP流量的信息之外,还包含了第四层(TCP层)的端口信息。显而易见,它包含了应用服务的种类信息,利用这些信息可以做更详细的分析。



  (4)完整的用户业务数据它对于安全、性能等方面的分析非常有效。例如,捕捉黑客的来访数据包,可以制止某些犯罪行为,搜集重要的证据。



  2.NETFLOW交换技术



  NetFlow技术是基于网流而发展起来的。所谓网流,就是在高速数据交换过程中,一定时间段内,给定的源端(Source end Point)和目的端(Destination end Point)所发生的具有相同属性的连续的数据包的集合。网流端点可以由IP地址来定义,也可以由传输层的应用端口号来定义,同样,也可以利用IP协议、业务类型(ToS)及输入接口等来标识网流。也就是说,只有在一定时间段内发生,且具有相同属性的连续的数据包才形成一条网流。例如,1min内,从地址为192.168.1.1的主机通过FTP向地址为192.168.2.1的主机上传输了一个文件,则可以把这样一个过程中所发生的包定义为从192.168.1.1到192.168.2.1的一个网流。正常情况下,路由器进行包转发时,对流入的每个包(Packet)都进行路由、安全、服务的处理。而NetFlow交换技术仅对一个网流的第1个包进行处理。第1个包的信息记录在缓冲器中,其他包则由一个单独的高效的进程进行转发,同时进行相应数据统计。



  NetFlow数据格式有多个版本。目前的最新版本是版本9。但是常用的是版本1和版本5。NetFlow数据报采用UDP协议发送,因此,有可能在传输过程中丢失,这样就在版本5中增加了信息流的顺序号。通过检查信息流的顺序号可以了解NetFlow数据报是否丢失。另外,版本5中还增加了边界网关协议(BGP-Border Gateway Protocol)的自治系统(AS)信息。一个NetFlow数据报由一个报头和1-30个流记录组成。NetFlow数据报的报头和流记录的格式分别列于表1和表2。



  



  表1 NetFlow版本5报头格式



  



  



  



  表2 NetFlow版本5流记录格式



  路由器送出的数据,通过2种方式进行采集。



  (1)利用数据采集软件(如Cisco NetFlow Collector)进行采集并存储到服务器上,以便利用各种数据分析工具进一步处理。



  以NFC2.0采集的网络流量数据为例,61.181.85.122|222.32.104.193|4837|0|23|3|1216|1128|17|2|261|1。数据中各字段的含义为:源地址|目的地址|源自治域|目的自治域|流入接口号|流出接口号|源端口|目的端口|协议类型|包数量|字节数|流数量。由此,可以清楚了解这一网流的具体信息:源地址为61.181.85.122,目的地址为222.32.104.193,源地址属于AS4837,目的地址属于我方网络;网流从我方网关路由器的23号端口流入,3号端口流出,路由器的端口号可以通过读取设备MIB库获取,设备的物理端口与MIB库中的端口对应;网流的源端口为1216,目的端口为1128,属于TCP协议。分析端口类型,可以判断网流的业务类型,比如常用的WWW服务,采用的端口为80或8080端口等,进而判断是否属于正常流量等等。这样,可以了解网流的具体信息,分析多条数据,对整个出口乃至整个网络的数据情况进行准确分析。



  (2)直接在路由器上查看,常用于异常流量的采集及处理。表3列出从CiscoGSR路由器采集数据的实例。



  



  表3 CiscoGSR路由器数据



  分析这些数据,可以得知当前设备的数转发情况:数据流从Gi1/2端口流入,Gi4/0/1及Gi3/0/0流出,属于UDP协议;源地址、目的地址与前一种采集方式一致;源端口、目的端口的统计与前一种采集方式不同,采用16进制。



  这种采集方式,无法直接采集源、目的自治域,不适于进行长时间的网间统计分析,但适于实时流量的分析,尤其适于处理异常流量。



  二、基于NetFlow的监测系统的设计



  1.系统的整体框架



  我们做了一套基于NetFlow的IP网络状态监测系统。图1示出该系统的整体结构图。系统通过基于NetFlow的Cisco路由器采集到数据,暂时存放在采集器中。其处理方法为:在超时时间内,将流中的数据报文按照一定的聚类规则汇聚形成原始数据置于缓存中,超时时间到达或者缓存充满时,这些数据按一定的格式集中发送到数据库服务器。然后,就是把数据库服务器中的数据根据需要发送给统计分析模块,由统计分析模块对其进行统计分析,实现各种需要的功能。下面具体分析每个功能模块的功能并给出部分实现结果。



  



  



  



  图1 系统整体结构图



  2.数据采集模块



  数据采集模块是整个系统的基础,它主要实现从路由器上采集数据的功能。



  具备NetFlow功能的路由器对经过的每一个IP数据包进行解包,生成并维护相关数据库(内容包括经过该设备的每一条动态数据流),定期以UDP数据包的形式发送给数据库服务器。



  数据报文都是由一个头标信息、一个或多个信息流记录构成。通常情况下,数据库服务器会分配一个足够大的缓冲区,以便数据报文到来时,可以容纳下最大的数据。此外,它使用头标信息中的版本信息来决定如何理解这些数据报文。头标信息中的第二个字段是数据报文中记录的个数,可以用它来对记录进行索引检索。



  通过NetFlow可以采集到的流量信息主要包括:源IP地址、目标IP地址、源TCP/UDP端口、目标TCP/UDP端口、流量字节统计、流量开始时间、流量结束时间、源自治域(AS)和目标自治域等。表4和表5列出实际网络中某一路由器上采集到的数据。数据格式参照表1和表2。



  



  表4



  



  表5



  由表中可以看出,采集器能够采集到详细的流量信息,为统计分析模块提供足够的数据,以满足不同的功能需要。



  3.数据集中入库模块



  数据集中入库模块首先将各NFC(NetFlow Collector)采集到的数据集中并统计保存在指定的数据库中。该模块要保证数据存储和读取的效率。在数据入库时,首先应该估计数据的规模,选择适当的DBMS,考虑数据量比较大和实现效率两个方面的情况,该系统采用Oracle9i。



  另外,针对不同的需要制定不同的数据库结构。比如可以根据流量表TrafficTable、协议统计表ProtocolTable等。



  4.统计分析模块



  统计分析模块即功能实现模块,主要用来读取数据集中入库模块中产生的数据,并进行统计分析实现需要的各种功能。



  (1)流量监测功能主要通过NetFlow采集器采集到的流量数据,实时地了解网络的最新运行状况,根据这些数据来对网络结构不合理的地方进行调整;针对网络不同接点数据流量的大小对该接点的带宽等参数进行适当的调整;对网络中的恶意流量进行监控和报警,如病毒信息等。



  (2)网络拓扑监测主要是通过对NetFlow中传输记录的实时统计,发现网络中各个网络传输点,从而动态获得网络的整体拓扑结构。动态构造网络拓扑图就是指自动发现并用图形化的方式直观、形象地表示出整个网络系统的各个子网甚至子网内部各种网络设备之间的互连关系,其中,最基本用意是用图标表示出网络系统中各个子网、路由器,以及用连线表示它们之间的连接关系。



  (3)网络业务识别为了对网络进行更好的管理,从而可以根据不同的需求分配不同级别的带宽,我们需要能够识别网络中不同用户的网络业务。另外,可以统计不同类型业务使用网络资源的情况,比如对于实时要求比较高的业务如语音、视频业务,可以优先传送等。对于企业来说,为了保证正常业务的具有足够的带宽,需要限制员工进行娱乐下载,如P2P业务方面所使用的带宽。



  可以从不同的方面进行网络业务识别。目前,所研究的网络业务识别技术主要从以下几个方面出发:业务端口特征、业务带宽流量特征、业务传输层协议特征和数据包净荷中特征字符串特征等。这里主要讨论利用NetFlow进行网络业务监测识别,从NetFlow数据元的字段元素出发,可通过上述四种方法中的前三种实现业务监测识别。



  a)端口特征 针对从NetFlow中提取Port字段可以从一定程度上识别网络用户的业务使用情况,比如一般21为FTP传送,23为Telnet等。



  b)业务带宽流量特征 可以通过对NetFlow中某个用户和其他用户进行的数据传输记录的统计,观察该用户业务所使用的带宽流量特征,从而针对一些具有明显流量特征的业务进行识别。



  c)业务传输层协议特征 可以通过提取并统计NetFlow中Protocol字段,分析数据传输使用的传输层协议,从而确定网络业务,如FTP、HTTP、TCP、UDP等。



  (4)网络性能监测可以对网络当前运行状况有一个整体的把握,网络性能监测主要包括对网络带宽使用情况、网络吞吐量he语音时延等参数的监测。



  针对NetFlow,我们主要考虑网络吞吐量和数据传输时延的监测。



  a)吞吐量 通过对NetFlow中数据传输记录的实时累积统计,并除以统计时间间隔,可以实时统计网络当前的吞吐量,从而可以确定网络当前的负载程度,并可以针对性地确定网络服务质量安全门限,当网络吞吐量过高时可以给出一定的告警提示,以使管理人员适时采取网络流量分配措施。



  b)数据传输时延 通过对NetFlow中TOS字段的统计,可以分析出与网络传输质量相关的信息,如数据传输时延等。



  (5)大客户追踪主要是监测网络中高权限用户(比如付费用户)和使用网络资源比较多的用户,从而限制普通用户对网络资源的无收益浪费,并且保证付费用户的网络使用优先权。



  大客户追踪 主要是通过统计某个客户(即某台主机)网络传输流量以及业务类型,通过对网络中所有客户网络使用情况的对比,统计业务量比较大的TOPN用户,针对这些用户是否付费,以及当前正在进行的业务类型(如是否是语音或视频业务),确定客户使用网络资源的优先级别以及受限程度,对付费用户分配足够的传输带宽,保证其对网络使用的满意度,提高付费用户的忠实性,保证网络收益。



  网络状况报表主要用于网络管理维护人员在需要的时间将各种网络状况指标提交给上级主管人员,报表设计要强调具有统计性,并且要简洁实用。



  (6)功能呈现模块主要是将统计分析模块实现的各种功能以尽量友好的方式呈现给用户,我们可以考虑以C/S方式和B/S方式两种呈现方式。



  C/S方式易于用户操作,提高用户与系统的交互性。



  B/S方式易于用户浏览信息,提供的信息量大,并且不需要安装,易于实现。



  三、结束语



  随着因特网的普及和壮大,如何科学地建网,如何高效地管理网络,是目前大家所关心的话题,因而网络状态监测的研究与应用的作用日益重要。对IP网络的网络性能进行测量、分析、评价、控制、调整受到越来越多的关注。目前,在这些领域均已经取得了一些研究成果,但是,从整体研究水平来看,尚处于起步阶段。这个研究领域的发展空间较大,尤其是随着各种IPQoS保证技术在IP网络中的应用,IP网络性能监测与分析技术会受到更多的重视,将成为新的IP网络研究热点。

安全频道 NetFlow 最新报道

安全频道 状态监测系统 最新报道

安全频道 IP网络 最新报道

[an error occurred while processing this directive]