Controller Installation

When configuring SOS, all the switches – whether hardware or software – must be connected to a central Floodlight controller. This controller is equipped with an SOS module that communicates with the switches and with the SOS agents themselves. The following is a general guide to configure the SOS controller.

Gotchas

  1. Prior to setting up the controller, consider how you are going to connect each switch to it. The control plane needs to be reliable and accessible to both the switches and the controller itself. A common solution is to host the controller on a public IP using a GENI VM. This will work in most all cases – just point each switch to this public controller IP. An alternative is to use port forwarding on a known and accessible public IP to forward all OpenFlow control plane traffic to the real location of the controller.
  2. The controller, although relatively stable, is still under development. Please reach out and ask (rizard@g.clemson.edu) if you feel something isn't working right.
  3. At present, the controller does not take into account the capabilities of any hardware switch. As such, flow matches and actions might need to be tweaked in order to ensure use of the switch hardware forwarding path. Conveying this information in a dynamic way is a known problem across the board in OpenFlow and still does not have a foolproof solution. OpenFlow 1.3 introduced table features messages, which allows the switch to inform the controller about most of the capabilities and requirements of each of its flow tables. This feature was recently introduced to Floodlight in late spring 2015 and to OVS around the same time. It has not been extended to SOS yet.

Downloading, Installing, and Running

The SOS controller is hosted on GitHub as a special extended version of Floodlight and can be cloned using git. In a Linux terminal, get the source code:

$ git clone https://github.com/rizard/SOSForFloodlight.git -b smart-1.3

Then, install any Floodlight prerequisites:

$ sudo apt-get install build-essential default-jdk ant python-dev eclipse

Check to make sure the correct Java version is installed. If it is not, then you need to install Java 7 as appropriate for your machine.

$ java -version

After the prerequisites are installed, change directories into the cloned repository, and build the controller:

$ cd SOSForFloodlight
$ ant
 
$ sudo mkdir /var/lib/floodlight
$ sudo chmod 777 /var/lib/floodlight

Lastly, you can run the controller at any time by executing the compiled JAR file:

$ java -jar target/floodlight.jar

If you would like to develop or run the controller within Eclipse, refer to these instructions.

To kill the controller (e.g. to stop and restart it), which is simply a Java process, use your favorite way of killing processes.