To start experimenting with OpenFlow, you’ll want both an OpenFlow switch (either a software-based switch or a hardware one) and a controller that supports higher-level applications. We offer several options as summarized below:
Based on which type of network you plan to run, your choice for the switches and controller will vary. Following provides more details on the choices:
- Reference Linux Switch: This implementation runs on the widest variety of systems and is easy to port. It is also the slowest, as it cannot take advantage of multiple CPUs and requires kernel-to-user-space transitions. It supports as many ports as you can fit in a PC (8+), including wired and wireless ports. Select platform for further instructions:
- NetFPGA Switch: This switch offers line-rate performance for 4 Gigabit ports, regardless of packet size, via hardware acceleration. It requires the purchase of a NetFPGA card, which is $500 for researchers and $1000 for industry. More NetFPGA details are available at www.netfpga.org.
- Open vSwitch: Open vSwitch is a multilayer virtual switch, licensed under the open source Apache 2 license, with OpenFlow support. Open vSwitch currently supports multiple virtualization technologies including Xen/XenServer, KVM, and VirtualBox.
- OpenWRT: By porting OpenFlow support to OpenWrt, we convert a cheap commercial wireless router and access point into an OpenFlow-enabled switch with a WebUI and a CLI.
To obtain a hardware switch that supports the latest release of OpenFlow, purchase one of the following:
- HP Procurve 5400zl: This switch typically features 48 x 1Gbps ports that are expandable to 576 ports. Support OpenFlow ver 0.8.9
- NEC PF5240: This switch typically features 48 x 1Gbps ports, along with 2 x 10Gbps ports. Supports OpenFlow ver up 1.0
- Pronto: This switch typically features 48 x 1Gbps ports, 4 SPF+ 10Gbps ports. This switch provides vanilla OpenFlow support for ver 1.0, with firmware developed by Stanford.
- Reference Learning Switch Controller. This controller comes with the Reference Linux distribution, and can be configured to act as a hub or as a flow-based learning switch. It is written in C.
- NOX: NOX is a Network Operating System that provides control and visibility into a network of OpenFlow switches. It supports concurrent applications written in Python and C++, plus includes a number of sample controller applications.
- Beacon: Beacon is an extensible Java-based OpenFlow controller. It was built on an OSGI framework, allowing OpenFlow applications built on the platform to be started/stopped/refreshed/installed at run-time, without disconnecting switches.
- Helios: Helios is an extensible C-based OpenFlow controller build by NEC, targeting researchers. It also provides a programmatic shell for performing integrated experiments
- BigSwitch: BigSwitch released a closed-source controller based on Beacon that targets production enterprise networks. It features an user-friendly CLI for centrally managing your network.
- SNAC: SNAC is a controller targeting production enterprise networks. It is based on NOX0.4, and features a flexible policy definition language and a user-friendly interface to configure devices and monitor events.
- Maestro: Maestro is an extensible Java-based OpenFlow controller released by Rice University. It has support for multi-threading and targets researchers.
- FlowVisor: This is a special purpose OpenFlow controller that acts as a transparent proxy between OpenFlow switches and multiple OpenFlow controllers. It slices the network based on the Flow fields and allocated the “flowspace” to individual controllers.