Software Defined Networks, (SDN), is a key part of the network transform efforts. In a simplified summary, SDN separates the control and data forwarding planes. As shown in the figure below, instead of having different mechanisms for interfacing to different vendor networking equipment, a network controller is used to interface to the data forwarding plane which can provide holistic network view and control of flows at the forwarding planes. One of the main protocols that is promoted in the industry for the southbound interface is OpenFlow. 

OpenFlow is defined by the Open Network Foundation, (ONF), and its specifications can be found at

OpenFlow protocol enables agile network deployment. The SDN controller using OpenFlow can manage and control flows in a centralized view, therefore simplifying the network administration and enabling agile network deployment and updates. The flows at the data forwarding plane are part of a flow table that can are managed by the SDN controller using OpenFlow.

OpenFlow messaging interaction between the controller and the data forwarding plane (or the switch) have been categorized by the OpenFlow specification (v1.4) into the following 3 areas:

1.  Controller-to-Switch: The different types of messages are:

  • (Modify-State) Used for items such as adding flow entries.
  • (Configuration)Updating or querying switch configuration.
  • (Features) Finding out the switch capabilities.
  • (Read-State)Read the switch operational state and statistical data.
  • (Packet-Out)Inform the switch of how to forward a packet.
  • (Barrier)The switch must process all OpenFlow messages received prior to a barrier request. This allows the controller to ensure message processing dependencies are met at the switch. The switch must respond with a barrier response upon process completion of all outstanding requests.
  • (Role-Request)To set or query the role of the channel.
  • (Asynchronous-Configuration) To set or query filters that define the asynchronous messages that the controller may receive from the switch.

2.  Asynchronous: unsolicited messages from the switch to the controller:

  • (Packet-In) Request help from the controller on how to forward a packet.
  • (Flow-Removed) Update the controller that a flow entry has been removed. A flow entry can be removed as a result of a controller request, or flow entry timeout expiry.
  • (Port-Status)Reports port state changes to the controller, i.e. link disconnected.

3.  Symmetric: Those are unsolicited messages and can be sent by the controller or the switch:

  • (Hello) Initial handshake messages as part of connection establishment.
  • (Echo) A keep-alive mechanism of the controller-switch connection.
  • (Error) Mainly used by the switch to send a request failure result to the controller. It can also be sent by the controller.
  • (Experimenter) A way to implement future features of OpenFlow as experimentation.

As shown in the figure, Communication Service Providers, (CSPs), can take advantage of SDN to simplify their network and benefit from the dynamicity and agility of SDN based networks. OpenFlow allows a unification of the interface between the controllers and the data forwarding planes which helps in reducing the Operational Expenditures, (OPEX). In addition, freeing the networking devices from the control aspect that is being centralized in SDN based networks, enables networking devices to handle more processing of forwarding packets which can result in reducing Capital Expenditures, (CAPEX).