SDLens is a software defined network (SDN) monitoring web application designed to operate with the OpenDaylight controller. It provides real-time telemetry from OpenFlow switches, provides an interactive topology of the network, and many more intuitive features.
This entire application was built using the web-framework Flask.
- Primarily developed in Python3
- JavaScript on the front-end
- Three main components of our application
- Web App
- Monitoring Agents
- MySQL Database
- Web App and Agents interact with both the Database and the controller's Northbound interface
- Designed with modularity in mind
The following instructions will discribe how to install and run our web application, SDLENS.
This application makes uses the following services:
- MySql Server
- Nmap
- OpenDaylight Controller
- The following packages for the controller:
- odl-restconf
- odl-l2switch-switch
- odl-dlux-core
- odl-dluxapps-nodes
- odl-dluxapps-topology
- odl-dluxapps-yangui
- odl-dluxapps-yangvisualizer
- odl-dluxapps-yangman
- The following packages for the controller:
- Python 3
- python-pip
- Mininet
- The Mininet VM was used to emulate SDN networks in the development of SDLENS.
- Any SDN can be used provided it uses an OpenDaylight controller.
Preface: All commands will assuem a linux or other Unix based operating system (MacOS).
Installing the MySql Server is easy, as it can be accomplished with Aptitude.
$ apt install mysql-server
$ apt install libmysqlclient-dev
The OpenDaylight controller can be downloaded from the OpenDaylight website. This application was developed using OpenDaylight version: 0.8.3
Once OpenDaylight has been extracted, you can start the program with:
$ karaf-version/bin/./karaf clean
When starting the program, run the clean
option. This ensures that any previously installed packages are removed and allows for more continuity at the cost of an extra step.
Use the following command to install required ODL features:
> feature:install odl-restconf odl-l2switch-switch odl-dlux-core odl-dluxapps-nodes odl-dluxapps-topology odl-dluxapps-yangui odl-dluxapps-yangvisualizer odl-dluxapps-yangman
If you are using Mininet to emulate an SDN network, you can download the Mininet virtual machine from Mininet's website: Download
Once downloaded and opperational, you can create a new topology with the following command. Note: Add your controller IP.
$ sudo mn --controller=remote,ip=`controller IP` --switch ovsk,protocols=OpenFLow13 --topo Topology of your choice
A mesh topology is included with this repository called 'basicMesh' under the mininet directory. Copy this file to your Mininet VM and place it within ~/scripts. Create ~/scripts if that directory does not already exist. To create the mesh topology, add your controller's IP address and run the following:
sudo mn --custom scripts/basicMesh.py --topo dcharoot --controller=remote,ip='controller IP' --switch ovsk,protocols=OpenFlow13
Once mininet is running issue the following:
pingall
This will generate traffic throughout the network and allow the contoller to populate the openflow switches with flowrules.
- Bradley Fitzgerald - Carleton University, Canada (far left)
- Samuel Cook - Carleton University, Canada (inner left)
- Samuel Robillard - Carleton University, Canada (inner right)
- Josh Nelson - Carleton University, Canada (far right)