• 文章搜索:
  • 万流同源

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    剑心通明--Cisco NetFlow与IMC-NTA组件对接案例

    作者:  |  上传时间:2014-11-26  |  关键字:剑心通明--Cisco NetFlow与IMC-NTA组件对接案例

    概要

    本文介绍了Cisco NetFlow 用途,NetFlow部分协议细节以及与我司NetStream技术的对比,最后依据实验展示了该技术与我司IMC-NTA组件如何配合使用。

    1、Cisco NetFlow简介

    NetFlow技术是一种基于网络流信息的统计与发布技术,它可以对网络中的通信量和资源使用情况进行统计和发布,向网络管理人员提供访问通讯量详细信息的手段。

    NetFlow的主要功能包括:

    l 网络监控

    NetFlow数据流支持几乎实时的网络监控能力,可以帮助快速的定位网络中的问题。

    l 基于应用的监控和分析

    NetFlow数据流帮助网络管理员实时了解网络流量中包含了哪些应用。

    l 基于用户的监控和分析

    NetFlow数据流帮助网络管理员分析网络中用户的信息,可以具体到用户的应用。

    l 网络规划

    NetFlow可以通过长时间的监控、抓取报文,帮助网络管理员预期客户对于网络应用的需求,并为网络升级提供指导。

    l 安全分析

    NetFlow可以实时识别DDOS攻击,蠕虫和病毒等并将它们分类。

    l 计费

    NetFlow可以基于报文IP、包或比特数、时间戳、ToS、应用端口号等对流量进行计费。

    NetFlow技术的实现主要由两个部分组成:

    1)包含IP流信息的NetFlow 缓存或数据源

    2)可以将NetFlow 数据流传递给网管软件的设备

    下图为Cisco NetFlow技术应用在网络中需要的组件,其中配置了NetFlow功能的设备把采集到的关于流的详细信息发送给NetFlow FlowCollector。NetFlow FlowCollector经过处理交给NetFlow Server,Server直接交给FlowAnalyzer处理(FlowAnalyzer对应我司IMC-NTA组件)。

    图 1 NetFlow技术实现所需硬件

    2、NetFlow的流分类

    一条流可以认为是固定源向固定目的发送的单向报文。源和目的均由网络层的IP地址和传输层的源、目的端口号决定。具体的说,一条流的定义是七个字段的组合:

    l 源IP

    l 目的IP

    l 源端口号

    l 目的端口号

    l IP协议类型

    l 服务类型ToS

    l 输入/输出接口

    这七个字段定义了一条特定流。如果有一个字段发生变化,那么它就被认为是一条不同的流。一条流还包含了其它计费字段(如AS号,它存在于NetFlow的Version 5 中),不同的NetFlow版本可以人为指定。流的处理均在NetFlow的缓存中实现。

    3、NetFlow 缓存管理和数据流输出

    NetFlow技术实现首先要创建一个NetFlow缓存,缓存中包含所有活跃流的信息。NetFlow缓存的建立通过处理第一个经过标准交换路径的报文实现。流的记录包含在NetFlow缓存中的活跃流中。所有流记录均有一些关键字段,这些字段可以封装成NetFlow的流量上送采集器。

    NetFlow 的可延展性和高性能的关键在于高度智能化的流缓存管理,NetFlow的优点应用在边缘路由器上效果尤其显著,因为这类路由器存在高并发流量和突发流量。NetFlow缓存管理软件包含一系列高度成熟的算法,这些算法可以决定数据包是否是现有的流,或者是需要新添加的流条目。不仅如此,算法还可以动态的更新缓存中每条流的计费数值,以及决定缓存中的流是否老化。

    NetFlow流的老化只要满足以下4点中的1点即可实现:

    l 非活跃流停止一段固定时间后会老化,然后从缓存中移除(Cisco路由器默认为15秒)

    l 活跃流持续一段时间后会老化,然后从缓存中移除(Cisco路由器流默认不能存在30分钟以上,活跃流老化不会影响到数据流的转发)

    l NetFlow 的缓存溢出

    l TCP连接中存在FIN报文或RST,即TCP连接中断

    老化的流经过汇聚,组装成NetFlow报文,从使能NetFlow功能的设备输出。对于NetFlow V5、V9的设备来讲,一条NetFlow报文最多包含30条不同的流信息。NetFlow是基于接口工作的,配置人员只需指定IP地址和端口号即可将流量上传到流量采集器上。

    图 2 为在Cisco路由器上展示出的NetFlow缓存,包含了4条流记录,如图中的标注:

    图 2 Cisco设备上查看NetFlow缓存

    4、NetFlow报文格式

    NetFlow的输出报文包含了包头和一系列流的记录。包头的信息包含了输出流记录的序号(StreamSeq)、流的记录数(count)以及报文产生的时间(SysUpTime)。流记录包含了流的信息,如IP地址,端口号,路由信息等。图3是典型的NetFlow的报文格式,该格式适用于NetFlow版本1、5、7、8。

    图 3 NetFlow报文格式(版本1、5、7、8)

    版本1的NetFlow报文格式是最初始的格式,现在已经基本不使用了。版本5是增强版本,增加了BGP自治系统信息和流序号(flow sequence number)。版本7也是增强版本,该版本支持在Cisco Catalyst系列交换机使用,前提是该交换机要支持hybrid和native模式。版本2、版本4、版本6或者没有发布,或者Cisco设备不支持。版本8额外支持基于单台路由器的聚合。

    最新的版本是版本9,版本9区别于其它版本的地方在于它是基于模板的工作的。版本9具备了一些关键的功能,简要罗列如下:

    l 几乎所有的信息都可以从路由器或交换机上输出,2层到7层的信息都可以涉及到,包括IPv4、IPv6的路由信息,组播、MPLS信息等

    l 每次需要添加新的字段到NetFlow报文中时,为NetFlow提供采集器或者展示服务的第三方厂商无需重新编译自己的应用

    l 新的特性可以更快的添加到NetFlow技术中,且无需破坏已经存在的特性

    l NetFlow对其它协议有很强的兼容性,NetFlow版本9可以直接支持这些协议,甚至可以兼容其它一些不基于流来检测的协议

    以Cisco NetFlow 版本5为例介绍NetFlow的报文格式。图4为NetFlow 版本5包头的抓包信息。

    图 4 NetFlow Header报文格式

    根据图4的所示信息简要介绍报文中各个字段的含义:

    Version:该字段填写NetFlow报文的版本号

    Count:报文中的记录数

    SysUptime:报文产生时间,系统启动以来的毫秒数

    Timestamp:报文产生时间,从1970/1/1/8:00以来的秒数

    FlowSequence:输出流记录顺序号

    EngineType:流交换引擎类型,为0

    Sampling-interval:设备采样比,前两个Bits表示采样模式,后14个Bits表示采样率

    在NetFlow header后面包含了各条流的信息。下图为截出的流记录的报文信息,图5所示的截图中包含了一条流的信息。

    图 5 NetFlow V5 flow record报文

    根据图5所示,介绍各条流记录(flow record)中各个字段的含义如下:

    SrcAddr: 源IP地址

    DstAddr: 目的IP地址

    NextHop:下一跳地址

    InputInt: 输入接口

    OutputInt:输出接口
    Packets: 流过IP包数

    Octets: 流过字节数

    Duration:流的生存期,包含StartTime,EndTime。StartTime为流创建时间(ms),EndTime为最后一个报文时间(ms)

    Padding: 地址对齐,无意义

    Tcp Flags: TCP 标志位

    Protocol: 三层协议号

    IP ToS: 服务类型

    SrcAs: 源自治系统号

    DstAs: 目的自治系统号

    SrcMask: 源掩码

    DstMask:目的掩码

    Padding: 包含两部分,前一个字节是填充位,无意义,后一个字节为流的方向,0x00为入方向统计,0x08为出方向统计。

    图6为wireshark抓取到的我司Netstream Version 5 的流记录(flow record)报文字段:

    图 6 NetStream V5 flow record报文格式

    经过比较可以发现,我司NetStream Version 5 和 Cisco NetFlow Version 5仅有细微区别。如图6的标记处,区别只在于第二个Padding字段。图7列出了两种协议报文具体的差别。

    其实如果经过探究会发现,不论哪个版本,两种协议的报文格式没有根本性的变化,有兴趣的读者可以通过抓包自行分析。

    图 7 NetStream V5与NetFlow V5 flow record 字段的区别

    值得一提的是,Wireshark直接抓包而不经过设置是看不到UDP header上层的NetFlow报文细节的,对于我司NetStream报文也同样适用。设置很简单,随便找一条NetFlow流量,右键鼠标选中,然后选择Decode As选项,在transport中选择CFLOW,单击OK后就可以看到所有NetFlow报文(包括NetFlow header以及flow record字段)的具体内容了。

    图 8 Wireshark上查看NetFlow报文 (1)

    图 9 Wireshark上查看NetFlow报文 (2)

    5、NetFlow与IMC-NTA对接

    下图是实验室搭建的NetFlow与IMC-NTA的对接环境,环境涵盖了NetFlow应用的最基本组件。测试仪构建双向流量穿过Cisco 2811路由器,然后C2811作为NetFlow报文输出设备,将NetFlow流量交给IMC-NTA做流量统计。事实上,NetFlow和IMC-NTA的使用可以很灵活,这里作为抛砖引玉,仅说明其中一种对接配置方法。

    图 10 NetFlow与IMC-NTA对接实验环境

    5.1、NetFlow配置

    下面介绍Cisco NetFlow的一些基本配置,这里以Cisco 2811为例:

    ! // 系统视图下配置

    ip flow-cache timeout inactive 10 // 配置非活跃流老化时间为10s

    ip flow-cache timeout active 1 // 配置活跃流老化时间为1min

    ip flow-export source FastEthernet0/0/0 // 配置NetFlow报文输出接口

    ip flow-export version 5 // 配置NetFlow报文输出的版本

    ip flow-export destination 192.168.207.51 9020 // 配置流量采集器的地址和端口号

    interface FastEthernet0/1 // 接口视图下配置

    ip address 2.1.1.1 255.255.255.0

    ip flow ingress // 配置检测接口入方向流量做统计

    ip flow egress // 配置检测接口出方向流量做统计

    Cisco NetFlow命令行与我司命令行配置对比:

    图11是基本功能的配置命令行对比图

    图 11 H3C配置与Cisco配置对比 (1)

    图12是显示与维护的命令行对比图

    图12 H3C配置与Cisco配置对比 (2)

    经过上述比较可以基本了解到我司设备配置和思科NetFlow配置大同小异。

    5.2、IMC-NTA配置

    接下来说明IMC-NTA的相关配置:

    新手可以按照向导的流程按步骤完成NTA的配置。首先通过IMC首页找到【网络流量分析与审计快速配置向导】。向导包括:【设备管理】、【服务器管理】、【流量分析管理】、【系统参数管理】,可以根据图13看出,上述四个管理界面涉及到的功能仅是一部分。

    图 13 IMC-NTA组件向导

    在【业务】->【配置管理】->【设备管理】中,添加Cisco设备。这里要强调的是思科设备也要启用SNMP agent功能。由于配置不涉及到NetFlow,故此处不再赘述。

    图 14 IMC-NTA组件【设备管理】

    在【业务】->【配置管理】->【服务器管理】->【服务器配置】中选择设备作为NetFlow流量输出设备。其余配置包括服务器名称、服务器IP以及端口号等,选择“默认”即可。至于是否启用过滤策略或流量分析日志聚合策略等功能,需要根据实际需要而定。

    图 15 IMC-NTA组件【服务器配置】

    在【业务】->【配置管理】->【流量分析任务管理】中选择基于“接口”创建任务。然后“接口信息”中选择接口。这里选择FastEthernet0/1,此处的配置与Cisco设备的配置要对应上。

    图 16 IMC-NTA组件【流量分析任务管理】

    在【业务】->【配置管理】->【参数管理】中可以根据应用需要配置一些参数。本实验除了没有设置DNS,其余分析功能都启用。

    图 17 IMC-NTA组件【参数管理】

    IMC-NTA配置完毕后,轮到测试仪器的配置。测试仪TestCenter构建双向各两条流量,其中包含了四种应用(如图18所示),即UDP端口号53(DNS)、69(tftp)、TCP端口号80(http)以及21(FTP)。测试仪的具体配置与本文档无关,因此不赘述了。

    图 18 测试仪TestCenter流量构造

    经过一段时间可以在IMC-NTA上看到流量统计。在流量统计视图中选择【应用】,可以清晰看出测试仪发出的四种应用,分别以不同的颜色标出。这里要说明的是,若没有在设备侧修改“活跃流老化时间”,那么Cisco设备将按照默认30min的活跃流老化时间将NetFlow流量上送NTA,NTA中显示的“最近一小时”的统计将最多只有两个脉冲。为了直观期间,我们将活跃流老化时间调整为1分钟。

    图 19 IMC-NTA与Cisco NetFlow对接结果

    附:参考文档

    《NetFlow Services Solutions Guide》

    《NetStream V5原理及我司产品部分实现细节》