mbaddeley / usdn

µSDN: A low-overhead SDN stack and embedded SDN controller for Contiki.
Other
13 stars 8 forks source link
802-15-4 contiki evolving-sdn iot low-power micro sdn sdn-controller sensor-network usdn wsn

μSDN - Low-Power Wireless SDN for Contiki.

Intro

This repo hosts the source code of μSDN, which we published in the NetSoft 2018 conference (paper, slides). μSDN is also in the process of being ported to Contiki-NG (which will supersede this version), you can check out the μSDN-NG repo progess here.

Publications

M. Baddeley, R. Nejabati, G. Oikonomou, M. Sooriyabandara, and D. Simeonidou, “Evolving SDN for Low-Power IoT Networks,” in 2018 IEEE Conference on Network Softwarization (NetSoft), June 2018.

M. Baddeley, R. Nejabati, G. Oikonomou, S. Gormus, M. Sooriyabandara and D. Simeonidou, "Isolating SDN control traffic with layer-2 slicing in 6TiSCH industrial IoT networks," 2017 IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN), Berlin, 2017, pp. 247-251.

About

μSDN is has been developed to provide an open source platform to deliver SDN on 6LoWPAN IEEE 802.15.4-2012 networks. The version here is currently not compatible with TSCH, though we have previously tried it out with our own 6TiSCH implementation for contiki (check out the NFV-SDN 2017 paper here).

Alongside μSDN itself, we provide an embedded SDN controller, Atom, as well as a flow generator for testing purposes, Multiflow.

Please note, this is an academic exercise and a fairly large codebase, so there are many things in μSDN which may not have been done as cleanly or transparently as I may have liked (though I have tried to clean it up somewhat). I've tried to give a brief overview of all the features and modules here, and you can find the paper and slides within at the top level, but if you find yourself getting lost then I'm happy to answer any questions you may have.

Getting Started

IMPORTANT You'll also need to install the 20-bit mspgcc compiler.

For instructions on how to compile this please click here

For a pre-compiled version for Ubuntu-64 please click here

Some people have had issues trying to install this compiler, so if you're new to Contiki or Linux in general then I'd recommend doing the following:

echo $PATH
/home/mike/Compilers/mspgcc-.7.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
msp430-gcc (GCC) 4.7.3 20130411 (mspgcc dev 20120911)
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

You are now ready move on to the next stage! If you haven't properly set it up to use the 20-bit mspgcc then it will not compile!!!

Because of the size of the stack, if you're testing in Cooja you'll need to compile for exp5438 motes (there is a Makefile.target which should handle this for you). Please note that you'll need to run make in both sdn/controller and sdn/node as I haven't set it up to do both in the higher level directory.

  cd usdn/examples/sdn/controller/
  make clean & make
  cd ..
  cd node/
  make clean & make

To get you going you can find some Cooja examples in:

usdn/examples/sdn/..

There is a handy compile script in there that can be used to compile both the controller and node:

./compile.sh MULTIFLOW=1 NUM_APPS=1 FLOWIDS=1 TXNODES=8 RXNODES=10 DELAY=0 BRMIN=5 BRMAX=5 NSUFREQ=600 FTLIFETIME=300 FTREFRESH=1 FORCENSU=1 LOG_LEVEL_SDN=LOG_LEVEL_DBG LOG_LEVEL_ATOM=LOG_LEVEL_DBG

uSDN Make Args:

Multiflow Make Args:

Further Development

Future μSDN development will merge with μSDN-NG, based on the newer (and maintained) Contiki-NG.

Where is everything?

Overview of optimization features

Core

Stack

ATOM Controller

Still to be Implemented...

Known Issues


[usdn_v1.2] - 19/03/19


[usdn_v1.1] - 17/07/18


[usdn_v1.0] - 28/06/18