GithubHelp home page GithubHelp logo

georgefatsis / coral-sdn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from swnrg/coral-sdn

0.0 1.0 0.0 127.76 MB

Software Defined Protocol for WSN IoT

Java 15.85% Shell 0.05% Python 1.57% Makefile 8.08% C 64.18% HTML 0.04% JavaScript 0.07% CSS 0.03% Assembly 0.38% Awk 0.01% XSLT 0.02% Gnuplot 0.01% Asymptote 0.01% Perl 0.29% GDB 0.01% Scala 0.01% SuperCollider 0.01% Batchfile 0.01% GSC 9.43%

coral-sdn's Introduction

CORAL-SDN git is under major update with the latest version (expected the controller to be upload on 8th of Feb 2020) stay tuned

CORAL-SDN: A Software-Defined Networking Solution with Out-of-Band Control for the Internet of Things

CORAL-SDN Architecture

  • CORAL-SDN protocol video here
  • CORAL-SDN Out-of-Band Control Panorama video here

CORAL-SDN The Internet of Things (IoT) is gradually incorporating multiple environmental, people, or industrial monitoring deployments with diverse communication and application requirements. The main routing protocols used in the IoT, such as the IPv6 Routing Protocol for Low-Power and Lossy Networks (RPL), are focusing on the many-to-one communication of resource-constraint devices over wireless multi-hop topologies, i.e., due to their legacy of the Wireless Sensor Networks (WSN). The Software-Defined Networking (SDN) paradigm appeared as a promising approach to implement alternative routing control strategies, enriching the set of IoT applications that can be delivered, by enabling global protocol strategies and programmability of the network environment. However, SDN can be associated with significant network control overhead. In this paper, we propose CORAL-SDN, an open-source SDN solution for the IoT, bringing the following novelties in contrast to the related works: (i) programmable routing control with reduced control overhead through inherent protocol support of a long-range control channel; and (ii) a modular SDN controller and an OpenFlow-like protocol improving the quality of communication in a wide range of IoT scenarios through supporting two alternative topology discovery and two flow establishment mechanisms. We carried out experiments with various topologies, network sizes and high-volume transmissions with alternative communication patterns. Our results verified the robust performance and reduced control overhead of CORAL-SDN for alternative IoT deployments, e.g., achieved up to 47% reduction in network's overall end-to-end delay time compared to the RPL and a packet delivery ratio of over 99.5%.

How to Install CORAL-SDN In a clean Linux environment (We suggest using a VM) install the following prerequisites:

  • default-jdk
  • ant
  • maven
  • git
  • python-pip
  • curl
  • gcc-msp430
  • build-essential
  • vim
  • software-properties-common

Clone the current repository in the home of your user:

Copy the required files in your home:

  • cp ~/coral-sdn/infrastructure-plane/contiki ~
  • cp -r ~/coral-sdn/control-plane/CORAL-SDN_Adapters/coral-sdn-adapter-COOJA-runtime ~
  • cp -r ~/coral-sdn/control-plane/CORAL-SDN-Controller/ ~

Fix the Java Paths:

  • latestJdk=$(ls -lrt /usr/lib/jvm | grep "java-8-openjdk" | tail -1 | awk -F' ' '{print $9}')
  • echo "JAVA_HOME=/usr/lib/jvm/$latestJdk" >> ~/.profile
  • echo "JRE_HOME=/usr/lib/jvm/$latestJdk" >> ~/.profile
  • echo "PATH=$PATH:$JRE_HOME/bin:$JAVA_HOME/binexport" >> ~/.profile
  • echo "export JAVA_HOME" >> ~/.profile
  • echo "export JRE_HOME" >> ~/.profile
  • echo "export PATH" >> ~/.profile

Install serial2pty in cooja

  • cd ~/contiki/tools/cooja/apps
  • rm -rf serial2pty
  • git clone https://github.com/cmorty/cooja-serial2pty.git serial2pty
  • cd serial2pty
  • ant jar
  • echo "org.contikios.cooja.Cooja.PLUGINS = + de.fau.cooja.plugins.Serial2Pty" > cooja.config
  • echo "org.contikios.cooja.Cooja.JARFILES = + serial2pty.jar" >> cooja.config
  • echo "DESCRIPTION = serial2pty" >> cooja.config

Give the proper user rights at the scripts:

  • cd ~/coral-sdn-adapter-COOJA-runtime
  • chmod +x coral-sdn-adapter createSoftLinkCreationScript.py softLinkCreationScript

Compile contiki

  • cd ~/contiki/tools/cooja
  • ant clean
  • ant jar

Remember to open the following ports mapped one to one from the host to the VM: 8999, 8992

In the Windows Host follow the following steps:

  • Install Node-Red in the Windows
  • Install the following pallettes: node-red-dashboard, node-red-node-email, node-red-node-feedparser, node-red-node-rbe, node-red-node-twitter
  • Import the Node Red Dashboard.json from clipboard

To Run Coral Do the following: Start cooja:

  • cd ~/contiki/tools/cooja
  • ant run Create the Simulation you want using Cooja Motes for the boarder line router the firmware is: ~/contiki/examples/coral-sdn-example/node_br.c and for the mote: ~/contiki/examples/coral-sdn-example/node.c Note: the boarder line router mote should be the number 1 mote in the simulation so add it first, add the motes and start the simulation at 100% Speed Limit. Also, in the boarder line router enable the serial2pty.

Start the Controller

  • cd ~/CORAL-SDN-Controller
  • java -jar CoralSDNControler.jar

Start the CORAL Adapter

  • cd ~/coral-sdn-adapter-COOJA-runtime
  • sudo ./coral-sdn-adapter

In the windows start the node red and at CORAL Dashboard Press Update and then Start.

Now you should have a running simulation and you should see the topology on the dashboard.

coral-sdn's People

Contributors

georgefatsis avatar tryfonthe avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.