NetFlowUDP数据报(datagram)的形式,采用下面两种格式的中的一种来输出信息流:版本1”version 1)的格式是最初发布的格式;版本5”version 5)格式是后来的一种加强格式,它增加了边界网关协议(BGP-Border Gateway Protocol)的AS信息和信息流的序列号。而版本2到版本4并没有发布。

在版本1和版本5格式中,数据报由一个头标信息、一个或多个信息流记录构成。头标信息的第一个字段包含输出数据的版本号。通常情况下,接收程序不管接收哪种格式,它都会分配一个足够大的缓冲区,以便不管哪种格式的数据报到来,都可以容纳下可能的最大的数据报。此外,它使用头标信息中的版本信息来决定如何理解这些数据报。头标信息中的第二个字段是数据报中记录的个数,可以用它来对记录进行索引。

不管在版本1格式中还是在版本5格式中,其中的所有字段都是按照网络字节的次序排列的。表1和表2描述了版本1的数据格式,表3 和表4描述了版本5的数据格式。

Cisco建议接收程序检查数据报,用以保证数据是从有效的NetFlow源头来的。Cisco建议你首先检查数据报的大小,确信它最起码有足够长,可以容下版本字段和计数字段。接下来,你应该证实版本是有效的(为15),而且接收到的字节数足以容纳头标信息和对信息流记录进行计数(当然要使用合适的版本)。

因为NetFlow输出采用用户数据报协议UDP——User DatagramProtocol)来发送输出的数据报,所以可能会丢失数据。为了确定信息流输出信息是否丢失了,版本5的头标信息格式中包含了一个信息流序列号。这个序列号等于前一个序列号加上刚刚过去的数据报中信息流的个数。当接收到一个新的数据报后,接收程序可以从头标信息中的序列号中提取出的预期的序列号,这样即可以获取丢失信息流的数目。表1列出了版本1头标信息格式中的字节。
1 版本1头标信息格式

字节

内容

描述

0-3

version and count

NetFlow输出格式的版本号,和输出到这个数据包的信息流的个数

4-7

SysUptime

自路由器被启动后,到当前的时间,以毫秒为单位。

8-11

unix_secs

0000 UTC 1970开始,到当前的秒数。

12-16

unix_nsecs

0000 UTC 1970开始,到当前残余的毫微秒数。

2 版本1信息流记录格式

字节

内容

描述

0-3

srcaddr

源头的IP地址。

4-7

dstaddr

目的地的IP地址。

8-11

nexthop

下一网络段路由器的IP地址。

12-15

input and output

输入和输出接口的SNMP索引。

16-19

dPkts

该信息流中的数据包。

20-23

dOctets

在信息流的数据包中,第3层(Layer 3)字节的总个数。

24-27

First

信息流开始时的SysUptime

28-31

Last

信息流的最后一个数据包被接收时的SysUptime

32-35

srcport anddstport

TCP/UDP源头和目的地的端口号或等值物。

36-39

pad1,prot,andtos

未使用的(即内容为0的)字节、IP协议(例如,6=TCP,17=UDP)和IP服务类型。

40-43

flags,pad2,andpad3

TCP标志的累积ORpad2pad3是未用的(即内容为0的)字节

44-48

reserved

未用的(即内容为0的)字节。

3 版本5头标信息格式

字节

内容

描述

0-3

version andcount

NetFlow输出格式的版本号,还有输出到这个数据包的信息流的个数(1-30)。

4-7

SysUptime

自路由器启动时起,到当前的时间,以毫秒为单位。

8-11

unix_secs

自从0000 UTC 1970开始,到当前的秒数。

12-15

unix_nsecs

自从0000 UTC 1970开始,到当前残余的毫微秒数。

16-19

flow_sequence

已经看到的所有信息流的序列计数器。

20-24

reserved

未用的(即内容为0的)字节。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