= Installation and Usage = As of now this project is extremely rough around the edges. However, the information on the Floodlight [http://floodlight.openflowhub.org/getting-started/ Getting Started] page and [http://floodlight.openflowhub.org/developing-floodlight/ 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 }}} The source code can be fetched 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. The slice configurations are in config.json, found with the .properties file in [floodlight working directory]/src/main/resources/. == 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: 1. configure the desired policies using `dpctl` against a running !FlowVisor 1. dump the configurations to file using `dpctl dumpConfig ` 1. 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 }, ... }}} 4. 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.