Tuesday, March 25, 2014

OpenFlow 1.3 Protocol Packet Structure: OFPT_HELLO

OpenFlow protocol is used for communication between ODL Controller and Switches supporting OpenFlow (OVSK, CPqD, Cisco Switches(N3K, Cat3K etc.), Brocade, HP, Juniper etc.). Each OpenFlow message begins with OpenFlow header which has Version(0x04, 1 byte), Type(1 byte), length(2 bytes), transaction ID (4 bytes). In OF1.3 we have 30 different types of Messages which start with OFPT_

192.168.56.103        Controller
192.168.56.104        Mininet (OVSK)
192.168.56.102         Mininet (CPqD)



If Protocol field is seen as TCP instead of OpenFlow, right click on the packet of interest -> Decode As -> Transport tab -> select Openflow -> OK

Following are different messages as per OF v1.3.2
1) OFPT_HELLO     /* Symmetric message */
2) OFPT_ERROR     /* Symmetric message */
3) OFPT_ECHO_REQUEST     /* Symmetric message */
4) OFPT_ECHO_REPLY /* Symmetric message */
5) OFPT_EXPERIMENTER    /* Symmetric message */
6) OFPT_FEATURES_REQUEST /* Controller/switch message */
7) OFPT_FEATURES_REPLY /* Controller/switch message */
8) OFPT_GET_CONFIG_REQUEST /* Controller/switch message */
9) OFPT_GET_CONFIG_REPLY /* Controller/switch message */
10) OFPT_SET_CONFIG /* Controller/switch message */
11) OFPT_PACKET_IN /* Async message */
12) OFPT_FLOW_REMOVED /* Async message */
13) OFPT_PORT_STATUS /* Async message */
14) OFPT_PACKET_OUT /* Controller/switch message */
15) OFPT_FLOW_MOD /* Controller/switch message */
16) OFPT_GROUP_MOD /* Controller/switch message */
17) OFPT_PORT_MOD /* Controller/switch message */
18) OFPT_TABLE_MOD /* Controller/switch message */
19) OFPT_MULTIPART_REQUEST /* Controller/switch message */
20) OFPT_MULTIPART_REPLY /* Controller/switch message */
21) OFPT_BARRIER_REQUEST /* Controller/switch message */
22) OFPT_BARRIER_REPLY /* Controller/switch message */
23) OFPT_QUEUE_GET_CONFIG_REQUEST /* Controller/switch message */
24) OFPT_QUEUE_GET_CONFIG_REPLY /* Controller/switch message */
25) OFPT_ROLE_REQUEST /* Controller/switch message */
26) OFPT_ROLE_REPLY /* Controller/switch message */
27) OFPT_GET_ASYNC_REQUEST /* Controller/switch message */
28) OFPT_GET_ASYNC_REPLY /* Controller/switch message */
29) OFPT_SET_ASYNC /* Controller/switch message */
30) OFPT_METER_MOD /* Controller/switch message */

Writing Flow entries to Switches Programmaticallyhttp://blog.disects.com/2014/04/opendayligtht-odl-controller-write-flow.html