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


Ignore:
Timestamp:
Jul 31, 2013, 7:48:00 PM (11 years ago)
Author:
akoshibe
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Internal/OpenFlow/OFIntro

    v7 v8  
    125125Mininet'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.
    126126
    127 = II More complex examples =
    128 You can launch multiple instances of Floodlight on one or more nodes. If you decide to run the instances on a single host, the ports used by the Floodlight instances must not conflict i.e. each instance must be assigned a different ports.
     127= II More complex examples = #II
     128It is possible to run multiple instances of controllers (for whatever reason), or different logical components together in the same network.
     129This section shows two examples of more complex SDN network setups - multiple controller instances and with !FlowVisor, a network hypervisor.
     130
     131=== Sections ===
     132 [#multi ][[BR]]
     133 [#fv ][[BR]]
     134== 2.1 Multiple Controllers == #multi
     135You may have multiple controllers in the same logical space of the control plane for various reasons - special applications, failover, etc.
    129136 
    130 == 2.1 Multiple Controllers == 
    131 
    132 == 2.2 With FlowVisor ==
     137 * 2.1.1 On multiple hosts
     138 * 2.1.2 On the same host
     139
     140=== 2.1.1 On multiple hosts ===
     141If 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). 
     142
     143=== 2.1.2 On the same host ===
     144Multiple 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).
     145
     146In Floodlight, this value can be changed by modifying the file floodlightdefault.properties, located in src/main/resources/ of the Floodlight sources. (Currently) It looks like this:
     147{{{
     148floodlight.modules=\
     149net.floodlightcontroller.jython.JythonDebugInterface,\
     150net.floodlightcontroller.counter.CounterStore,\
     151net.floodlightcontroller.storage.memory.MemoryStorageSource,\
     152net.floodlightcontroller.core.internal.FloodlightProvider,\
     153net.floodlightcontroller.threadpool.ThreadPool,\
     154net.floodlightcontroller.devicemanager.internal.DeviceManagerImpl,\
     155net.floodlightcontroller.devicemanager.internal.DefaultEntityClassifier,\
     156net.floodlightcontroller.staticflowentry.StaticFlowEntryPusher,\
     157net.floodlightcontroller.firewall.Firewall,\
     158net.floodlightcontroller.forwarding.Forwarding,\
     159net.floodlightcontroller.linkdiscovery.internal.LinkDiscoveryManager,\
     160net.floodlightcontroller.topology.TopologyManager,\
     161net.floodlightcontroller.flowcache.FlowReconcileManager,\
     162net.floodlightcontroller.debugcounter.DebugCounter,\
     163net.floodlightcontroller.debugevent.DebugEvent,\
     164net.floodlightcontroller.perfmon.PktInProcessingTime,\
     165net.floodlightcontroller.ui.web.StaticWebRoutable,\
     166net.floodlightcontroller.loadbalancer.LoadBalancer,\
     167org.sdnplatform.sync.internal.SyncManager,\
     168org.sdnplatform.sync.internal.SyncTorture,\
     169net.floodlightcontroller.devicemanager.internal.DefaultEntityClassifier
     170org.sdnplatform.sync.internal.SyncManager.authScheme=CHALLENGE_RESPONSE
     171org.sdnplatform.sync.internal.SyncManager.keyStorePath=/etc/floodlight/auth_credentials.jceks
     172org.sdnplatform.sync.internal.SyncManager.dbPath=/var/lib/floodlight/
     173}}}
     174
     175Several 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
     179
     180Each 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:
     181{{{
     182net.floodlightcontroller.core.internal.FloodlightProvider.openflowport = 6634
     183}}} 
     184To the .properties file. Then, point Floodlight to the configuration file with the `-cf` flag:
     185{{{
     186java -jar target/floodlight.jar -cf src/main/resources/floodlightdefault.properties
     187}}}
     188The file specified after -cf will be read in, and the values in it used to configure the controller instance. You should be able to confirm the change:
     189{{{
     190# netstat -nlp | grep 6634
     191...
     192tcp6       0      0 :::6634                 :::*                    LISTEN      2029/java       
     193...
     194}}}
     195
     196Each 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
    133199
    134200----
    135 = III Installation = #install
     201= III Installation = #III
    136202The following are the installation steps and basic usage for the software that are found on the image. For more information, refer to their respective pages; Floodlight and Mininet in particular have very thorough docs.
    137203
     
    338404./configure
    339405sudo make && sudo make install
    340 #cd ../oflops/netfpga-packet-generator-c-library/
    341 #./autogen.sh && ./configure && make
     406cd ../oflops/
    342407sh ./boot.sh ; ./configure --with-openflow-src-dir=${OF_PATH}/openflow/
    343408make install