36 | | == Usage == |
37 | | |
38 | | As of now this project is extremely rough around the edges. |
39 | | |
40 | | ==== Installation ==== |
41 | | |
42 | | The source code can be fetched using git and built with `ant`: |
43 | | {{{ |
44 | | git clone git://github.com/akoshibe/floodlight.git |
45 | | cd floodlight/ |
46 | | git checkout -b flowvisor origin/flowvisor |
47 | | ant; |
48 | | }}} |
49 | | |
50 | | As with the regular Floodlight, `ant eclipse` allows it to work with eclipse and `ant javadoc` will produce javadocs for the code. |
51 | | |
52 | | ==== running in !FlowVisor mode ==== |
53 | | |
54 | | To run: |
55 | | {{{ |
56 | | java -jar target/floodlight.jar -cf src/main/resources/flowvisor.properties |
57 | | }}} |
58 | | |
59 | | 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/. |
60 | | |
61 | | ==== running as a regular controller ==== |
62 | | |
63 | | 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 |
64 | | {{{ |
65 | | net.floodlightcontroller.core.FVProxyProvider |
66 | | }}} |
67 | | with |
68 | | {{{ |
69 | | net.floodlightcontroller.core.FloodlightProvider |
70 | | }}} |
71 | | in `src/main/resources/META-INF/services/net.floodlight.core.module.IFloodlightModule` and launching it without the -cf option. |
72 | | |
73 | | ==== creating a custom configuration file ==== |
74 | | As of now, !FlowVisor is required to create custom configuration files. This takes four steps: |
75 | | |
76 | | 1. configure the desired policies using `dpctl` against a running !FlowVisor |
77 | | 1. dump the configurations to file using `dpctl dumpConfig <filename>` |
78 | | 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": |
79 | | {{{ |
80 | | ... |
81 | | |
82 | | "Slice": [ |
83 | | ... |
84 | | { |
85 | | "config_name": "default", |
86 | | "flowmap_type": "federated", |
87 | | "name": "fl-1", |
88 | | "creator": "fvadmin", |
89 | | "passwd_crypt": "a3b88aa4453124c025c39938fb89d3cb", |
90 | | "passwd_salt": "-1847302276", |
91 | | "controller_hostname": "localhost", |
92 | | "controller_port": 6634, |
93 | | "modules": "net.floodlightcontroller.forwarding.Forwarding", |
94 | | "contact_email": "foo@sampledomain.org", |
95 | | "drop_policy": "exact", |
96 | | "lldp_spam": true |
97 | | }, |
98 | | ... |
99 | | }}} |
100 | | 4. edit flowvisor.properties to point FVProxyProvider to the new configuration file. The path should be relative to the Floodlight working directory: |
101 | | {{{ |
102 | | net.floodlightcontroller.core.FVProxyProvider.configfile = /src/main/resources/config.json |
103 | | }}} |
104 | | |
105 | | Unless already there, the modules added to the config file should also be added to flowvisor.properties. |
106 | | |
107 | | |