wiki:Internal/OpenFlow/FloodlightFVPort/InstallUsage

Version 5 (modified by akoshibe, 12 years ago) ( diff )

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:

  1. configure the desired policies using dpctl against a running FlowVisor
  2. dump the configurations to file using dpctl dumpConfig <filename>
  3. 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.

Note: See TracWiki for help on using the wiki.