wiki:Proto/cModules/e0SDN/a0OpenFlow/a0Floodlight/a0SoftwareDesign
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.

Version 14 (modified by aravind, 11 years ago) ( diff )

--

MobilityFirst in OpenFlow-enabled SDN Networks

0. Requirements

  • Software prototype with reference implementation of the MobilityFirst protocol stack, for end hosts.
  • Software prototype with reference implementation of GSTAR for handling storage of chunks.
  • Floodlight controller running the MobilityFirst modules.

1. System Architecture

The figure below shows the overall design of an OpenFlow based network that can support MobilityFirst.

All OpenFlow switches that are to perform the functions of a MobilityFirst router are connected to a central controller. As the sender starts to transmit data, the first packet of the chunk is sent to the controller since there is no matching flow rule as of yet. The controller uses the GUID map it created using link probe messages to compute the out port on the switch and sends an appropriate flow rule. The rest of the packets are then forwarded by the switch. Chunks that have to be stored are sent to a software CLICK based router which can handle chunk storage.

The figure below shows the the controller learning GUIDs from link probe messages.

The flow rules are set up using VLAN tags. Every host that wants to send MobilityFirst chunks inserts the hop ID of the packet as a VLAN tag. The controller uses this tag to set up a matching flow rule on the switch. The figure below shows the flow of a MobilityFirst chunk, with the first packet initiating the flow set up.

2. Installation

2.1 Required Packages

sudo apt-get install build-essential default-jdk ant python-dev eclipse git

2.2 Installing and Building Floodlight

git clone git://github.com/floodlight/floodlight.git
cd floodlight
git checkout fl-last-passed-build
ant

Floodlight's installation guide can be found here

The MobilityFirst modules for Floodlight can be downloaded using

svn co https://svn.orbit-lab.org/mobilityfirst/trunk/code/prototype/openflow/floodlight_modules/

Place the contents of floodlight_modules inside the src/main/java/net/floodlightcontroller/ folder.

3. Running Floodlight with MobilityFirst

The 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.

Before starting the controller, it has to be configured to load the MobilityFirst modules on start up and to listen for PACKET_IN messages.

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.

net.floodlightcontroller.guidtomacmapper.GUIDtoMACMapper,\
net.floodlightcontroller.mffunctions.MFFunctions

The file should look like

floodlight.modules = net.floodlightcontroller.staticflowentry.StaticFlowEntryPusher,\
net.floodlightcontroller.forwarding.Forwarding,\
net.floodlightcontroller.jython.JythonDebugInterface,\
net.floodlightcontroller.counter.CounterStore,\
net.floodlightcontroller.perfmon.PktInProcessingTime,\
net.floodlightcontroller.guidtomacmapper.GUIDtoMACMapper,\
net.floodlightcontroller.mffunctions.MFFunctions
net.floodlightcontroller.restserver.RestApiServer.port = 8080
net.floodlightcontroller.core.FloodlightProvider.openflowport = 6633

Add the following two lines to src/main/resources/META_INF/services/net.floodlightcontroller.core.moduele.IFloodlightModule

net.floodlightcontroller.guidtomacmapper.GUIDtoMACMapper
net.floodlightcontroller.mffunctions.MFFunctions

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

if (match.getDataLayerType == 0x27c0)
        return Command.CONTINUE;

Compile and run with,

ant
java -jar target/floodlight.jar

4. Performance

Attachments (7)

Note: See TracWiki for help on using the wiki.