1 、Netflow版本分类
思科的netflow主要版本有V1、V5、V7、V8、V9,思科的应用范围最广。华为的netstream支持V5、v8和V9两个版本,目前对于国内用户来说netstream V5、V9应用比较多。对于Ipv4的流量既可以使用v5版本进行采集,也可以使用v9版本聚合采集,但是ipv6的流量只能使用V9版本进行采集。以下重点说明思科netflow v5、v9版本和netstream v5、v9版本。
![Netflow/Netstream:IPv4流量可用V5或V9采集,IPv6流量只能用V9](http://p2.ttnews.xyz/loading.gif)
Netflow v5版本的数据包,是由多个pdu组成。每个PDU包中包含源目的ip,下一跳,数据流输入输出接口的索引号、pdu包数、pdu字节数、PDU流中看见第一个数据包的时间和看见最后一个数据包的时间、源目的端口号,填充、tcp的标志位、协议类型、服务类型、源目的匿名系统ID、源目的ip子网掩码等。
![Netflow/Netstream:IPv4流量可用V5或V9采集,IPv6流量只能用V9](http://p2.ttnews.xyz/loading.gif)
Netflow v9数据包由模版数据包和数据包两种组成,交换机和路由器每隔一段时间会发送template模版报文,思科是根据netflow数据包的输出数量来发送netflow 模版报文,默认是20个netflow包发送一次模版报文,此项在思科路由器上可配置。
若没有收到模版报文,netflow v9的数据报文将无法解析。
2、 netflow v5数据包字段详解
2.1 netflow与netstream v5版本字段详解
netstream v5数据包, 目的端口默认为9995,目的地址为9.9.9.10,为netstream数据解析器的ip地址和端口信息。9.9.9.9为netstream采集器的地址。
注意:
对于netstream报文wireshark使用默认编码无法解析如图:
需要重新设置编码,选中数据包右键,选择编码。
找到cflow协议。
点击应用,数据部分立即变成netflow报文,可以看到字段内部的内容了。
华为交换机除了会发送0005编码的Netstream还会发送8005编码的netstream报文。
Netflow v5数据包,目的端口默认为9996,其余与netstream相同。数据包如下:
Netflow与netflow v5数据包的字段一致以下统一说明。
Version : netflow版本
Count: flow记录数
Sysuptime: 系统运行时间
EngineType: 设备类型
EngineID:设备ID号
SamplingMode:采样模式配置
SampleRate:统计采样率
Timestamp:时间戳
FlowSquence:流序列号
PDU字段:
Srcaddr 源ip地址
Dstaddr 目的ip地址
Nexthop 数据包的下一跳
Inputint 数据流输入接口的索引号
Outputint 数据流输出接口的索引号
Packets PDU中包含的包的数量
Octets PDU中的字节总数
Starttime PDU流中看见第一个数据包的时间(单位:毫秒)
Endtime PDU流中看见最后一个数据包的时间(单位:毫秒)
Srcport 数据流的源端口号
Dstport 数据流的目的端口号
Padding 填充
Tcp flag tcp标志位,协议状态(URG=32,ACK=16,psh=8,RST=4,SYN=2,FIN=1)例如:若tcp flag=27表明这个流有SYN,ACK,PUSH,FIN(2+16+8+1=27)
Protocol 4层的协议类型 ICMP=1 ,TCP=6,telnet=14,UDP=17
Ip TOS 服务类型,传输过程中的特殊处理,分为最小时延,最大吞吐量,最高可靠性,最小费用
SrcAS 源匿名系统ID
DstAS 目的匿名系统ID
SrcMask 源ip子网掩码
DstMask 目的ip子网掩码
Padding 两个填充字节
2.2 netflow与netstream v5版本字段不同点
在netstream版本5中Nexthop ,Padding(1字节填充),SrcAS,DstAS,SrcMask,DstMask,Padding(2字节填充)的值均为0。
由于对入接口和出接口分别独立进行统计Netstream (netflow)流统计时按照出入接口独立统计。华为与思科路由器出入接口不一致inputInt和outputInt字段值不一致。
Netflow报文
Netstream报文
netflow的padding字段包含两部分,前一个字节是填充位,无意义,后一个字节为流的方向,0x00为入方向统计,0x08为出方向统计。Netflow的padding字段包含两部分,后一个字节是填充位,无意义,前一个字节为流的方向,0x00为入方向统计,0x01为出方向统计。
NetStream Version 5 和 Cisco NetFlow Version 5仅有细微区别。其实如果经过探究会发现,不论哪个版本,两种协议的报文格式没有根本性的变化。
3、 netflow v9报文字段详解
3.1 netflow v9优势
使用此版本,NetFlow可以导出NetFlow v9 (version 9)导出格式的数据。这种格式是灵活和可扩展的,它提供了支持新字段和记录类型所需的多功能性。这种格式适应了新的netflow支持的技术,比如多播、MPLS、NAT和BGP。
提供NetFlow收集引擎(以前称为NetFlow FlowCollector)或NetFlow显示服务的第三方业务合作伙伴不需要每次添加新的NetFlow技术时重新编译他们的应用程序。相反,使用NetFlow v9导出格式特性,他们可以使用一个外部数据文件来记录已知的模板格式和字段类型。
NetFlow version 9数据导出支持CEF切换、dCEF切换和快速切换。
3.2 netflow v9字段详解
NetFlow采用了主动式数据推送机制,一般用UDP传送。
NetFlow的封装格式分为1个Header和若干个Record:
Header:主要包括版本号、序列号、后续Record数量、系统启动时间等;
Record:提供对每个Flow的详细数据记录。
下文以NetFlow V9为例,输出报文Header与Record整体结构如下所示:
FlowSet: 是FlowRecord的集合。包括Template FlowSet和Data FlowSet
在上述格式中,各字段的具体含义描述如下:
Template功能:NetFlow V9是首先对Template进行支持的版本,
通过Template功能NetFlow V9获得了前所未有的扩展灵活性。
Template描述了NetFlow输出记录的各字段定义,无需改变现有规范即可支持将来可能出现的增强功能,从而无需重新编译、修改流量采集分析系统即可快速支持新增功能特征。
netflow具备详尽的会话描述能力。在NetFlow V9中,缺省提供了多达89种字段类型,并允许通过Template和Aggregation机制进行任意组合、汇聚,能够详细描述流量分布的各类特征.
Netflow v9版本由模版报文和数据报文两种报文组成
Netflow v9的模版报文
、
Netflow v9模版报文字段解释
3.3 netflow v9模板报文与数据报文直接的关系
思科路由器或华为交换机会默认1分钟发送一次模板报文,若采集器或者解析器的配置有变化时思科路由器或华为交换机会立即发送模板报文。若未收到模板报文解析器不会解析数据报文。
设备或wireshark会根据最新收到的模板报文将Netflow v9数据报文解析出来,解析结果如下:
閱讀更多 楊冰幻 的文章