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 18 (modified by srikanth, 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

1.1 SDN Design and Flow Set Up

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.

1.2 Floodlight Implementation

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

Additional modules that perform GUID learning and other MobilityFirst functions such as GUID based forwarding and storage were added to Floodlight. The figure below shows Floodlight and the interactions between the MobilityFirst modules.

Detailed descriptions of the SDN design and prototype implementation on Floodlight can be found in this masters thesis.

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

5. Juniper Networks Hardware

There are 6 Juniper Routers available in the lab, two M7i Multiservice Edge routers and four J6350 Enterprise Service routers.

5.1 Overview

The router architectures separate control operations from packet forwarding operations, which helps to eliminate processing and traffic bottlenecks. Control operations in the router are performed by the Routing Engine, which runs Junos OS to handle routing protocols, traffic engineering, policy, policing, monitoring, and configuration management.

Application-specific integrated circuits (ASICs) enable the router to forward data at the high speeds. Forwarding operations in the router are performed by the Packet Forwarding Engine, which consists of hardware, including ASICs, designed by Juniper Networks.

M7i Edge Routers

The M7i Multiservice Edge Router is a routing system that provides ATM, channelized, Ethernet, IP services, and SONET/SDH interfaces for large networks and network applications, such as those supported by Internet service providers (ISPs).

The router accommodates upto four Physical Interface Cards (PICs). In addition to the PICs, the Fixed Interface Card (FIC) provides two Fast Ethernet ports. The built-in tunnel interface on the Compact Forwarding Engine Board (CFEB) and Enhanced Compact Forwarding Engine Board (CFEB-E) provides tunneling services.

J 6350 Service Routers

The J6350 is a modular router for enterprises running desktops, servers, VoIP, CRM/ERP/SCM applications. The J6350 Modular Router offers six PIM slots for additional LAN/WAN connectivity, Avaya VoIP Gateway, and WAN acceleration.

The router accommodates upto six Physical Interface Cards (PICs). In addition to the PICs, the Fixed Interface Card (FIC) provides 4 Gigabit Ethernet ports.

5.2 Specifications & Interfaces

1.Hardware:

M7i : Both the M7i's have the same hardware specs as listed below:

Routing Engine: RE-850

Processor: 850-MHz Pentium III

Memory: 1536 MB

Disk: 40 GB Hard disk

Media: Upto 1 GB CompactFlash card

Ports: 2 Fast Ethernet

PIC slots: 4

PICs Onboard:

One 2-port STM-1/OC-3 ATM2 MMF

One 4-port STM-1/OC-3 SONET MMF

One 4-port 100 Mb Ethernet

J 6350:

All the 4 J 6350 routers have the same hardware specs as listed below:

Memory: 1 GB

Media: 2 USB ports for external storage

Ports: 4 Gigabit Ethernet 10/100/1000 Mbps

PIC slots: 6

PICs On board: None

PICs Supported:

Gigabit Ethernet(1/6/8/16–ports); Dual-Port Fast Ethernet; Dual-Port T1/E1/ISDN PRI; 4-port Fast Ethernet; 4-port ISDN

For detailed hardware specs of M7i and J6350, visit:

http://www.juniper.net/as/en/products-services/routing/j-series/j6350/

http://www.juniper.net/us/en/products-services/routing/m-series/m7i/

2.Software:

M7i

OS: Junos 11.4 (recommended), Upgradable upto 13.2

J6350

OS: Junos 11.4 (recommended), Upgradable upto 12.1

Features:

Junos OS v11.4:

Access Privilege; Class of Service; Firewall Filters and Traffic Policers; Broadband Gateway; MPLS Applications; Multicast Protocols; Network Interfaces; Routing Policy; Routing Protocols; Services Interfaces VPNs

Junos OS v12.1 onwards, OpenFlow can be enabled by installing specific daemons to the Junos OS

For detailed specs of different Junos versions,visit:

http://www.juniper.net/techpubs/en_US/release-independent/junos/information-products/pathway-pages/junos/product/

Attachments (7)

Note: See TracWiki for help on using the wiki.