Floodlight master has been updated (on 04/30/16) to Java 8. Please make sure you're using the correct JDK for your Floodlight version, as indicated below. |
Floodlight is Java-based and intended to run with standard JDK tools and ant and can optionally be run in Eclipse.
To download Java 8, please refer to these instructions. Please download the latest version of Eclipse, making sure the version you choose supports Java 8. To download remaining dependencies for Floodlight master and above:
sudo apt-get install build-essential ant maven python-dev |
To download dependencies for Floodlight v1.2 and below:
sudo apt-get install build-essential openjdk-7-jdk ant maven python-dev eclipse |
Note: Want to get started fast? You can use our VM here, which already includes the above dependencies for Floodlight v1.2 and below.
Floodlight is written in Java, so it should work in Windows; however, specific instructions are not provided aside from this helpful site for using ant on Windows and this helpful site that documents how to use git on Windows. If you wish to use Windows, do so at your own risk or use our Floodlight Linux VM instead.
Floodlight is simple to download from Github and build. Please follow the following steps to either download and install a new copy of Floodlight or update an existing installation of Floodlight:
The "git clone" step below uses the master version of Floodlight. To use a specific version, specify the version branch in the "git clone" step by appending "-b <branch-name>", e.g. "-b v1.2".
$ git clone git://github.com/floodlight/floodlight.git $ cd floodlight $ git submodule init $ git submodule update $ ant $ sudo mkdir /var/lib/floodlight $ sudo chmod 777 /var/lib/floodlight |
The following steps show how to update Floodlight to master. Substitute "master" in the "git pull" step with your desired version's branch, e.g. "v1.1", "v1.2", etc. if you would like to switch to a different version.
$ cd floodlight $ git pull origin master $ git submodule init $ git submodule update |
If you are upgrading from Floodlight v1.2 or below to a newer version or the master branch, you should update to Java 8 at this point. Others should already have Java 8 installed or do not require it (if downgrading to v1.2 or below). Once you have satisfied this requirement, proceed with re-building the controller:
$ ant |
Assuming java is in your path, you can directly run the floodlight.jar file produced by ant from within the floodlight directory:
$ java -jar target/floodlight.jar |
Floodlight will start running and print log and debug output to your console. If you would like to save your log, you can redirect it to a file.
Its also possible to setup, develop and run Floodlight through Eclipse. Rather than setting up projects manually, its easily to use the Eclipse ant target.
$ ant eclipse |
This creates several files: Floodlight.launch, Floodlight_junit.launch, .classpath, and .project. From these you can setup a new Eclipse project.
You now have a working Eclipse project for Floodlight. You can run the project directly through Eclipse as well. Since we use a dynamic module loading system to run Floodlight, we must configure Eclipse to launch it in the correct manner.
Create the FloodlightLaunch target:
To then run Floodlight click on the drop-down arrow next to the Play button and select the proper target to run. These also work with debug targets.
Now that Floodlight is running, you need to attach it to an OpenFlow network. One of the best tools for this is Mininet, a network simulation tool.
$ sudo mn --controller=remote,ip=<controller ip>,port=6653 --switch ovsk,protocols=OpenFlow13 |
Optionally run wireshark over ssh. Listen on "eth0? and filter for packets with "of" names.
$ ssh -X floodlight@<vm-ip> $ sudo wireshark |
If you are finished the getting started guide, you may want to check out Floodlight for Developers, where you will find useful examples, tutorials, and information to help you get started as a Floodlight developer.