GithubHelp home page GithubHelp logo

odin's Introduction

Odin

SDN-based solution for programmatic orchestration of enterprise WiFi networks.

I would like to state clear that this project is not my own idea, the repository found here is a fork of the original Odin framework (https://github.com/lalithsuresh/odin) by Lalith Suresh. New features have been added:

  • deauthentication management
  • odin-agents virtualization
  • script for automatic roll-out
  • fixed minor bugs in click (i.e. padding)

References

The system is described in the following Masters' thesis: http://lalithsuresh.files.wordpress.com/2011/04/lalith-thesis.pdf

Requirements

  • Click modular router
  • Java Development Kit
  • Docker
  • xDPd
  • ROFL
  • hostapd
  • Wireless card based on atheros driver ath9k_htc, ath9k or ath5k

xDPd and rofl-core are assumed to be built already, if you don't know how to do that you can get the instructions at:

Building instructions

If you cloned Odin from the git repository, pull the individual submodules (odin-agent, odin-master, odin-click and odin-utilities):

  $: git clone  https://github.com/fgg89/odin.git
  $: cd odin
  $: git submodule init
  $: git submodule update

Building click modular router

The odin-agent is a module inside click (odinagent.cc and odinagent.hh). For easier development we can create a link for both files inside click/elements/local:

  $: cd odin-agent/src
  $: ln odinagent* ../../odin-click/elements/local/

Then we can build click with the following options:

  $: cd odin-click
  $: ./configure --enable-local --enable-wifi --disable-linuxmodule
  $: make -j4

If you want to cross-compile click for running it under OpenWRT you may want to check the following links:

Building the odin-master

  $: cd odin-master
  $: ant

The floodlight.jar is located under /target.

Patching the driver module

For further instructions please visit https://github.com/fgg89/odin-utilities/tree/master/ath9k_htc

Running Odin

The master is to be run on a central server that has IP reachability to all APs in the system. The master expects the following configuration parameter to be set in the floodlight configuration file (src/main/resources/floodlightdefault.properties):

  • net.floodlightcontroller.odin.master.OdinMaster.poolFile
# Pool-1
  NAME pool-1
  NODES 172.16.250.33 172.16.250.175
  NETWORKS odin
  APPLICATIONS net.floodlightcontroller.odin.applications.OdinMobilityManager

# Pool-2
  NAME pool-2
  NODES 172.16.250.29 172.16.250.37 
  NETWORKS guest-network
  APPLICATIONS net.floodlightcontroller.odin.applications.SimpleLoadBalancer

Each pool is defined by a name, a list of IP address of physical APs, the list of SSIDs or NETWORKS to be announced, and a list of applications that operate on that pool.

For testing purposes, if you'd like to assign a static IP to a client and have it connect to odin, you need to specify the client's details in a file pointed to by this property. This file is:

  • net.floodlightcontroller.odin.master.OdinMaster.clientList

An example file looks as follows:

  00:16:7f:7e:00:00 172.16.250.2 00:1b:b3:7e:00:00 odin
  00:16:7f:7e:00:01 172.16.250.3 00:1b:b3:7e:00:01 odin
  00:16:7f:7e:00:02 172.16.250.4 00:1b:b3:7e:00:02 guest-network

Each row represents a client's MAC address, its static IP address, its LVAP's BSSID, and the SSID that its LVAP will announce.

To run the master:

  $: java -jar floodlight.jar

In our testbed the odin-agents are containerized using docker. xDPd runs in the same machine as the odin-agent but only the latest is containerized. The script setup-odin.sh (https://github.com/fgg89/odin-utilities/blob/master/scripts/setup-odin.sh) configures all the dependencies and starts the odin-agent and xDPd. Make sure you give the right parameters to this script. If you are using Ubuntu 14.04 you will need to set the wlan interface in ap mode. A script using hostapd (master-iface.sh) has been created for that purpose, it only needs to be run once and the configuration will remain until the machine is rebooted.

odin's People

Contributors

fgg89 avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

jorschul liucc07

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.