Changes between Version 8 and Version 9 of Internal/OpenFlow/OFIntro
- Timestamp:
- Jul 31, 2013, 8:13:40 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Internal/OpenFlow/OFIntro
v8 v9 2 2 This page is meant to get you up and running quickly with !OpenFlow-related experiments/development on the ORBIT testbeds. 3 3 4 = I. A simple OpenFlow Network = 4 === sections === 5 [#I I. A simple OpenFlow Network][[BR]] 6 [#II II. More complex examples][[BR]] 7 [#III III. Installation][[BR]] 8 9 = I. A simple OpenFlow Network = #I 5 10 We begin with a simple setup of a Mininet network controlled by a controller (Floodlight) running on a separate Sandbox node, which looks like this: 6 11 {{{ … … 18 23 * [http://docs.projectfloodlight.org/display/floodlightcontroller/Cbench+(New) cbench] : Controller benchmarking tool 19 24 * [http://www.openflow.org/wk/index.php/Liboftrace liboftrace] : !OpenFlow message parser/analyzer for pcap files 20 * [https://bitbucket.org/barnstorm/of-dissector Wireshark+OF dissector] : Wireshark with a dissectorfor !OpenFlow messages25 * [https://bitbucket.org/barnstorm/of-dissector Wireshark+OF dissector] : Wireshark with a plugin for !OpenFlow messages 21 26 22 27 This makes things easy since you can image multiple nodes with the same image, and pick and choose what to run where. … … 130 135 131 136 === Sections === 132 [#multi ][[BR]]133 [#fv ][[BR]]137 [#multi 2.1 Multiple Controllers ][[BR]] 138 [#fv 2.2 With !FlowVisor (Network virtualization/slicing) ][[BR]] 134 139 == 2.1 Multiple Controllers == #multi 135 140 You may have multiple controllers in the same logical space of the control plane for various reasons - special applications, failover, etc. … … 139 144 140 145 === 2.1.1 On multiple hosts === 141 If each controller is running on its own host , there is little to change; if you have hosts A,B, and C, and Floodlight instances running on each, switches can be pointed to targets A:6633, B:6633, C:6633, or any combination thereof (switches can be pointed to multiple controllers).146 If each controller is running on its own host (machine, VM, etc.), there is little to change; if you have hosts A,B, and C, and Floodlight instances running on each, switches can be pointed to targets A:6633, B:6633, C:6633, or any combination thereof (switches can be pointed to multiple controllers). 142 147 143 148 === 2.1.2 On the same host === … … 174 179 175 180 Several entries can be added to this list to tweak TCP port values. Unfortunately, these entries may change fairly frequently due to active development. 176 * net.floodlightcontroller.restserver.RestApiServer.port = 8080177 * net.floodlightcontroller.core.internal.FloodlightProvider.openflowport = 6633178 * net.floodlightcontroller.jython.JythonDebugInterface.port = 6655181 * !net.floodlightcontroller.restserver.RestApiServer.port = 8080 182 * !net.floodlightcontroller.core.internal.FloodlightProvider.openflowport = 6633 183 * !net.floodlightcontroller.jython.JythonDebugInterface.port = 6655 179 184 180 185 Each entry should be on its own line, with no spaces or newlines in between lines. For example, to change the port that Floodlight listens for switches on from the default of 6633 to 6634, append: … … 194 199 }}} 195 200 196 Each instance of the controller run on the same host can then be pointed to its own .properties file with this flag, with different port value parameters. 197 198 == 2.2 With FlowVisor == #fv 201 Each instance of the controller run on the same host can then be pointed to its own .properties file with the `-cf` flag, with different port value parameters. Going with a similar example from earlier, you may have one host A and three Floodlight instances 1,2, and 3, configured as below: 202 203 || || 1 || 2 || 3 || 204 || !FloodlightProvider.openflowport || 6633 || 6634 || 6635 || 205 || !RestApiServer.port || 8080 || 8081 || 8082 || 206 || !JythonDebugInterface.port || 6655 || 6656 || 6657 || 207 208 No ports should be shared by the three instances, or else they will likely throw errors at startup, exiting shortly after. 209 With a .properties file for each instance under resources/ (named 1,2, and 3.properties for this example), you may launch the controllers in a loop: 210 {{{ 211 for i in `seq 1 3`; do 212 java -jar target/floodlight.jar -cf src/main/resources/$i.properties 1>/dev/null 2>&1 & 213 done 214 }}} 215 This should launch three backgrounded instances of Floodlight. 216 217 == 2.2 With !FlowVisor (Network virtualization/slicing) == #fv 218 A virtualized network is organized as below: 219 {{{ 220 [controller 1] [controller 2] [controller 3] 221 \ | / 222 \ | / 223 [network hypervisor]-[policies] 224 | 225 [network] 226 }}} 227 The network hypervisor provides each controller with an illusion that it is the only controller in the network. The analogy used in the !FlowVisor whitepaper is that of multiple VMs sharing the same physical machine. 199 228 200 229 ----