1理解NETFLOW AND NDE 如何工作?
1.1         NETFLOW AND NDE 介绍
网络流是一种流量监控技术,该技术描述了一台路由器通过如何导出统计到的被路由的数据包的方法,对网络信息作分析归纳统计,从而获得网络整体利用情况。目前该技术集成到大部分的思科和其它公司的网络设备的IOS,网络流会收集所有流经交换设备的流量,并且把收集到的流量存储到NETFLOW 缓冲中。
当在具有该功能的网络设备上的某个接口上激活网络流后,在那个接口上被接收到的数据包将会以流(flow)的形式被存储在一个动态的流缓冲中,具有存储在缓冲中的数据流特征的后续的数据将被直接交换而不需要通过软件交换。
NDE 是netflow data export 的缩写,当配置了NDE后,所有在缓冲中的符合一定要求的数据流将会被导出到一个指定的终端,该终端安装数据流接受和分析软件,通过该软件,我们可以直观的了解网络业务运行情况,对于NDE,我们可以通过一定的技术手段比如policy,filter等手段获得我们需要的数据,以方便我们对网络的分析。
1.2         NETFLOW CACHE
网络流通过创建一个流缓冲来工作,在这个缓冲中包含了必须的信息,网络设备通过这些信息来交换数据,并且通过设置好的访问列表来过滤所有活动的数据流,提供安全性。流缓冲的创建是通过提取网络设备按照标准的路由方式路由的数据流的第一个包,然后把这个提取的数据包存储到一个缓冲中,因此每一个数据流都会对应相关的进出接口,对于后续的数据包,网络设备就会查找存储在缓冲中的记录,如果与缓冲中的记录相符,那么就会改变记录数,如果是一个新的记录,那么就会在缓冲中创建一个新的纪录。
在缓冲被创建之后,与之相符的后续数据包就会被直接处理,并且不需要通过访问列表的检查,从而提高了数据的交换速度,降低了网络设备的资源消耗。
1.3         NETFLOW DATA FORMAT
NETFLOW 一共有两个版本,version 1 和 version 5,version 1是早期发布的一个版本,version 5是后来发布的一个版本,在version 5版本中增加了对BGP AS的支持并且增加了流序列号。版本2-4没有发布,网络流会采用这两个版本中的一个,并且使用UDP包格式导出缓冲中的数据流。
Version 1 和 version 5 这两种格式都是由一个头字段和多个流记录组成。头字段也包含了几个字段,第一个字段就是被导出数据段的版本号,NETFLOW 应用程序会根据接受到的数据包为其分配足够大的空间,并且查看接受到的数据包的头字段的版本号来决定怎么样解释该数据包的纪录。第二个字段是数据包中的流记录号,这些记录是按照indx来排列的。
因为NETFLOW采用UDP方式来导出数据包,因此难免会发生数据包丢失的情况,为了能够检查到数据包是否丢失,NETFLOW version 5中的头字段包含了一个序列号的字段,这个序列号是上一个数据包的序列号加上本次网络设备需要传递到接收应用程序的记录数。使用你接受到的数据包的序列号减去你接受到的记录数就能够验证是否发生丢失记录的情况。如果等于你接受到记录那么就没有丢失数据,反之就发生了记录丢失。
1.4         FLOW的概念
流被定义为一组单向传递的数据包,因此一条会话连接将会有两个方向的数据流,一个是服务器-----〉客户端,另一个是客户端----〉服务器。
如果你在配置网络设备的时候发现仅仅能够接收到某一个方向的数据,那么你就要考虑你的配置是否按照这样的要求设置的,记住流是单方向的,我在配置的时候也是发现能够接受到out的数据,对于in的数据却接收不到,在in的那个vlan的接口上启用流交换后就能够看到in的数据了。
一个数据流是由如下几个关键的字段来标示:原IP地址,目的IP地址,原端口,目的端口,协议类型,服务类型以及路由器的输入接口。
路由器在接收到一个数据包后,将会查看这7个字段然后作出一个转发决定,如果这个包属于一个存在的数据流,那么相应的流量统计就会被创建,否则一个新的流条目将被创建。
1.5         NETFLOW AND NDE ON THE MSFC
MSFC模块在交换虚拟LAN(VLAN)之间提供了经济有效的高性能多层交换与路由服务。MSFC是一个结构紧凑的Cisco IOS路由器,在与PFC共同使用时可以在一个单插槽解决方案中为Catalyst系列提供智能多层交换服务。
在MSFC上的NETFLOW CACHE使用IOS软件来捕获被路由的数据流。
1.6         NETFLOW AND NDE ON THE PFC
NETFLOW数据输出:Catalyst交换机的性能管理功能已被扩展,为通过PFC的所有子网内流量提供全面的监控。PFC能够在硬件中启动详细的IP流统计数据收集,而不会影

响交换性能。这些统计包括来源/目的地址、流量类型、字节/数据包数及时间印迹。这补充了已经可用在Catalyst交换机上的嵌入式微型RMON功能,提供对第二层所有端口流量的可视性。
1.6.1        Flow Mask
网络流是使用一定的规则来创建的,依据不同的网络环境和我们需要的数据流信息的情况,选择不同的flow mask,有六个类型的flow mask,下面我们详细的介绍:
Source-only :一个最少规范的flow mask,PFC卡为每一个原ip地址维护一个流条目,所有的来源于同一个源地址的数据流使用这个被创建的条目。
Destination :一个最少规范的flow mask,PFC卡为每一个目的ip地址维护一个流条目,所有的去往于同一个目的地址的数据流使用这个被创建的条目。
Destination-source :一个比较规范的flow mask,PFC卡为每一个原IP地址和目的IP地址对维护一个流条目,所有的在同一个原和目的地址的数据流使用这个被创建的条目。
Destination-source-interface :一个比较规范的flow mask,增加原IP地址的接口到destination-source flow mask中。
Full :一个比较规范的flow mask,PFC卡为每一个流创建和维护一个更加具体的缓冲条目,一个full条目包括原IP地址,目的IP地址,协议,和协议接口。
Full- interface :最规范的flow mask,增加原接口到flow mask中。
1.6.2        NDE Version
1.6.3        MLS Cache Entri es
网络流捕捉PFC卡中网络流缓冲中的数据流量,网络流维护PFC卡网络流缓冲中的每一个活动的数据流的流量统计率,当匹配缓冲的流被交换的时候网络流会增加这个数据到缓冲中。
NDE会定期的导出所有到期的汇总数据流,这些数据流被一个外部的数据收集器接收和处理。
所有的被导出的数据流是从上一次导出开始计时到现在到期的数据流。在网络流缓冲中到期的数据流会被清除掉当如下的条件发生时:
1流条目到期
2流条目被用户人为的清除
3接口宕掉
4路由抖动
为了确保定期的导出数据流,需要是用如下命令来配置生存期:MLS AGING LONG 。

默认情况下,所有生存期到期的数据流都会被导出到外部的网络流收集器中,但是当你配置一个过滤器,那么NDE仅仅导出那些符合过滤器标准的数据流,NDE流过滤器被储存在NVRAM中,因此当NDE被禁止的时候是不会被丢失的。
1.6.4         MLS Aging Time
     通常情况下,只要配置了生存时间之后,则该配置会对cache中所有的缓冲条目生效,默认情况下生存时间是300秒,如果配置正常的生存时间是32 -4092秒,一般情况下,cache中的流的生存时间能够比配置的时间间隔多或者少4秒左右,平均情况下,应该在2秒内。
       一些情况可能会影响MLS条目被删除,比如路由改变和链路状态改变。
     为了保证cache中的流条目不超过推荐的数量,我们需要配置mls aging命令,这个命令下面有三个参数,下面分别介绍一下:
      Normal :配置了这个参数,那么cache中的流条目在到达规定的生存期时就会被删除。
      Fast aging :配合time参数使用,定义了在规定的时间内必须要交换一定数量的流,如果在规定的时间内没有交换规定的流,那么将会被删除。这个参数主要是对cache中的一些流记录在生存期到达后却交换了很少一部分数据流这种情况适用。
      Long :使用该参数后,当cache中的记录超过了配置的值,而该流条目依然在使用,那么也要删除。
         当我们配置了Aging这个参数之后,初始化的时间是128秒,但是如果NETFLOW cache的容量在增加,并且超过了推荐的利用率,那么我们就需要降低这个数值,以保证cache 容量降低到推荐的利用率之下。
1.6.5         NetFlow Active Timer
   表明经过设置的时间段后,NETFLOW Cache 记录的所有活跃的NETFLOW 信息将被导出到 NETFLOW 服务器。定时器的缺省时间为30 分钟,可由用户设置。
1.6.6         NetFlow Inactive Timer
    表明经过设置的时间段后,NETFLOW  Cache 记录的所有不再活跃的NETFLOW 信息将被导出到NETFLOW 服务器。定时器的缺省时间为15 秒,可由用户设置。
1.7          如何限制NETFLOW的数据流量统计
对于如何限制和减少NETFLOW的数据流量统计,有两种办法可以做到,在MSFC

卡和PFC卡支持仅仅其中的一种或者是两种。
1.7.1        Sampled NetFlow
PFC卡同时支持NETFLOW取样和聚合,PFC不支持TOS的路由聚合。
在一个三层接口上,网络流取样特征捕捉一个流的子集的数据而不是这个流中的所有数据包。网络流取样特征可以降低引擎cpu的利用率。
网络流取样支持基于时间的取样和基于包的取样。
Time-Based Sampling Rates, Sampling Times, and Export Intervals
Sampling Rate  Sampling Time (Milliseconds)   Export Interval (Milliseconds)
1 in 64                 64                       4096
1 in 128                32                       4096
1 in 256                16                       4096
1 in 512                8                        4096
1 in 1024               4                        4096
1 in 2048               4                        8192
1 in 4096               4                        16384
1 in 8192               4                        32768
基于时间的取样解释:如果配置取样速率为64,那么每隔4096毫秒,sampled netflow就会提取开始的64毫秒的时间段作为流量统计。如果配置取样速率为1024,那么每隔4096毫秒,sampled netflow就会提取开始的4毫秒的时间段作为流量统计,基于时间的NETLFOW取样,导出时间间隔不需要配置。
  基于数据包的取样解释:基于数据包的流取样是用一个公式对流取样,取样的次数是使用流的包数除以取样速率,例如:如果数据流是32768个数据包长,取样速率是1024,那么流被取样的次数大约是32次,(32,768/1,024).基于包的取样导出间隔是需要被配置的。
1.7.2        NetFlow Aggregation
MSFC支持NETFLOW 数据流量的汇聚,而且还支持基于TOS特征的数据流的聚合。
NETFLOW Aggregation 特征提供了如下的优点:
1降低了带宽的需求:该特征能够减少路由器和应用程序客户端之间的带宽要求。
2减少了工作站的需求:可以采用一台工作站来做数据流的收集和分析处理。
3提高了网络设备的性能:采用该特征可以降低网络设备因为处理流信息所消耗的大量CPU时间和内存,这样可以让释放出来的CPU和内存更快速的处理其它业务数据。
具体配置命令:
WH-C6513.Thwhgf.Net (config)# ip flow-aggregation cache prefix
WH-C6513.Thwhgf.Net (config-flow-cache)# mask source minimum value
WH-C6513.Thwhgf.Net (config-flow-cache)# mask destination minimum value

Value:指定原 或者目的perfix的最小的mash值。
1.8         NDE 流过滤
一般情况下,所有的数据流都会被导出到流接收程序客户端,但是在网络出现异常情况下,收集到的大量的网络数据使得我们很难分析网络的异常情况,有时候为了分析需要,我们需要的仅仅是具有某个特征的数据,比如特定的端口,特定的IP地址,特定的协议,因此我们需要对流进行一定的处理,也就是过滤,当配置一个过滤器以后,那么仅仅是我们期望的并且匹配了所定义的过滤器的数据流才能被导出。
过滤器有四种,下面我们详细的介绍:
1.8.1        基于端口的流过滤
如果我们需要的信息中是包含一个特定的端口(原端口或者目的端口)或者我们需要的信息中是不需要某一个特定的端口(原端口或者目的端口),那么我们就可以采用这种端口的过滤方式。
WH-C6513.Thwhgf.Net(config)# mls nde flow include dest-port 138
1.8.2        基于host + port 的流过滤
如果我们需要的信息中是包含一个特定的主机+端口(原端口或者目的端口)或者我们需要的信息中是不需要某一个特定的主机+端口(原端口或者目的端口),那么我们就可以采用这种主机的过滤方式。
WH-C6513.Thwhgf.Net(config)# mls nde flow exclude destination 192.168.1.1 255.255.255.0 dest-port 138
1.8.3        基于host 的流过滤
如果我们需要的信息中是包含一个特定的主机或者我们需要的信息中是不需要某一个特定的主机,那么我们就可以采用这种主机的过滤方式。
WH-C6513.Thwhgf.Net(config)# mls nde flow include destination 192.168.1.37 255.255.255.224
1.8.4        基于protocol + port 的流过滤
如果我们需要的信息中是包含一个特定的协议或者我们需要的信息中是不需要某一个特定的协议,那么我们就可以采用这种协议的过滤方式。
WH-C6513.Thwhgf.Net(config)# mls nde flow include protocol tcp dest-port 138
2        使用NetFlow分析网络的优点
如果我们使用sniffer或者NETFLWO应用程序捕获到数据包后,我们发现原来这个

