Changes between Version 10 and Version 11 of Internal/OpenFlow/OFIntro
- Timestamp:
- Aug 1, 2013, 8:54:49 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Internal/OpenFlow/OFIntro
v10 v11 130 130 Mininet's datapaths are backed by OVS. Therefore, if you have a Mininet install, you get OVS for "free". You can use OVS directly for your data plane. 131 131 132 ---- 132 133 = II More complex examples = #II 133 134 It is possible to run multiple instances of controllers (for whatever reason), or different logical components together in the same network. … … 136 137 === Sections === 137 138 [#multi 2.1 Multiple Controllers ][[BR]] 138 [#fv 2.2 With !FlowVisor (Network virtualization/slicing)][[BR]]139 [#fv 2.2 Network virtualization/slicing ][[BR]] 139 140 == 2.1 Multiple Controllers == #multi 140 You may have multiple controllers in the same logical space of the control plane for various reasons - special applications, fail over, etc.141 You may have multiple controllers in the same logical space of the control plane for various reasons - special applications, fail-over, distributed control planes, etc. 141 142 142 143 * 2.1.1 On multiple hosts … … 146 147 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). 147 148 148 === 2.1.2 On the same host === 149 === 2.1.2 On the same host === #2_1_2 150 ==== The Floodlight configuration file ==== 149 151 Multiple instances of Floodlight may be run on the same host, as long as each controller listens on a separate set of sockets. In this case, all controllers would be on the same IP address(es), so you must change the ports they are listening on. These ports include the !OpenFlow control port (TCP 6633), REST API (TCP 8080), and debug (TCP 6655). 150 152 … … 179 181 180 182 Several entries can be added to this list to tweak TCP port values. Unfortunately, these entries may change fairly frequently due to active development. 181 * !net.floodlightcontroller.restserver.RestApiServer.port = 8080182 * !net.floodlightcontroller.core.internal.FloodlightProvider.openflowport = 6633183 * !net.floodlightcontroller.jython.JythonDebugInterface.port = 6655183 * net.floodlightcontroller.restserver.!RestApiServer.port = 8080 184 * net.floodlightcontroller.core.internal.!FloodlightProvider.openflowport = 6633 185 * net.floodlightcontroller.jython.!JythonDebugInterface.port = 6655 184 186 185 187 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: … … 199 201 }}} 200 202 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: 203 ==== Launching multiple controllers ==== 204 Each instance of the controller run on the same host can be pointed to its own .properties file with the `-cf` flag, with different port value parameters. Begin by making as many copies of the default .properties file as you will have controllers. Going with a similar example as earlier, you can have one host A and three Floodlight instances 1,2, and 3, configured as below: 202 205 203 206 || || 1 || 2 || 3 || … … 206 209 || !JythonDebugInterface.port || 6655 || 6656 || 6657 || 207 210 208 No ports should be shared by the three instances, or else they will likely throw errors at startup, exitingshortly 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:211 No ports should be shared by the three instances, or else they will probably throw errors at startup and exit shortly after. 212 With a .properties file for each instance under resources/ (named 1,2, and 3.properties for this example), you can launch the controllers in a loop for example: 210 213 {{{ 211 214 for i in `seq 1 3`; do … … 216 219 217 220 == 2.2 With !FlowVisor (Network virtualization/slicing) == #fv 221 A more typical case you might encounter is a network that is sliced, or virtualized. 222 223 * 2.2.1 A brief intro to network virtualization 224 * 2.2.2 Virtualization with multiple hosts 225 * 2.2.3 On the same host 226 227 === 2.2.1 A brief intro to network virtualization === 218 228 A virtualized network is organized as below: 219 229 {{{ … … 225 235 [network] 226 236 }}} 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. 237 A network hyperviser like [http://onlab.us/flowvisor.html FlowVisor] sits between the control and data plane, intercepting and re-writing the contents of the !OpenFlow control channel to one or more controllers running independently of one another. Ultimately, the network hypervisor provides each controller with an illusion that it is the only controller in the network. It accomplishes this by 238 239 1. Rewriting the topology information conveyed by !OpenFlow (in the form of PORT_STATs and !PacketIns triggered by LLDP messages) before it reaches each controller, allowing it to only work on a subset, or slice, of the network, and 240 2. Mapping the !PacketIns/!PacketOuts to and from each controller to the proper sets of switches and switch ports. 241 242 How the re-writing occurs depends on a set of admin-defined policies. 243 244 245 246 === 2.2.2 Virtualization with multiple hosts === 247 We begin by introducing a simple example of a virtualized topology: 248 {{{ 249 [Floodlight 1] [Floodlight 2] 250 \ / 251 [FlowVisor] 252 | 253 [Mininet] 254 }}} 255 Each component above will be run on a separate node. Since we need more than two nodes, you may want to reserve either Sandboxes 4 or 9. The components can also be run on the same node, with the caveats discussed in the next section, 2.2.3. 256 257 Here, Mininet will be used to emulate a three-switch, three-host data plane: 258 {{{ 259 h1 h2 h3 260 | | | 261 s1---s2---s3 262 }}} 263 This data plane will be sliced so that one Floodlight instance will control switches s1 and s2, and the other, s3. 264 265 266 267 === 2.2.3 On the same host === 268 As with the case of multiple controllers on the same VM/host, you must be careful that neither !FlowVisor nor the controllers listen on the same sets of ports. For the multiple controllers, this can be avoided as described in [#2_1_2 Section 2.1.2]. !FlowVisor and Floodlight conflict on ports 6633 and 8080. 228 269 229 270 ----