OpenFlow是SDN控制器和交换之间交流的协议,在SDN领域有着十分重要的地位。
OpenFlow协议发展到现在已经经过了1.0、1.3、1.4等版本。其中1.0和1.3版本使用的是最为广泛的。
本篇博文主要分析1.0版本和1.3版本OpenFLow协议在控制器和交换机之间的交互流程。
OpenFlow1.0协议交互
OpenFlow协议1.0的交互过程如下:
交互过程:
- 交换机或控制器首先发送hello报文,确定openflow通信版本。
- 交换机或控制器收到hello报文之后,回复一个hello报文,协商版本。
- 控制器发送feature_request报文,查询交换机具体信息。
- 交换机收到feature_request报文之后,回复feature_reply,报告自己的详细信息给控制器。
- 工作过程中控制器会不断发送echo_request给交换机,交换机回复echo_reply消息给控制器,确认连接。
OpenFlow协议1.0版本在交换机和控制器信息交互过程中,一共有如下的消息类型:
1. Enum ofp_type { 1. /* Immutable messages. */ 2. OFPT_HELLO, /* Symmetric message */ 3. OFPT_ERROR, /* Symmetric message */ 4. OFPT_ECHO_REQUEST, /* Symmetric message */ 5. OFPT_ECHO_REPLY, /* Symmetric message */ 6. OFPT_VENDOR, /* Symmetric message */ /* Switch configuration messages. */ 7. OFPT_FEATURES_REQUEST, /* Controller/switch message */ 8. OFPT_FEATURES_REPLY, /* Controller/switch message */ 9. OFPT_GET_CONFIG_REQUEST, /* Controller/switch message 10. OFPT_GET_CONFIG_REPLY, /* Controller/switch message * 11. OFPT_SE