整理的最完整的OFPT_STATS_REQUEST && REPLY消息-部分转载(含有1.0与1.3的对比)

 

OFPT_STATS_REQUEST && REPLY

 以上的消息如hallo等都是通信过程中必须的部分。还有一些数据包是为了某些目的而设计的如OFPT_STATS_REQUEST && REPLY可以获得统计信息,主要用于请求数据或从交换机状态信息我们可以利用统计信息做:负载平衡,流量监控等基于流量的操作。(在1.3中请求被放在一个或多个OFPT_MULTIPART_REQUEST 消息中,交换机用一个或多个OFPT_MULTIPART_REPLY 消息进行响应。复合消息用于编码请求或应答那些可能携带大量数据而且不能装进单个 OpenFlow 消息(仅限于 64 kb)的情况。)

消息格式:

OFPT_STATS_REQUEST(12B)

version

type

length

 xid

type

flags

body[0]

 

OFPT_STATS_REPLY(12B)

version

type

length

 xid

type

flags

body[0]

 

 

OFPT_STATS_REQUEST类型有很多,回复的类型也很多。


        Type:
在请求和响应中,type 字段指所传递信息的种类,并决定如何解析 body 字段:

    OFPMP_DESC= 0:整体统计信息。请求交换机版本信息,制造商家等信息。

request body结构体是空。replaybody回复结构体ofp_desc_stats
     OFPMP_FLOW = 1
:OFPST_DESC单流请求信息request body结构体是:ofp_flow_stats_request.回复bodyreplay: ofp_flow_stats
   OFPMP_AGGREGATE = 2
:OFPST_FLOW多流请求信息,request body结构体是ofp_aggregate_stats_request.回复body结构体ofp_aggregate_stats_replay
       OFPMP_TABLE =
3:OFPST_AGGREGATE,流表请求信息request为空,回复是流表数组ofp_table_stats
     FPMP_PORT_STATS =4
:OFPST_TABLE物理端口信息请求fp_port_stats_request.

ofp_port_stats.
       OFPMP_QUEUE=5
:队列请求信息:供应商扩展
        6:vendor请求信息,有时候没有定义

1.3

OFPMP_GROUP=6 组计数器描述

OFPMP_GROUP_DESC=7组描述

OFPMP_GROUP_FEATURES=8。。。13组特征呢个描述。。。

详细的

OFPST_DESC(整体统计信息)

请求BODY:

回复BODYofp_desc_stats

制造商

硬件描述

软件描述

序列号

可读的数据通道描述


OFPST_FLOW(单流统计信息)

请求BODY: ofp_flow_stats_request.

要读的TABLE_ID(来自ofp_table_stats  (流表))ofptt_all:所有表

Table_id 表示一个将读取的一个流表的索引值

对齐到32bit

回复BODYofp_flow_stats

这个项的长度

流的来源表ID

流已生成的时间

流存在的时间超过上面的时间的时间。

流表项的优先权

超时时间 2个(老化时间)

流里包的数目

流里的字节数

OFPST_AGGREGATE(多流统计信息)-多个流表项的总计信息

请求BODY: ofp_aggregate_stats_request

要读取的表的ID

回复BODY ofp_aggregate_stats_replay

流中的数据包

流的字节数

流的数量


OFPST_TABLE(表统计信息)

请求BODY:

回复BODYofp_table_stats

表的标识符,低编号的表先

通配符

最大支持的流表项

活跃流表项的数量

被查找表的数量

匹配表的数量

在交换机支持的每一个表中,数组都有一个结构。流表项是以数据包通过表的顺序返回
的。

OFPST_PORT(端口统计信息)

请求BODY:fp_port_stats_request.

必须制定端口

1.3port_no字段有选择的过滤统计请求到给定的端口。若访问所有端口的统计,port_no必须设置成 OFPP_ANY

回复BODYofp_port_stats.
收到包的数量

已传送包的数量

收到的字节数

传送的字节数

被rx丢弃的包数

被tx丢弃的包数

接收到错误的包数

帧调整的错误数量

在RX溢出的数据包数

CRC错误数

冲突数量

OFPST_QUEUE(队列统计信息)

请求BODY:

回复BODY

 

1)controller分别向sw1、sw2发送stats_request消息(stats_type=0)

 

2sw1应答,发送stats_reply消息 


3aggregate_stats_requeststats_type=2


 


4aggregate_stats_reply

 
 
结构:header(type=17)/reply_header()/flow_stats/wildcards/match/flow_stats_data
 作用:携带流的统计信息,如通过的数据包个数,字节数。
ofp_flow_stats(body[4:8])里面会有的table_id字段表明该流存放在哪一个流表里。
flow_stats_data里面有packet_count和byte_count是最有价值的字段,流量统计就是由这两个字段提供的信息。如想统计某条流的速率:前后两个reply的字节数相减除以duration_time只差就可以求得速率,由速率我们可以做很多基于流量的app,如流量监控,负载均衡等等。
      

 

 


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值