Changes between Version 1 and Version 2 of Internal/OpenFlow/FloodlightFVModule


Ignore:
Timestamp:
Jun 11, 2012, 8:44:39 PM (12 years ago)
Author:
akoshibe
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Internal/OpenFlow/FloodlightFVModule

    v1 v2  
    1616The key point here is that Floodlight's modular structure allows for multiple different handlers to coexist, with various (groups of) modules imposing different capabilities on the switches. If these modules controlled different groups of switches e.g. had their own bit of resource, each <module:resource> set can be viewed as a slice. Floodlight does not currently have this capability, so the objective of the process described here is to try to realize this feature.
    1717
    18 == Approach. == 
    19 Development is done on two VMs, one hosting Flowvisor and Floodlight source, and the other, Mininet for testing our code.
     18== Setup ==
     19Development is done on two VMs, one for Flowvisor and Floodlight source, and the other, Mininet for testing our code.
     20
     21 * '''VM1(10.50.250.2):''' 3-switch, 3-host Mininet topology pointed to external controller in VM2:
     22
     23 Topology:
     24 {{{
     25 h4   h5   h6
     26  |    |    |
     27 s1---s2---s3
     28 }}}
     29 Mininet config:
     30 {{{
     31 # mn --topo=linear,3 --controller=remote --ip=10.50.250.17 --port=6633
     32 }}}   
     33 * '''VM2(10.50.250.17):''' Flowvisor on port 6633, with a slice to point two switches to Floodlight instance on 6634
     34
     35 !FlowVisor configuration:
     36 {{{
     37# fvctl createSlice fl-1 tcp:localhost:6634 foo@sampledomain.org
     38# fvctl addFlowSpace 00:00:00:00:00:00:00:02 1000 any "Slice:fl-1=7"
     39# fvctl addFlowSpace 00:00:00:00:00:00:00:01 1000 any "Slice:fl-1=7"
     40 }}}
     41 Floodlight config alteration (in src/main/resources/config.properties):
     42 {{{
     43net.floodlightcontroller.restserver.RestApiServer.port = 8088
     44net.floodlightcontroller.core.FloodlightProvider.openflowport = 6634
     45 }}}
     46 The REST API port is changed from 8080 to prevent conflict with Flowvisor's services.
     47 
     48== Approach ==
     49The general flow of operation needed is the following:
     50 1. The Acceptor (OFSwitchAcceptor) listens for all OFTypes (!OpenFlow message types) and all switch join/leave events.
     51 2. When a new switch joins, the Acceptor hands the switch's connection to a Classifier (FVClassifier).
     52 3. The Classifier fetches all slices associated with the switch and launches a Slicer (FVSlicer) per module.
     53  * mappings of DPID to slices are found through configurations (the Flowmap)
     54  * modules associated with the control module (the primary module defining the behavior of a switch for that slice) may be grouped together in a slice.     
     55 4. Each Slicer sets up event dispatching for the modules associated with a slice.
     56   
     57Event handling would (probably) look like the following. For switch-to-slice:
     58