数据包仅仅是传输层以下的,不包括任何有效数据,这就告诉我们NETFLOW并不会关注应用层的内容,而传统的***检测系统是需要对应用层的数据做相应的检查,这一点netflow有不足之处,表现出了一定的局限性,但是也正是因为 netflow不考虑高层信息,使得该技术对灾难性的故障的响应速度很快,对于系统的性能消耗比起传统的***检测系统也低很多。
3        NETFLOW 技术应用的环境
1 统计流量信息,以供历史比较使用。
2 通过一定时间的网络检测,便于以后的网络规划。
3 均衡流量,用于流量工程。
4 实时监视网络的使用情况,如接口的上下行流量。
5 监视网络用户的使用情况。
6 为网络安全分析提供依据。
4        NETFLOW AND NDE配置命令
4.1        接口配置命令
      WH-C6513.Thwhgf.Net(config-if)#ip route-cache flow
         在接口上激活NETFLOW。
4.2        全局配置命令
WH-C6513.Thwhgf.Net(config)#ip flow-export source
WH-C6513.Thwhgf.Net(config)#ip flow-export destination A.B.C.D  port
要想利用NETFLOW 进行网络流量的监控和分析,可利用此命令来进行。其中,(A.B.C.D)表示目的服务器的IP 地址,<0-65535>表示目的服务器的UDP 服务端口。
WH-C6513.Thwhgf.Net(config)#ip flow-export version (1/5/9)
配置NETFLOW的协议版本,取值为1、5 或9。
WH-C6513.Thwhgf.Net(config)#ip flow-cache entries <1024-524288>  Entries
配置NETFLOW 缓冲中的流条目的数量,<1024-524288>表示记录的流条目的数量。
WH-C6513.Thwhgf.Net(config)#ip flow-cache Timeout active  <1-60>  
配置NETFLOW 记录的活跃的流的定时器超时时间,单位为分钟,缺省值30 分钟。
WH-C6513.Thwhgf.Net(config)#ip flow-cache Timeout inactive <10-600>
配置netflow 记录的非活跃的流的定时器超时时间,单位为秒,缺省值15 秒。

WH-C6513.Thwhgf.Net(config)#mls nde sender
          激活 MLS NDE EXPORT
       WH-C6513.Thwhgf.Net(config)#mls nde sender version (5/7)
          指定version号
       WH-C6513.Thwhgf.Net(config)#mls nde flow exclude
          这条命令和下一条命令都是设置flow filter。
        WH-C6513.Thwhgf.Net(config)#mls nde flow include
           参数: dest-port    dest-port keyword
destination  destination keyword
protocol     protocol keyword
source       source keyword
src-port     src-port keyword
         WH-C6513.Thwhgf.Net(config)#mls flow ip
           这条命令设置flow mask。
           参数: destination                   destination flow keyword
destination-source            destination-source flow keyword
full                          full flow keyword
interface-destination-source  interface-destination-source flow keyword
interface-full                interface full flow keyword
source                        source only flow keyword
        WH-C6513.Thwhgf.Net(config)#mls aging
          参数:   fast    L3 fast aging
long    long aging keyword
normal  normal aging keyword
4.3        执行诊断命令
show ip flow export
查看NETFLOW 的配置信息。
      WH-C6513.Thwhgf.Net#show ip flow export
Flow export v5 is disabled for main cache
        Version 5 flow records

252849 flows exported in 10766 udp datagrams
      0 flows failed due to lack of export packet
      4436 export packets were sent up to process level
      0 export packets were dropped due to no fib
      868 export packets were dropped due to adjacency issues
      0 export packets were dropped due to fragmentation failures
      0 export packets were dropped due to encapsulation fixup failures
      0 export packets were dropped enqueuing for the RP
      0 export packets were dropped due to IPC rate limiting
5        使用NetFlowAnalyzer监控网络
NetFlowAnalyzer 是一款基于网络的带宽监视工具软件,使用NetFlow技术显示网络中有那些应用,并且把这些应用占用的带宽详细的报告,那些应用在网络中传递以及这些应用使用了多长时间。使用该软件以后企业或校园网等的广域网和局域网不需要配备昂贵的硬件探测器就可以深入浏览带宽报告。该软件可以观看访问你的网络的通讯浏览情况。