Git Product home page Git Product logo

flowmanager's Introduction

FlowManager

Static Badge

The FlowManager is a RYU controller application that gives the user manual control over the flow tables in an OpenFlow network. The user can create, modify, or delete flows directly from the application. The user can also monitor the OpenFlow switches and view statistics. The FlowManager is ideal for learning OpenFlow in a lab environment, or in conjunction with other applications to tweak the behaviour of network flows in a test environment.

Features

  • Add/modify/delete flow entries in flow tables.
  • Add/modify/delete group tables and meters.
  • Backup/restore switch tables to/from local drive.
  • View flow tables, group tables, and meters.
  • View switch statistics.
  • View network topology.
  • Track flow entries.

SCREEN1 SCREEN2 SCREEN3 SCREEN4

New in V0.4.2

  • Upgraded jquery to v3.7.1

New in V0.4.1

  • Upgraded jquery to v3.5.0

New in V0.4.0

  • Fixed a bug tracking flow entries.
  • Editing Python code style closer to PEP-8 (more work is needed).
  • Spliting Python code into four modules for easier management.
  • Reorganized folders.

Dependencies

FlowManager is a RYU Controller application, so make sure that the controller is installed properly before you proceed. Also, if you intend to use FlowManager with Mininet, you will need to install that too.

To install Ryu,

$ pip install ryu

Note: The application, ryu-manager, which you will need to run the FlowManager is known to have issues with Python3.10 and eventlet module. The FlowMananager has been recently tested in Ubuntu 20.04 with Python v3.8.10 and eventlet v0.30.1.

To downgrade eventlet:

$ pip uninstall eventlet
$ pip install eventlet==0.30.1

Installation

Install FlowManager using the following steps:

$ git clone https://github.com/martimy/flowmanager

Running the app

Run the FlowManager alone:

$ ryu-manager ~/flowmanager/flowmanager.py

or with another RYU application:

$ ryu-manager ~/flowmanager/flowmanager.py ryu.app.simple_switch_13

and to display the topology:

$ ryu-manager --observe-links ~/flowmanager/flowmanager.py ryu.app.simple_switch_13

Use a web broswer to launch the site http://localhost:8080/home/index.html

Docker installation

Use a Docker image to run Ryu Controller with the FlowManager.

docker pull martimy/ryu-flowmanager
docker run -d -p 6633:6633 -p 8080:8080 martimy/ryu-flowmanager

To run the controller with another Ryu app:

docker run -d -p 6633:6633 -p 8080:8080 martimy/ryu-flowmanager:latest ryu.app.simple_switch_13
docker run -d -p 6633:6633 -p 8080:8080 martimy/ryu-flowmanager:latest flowmanager/flowmanager.py ryu.app.simple_switch_13

To bypass the entry point:

docker run -it --entrypoint bash martimy/ryu-flowmanager

Documentation

You can find some useful documention in here, but it is still a work-in-progress.

Built With

  • Python - A programming language ideal for SDN applications.
  • jQuery - A JavaScript library for event handling, animation.
  • D3.js - A JavaScript library for data visulization.

Authors

License

FlowManager is licensed under the Apache 2 License - see the LICENSE file for details

flowmanager's People

Contributors

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