OpenFlow is a communications protocol that gives access to the forwarding plane of a network switch or router over the network. In simpler terms, OpenFlow allows the path-of-network-packets-through-the-network-of-switches to be determined by software running on a separate server. This separation of the control from the forwarding allows for more sophisticated traffic management than feasible using access control lists (ACL)s and routing protocols. Its inventors consider OpenFlow an enabler of “Software Defined Networking”. (Wikipedia)
In a classical router or switch, the fast packet forwarding (data path) and the high level routing decisions (control path) occur on the same device. An OpenFlow Switch separates these two functions. The data path portion still resides on the switch, while high-level routing decisions are moved to a separate controller, typically a standard server. The OpenFlow Switch and Controller communicate via the OpenFlow protocol, which defines messages, such as packet-received, send-packet-out, modify-forwarding-table, and get-stats.
The data path of an OpenFlow Switch presents a clean flow table abstraction; each flow table entry contains a set of packet fields to match, and an action (such as send-out-port, modify-field, or drop). When an OpenFlow Switch receives a packet it has never seen before, for which it has no matching flow entries, it sends this packet to the controller. The controller then makes a decision on how to handle this packet. It can drop the packet, or it can add a flow entry directing the switch on how to forward similar packets in the future.
What can I do with OpenFlow?
OpenFlow allows you to easily deploy innovative routing and switching protocols in your network. It is used for applications such as virtual machine mobility, high-security networks and next generation ip based mobile networks.