OpenFlow Basics

Note: This is a computer networking-focused document. It’s expected that you have basic knowledge of computer network architecture as specified in the What You Need to Know Before Starting.


There is sometimes a need for network architects (or developers like you) to define the behavior of their networks in a custom manner. For example, the architect may want a network switch where they can control how packets are routed, or even define a custom protocol.

Historically, this was possible via closed, proprietary hardware that can be prohibitively expensive or impossible to obtain by researchers and experimenters. Yet, the need for this functionality exists in order to run wide-scale projects implementing new, experimental protocols, or even routing rules for basic network architecture needs.

OpenFlow is an API that a growing number of switch manufacturers (like IBM, or HP and its Procurve switch) are implementing, and it’s the leading architecture for Software defined Networking (SDN). It’s an open API that allows external software to define the routing rules, or “control plane” of routing hardware.

Igor Gashinsky gives an excellent overview on the need for SDN from an industry perspective below, but also illustrates the need to separate the control plane of a switch from the physical hardware.

Igor Gashinksy of Yahoo! At OpenFlow Symposium from Stephen Foskett on Vimeo.

OpenFlow is also implemented by Open vSwitch, a software-based switch you can install on an ordinary machine.

On the GENI network, you can request access to a physical OpenFlow-enabled Procurve, or simply install Open vSwitch on a machine and configure it from there.

Before going much further, you may want to know: What exactly can I do with OpenFlow?