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 four switches and with the SOS agents themselves. The following is a general guide to configure the SOS controller.
Gotchas
- 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.
- 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.
- 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:
Code Block | ||
---|---|---|
| ||
$ git clone https://github.com/rizard/SOSForFloodlight.git -b sossmart-131.3 |
Then, install any Floodlight prerequisites:
Code Block | ||
---|---|---|
| ||
$ 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.
Code Block | ||
---|---|---|
| ||
$ java -version |
After the prerequisites are installed, change directories into the clone cloned repository, and build the controller:
...
If you would like to develop or run the controller within Eclipse, refer to these instructions.
Setting SOS Module Parameters
The present version of the SOS module in the controller is not very intelligent and thus requires setting some configuration variables prior to running the controller. These variables will define for the controller SOS agent addresses, ports, and other SOS config options.
The file of interest is referred to as floodlightdefault.properties and is located here. The first part of the file defines a list of modules that will be loaded and run when the controller starts up. We want SOS to be run, so make sure the following line is in the list:
net.floodlightcontroller.sos.SOS,\
This will tell the controller to load the SOS module. Note that the trailing ",\" is only required if the module is not the last one in the list. As an example, notice that without any modification to floodlightdefault.properties, the Floodlight web interface module, last in the list, is missing the comma and backslash. (Also note that net.floodlightcontroller.sos.SOS should be in another properties file that defines the module's existence – this has been done for you though.)
After instructing the SOS module to load with the rest of the Floodlight modules, we need to modify the SOS module's parameters, which are also in floodlightdefault.properties as:
...
language | java |
---|
...
To kill the controller (e.g. to stop and restart it), which is simply a Java process, use your favorite way of killing processes.