控制器与交换机之间的通道建立与初始设置
- 由交换机对控制器建立TCP连接或者TLS连接
- 协商版本
- 发送Hello消息
- 握手:发送Features请求信息、Feature响应
- 交换其他信息
OpenFlow头的go语言实现:
type Header struct {Version uint8 //1.0:0x01 1.1:0x02 1.2:0x03 Type uint8 //消息类型Length uint16 //该头中的八位字节数Xid uint32 //分配的事物id,用于响应的匹配
}
消息类型的go语言实现
const (// Identifiers from group ofp_typeOFPTHello = 0 // OFPT_HELLOOFPTError = 1 // OFPT_ERROROFPTEchoRequest = 2 // OFPT_ECHO_REQUESTOFPTEchoReply = 3 // OFPT_ECHO_REPLYOFPTExperimenter = 4 // OFPT_EXPERIMENTEROFPTFeaturesRequest = 5 // OFPT_FEATURES_REQUESTOFPTFeaturesReply = 6 // OFPT_FEATURES_REPLYOFPTGetConfigRequest = 7 // OFPT_GET_CONFIG_REQUESTOFPTGetConfigReply = 8 // OFPT_GET_CONFIG_REPLYOFPTSetConfig = 9 // OFPT_SET_CONFIGOFPTPacketIn = 10 // OFPT_PACKET_INOFPTFlowRemoved = 11 // OFPT_FLOW_REMOVEDOFPTPortStatus = 12 // OFPT_PORT_STATUSOFPTPacketOut = 13 // OFPT_PACKET_OUTOFPTFlowMod = 14 // OFPT_FLOW_MODOFPTGroupMod = 15 // OFPT_GROUP_MODOFPTPortMod = 16 // OFPT_PORT_MODOFPTTableMod = 17 // OFPT_TABLE_MODOFPTStatsRequest = 18 // OFPT_STATS_REQUESTOFPTStatsReply = 19 // OFPT_STATS_REPLYOFPTBarrierRequest = 20 // OFPT_BARRIER_REQUESTOFPTBarrierReply = 21 // OFPT_BARRIER_REPLYOFPTQueueGetConfigRequest = 22 // OFPT_QUEUE_GET_CONFIG_REQUESTOFPTQueueGetConfigReply = 23 // OFPT_QUEUE_GET_CONFIG_REPLYOFPTRoleRequest = 24 // OFPT_ROLE_REQUESTOFPTRoleReply = 25 // OFPT_ROLE_REPLYOFPTGetAsyncRequest = 26 // OFPT_GET_ASYNC_REQUESTOFPTGetAsyncReply = 27 // OFPT_GET_ASYNC_REPLYOFPTSetAsync = 28 // OFPT_SET_ASYNCOFPTMeterMod = 29 // OFPT_METER_MOD
)