ComputerNetworks-UFRGS / AuroraSDN

SDN Interactive Manager
GNU General Public License v2.0
5 stars 1 forks source link

SDN Interactive Manager

An SDN Interactive Manager application to enable management of SDN-related parameters of OpenFlow-Based networks.

What is SDN Interactive Manager?

SDN Interactive Manager is an OpenFlow-based application to SDN management through monitoring, visualization, and configuration that includes the administrator in the management loop. Moreover, the application introduces management of advanced features, such as reporting control traffic statistics and dynamically configuring the idle and hard timeout of forwarding rules, such feature which most SDN management approaches do not consider. This application was developed in order to help the administrator to better understand the impact of configuring SDN-related parameters on the overall network performance. SDN Interactive Manager application uses Software-Defined Networking (SDN) software-defined networking (SDN) concepts and OpenFlow protocol version 1.0 of specification - currently the most relevant SDN implementation - to establish communication between the controller and forwarding devices.

Installation

The following installation steps assume you will be running the application on Ubuntu Server 14.04. You should easily find the same required packages in any other distribution, however keep in mind that different versions of libraries and other software may cause the application not to work as expected.

Clone source from Github
$ git clone https://github.com/ComputerNetworks-UFRGS/AuroraSDN.git
Install dependencies
$ sudo apt-get update
$ sudo apt-get install apache2 libapache2-mod-wsgi python-dev python-pip python-django python-pygments python-django-debug-toolbar
If MySQL database
$ sudo apt-get install python-mysqldb mysql-server
If PostgreSQL database
$ sudo apt-get install python-psycopg2 postgresql pgadmin3

Install Django Widget Tweaks module from pip

$ sudo pip install django-widget-tweaks python-social-auth
Apache configuration for mod_wsgi
$ sudo cp AuroraSDN/extras/apache/auroraSDN.conf /etc/apache2/conf-available/
$ cd /etc/apache2/conf-enabled/
$ sudo ln -s ../conf-available/auroraSDN.conf auroraSDN.conf

Note 1: Editing auroraSDN.conf to match your local directory settings may be required.

Note 2: Make sure you have an early version of django (1.6 or newer) so that the platform can be installed as a wsgi application.

$ django-admin --version
Apache configuration for HTTPS access:
$ cd /etc/apache2/sites-enabled
$ sudo ln -s ../sites-available/default-ssl.conf 000-default-ssl.conf

If ssl modules are not already enabled then:

$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/ssl.conf ssl.conf
$ sudo ln -s ../mods-available/ssl.load ssl.load
$ sudo ln -s ../mods-available/socache_shmcb.load socache_shmcb.load

Then restart Apache:

$ sudo service apache2 restart
Setup database for MySQL

Execute the following SQL code into your MySQL console to create a user and database for Aurora (replace *** with the password you want).

CREATE USER 'aurorasdn'@'localhost' IDENTIFIED BY '***';
CREATE DATABASE IF NOT EXISTS `aurorasdn`;
GRANT ALL PRIVILEGES ON `aurorasdn`.* TO 'aurorasdn'@'localhost';
Setup database for PostgreSQL

Execute the following SQL code into your pgAdmin III console to create a user and database for Aurora (replace *** with the password you want).

CREATE USER aurorasdn WITH PASSWORD '***';
CREATE DATABASE aurorasdn
  WITH ENCODING='UTF8'
       CONNECTION LIMIT=-1;
GRANT ALL PRIVILEGES ON DATABASE aurorasdn TO aurorasdn;
Configure your local_settings.py

If you want to edit local django settings and avoid conflicts when pushing back modifications, create a local_settins.py file (this file is included in .gitignore) inside the Aurora folder where the default settings.py is.

from settings import *
DATABASES['default']['PASSWORD'] = 'yourpassword'
STATIC_ROOT = '/var/www/html/AuroraSDN/static/'
MEDIA_ROOT = '/var/www/html/AuroraSDN/manager/'
LOGGING['handlers']['file']['filename'] = '/var/www/html/AuroraSDN/logs/main.log'

ADMINS = (
   ('You', 'you@yoursite.com'),
)

GOOGLE_OAUTH2_CLIENT_ID = '...'
GOOGLE_OAUTH2_CLIENT_SECRET = '...'
Get permissions for system logging right

You can create log file wherever you like as you configured the variable LOGGING['handlers']['file']['filename']. In general, a logs directory can be created within the platform installation folder.

$ mkdir AuroraSDN/logs
$ touch AuroraSDN/logs/main.log
$ chmod -R a+w AuroraSDN/logs
Sync Django database and cache table
$ cd AuroraSDN
$ python manage.py syncdb
To work with Floodlight

The SDN Interactive Manager application currently works with our version of Floodlight OpenFlow Controller that we modified to support control channel statistics features. By default, the application expects your installation to have this Floodlight running to perform its functionalities correctly. You can easily install the controller from by clonning its repository from Github:

$ git clone https://github.com/phisolani/floodlight.git

Referencing and Citation

For academic work referencing and citation please read our paper "Interactive Monitoring, Visualization, and Configuration of OpenFlow-Based SDN" published at 14th IFIP/IEEE Symposium on Integrated Network and Service Management 2015 (IM 2015) in Ottawa or the demo paper named "SDN Interactive Manager: An OpenFlow-Based SDN Manager" published at demonstration track of the same event.

Credits

Currently the main authors are: