netflowv9介绍及数据包格式

1,简介

netflowCisco公司提出的用于描述通过路由器的连接信息的协议。路由器也象防火墙一样不仅仅是按包处理,而是跟踪到连接一层,对属于同一个连接的数据包进行统计,某种程度上也成了状态检测,路由器将这些连接信息使用netflow协议发送到netflow搜集器,根据连接的统计信息可得到网络运行的各种信息,还可用来判断是否受到攻击。

netflow已经出过很多版本,目前应用较多的netflow版本有578.*,版本9是最新版本。之所以会有那么多版本,是由于想统计的连接的信息越来越多,数据结构也越来越大,越来越复杂,到了版本8达到登峰造极,版本8里出了N多个子版本,让人头大不已,如此下去只能导致netflow协议彻底不可用。netflow v9的出现,总算基本解决了这个问题。

netflow v9和以前版本最大区别就是v9的数据格式可以自定义,有很强的扩展性,描述一个连接的参数的数量可以自己定义,可多可少,而以前的版本的数据格式是固定的,如果用了某版本,即使其中很多字段不需要,在一个数据记录中同样要保留这些参数,使灵活性很差,导致想看的数据看不到,不想看的又必须看。

 2. netflow v9

netflow v9数据部分分为三部分:数据头(header)、模板部分(Template)、数据部分(data)。除了数据头部分外,在一个包中的模板部分和数据部分都可能有多个记录。

2.1 数据头

数据头部分描述数据包的版本等基本信息:

    0                   1                   2                   3  
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            Version            |             count             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      System Uptime                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       UNIX Seconds                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Package Sequence                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Source ID                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

version
 
版本,取值为9

count
 
模板和数据部分的记录的总数量

system_uptime
 
设备自启动以来的毫秒数

unix_seconds
 
数据发出时当前UNIX时间秒数,从197011日开始计数的秒数

packet_seq
 netflow
包的序列号

source_id
 
设备源ID,等价于v5,8中的引擎类型和引擎ID字段, 在目前
Cisco
 
的实现中,前两个字节为0作为保留值,3字节描述引擎ID,4字节

 
描述设备线路板卡标志,该字段和设备源IP地址共同定位netflow
 
数据源

2.2 模板部分

模板是netflow v9的创新之处,模板的功能是用来描述netflow数据部分有哪些字段以及Z字段的长度,这样就可以灵活定义这个netflow信息包中包括了哪些数据,而且有很好的扩展性,v9中已经定义了80多种类型的数据,以后如果有需要可以很方便地扩展。

模板部分描述流量集(flowset)中有哪些类型的数据及其长度信息,netflow解析器利用它来对数据部分进行解析,总长度不定。

模板流量集数据格式, 各字段是16位的:

     0                   1            
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       FlowSet ID = 0          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Length              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Template ID          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field Count          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field 1 Type         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field 1 Length       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field 2 Type         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field 2 Length       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           ......              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field N Type         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field N Length       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Template ID          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field Count          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field 1 Type         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field 1 Length       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field 2 Type         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field 2 Length       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           ......              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field N Type         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Field N Length       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

FlowSet ID
     
该字段用来区分模板记录和数据记录,对于模板记录该字段在0255之间。目前描述netflow流字段的模板记录中该字段为0,而描述选项字段的模板记录中该字段为1。对于数据记录来说,该字段值都是大于255的。

Length长度字段表示该流量集的总长度。因为可能会容纳多个ID的模板,整体长度值是必须的。

Template ID模板ID用于标志一个新的模板记录,用来匹配一个新的数据段中的数据记录,这个ID值是大于255的。

Field Count域数量用于描述这个模板记录中的域的数量,一个模板记录中可以有多个域。

Field Type该参数表明域的类型,在netflow v9中定义了87种数据类型,以后还可以扩展,具体类型的详细说明见参考文献。

Field Length表明Field Type所定义的数据域的长度,以字节为单位。

2.3 选项模板

netflow v9模板类型中还有一种选项模板(options template),这个模板不是定义netflow流量信息,而是netflow处理进程自身的各种控制信息的。

选项模板数据格式, 各字段是16位的:

     0                   1            
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       FlowSet ID = 1          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Length              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Template ID          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Option Scope length      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Option length         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       Scope Field 1 Type      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       Scope Field 1 Length    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           ......              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       Scope Field N Length    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Option Field 1 Type      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Option Field 1 Length    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           ......              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Option Field N Length    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Padding             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

FlowSet ID
     
该字段用来区分模板记录和数据记录,对于模板记录该字段在0255之间。目前描述netflow流字段的选项模板中该字段为1,而描述选项字段的模板记录中该字段为1。对于数据记录来说,该字段值都是大于255的。

Length长度字段表示该选项模板流量集的总长度。因为可能会容纳多个ID的模板,整体长度值是必须的。

Template ID模板ID用于标志一个新的模板记录,用来匹配一个新的数据段中的数据记录,这个ID值是大于255的。

Option Scope Length表示该选项模板中的所有范围域(Scope Field)的长度,以字节为单位。

Options Length表示该选项模板中的所有选项域(Options)的长度,以字节为单位

Scope Field 1 Type用于表示范围域选项类型,可能的取值为:
 ? 0x0001 System
 ? 0x0002 Interface
 ? 0x0003 Line Card
 ? 0x0004 NetFlow Cache
 ? 0x0005 Template

Scope Field 1 Length范围域数据的长度

Option Field 1 Type选项域类型,类型范围是数据模板中的87种数据类型

Option Field 1 Length选项域长度,以字节为单位

Padding填充数据,使总长度4字节对齐

 2.4 数据部分

数据部分就是根据模板部分的定义填写的具体的netflow数据,可有多个,总长度不定。

模板流量集数据格式, 各字段是16位的:

     0                   1            
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    FlowSet ID = Template ID   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Length              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Record 1 - Field 1 value   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Record 1 - Field 2 value   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Record 1 - Field 3 value   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Record 1 - Field 4 value   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           ......              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Record 1 - Field N value   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Record 2 - Field 1 value   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Record 2 - Field 2 value   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Record 2 - Field 3 value   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Record 2 - Field 4 value   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           ......              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Record 2 - Field N value   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           ......              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           padding             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Flowset ID 取值等于模板字段中定义的Template ID值,表示数据是按哪个模板定义的。

Length 整个数据流量集的长度

Record N - Field N 每个netflow信息中的各个字段的数据,这些数据是什么是有模板定义的。

Padding 填充数据,使整个数据流量集长度4字节对齐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值