您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > NetFlow学习笔记
NetFlow是一种数据交换方式。Netflow提供网络流量的会话级视图,记录下每个TCP/IP事务的信息。也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来时,它更加易于管理和易读。Netflow由Cisco创造。工作原理:NetFlow利用标准的交换模式处理数据流的第一个IP包数据,生成NetFlow缓存,随后同样的数据基于缓存信息在同一个数据流中进行传输,不再匹配相关的访问控制等策略,NetFlow缓存同时包含了随后数据流的统计信息。NetFlow有两个核心的组件:NetFlow缓存,存储IP流信息;NetFlow的数据导出或传输机制,NetFlow利用此机制将数据发送到网络管理采集器。概念:一个NetFlow流定义为在一个源IP地址和目的IP地址间传输的单向数据包流,且所有数据包具有共同的传输层源、目的端口号。确定Flow的标识:SIP+DIP+SPORT+DPORT+Layer3protocoltype+TOSbyte()+Routerorswitchinterface数据采集格式NFC(CiscoNetFlowCollector)可以定制多种NetFlow数据采集格式,下例为NFC2.0采集的一种流量数据实例,本文的分析都基于这种格式。61.*.*.68|61.*.*.195|64917|Others|9|13|4528|135|6|4|192|1数据中各字段的含义如下:源地址|目的地址|源自治域|目的自治域|流入接口号|流出接口号|源端口|目的端口|协议类型|包数量|字节数|流数量cache缓存空间可配置的Cache维护机制一般情况下Cache空间的占用是与所监控的Flow数量呈正比的,但是当链路中充斥着大量的短连接Session时,Flow表项数量可能会因为没有得到及时释放而过多占用有限的Cache空间。为此,NetFlow提供了一种非常复杂、高效的算法以快速定位一个数据包在该Cache中的位置或判断是否应新建表项,并且通过管理员给定的阀值进行各类表项的超时导出,从而及时释放老的表项以容纳新建Flow信息。FlowCache表项Timed-Out操作可由以下几项因素进行驱动:该表项已经空闲了指定的时间长度(InactiveTimer,缺省15seconds);长连接会话强制超时(ActiveTimer,缺省30minutes);缓存空间耗尽所触发的强制超时;TCPFIN/RST触发的超时。规范的导出报文格式NetFlow采用了主动式数据推送机制,一般用UDP传送。NetFlow的封装格式分为1个Header和若干个Record:Header:主要包括版本号、序列号、后续Record数量、系统启动时间等;Record:提供对每个Flow的详细数据记录。下文以NetFlowV9为例,输出报文Header与Record整体结构如下所示:在上述格式中,各字段的具体含义描述如下:表格3-3NetFlowV9各字段含义字段名称所处位置字段长度含义VersionHeader2Bytes版本号,0x0009Count2Bytes报文中所有记录的数量(包括templateanddata两种类型)SystemUptime4Bytes自网元设备加电以来的毫秒数UnixSeconds4Bytes网元设备当前机器时间(与所在时区相关)与格林威治时间(亦即”0UTC”)1970年1月1日0点0分0秒之间的秒数差额PackageSequence4Bytes网元设备所导出的Flow报文的序列号,顺序递增,可用以检测Flow报文丢失。SourceID4Bytes由0x0000+路由引擎标识+线路板卡标识构成,可与Flow报文源IP地址结合起来唯一的标识Flow信息导出节点。FlowSetIDTemplateFlowSet2Bytes用以区分TemplateRecord和DataRecord。TemplateRecord的FlowSetID位于0~255之间,而DataRecord的FlowSetID总在255以上。Length2Bytes本FlowSet的总体长度。TemplateIDTemplate2Bytes开始一个新的TemplateRecord,声Record明一个新的DataRecord格式的编号ID,数值总大于255,在该网元设备本地有效。FieldCount2Bytes本TemplateRecord所包含的字段数量。Field1Type2Bytes开始一个新字段的定义,说明该字段的类型,类型编号与厂商相关,Cisco在NetFlowV9中总共定义了89种类型。Field1Length2Bytes上述所定义的字段的长度。………………FieldNType2Bytes开始第N个新字段的定义,说明该字段的类型。FieldNLength2Bytes上述所定义的字段的长度。FlowSetIDDataFlowSet2Bytes引用一个TemplateRecordID以开始一个新的DataFlowSet。该字段数值总在255以上。Length2Bytes本DataFlowSet的总体长度。Record1-Field1valueDataRecord2Bytes第1个DataRecord的第1个字段的数值。………………Record1-FieldNvalue2Bytes第1个DataRecord的第N个字段的数值。RecordN-Field1value2Bytes第N个DataRecord的第1个字段的数值。………………RecordN-FieldNvalue2Bytes第N个DataRecord的第N个字段的数值。………………Padding报文尾部填充位,将该DataFlowSet补齐至N*32bits长度。这些填充位将计算入该DataFlowSet的Length数值。Template功能:NetFlowV9是首先对Template进行支持的版本,通过Template功能NetFlowV9获得了前所未有的扩展灵活性。Template描述了NetFlow输出记录的各字段定义,无需改变现有规范即可支持将来可能出现的增强功能,从而无需重新编译、修改流量采集分析系统即可快速支持新增功能特征。Flow具备详尽的会话描述能力。在NetFlowV9中,缺省提供了多达89种字段类型,并允许通过Template和Aggregation机制进行任意组合、汇聚,能够详细描述流量分布的各类特征.NetFlow与SNMP的不同无论是MIB还是后来的RMON,SNMP所针对的信息一般都围绕网元设备展开,如Interface吞吐率、接收到的坏帧数量、CPU/RAM利用率等。而NetFlow正如同它的名字一样,其所关注的重点在于网络链路上所传输流量的特征信息,并且这些信息能够更直接的反映出当前网络上访问行为分布以及合同客户此时所得到的真实的服务质量水平。NetFlow与SNMP的主要差异可以从以下几点得到说明:NetFlow关注流量特征,SNMP关注设备状态;NetFlow直接围绕Session会话连接进行数据提取,而SNMP则以物理接口为基本单位进行数据统计;从Agent角度来看,NetFlow采用数据主动推送技术,SNMP则主要采取被动轮询机制;NetFlow数据信息更为丰富、描述能力更强;NetFlow支持抽样操作,具备良好的扩展弹性,能够更好适应高端网络实际需求;SNMP功能通常随着设备销售而免费提供,而在很多现有设备中,NetFlow作为增值功能则需要额外购买许可License或特定软件包。因此,在网络流量测量及分析系统中,如异常流量分析系统,NetFlow已经成为一个重要的数据提取方式,为高端网络骨干链路的实时流量采集分析提供高效、准确的数据摘要提取服务,是网络流量分析阵营不可或缺的基础技术。限制条件需要网络设备对NetFlow的支持,需要分析NetFlow数据的工具软件,需要网络管理员准确区分正常流量数据和异常流量数据等。挑战者SFlow同NetFlow一样,sFlow是一种向采集器发送报告的推送技术。所不同的是,NetFlow是一种基于软件的技术,而sFlow则采用内置在硬件中的专用芯片。这种做法消除了路由器或交换机的CPU和内存的负担。sFlow系统的基本原理为:分布在网络不同位置的sFlow代理把sFlow数据报源源不断地传送给中央sFlow采集器,采集器对sFlow数据报进行分析并生成丰富的、实时的、全网范围的传输流视图。sFlow是一种纯数据包采样技术,即每一个被采样的X包的长度被记录下来,而大部分的包则被丢弃,只留下样本被传送给采集器。由于这项技术是基于样本的,如果没有复杂的算法来尝试推测准确的会话字节量,那么几乎不可能获得每台主机流量100%的准确值。在使用这项技术时,交换机每隔100个数据包(可配置)对每个接口采一次样,然后将它传送给采集器。sFlow的规格也支持1比1的采样率,即对每一个数据包都进行“采样”。对数据包最大采样频率的限制取决于具体的芯片厂商和sFlow实现情况。NetFlow更多的是在路由器上得到支持,而sFlow则在交换机上更加流行。两者都是开放标准,但在非常大的流量传输环境中,sFlow采样架构可能要优于NetFlows汇集方式。其他FlowFlow名称代表厂商主要版本备注NetFlowCiscoV1、V5、V7、V8、V9应用最广CFlowdJuniperV5、V8厂商跟进力度不高sFlowFoundry、HP、Alcatel、NEC、Extreme等V4、V5实时性较强,具备突出的第二~七层信息描述能力NetStream华为V5、V8、V9与NetFlow较为类似IPFIXIETF标准规范RFC3917以NetFlowV9为蓝本
本文标题:NetFlow学习笔记
链接地址:https://www.777doc.com/doc-2889554 .html