设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 1731|回复: 2
收起左侧

[分享] NetStream报文格式

[复制链接]
 成长值: 62830
发表于 2017-11-27 14:26:41 | 显示全部楼层 |阅读模式
网络协议报文格式大全
http://bbs.hh010.com/thread-531884-1-1.html
(出处: 鸿鹄论坛)


NetStream报文格式
NetStream是华为公司的专利技术,是一种基于网络流信息的统计与发布技术。NetStream可以对网络中的通信量和资源使用情况进行分类和统计,实现对各种业务和不同的QoS进行管理和计费。
目前Netstream输出的报文主要有5、8、9三个版本,其他的版本处于实验阶段,没有商用。所有的版本都是通过UDP协议传递统计信息的。每个数据包都包括一个Packet Header再加上一条或者几条流的记录信息。

                               
登录/注册后可看大图
NetStream原始流输出报文支持版本5和版本9两种报文格式,聚合流输出支持版本8和版本9两种报文格式。
NetStream版本5报文头格式图1 版本5报文头格式

                               
登录/注册后可看大图



字段
长度
描述
NS_ID
1字节
NetStream的标识位,第7个比特位0,表示入接口统计报文,第7个比特位1,表示出接口统计报文
version
1字节
NetStream输出报文格式版本编号,对于V5,为0x05。
count
2字节
当前报文中的流记录数(1-30)
SysUptime
4字节
报文产生的时间,是系统启动以来的毫秒数
unix_secs
4字节
从1970年1月1日0时起,到报文产生时间的整秒数
unix_nsecs
4字节
报文产生时间的纳秒数,也即不足一秒的余下的纳秒数
flow_sequence
4字节
输出的流记录的顺序号在第一个NetStream报文中,此值为0,count = c1,在第二个NetStream报文中,此值为c1,count = c2,在第三个NetStream报文中,此值为c2 + c1,…在第n – 1 个NetStream报文中,此值为fs(n - 1),count = c(n - 1)在第n个NetStream报文中,此值为fs(n - 1) + c(n - 1)。利用此值可以判断报文是否丢失。当流序列号溢出时,按自然溢出继续进行。
engine_type
1字节
流交换引擎类型
engine_id
1字节
交换引擎槽号
reserved
2字节
保留字段,全零

版本5包括以下信息:
  • 时间信息:流建立的时间、流结束的时间
  • 统计信息:包计数、字节计数
  • 协议信息:协议类型
  • 路由信息:目的IP、源IP、下一跳IP、目的IP掩码长度、源IP掩码长度、源AS域编号、目的AS域编号
  • 接口信息:入接口、出接口
  • 传输层信息:源端口号、目的端口号、TCP Flags
  • 服务等级信息:ToS

NetStream版本8报文头图2 版本8报文头格式

                               
登录/注册后可看大图



字段
长度
描述
NS_ID
1字节
NetStream的标识位
version
1字节
NetStream输出报文格式版本编号
count
2字节
当前报文中的流记录数,而不是流的总数
SysUptime
4字节
报文产生的时间,是系统启动以来的毫秒数
unix_secs
4字节
从1970年1月1日0时起,到报文产生时间的整秒数
unix_nsecs
4字节
报文产生时间的纳秒数,也即不足一秒的余下的纳秒数
flow_sequence
4字节
输出的流记录的顺序号,
engine_type
1字节
流交换引擎类型
engine_id
1字节
交换引擎槽号
aggregation
1字节
聚合策略,分别如下:
  • AS:0x01
  • Protocol-Port:0x02
  • rc-Prefix:0x03
  • Dst-Prefix:0x04
  • SPrefix:0x05
Agg_version
1字节
聚合版本
Reserved
4字节
保留字段,全零

版本8通过AS域聚合,这种聚合方式主要统计在一个路由器上从一个AS域到另一个AS域的包和字节信息。可以用以运营商之间结算。每个记录包括以下信息:
  • 时间信息:流建立时间、流结束时间
  • 统计信息:包计数、字节计数
  • 接口信息:入接口、出接口
  • AS自治域信息:源AS域编号、目的AS域编号
  • 构成聚合流的流总数:聚合流的总数
通过协议类型聚合,这种方式针对四层的协议类型(对于TCP和UDP,还包括源和目的端口号)进行聚合。每个记录包括:
  • 时间信息:流建立时间、流结束时间
  • 统计信息:包计数、字节计数
  • 协议信息:协议类型、源端口号、目的端口号
  • 构成聚合流的流总数:聚合流的总数
根据源IP和目的IP的前缀进行聚合,这种方式下,源IP地址的前缀部分和目的IP地址的前缀部分都参与聚合。每个记录包括:
  • 时间信息:流建立时间、流结束时间
  • 统计信息:包计数、字节计数
  • 接口信息:入接口、出接口
  • IP地址信息:源IP前缀、源AS域编号、目的IP前缀、目的AS域编号
  • 构成聚合流的流总数:聚合流的总数
TOS+AS域的方式进行流聚合,每个记录包括:
  • 时间信息:流建立时间、流结束时间
  • 统计信息:包计数、字节计数
  • 接口信息:入接口、出接口
  • ToS + AS信息:IP头的Tos、源AS域编号、目的AS域编号
  • 构成聚合流的流总数:聚合流的总数
