= The !FloodLight Controller. = !FloodLight is an open-source, Java-based controller maintained by !OpenFlowHub. == I. Installation. == The following describes the installation of !FloodLight on an Ubuntu 11.04 (natty) system. Installation is described on their [http://floodlight.openflowhub.org/getting-started/ website], but will be repeated here. If you are using SSH, You may want X11 forwarding to be able to launch Eclipse later on.[[BR]] 1. install the dependencies: {{{ apt-get install build-essential default-jdk ant python-dev git-core eclipse }}} 2. pull sources from github, and build: {{{ git clone git://github.com/floodlight/floodlight.git cd floodlight/ git checkout stable ant; }}} 3. launching the controller - there are two ways to do this - through eclipse, or directly through java (both in the floodlight/ directory): {{{ java -jar target/floodlight.jar }}} or as an Eclipse project - first set up Eclipse: {{{ ant eclipse; }}} then import Floodlight as a project (verbatim from the website): * Open eclipse and create a new workspace * File -> Import -> General -> Existing Projects into Workspace. Then click “Next”. * From “Select root directory” click “Browse”. Select the parent directory where you placed floodlight earlier. * Check the box for “Floodlight”. No other Projects should be present and none should be selected. * Click Finish. Once imported, the controller may be run by right-clicking on Controller.java (net.floodlightcontroller.core.internal.Controller.java, found under src/main/java) and choosing Run As -> Java Application. [[BR]][[BR]] The learning switch is loaded by default. The controller listens on 0.0.0.0:6633 (host, all interfaces with an IP address). == II. Adding functionality. == A base tutorial can be found [http://floodlight.openflowhub.org/developing-floodlight/ here]. The rough steps are the following: 1. Create a new class under src/main/java, basing it off of a template, if it exists 2. Register the module so that it is loaded at startup. This involves adding the fully qualified module name to two files: * ''' net.floodlight.core.module.IFloodlightModule ''' - list of modules recognized by the loader * ''' floodlightdefault.properties ''' - list of modules to be loaded at startup. = The Floodlight VM = This is a VM image geared towards VirtualBox containing a running floodlight instance, mininet, and wireshark. [[BR]] It can easily be run on qemu/kvm after conversion to `qcow2` with `qemu-img convert -O` and with the parameters used to run mininet. == temporary mininet info == Using with vnc: requires: {{{ kvm-pxe ssvnc tightvncserver }}}