close Warning: Can't synchronize with repository "(default)" ("(default)" is not readable or not a Git repository.). Look in the Trac log for more information.

Changes between Version 20 and Version 21 of Proto/cModules/e0SDN/a0OpenFlow/a0Floodlight/a0SoftwareDesign


Ignore:
Timestamp:
Dec 3, 2014, 4:26:32 PM (9 years ago)
Author:
seskar
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Proto/cModules/e0SDN/a0OpenFlow/a0Floodlight/a0SoftwareDesign

    v20 v21  
    1 = !MobilityFirst in !OpenFlow-enabled SDN Networks =
     1
     2== System Architecture ==
    23
    34[[PageOutline(2-100,Contents, inline, unnumbered)]]
    45
    5 == 0. Requirements ==
    6  * Software prototype with reference implementation of the MobilityFirst protocol stack, for end hosts.
    7  * Software prototype with reference implementation of GSTAR for handling storage of chunks.
    8  * Floodlight controller running the MobilityFirst modules.
    96
    10 == 1. System Architecture ==
    11 
    12 == 1.1 SDN Design and Flow Set Up ==
     7== SDN Design and Flow Set Up ==
    138
    149 The figure below shows the overall design of an OpenFlow based network that can support MobilityFirst.
     
    2621[[Image(chunkFlow.jpg)]]
    2722
    28 == 1.2 Floodlight Implementation ==
     23== Floodlight Implementation ==
    2924
    3025Floodlight is a Java based Apache licensed open source OpenFlow controller. Aside from implementing the core OpenFlow protocol and exposing a REST API for setting up static flows, Floodlight also provides a module loading system that can be used to load user defined modules that set up reactive flows. The figure below shows Floodlight's structure and its core modules.
     
    3833Detailed descriptions of the SDN design and prototype implementation on Floodlight can be found in [https://mobilityfirst.orbit-lab.org/attachment/wiki/SystemPrototyping/Projects/SDNOpenFlow/main.pdf this masters thesis].
    3934
    40 == 2. Installation ==
    41 
    42 == 2.1 Required Packages ==
    43 
    44 {{{
    45 sudo apt-get install build-essential default-jdk ant python-dev eclipse git
    46 }}}
    47 
    48 == 2.2 Installing and Building Floodlight ==
    49 
    50 {{{
    51 git clone git://github.com/floodlight/floodlight.git
    52 cd floodlight
    53 git checkout fl-last-passed-build
    54 ant
    55 }}}
    56 Floodlight's installation guide can be found [http://www.openflowhub.org/display/floodlightcontroller/Installation+Guide here]
    57 
    58 The MobilityFirst modules for Floodlight can be downloaded using
    59 
    60 {{{
    61 svn co https://svn.orbit-lab.org/mobilityfirst/trunk/code/prototype/openflow/floodlight_modules/
    62 }}}
    63 Place the contents of floodlight_modules inside the src/main/java/net/floodlightcontroller/ folder.
    64 
    65 
    66 == 3. Running Floodlight with MobilityFirst ==
    67 
    68 The [https://mobilityfirst.orbit-lab.org/wiki/SystemPrototyping/Projects/ClickRouter CLICK router project page] has details on configurations in which the software router can be used. The file sender and file receiver configurations can be used as end hosts. A node running the router configuration can be used for the storage of chunks.
    69 
    70 Before starting the controller, it has to be configured to load the MobilityFirst modules on start up and to listen for PACKET_IN messages.
    71 
    72 Open the file src/main/resources/floodlightdefault.properties and add the following lines before the lines that mention the ports for floodlight and the REST API.
    73 
    74 {{{
    75 net.floodlightcontroller.guidtomacmapper.GUIDtoMACMapper,\
    76 net.floodlightcontroller.mffunctions.MFFunctions
    77 }}}
    78 
    79 The file should look like
    80 {{{
    81 floodlight.modules = net.floodlightcontroller.staticflowentry.StaticFlowEntryPusher,\
    82 net.floodlightcontroller.forwarding.Forwarding,\
    83 net.floodlightcontroller.jython.JythonDebugInterface,\
    84 net.floodlightcontroller.counter.CounterStore,\
    85 net.floodlightcontroller.perfmon.PktInProcessingTime,\
    86 net.floodlightcontroller.guidtomacmapper.GUIDtoMACMapper,\
    87 net.floodlightcontroller.mffunctions.MFFunctions
    88 net.floodlightcontroller.restserver.RestApiServer.port = 8080
    89 net.floodlightcontroller.core.FloodlightProvider.openflowport = 6633
    90 }}}
    91 
    92 Add the following two lines to src/main/resources/META_INF/services/net.floodlightcontroller.core.moduele.IFloodlightModule
    93 {{{
    94 net.floodlightcontroller.guidtomacmapper.GUIDtoMACMapper
    95 net.floodlightcontroller.mffunctions.MFFunctions
    96 }}}
    97 
    98 The last step is to edit src/main/java/net/floodlightcontroller/forwarding/Forwarding.java to not process MF packets, i.e, to include the condition
    99 {{{
    100 if (match.getDataLayerType == 0x27c0)
    101         return Command.CONTINUE;
    102 }}}
    103 
    104 Compile and run with,
    105 {{{
    106 ant
    107 java -jar target/floodlight.jar
    108 }}}
    109 
    110 == 4. Running the SDN MobilityFirst Prototype with Floodlight in SB9==
    111 
    112 ''' MobilityFirst Prototype in OpenFlow '''
    113 
    114 
    115 The MobilityFirst SDN Prototype in SB9 can be set up using the following instructions:
    116 1. Two images have to be loaded for the controller and source/destination nodes :
    117 
    118 a. Image '''aravind-mf1.ndz''' for the source and destination to be loaded on nodes ''node1-1 & node1-2''
    119 
    120 b. Image '''floodlight-controller.ndz''' for the controller to be loaded on ''node1-11''
    121 
    122 c. On nodes with source & destination, run the scripts under the directory /usr/local/mobilityfirst/scripts/click : init_traf_gen.sh  and init_sink.sh respectively.
    123 
    124 d. On the node with the controller, cd floodlight_mf  and java -jar target/floodlight.jar for running the controller.
    125 
    126 The configuration for the switch need not be changed except to make sure that the ports with the source and destination are OpenFlow enabled and set to version 1.0 and the controller contr-serv is 10.19.1.11 (This is already the setup in the switch except that OF 1.3 is enabled instead of 1.0).
    127 
    128 
    129 == 4. Performance ==
    13035
    13136