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 guide to configure the SOS controller.
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 -b sos-13
Then, install any Floodlight prerequisites:
$ sudo apt-get install build-essential default-jdk ant python-dev eclipse
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.
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 large chunk of the file defines a list of modules as a "floodlight.modules" variable 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 in addition to the rest in the list. 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:
net.floodlightcontroller.sos.SOS.agent-msg-port = 9998 net.floodlightcontroller.sos.SOS.agent-tcp-port = 9877 net.floodlightcontroller.sos.SOS.controller-mac = 00:26:b9:75:1d:45 net.floodlightcontroller.sos.SOS.controller-ip = 192.168.1.5 net.floodlightcontroller.sos.SOS.buffer-size = 512 net.floodlightcontroller.sos.SOS.queue-capacity = 2000 net.floodlightcontroller.sos.SOS.parallel-tcp-sockets = 64 net.floodlightcontroller.sos.SOS.flow-timeout = 15 net.floodlightcontroller.sos.SOS.dst-client-sw-port = 2 net.floodlightcontroller.sos.SOS.src-agent-mac = 02:b0:b6:91:cb:89 net.floodlightcontroller.sos.SOS.src-agent-ip = 10.10.1.2 net.floodlightcontroller.sos.SOS.src-agent-sw-port = 1 net.floodlightcontroller.sos.SOS.src-agent-ovs-port = 1 net.floodlightcontroller.sos.SOS.dst-agent-mac = 02:6b:11:90:99:05 net.floodlightcontroller.sos.SOS.dst-agent-ip = 10.10.2.2 net.floodlightcontroller.sos.SOS.dst-agent-sw-port = 1 net.floodlightcontroller.sos.SOS.dst-agent-ovs-port = 1 net.floodlightcontroller.sos.SOS.src-ntwk-switch-dpid = 00:00:00:00:00:00:00:11 net.floodlightcontroller.sos.SOS.dst-ntwk-switch-dpid = 00:00:00:00:00:00:00:22 net.floodlightcontroller.sos.SOS.src-agent-switch-dpid = 00:00:00:00:00:00:11:11 net.floodlightcontroller.sos.SOS.dst-agent-switch-dpid = 00:00:00:00:00:00:11:22 net.floodlightcontroller.sos.SOS.src-ntwk-sw-port = 3 net.floodlightcontroller.sos.SOS.dst-ntwk-sw-port = 3