按照TOS加协议类型的聚合,每个记录包括:
  • 时间信息:流建立时间、流结束时间
  • 统计信息:包计数、字节计数
  • 接口信息:入接口、出接口
  • ToS + 协议信息:IP头的Tos、协议类型、源端口号、目的端口号
  • 构成聚合流的流总数:聚合流的总数
IP地址前缀+TOS+协议类型的聚合,每个记录包括:
  • 时间信息:流建立时间、流结束时间
  • 统计信息:包计数、字节计数
  • 接口信息:入接口、出接口
  • IP信息:IP头的Tos、源前缀、目的前缀
  • 协议信息:协议类型、源端口号、目的端口号
  • 构成聚合流的流总数:聚合流的总数
TOS+源IP前缀的聚合,每个记录包括:
  • 时间信息:流建立时间、流结束时间
  • 统计信息:包计数、字节计数
  • ToS + 源IP信息:IP头的Tos、源前缀、源AS域编号、入接口
  • 构成聚合流的流总数:聚合流的总数
TOS+目的IP前缀的聚合(和TOS+源IP前缀的聚合方式的方式类似),每个记录包括:
  • 时间信息:流建立时间、流结束时间
  • 统计信息:包计数、字节计数
  • 接口信息:入接口、出接口
  • ToS + 目的IP信息:IP头的Tos、目的前缀、源前缀
  • 构成聚合流的流总数:聚合流的总数

版本9报头格式
版本9最显著的特点是基于模板的方式,使统计信息的输出更为灵活,而且更容易扩展新的定义流的元素以及生成新的记录。使用版本9可以实现NAT、组播、MPLS、BGP下一跳的统计。
图3 版本9报头格式

                               
登录/注册后可看大图


字段
长度
描述
NS_ID
1字节
NetStream的标识位
version
1字节
NetStream输出报文格式版本编号
count
2字节
该报文包含的FlowSet records(包括Template和Data)数目
SysUptime
4字节
报文产生的时间,是系统启动以来的毫秒数
UNIX Seconds
4字节
从1970年1月1日0时起,到报文产生时间的整秒数
Sequence Number
4字节
所有输出报文的顺序号
Source ID
4字节
用来保证从一台路由器中输出的所有流的唯一性(Source ID等同于V5、V8报文头中的engine type和engine ID)。该值可以由用户定义。

版本9报文有两种输出情况:
  • Export Packet中仅有Template FlowSet。在用户使能NetStream功能,对流量进行采集时,为了使网管能够正确的解析流量,系统会向NSC发送模板。为了保证网管可靠的对接收到流量统计信息进行解析,设备会定时重新发送模板给NSC。另外,模板具有有效时间,超过有效时间NSC会删除超时的模板,因此,需要定时的发送Template FlowSet到NSC,如果需要发送的时候没有Data FlowSet生成,则此时只发送Template FlowSet。报文格式如下:

                                   
    登录/注册后可看大图
  • Export Packet中仅有Data FlowSet。如果Template ID都已经定义好了,使能NetStream的路由器传递给NSC的Export Packet一般属于这种情况。报文格式如下:

                                   
    登录/注册后可看大图

Template FlowSet和Data FlowSet是独立的。Data FlowSet中的Data Record由collector已知的模板解释(换句话说,NSC已经知道了Data Record中的Template ID对应的模板了)。而Template FlowSet是告诉NSC一个即将被使用的模板,NSC使用这个模板的时候只能是针对后续的Export Packet。
Template FlowSet是版本9的灵魂。使用模板后,NSC的程序无需预先设置好按照什么样的格式解析Export Packet,只需做成通用的方式,然后通过路由器发过来的模板来解释流记录的信息。模板极大的增强了NetStream流记录的灵活性和可扩展性,方便了第三方软件的开发,和后续NetStream功能的增强。
图4 Template FlowSet的格式

                               
登录/注册后可看大图

图5 Data FlowSet的格式

                               
登录/注册后可看大图



字段长度含义
FlowSet ID2字节用于在Export Packet中对Template FlowSet进行编号,同时区分出Template FlowSet和Data FlowSet。对于Template FlowSet,FlowSet ID的取值是0~255,对于Data FlowSet,取值从256开始,这样collector就可以在Export Packet中识别出Template FlowSet。
Length2字节用于决定下一个FlowSet的其实位置,取值是上面图中全部的字节数(包括FlowSet ID和Length自身)。
Template ID2字节为模板定义一个编号,取值从256开始,原因是0~255被FlowSet ID所用。注意一个Data FlowSet对应一个Template ID Field count表示模板中type的总个数。
Field type2字节表示类型的名称,这个字段的解释router和collector必须约定好。比如如果支持按照目的IP地址、协议类型、TOS和MPLS标签进行统计,则这四种信息都有一个type的定义。
Field length2字节对应的type的长度,对于目的IP地址,取值是4,表示4个字节。


参考标准
标准描述
RFC 3954Cisco Systems NetFlow Services Export Version





发表于 2020-2-2 21:18:57 | 显示全部楼层
ddddddddddddddd
板凳 2020-2-2 21:18:57 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-12-26 14:42 , Processed in 0.719452 second(s), 12 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表