netflow数据包格式
NetFlow以UDP数据报(datagram)的形式,采用下面两种格式的中的一种来输出信息流:“版本1”(version 1)的格式是最初发布的格式;“版本5”(version 5)格式是后来的一种加强格式,它增加了边界网关协议(BGP-Border Gateway Protocol)的AS信息和信息流的序列号。而版本2到版本4并没有发布。在版本1和版本5格式中,数据报由一个头标信息、一个或
NetFlow以UDP数据报(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建议你首先检查数据报的大小,确信它最起码有足够长,可以容下版本字段和计数字段。接下来,你应该证实版本是有效的(为1或5),而且接收到的字节数足以容纳头标信息和对信息流记录进行计数(当然要使用合适的版本)。
因为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标志的累积OR。pad2和pad3是未用的(即内容为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的)字节。 |
更多推荐



所有评论(0)