/SoftOffload

An SDN platform for mobile traffic offloading

Primary LanguagePython

SoftOffload

SoftOffload is an SDN-based mobile traffic offloading framework. It runs on a custom Floodlight controller with our extensions on Click modular routers and mobile devices. It not only explores the feasibility of context-based traffic offloading, but also provides a platform for designing and implementing a centralized traffic management in wireless networks.

SoftOffload project homepage: http://www.cs.helsinki.fi/group/eit-sdn/softoffload.html

Requirements

  • For the agent/AP: a monitor device/interface on the wireless channel is required.

  • For the end-device: currently only Android platform is supported.

  • For the system: OpenFlow-supported switches.

Deployment

<img src="img/structure.png", alt="structure" title="structure " width="600" />

Usage

Building SoftOffload implies building the SoftOffload master, agents, and clients respectively.

If you clone SoftOffload from this repository, please pull every submodules recersively:

$ git clone --recursive https://github.com/TKTL-SDN/SoftOffload

SoftOffload Master

You can find a separated instruction on how to build and run the master.

The master shall be run on a central server that has IP reachability to all APs and OF switches in the system. Before running your master, please first check the configuration files in the "resources" folder, and make sure the settings are matched with your network.

Our offloading module is called net.floodlightcontroller.mobilesdn, and it has been already included in floodlight.modules in the example Floodlight system configuration floodlightdefault.properties. We explain our key parameters in this configuration file as follows:

  • mobilesdn.Master.masterPort: this is the UDP communication port to SoftOffload agent. It shall be the same as the one used in the agent configuration file.

  • mobilesdn.Master.ofMonitorInterval: this parameter is used to adjust the traffic monitoring interval on OpenFlow switches. 2 means the interval is 2 seconds.

  • mobilesdn.Master.ofMonitorMaxNum: how many monitoring turns are required for triggering offloading.

  • mobilesdn.Master.apConfig: this shall point to an apConfig file, which is required for traffic offloading. An example apConfig file is given in the src/main/resources/ap.properties. ManagedIP is the reachable IP address of the local agent running on the AP, AUTH is the authentication method and corresponding password (like "open", "wpa|your_password"). OFPort is port which this AP connects to the OF switch. DownlinkBW is the downstream bandwidth in Mbps.

    # AP1
    ManagedIP 192.168.3.30
    SSID sdntest
    BSSID 9c:d3:6d:10:a9:b8
    AUTH wpa|testeitsdn
    OFPort 2
    DownlinkBW 16
    
    # AP2 only for test
    ManagedIP 192.168.1.21
    SSID sdntest1
    BSSID 90:94:e4:07:ad:0f
    AUTH wpa|testeitsdn
    OFPort 3
    DownlinkBW 80
    
  • mobilesdn.Master.networkFile: this shall point to a network topology file. An example file is given in the src/main/resources/networks.properties and shown below. In our system, a network slice is defined by the OFswitch outport. If two APs are using the same access switch outport, they are considered as in the same network slice. BandWidth is the total downstream bandwidth for this switch outport in Mbps.

    # Network-1
    # OFSwitchMAC 00:12:3f:22:45:66
    OFSwitchIP 192.168.10.125
    OutPort 1
    BandWidth 2
    AP 192.168.3.30 192.168.1.21
    
  • other: mobilesdn.Master.enableCellular is not used in our current implementation, you may leave this unchanged.

To build and run the master:

$: cd SoftOffload-Master
$: ant
$: java -jar floodlight.jar

REST API

We also provide a few REST APIs for SoftOffload with Floodlight. For details, please visit this instruction in the separated project!

SoftOffload Agent

Build the agent

$ git clone https://github.com/TKTL-SDN/SoftOffload-Agent.git
$ cd SoftOffload-Agent

# our current agent does not support kernel mode
# you may choose to disable linux kernel mode to speed up the building

$ ./configure --enable-wifi --enable-local (--disable-linuxmodule)
$ make

Generate custom configuration for your system

Change agent configuration agent.click for your system.

We provide a script to help you generate suitable config file quickly for your system.

$ cd SoftOffload-Agent/conf/local-agent/

# read our help instruction on parameter setting    
$ ./agent-config-generator.py -h

# run the script with suitable arguments to generate config file
$ ./agent-config-generator.py [your args...] > agent.click

You can find instruction about parameters with this script when you run it, or you can use -h to check help info.

Run

# run Click in the userlevel
sudo ./userlevel/click conf/local-agent/agent.click

SoftOffload Client

A more detailed instruction can be found here.

  • Build our application on your Android devices (4.0+), or install our sample apk file.

  • Switch on the "SDN CONTROLLING". This enables our application to react as a SoftOffload client, response requests sent from the controller.

Now connect clients to local agents, and the controller will trigger offloading based on system traffic loads

References

Yanhe Liu. An SDN Platform for Traffic Offloading. Master's thesis. Univeristy of Helsinki, 2015.