OpenFlow 消息

消息类型

OpenFlow 的消息共分为三类:

  1. Controller-to-Switch
    顾名思义,此类消息是由控制器主动发出
  • Features 用于获取交换机特性
  • Configuration 用于配置 OpenFlow 交换机
  • Modify-State (用来修改交换机状态修改流表)
  • Read-States 用来获取交换机状态
  • Send-Packet 用来发送数据包
  • Barrier 阻塞消息
  1. Asynchronous
    异步消息,此类消息由交换机主动发出
  • Packet-in 用来告知控制器交换机接收到数据包
  • Flow-Removed 用来告知控制器交换机的流表被删除
  • Port-Status y用来告知控制器交换机端口状态更新
  • Error 用来告知控制器交换机发生错误
  1. Symmetric
    对称消息,控制器和交换机都可以发起
  • Hello 用来建立 OpenFLow 连接
  • Echo 用来确认控制器与交换机之间的连接状态
  • Vendor 厂商自定义消息

消息格式

OpenFlow 协议数据包由 Header 和 Message 两部分组成。

OpenFlow Header的结构:

struct ofp_header {
    uint8_t version; /*OpenFlow 协议的版本*/
    uint8_t type;    /*消息类型*/
    uint16_t length; /*整个数据包的长度*/
    uint32_t xid;   /*这个数据包的标识id*/
}

OpenFlow Message 的结构与具体的消息类型有关:
OpenFlow message

原文地址:https://www.cnblogs.com/multhree/p/9512344.html