Changes between Version 8 and Version 9 of Internal/OpenFlow/OFIntro


Ignore:
Timestamp:
Jul 31, 2013, 8:13:40 PM (11 years ago)
Author:
akoshibe
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Internal/OpenFlow/OFIntro

    v8 v9  
    22This page is meant to get you up and running quickly with !OpenFlow-related experiments/development on the ORBIT testbeds.
    33
    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
    510We begin with a simple setup of a Mininet network controlled by a controller (Floodlight) running on a separate Sandbox node, which looks like this:
    611{{{
     
    1823 * [http://docs.projectfloodlight.org/display/floodlightcontroller/Cbench+(New) cbench] : Controller benchmarking tool
    1924 * [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 dissector for !OpenFlow messages
     25 * [https://bitbucket.org/barnstorm/of-dissector Wireshark+OF dissector] : Wireshark with a plugin for !OpenFlow messages
    2126
    2227This makes things easy since you can image multiple nodes with the same image, and pick and choose what to run where.
     
    130135
    131136=== Sections ===
    132  [#multi ][[BR]]
    133  [#fv ][[BR]]
     137 [#multi 2.1 Multiple Controllers ][[BR]]
     138 [#fv 2.2 With !FlowVisor (Network virtualization/slicing) ][[BR]]
    134139== 2.1 Multiple Controllers == #multi
    135140You may have multiple controllers in the same logical space of the control plane for various reasons - special applications, failover, etc.
     
    139144
    140145=== 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). 
     146If 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). 
    142147
    143148=== 2.1.2 On the same host ===
     
    174179
    175180Several 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 = 8080
    177  * net.floodlightcontroller.core.internal.FloodlightProvider.openflowport = 6633
    178  * net.floodlightcontroller.jython.JythonDebugInterface.port = 6655
     181 * !net.floodlightcontroller.restserver.RestApiServer.port = 8080
     182 * !net.floodlightcontroller.core.internal.FloodlightProvider.openflowport = 6633
     183 * !net.floodlightcontroller.jython.JythonDebugInterface.port = 6655
    179184
    180185Each 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:
     
    194199}}}
    195200
    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
     201Each 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
     208No ports should be shared by the three instances, or else they will likely throw errors at startup, exiting shortly after.
     209With 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{{{
     211for i in `seq 1 3`; do
     212   java -jar target/floodlight.jar -cf src/main/resources/$i.properties 1>/dev/null 2>&1 &
     213done
     214}}}
     215This should launch three backgrounded instances of Floodlight.
     216
     217== 2.2 With !FlowVisor (Network virtualization/slicing) == #fv
     218A virtualized network is organized as below:
     219{{{
     220[controller 1] [controller 2] [controller 3]
     221             \       |       /
     222              \      |      /
     223            [network hypervisor]-[policies]
     224                     |
     225                  [network]
     226}}}
     227The 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.
    199228
    200229----