GithubHelp home page GithubHelp logo

serendipiddy / network-visualization-and-performance-prediction Goto Github PK

View Code? Open in Web Editor NEW
4.0 5.0 3.0 1.21 MB

Visualizes the performance of an OpenFlow network, performs prediction using queueing theory (work in progress)

License: Apache License 2.0

Python 22.13% HTML 3.37% JavaScript 71.11% CSS 1.15% Shell 0.57% R 1.66%

network-visualization-and-performance-prediction's Introduction

OpenFlow Performance Visualizer

Visualizes the performance of an OpenFlow network using queueing theory

This project is the work-in-progress of an undergraduate final year project.

Builds upon the topology view within OpenFlow 1.3.

Using this application

This is a Ryu application, so simply needs to be copied into the ryu/app directory and run with ryu. Because this is built on top of the topology library, you will also need to include --observe-links.

ryu-manager --observe-links ryu/app/perfvis/perfvis.py

The script ./runryu, when edited to point to the correct directories, will copy this application and run it correctly. Scripts are also included to set up a mininet session running OpenFlow v1.3, runsingle and runtopo.

Once running, it can be accessed via a browser, http://[controller-ip]:8080.

So the easiest way to run this is to edit the SRC, DST and RYU variables in runryu, then start it:

 > ./runryu

Which will copy the appropriate files and start ryu-manager as above.

IMPORTANT -- There are two modes of operation, one using a live network, and another which can be run locally without a network using randomly generated input values. This is determined at the end of the perfvis/html/ryu/performance.js file. If the application appears to be running incorrectly check that this is set properly.

/* Control for swapping between local and server modes. Comment one. */
// initLocal();    // for offline testing
initServer();   // for server

Swap which of the two lines is commented for the local version, which can be accessed using a webserver on localhost targeting the html directory, such as Python3's module http.server.

Config

Models and the switch brand are declared in perfvis/html/config.js

Switches can be added here to set their average service rate, and can be selected from the GUI interface. They are defined in config.switch_configs as:

'switch_name': {
    'service_rate':    0, // the average number of packets it can service per second
    'service_variance':0, // the variance in that average
}

Models' input and output are declared along with the name of the model. Below is a basic model description.

'model_name':  { 
    'description': '',
    'model_in': [ 'service_rate', 'arrival_rate' ],
    'model_out': [ 'load', 'length', 'sojourn' ],
}

Additionally a model needs to register itself, accept the declared inputs and produce the declared outputs. To register a model, it needs to be included in index.html and it must add itself to the config with:

config.get_model['model_name'] = model_name;

Ryu Topology and FileSaver.js used under the included licenses.

network-visualization-and-performance-prediction's People

Contributors

csliangy avatar serendipiddy avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  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.