Cisco的交换机和路由器广泛支持的一种流量捕获工具NetFlow,已经在流量分析、计费分析以及网络安全防护上被广泛应用,NetFlow格式的数据能够被很多应用软件分析,下面将所学的NetFlow知识陈列如下。
1. 什么是NetFow?
- 1996年,Cisco系统公司的Darren Kerr和Barry Bruins开发了一种流量轮廓监控技术。
- NetFlow是一款用于分析网络数据包信息的工具包。
- NetFlow技术可以监测网络上的IP flow信息,采集到的流量信息可以帮助进行网络规划,网络管理,流量计费和病毒检测等。
2. NetFlow的版本
- NetFlow V1:为NetFlow技术的第一个实用版本,在如今的实际网络环境中已经不建议使用。
- NetFlow V5:增加了对数据流BGP AS信息的支持,是当前主要的实际应用版本。
- NetFlow V7:思科Catalyst交换机设备支持的一个版本,需要利用交换机的MLS或CEF处理引擎。
- NetFlow V8:增加了网络设备对NetFlow统计数据进行自动汇聚的功能,大大降低对数据输出的带宽需求。
- NetFlow V9:一种全新的灵活和可扩展的NetFlow数据输出格式,采用了基于模板的统计数据输出,方便添加需要输出的数据域和支持多种Netflow新功能。
在介绍NetFlow具体格式之前,先介绍IP Flow的概念。
3. IP Flow
定义:一条在源和目的之间的单方向的流,这里的源和目的既包括了IP层的源IP和目的IP,也包括TCP层的源端口和目的端口。
一个IP Flow至少定义了下面
七个关键元素:
- IP source address
- IP destination address
- Source port
- Destination port
- Layer 3 protocol type
- Class of Service
- Router or switch interface
以上七个字段定义了唯一的一个IP Flow,如果有多条IP Flow,只要其中任何一个字段内容不同,就被看成一条新的IP Flow。
除此之外,一个IP Flow或许还包含有其他的字段,这取决于NetFlow的版本,不同版本的NetFlow格式不一样。
4. NetFlow Cache
NetFlow Cache是NetFlow两个关键组件之一,用于缓存IP Flow。
NetFlow Cache中包含一系列高度精细化算法,能够有效的判断一个报文是属于已存在IP Flow的一部分,还是应该在缓存中产生一条新的IP Flow。这些算法也能动态更新缓存中IP Flow的信息,并且能够判断哪些IP Flow应该到期终止。
依据四个规则判断IP Flow是否到期:
- 当TCP连接完成(FIN)或被重置(RST)时,Flow将终止。
- 当缓存满时,多余的Flow要被删除。
- 如果Flow在一段时间内均为idle,则该Flow将超时并从缓存中移除。
- 长时间存在的Flow也将从缓存中移除,缺省情况下Flow的生存时间不允许超过30分钟。
路由器每秒检查缓存一次,当Flow的不活动时间超过15秒或者Flow的活动时间超过30分钟,都将造成Flow在Cache中超时,具体时间可以依情况配置。
5. NetFlow Expert
NetFlow Expert是NetFlow的另一个关键组件,描述IP Flow如何输出。
缓存中的Flow到期后,产生一个将Flow输出的动作。Flow以数据报文的方式输出,报文包含30条以上的Flow信息。这些Flow信息普通人是没法识别的,由Flow Collector采集并做进一步处理。
不同版本的NetFlow输出报文的格式也不同。
NetFlow的输出报文包含报头和一系列Flow记录,报头包含版本号、流记录数、系统时间等,Flow记录包含流信息,如:IP地址、端口、路由信息等。典型的报文格式如下所示。
IP header
|
UDP header
|
NetFlow header
|
Flow record
|
Flow record
|
……
|
Flow record
|
Flow record
|
NetFlow V5的Flow record字段如下所示:
NetFlow V5的Flow record格式如下所示:
6. NetFlow Sampling
使用采样技术可以降低路由器的CPU利用率,减少Flow的输出量。
Cisco平台使用三种采样技术:
- 确定性采样:每隔N个包抽取一个,N可自定义。
- 基于时间的采样:每N微秒抽取一个包。
- 随机采样:在N个包中随机抽取一个包,N可自定义。(被认为是包采样中最好的技术)
对需要精确分析的流量,如计费流量,最好采用Full Sampling的方式来避免误差。
7. NetFlow Infrastructure
NetFlow的基础架构如下图所示:
8. NetFlow Application
>NetFlow在蠕虫病毒监测上的应用
- CodeRed
- Nimda
- SQL Slammer
- …
>NetFlow在网络攻击防范上的应用
- ICMP攻击
- SYN Flooding
- …