netflow流量分析工具,
0报价
近年来,随着信息技术的快速发展,越来越多的企业和大型组织在其内部构建基于网络的应用,其复杂性和对网络的依赖性与日俱增,由此产生了各种网络问题。网络流量监测是网络管理和系统管理的重要组成部分,网络流量数据为网络运维提供了重要信息。这些数据对于网络资源分配、容量规划、服务质量分析、错误监控和隔离以及安全管理非常重要。因此,对网络流量及相关状况进行科学合理的监管和深入分析成为网络管理的重要环节之一;同时也为网络问题和网络规划提供了有效的解决方案。
目前,网络流量分析方法主要基于SNMP、实时数据包捕获分析、网络探测和流技术。NetFlow基于流技术,已经得到大多数网络设备制造商的支持,并在网络监控方面提供了完美的应用。基于NetFlow的流量收集方法可以获得详细信息,包括源/目的主机IP、应用协议类型、源/目的端口等。根据这些信息,可以对协议(应用)、主机IP(用户)和AS域进行统计排名和趋势分析,还可以对异常流量进行监控和分析。此外,NetFlow避免了部署和配置大量监控探头的复杂过程,使网络性能分析更加全面、灵活和易用。
l网络流技术
NetFlow是思科公司提出的基于思科IOS系统的应用。它用于提供数据包在网络设备上形成的“流”的统计信息,并逐渐演变为网络流量统计和安全分析的主要手段。目前NetFlow可以实现网络流量监控、用户应用监控、网络安全、网络规划、流量计费等功能。
NetFlow有两个核心组件:NetFlow cache,存储IP流信息;NetFlow的数据导出或传输机制,NetFlow使用它向网络管理收集器发送数据。
1.1流量的定义
流由在源主机和目的主机之间传输的单向网络数据包组成,其中源主机和目的主机由其各自的IP地址和端口号标识。流通常由以下七个关键字段唯一标识:
源地址
目的地址
源端口号
目标端口号
第3层协议类型(如TCP、UDP)
通用式
转换成逻辑接口标识符
1.2流程格式
启动NetFlow的设备将输出其缓冲区中的信息,并以UDP数据包的形式将其发送到NetFlow流量收集器。它由包头和几个流记录组成。常用的NetFlOW输出包格式有五个版本,即版本1、版本5、版本7、版本8和版本9,其中V5是最流行、最成熟的版本,目前已被广泛使用。最新的V9已经列入IETF标准,需要进一步研究和标准化。v采用模板技术和流记录相结合,使得NetFlow输出包的格式具有动态性和可扩展性。NetFlow V9的输出格式主要由三部分组成:
(1)包头:包括版本号、包中数据流总数、系统时间、数据流顺序、数据源ID等。
(2)模板流集(Template FlowSet):包含一个或多个模板,用于描述数据流中每个数据段的含义。您可以根据需要在路由器上设置模板。
(3)数据流集(。数据流集):包含多个数据流,每个数据流集通过模板ID对应某个模板。数据采集端根据模板对数据流进行分析。
2网络流量收集和聚合
2.1系统概述
根据NetFlow的特点,设计并实现了一个网络流量监控系统,其系统结构如图1所示。
当网流收集器接收到路由器发来的网流包时,会对包进行分析,将数据流进行聚合,形成各种适合统计分析的数据,然后分类存储在数据库中。分析器根据前端不同的查询请求和一定的查询策略,从数据库的不同表中提取相应的数据进行分析和显示。
本系统的后台采集器和汇聚处理部分用JAVA编写,数据库是开源的MySQL,NetFlow流量分析由Tomcat服务器通过Web显示,前台部分用JSP编写。工作的重点在于数据收集、数据汇总和数据库设计。
2.2 NetFlow流量收集
收集器的设计
数据采集模块是整个系统的基础。因为。NetFlow数据流量很大,为防止丢包,系统采用缓冲区和线程池结构,如图2所示。
采集器在监听一个NetFlow数据包时,将数据包接收到缓冲区中,从包分析线程池中取出一个线程,根据对应的NetFlow消息格式分析数据流信息,将原始流信息放入缓冲区,然后将原始流存储到数据库中。同时使用相应的聚合策略对原始流量进行聚合,生成聚合流量,并存储到相应的数据库中。
2.2.2网络流数据包接收和分析
由于NetFlow数据是通过UDP数据报传输的,如果后续处理速度跟不上数据包到达速度,就会出现严重的丢包现象。为了解决高速大流量数据的及时接收和低丢包率的问题,采用了多线程。用两个独立的线程分别完成数据接收和解析:接收数据的线程监听特定IP地址对应的UDP端口,接收到的数据暂存在缓冲区中;解析线程从缓冲区中提取数据,并根据相应的消息格式对其进行解析。因为接收线程和解析线程共享同一个关键资源,即接收缓冲区,所以需要锁定关键资源。
下面是一些多线程获取的JAVA代码示例,其中packet是接收到的NetFlow包对象,linkedList是linked list容器,synchronized用于同步线程。
(1)接收线程
2.3 NetFlow流量聚合
NetFlow的原始数据庞大,保存每个流数据的原始记录会导致数据查询和分析效率低下的问题。在大多数应用程序中,没有必要将数据粒度设计得如此之小。所谓流量聚合,是指将符合NetFlow数据格式的原始流记录按照一定条件进行合并,从而实现多个流合并为一个的过程,从而实现对原始流的压缩和合并。
2.3.1聚合策略
流量聚合有三个关键要素:聚合条件(F)、时间粒度(T)和聚合项(C)。满足相同聚合条件和时间粒度的流进行流量叠加,聚合项保留。三重聚合策略:F,T,C,其中:
根据实际流量分析的需要,从F,T,C中取出一个值,形成聚合策略。T的粒度应根据实际监测时间和监测精度来设定。一般来说,T=3 min适合当天实时流量监控;t=30分钟用于分析周流量;T=3 h用于分析一个月的流量。
2.3.2聚合的实现
对于一个新收集的原始流,必须能够根据其携带的聚集条件信息,快速匹配是否存在具有相同聚集条件的聚集流。如果有聚合流,做流量叠加;如果没有,请创建一个新的聚合流。哈希表具有从键到值快速映射的特性,对于实时聚集非常有意义。图3显示了用于流量聚合的Iash表的设计。
在图3中,聚集条件(f)是关键,聚集项(c)是哈希函数的映射值,时间粒度(t)是哈希表导出到数据库的时间。这样可以满足实时交通监控的需要,压缩数据,减少存储空间,提高数据查询效率。
3实际网络流量收集和流量监控
在本系统设计的数据采集器的支持下,系统数据库为前端分析提供了充分的、多样化的数据准备,前端程序只需简单的查询语句就能得到所需的数据集,简化了查询工作量。该系统收集了50 000个NetFlow数据包,持续时间约7 h,时间粒度为3 min。主要测试聚合后的丢包和压缩效率。在这次采集中没有发生分组丢失。表1
图4是由系统从收集的数据中生成的该时段的流量监控图。
4结束语
netflow数据流的海量特征使得服务器程序的效率至关重要,因此基于NetFlow的流量监控的主要任务是如何根据应用保存最重要的网络流量特征,以及如何更高效地实现数据检索。基于NetFlow的特点,提出了一套适用于大流量网络的流量收集和汇聚存储方案。流量采集通过多线程和缓冲机制实现,有效提高了流量采集的可靠性。将收集到的原始流进行聚合,并通过合理的分层存储策略进行存储和组织,为前端数据分析提供全面的支持。该系统在实际应用中取得了良好的效果。下一步,将完善采集和多级汇聚存储方案,丰富网络流量统计分析功能,力争为异常流量分析提供完善的数据支持。