Installation and Usage
As of now this project is extremely rough around the edges. However, the information on the Floodlight Getting Started page and Development tutorial apply almost exactly to this version of the controller and can be used to troubleshoot installation and module development/loading issues.
Installation
On Ubuntu 10.04 and later:
Install dependencies:
sudo apt-get install build-essential default-jdk ant python-dev eclipse
Fetch the source using git and built with ant
:
git clone git://github.com/akoshibe/floodlight.git cd floodlight/ git checkout -b flowvisor origin/flowvisor ant;
As with the regular Floodlight, ant eclipse
allows it to work with eclipse and ant javadoc
will produce javadocs for the code.
running in FlowVisor mode
To run:
java -jar target/floodlight.jar -cf src/main/resources/flowvisor.properties
This brings the controller up in "FlowVisor mode," with two default slices containing the LearningSwitch and Forwarding modules and four flow rules. The slice configurations are in config.json, found with the .properties file in src/main/resources/ (relative path from the Floodlight working directory).
running as a regular controller
Alternatively, since none of the original code base was modified, this version of Floodlight can be run as a normal v0.85 controller by replacing
net.floodlightcontroller.core.FVProxyProvider
with
net.floodlightcontroller.core.FloodlightProvider
in src/main/resources/META-INF/services/net.floodlight.core.module.IFloodlightModule
and launching it without the -cf option.
creating a custom configuration file
As of now, FlowVisor is required to create custom configuration files. This takes four steps:
- configure the desired policies using
dpctl
against a running FlowVisor
- dump the configurations to file:
dpctl dumpConfig <filename>
- edit the configuration file: add each module to be isolated to a slice, with "modules" as the key and the fully qualified name of the module as the value. The value "none" may be used for a slice not associated with any modules. For example, the following isolates the Forwarding module in a slice named "fl-1":
... "Slice": [ ... { "config_name": "default", "flowmap_type": "federated", "name": "fl-1", "creator": "fvadmin", "passwd_crypt": "a3b88aa4453124c025c39938fb89d3cb", "passwd_salt": "-1847302276", "controller_hostname": "localhost", "controller_port": 6634, "modules": "net.floodlightcontroller.forwarding.Forwarding", "contact_email": "foo@sampledomain.org", "drop_policy": "exact", "lldp_spam": true }, ...
- edit flowvisor.properties to point FVProxyProvider to the new configuration file. The path should be relative to the Floodlight working directory:
net.floodlightcontroller.core.FVProxyProvider.configfile = /src/main/resources/config.json
Unless already there, the modules added to the config file should also be added to flowvisor.properties.