Skip to content

martimy/flowmanager

Repository files navigation

FlowManager

Docs

FlowManager is a lightweight SDN application that provides direct, real-time control of OpenFlow switch tables. It is designed for teaching, experimentation, and rapid prototyping, allowing users to inspect, modify, and monitor flows in a controlled environment.

Originally built on Ryu, FlowManager (v0.5.0+) is now based on OS-Ken, improving maintainability and full Python 3 support.

Quick Start

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

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

python3 controller.py flowmanager.py

Open in browser:

http://localhost:8080/home/index.html

Features

Flow Management

  • Add, modify, and delete flow entries
  • Track flow changes over time

Advanced Tables

  • Manage group tables and meters
  • Backup and restore switch state

Monitoring & Visibility

  • View flow, group, and meter tables
  • Monitor switch statistics
  • Visualize network topology

Screenshots

Dashboard Flow Tables Flow Form Topology

Architecture

  • Controller: OS-Ken (OpenFlow control plane)
  • Backend API: FastAPI
  • Validation: Pydantic
  • Frontend: Vue.js (v2)

What’s New

v0.5.0

  • Migrated from Ryu to OS-Ken
  • Replaced WSGI/RPC with FastAPI
  • Introduced Pydantic models for validation and type safety
  • Structured JSON API responses
  • Modernized UI (Vue 2)
  • Removed Python 2 compatibility layers

v0.4.x

  • jQuery upgrades and stability improvements
  • Codebase refactoring and modularization

Installation

Clone the repository:

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

Set up environment:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Docker

Run with an application:

docker run -d -p 6653:6653 -p 8080:8080 \
        -v ${PWD}/examples:/home/auser/app --name flowmanager \
        martimy/flowmanager app/learning_switch_2.py

Then open:

http://localhost:8080/home/index.html

Running the Application

Run FlowManager:

python3 controller.py flowmanager.py

With another SDN application:

python3 controller.py flowmanager.py <application>

Enable topology discovery:

python3 controller.py --observe-links flowmanager.py <application>

Legacy UI:

http://host:8080/home/legacy/index.html

Typical Workflow

  1. Start FlowManager controller
  2. Launch a Mininet topology
  3. Open the web UI
  4. Inspect flows and topology
  5. Modify flows and observe behaviour

Mininet

To use FlowManager with Mininet, install Mininet separately: http://mininet.org/

Example:

# Terminal 1
python3 controller.py flowmanager.py examples/learning_switch_2.py

# Terminal 2
sudo examples/mn_threeswitch_topo.py

Docker compose

You can start FlowManager + Mininet using Docker compose:

docker compose up -d
docker compose exec mininet ./mn_threeswitch_topo.py

To shutdown:

docker compose down

Note: The SDN apps and Mininet topologies are expected to be in the examples folder.

Documentation

Full documentation: https://martimy.github.io/flowmanager/

Migrating Ryu Applications

Most Ryu applications can be migrated by updating imports:

Form

from ryu.base import app_manager

To

from os_ken.base import app_manager

Some API differences may exist. Test and validate behavior after migration.

Using Older Versions

To use the pre-0.5 version:

git checkout legacy

Use Cases

  • SDN / OpenFlow teaching labs
  • Network experimentation
  • Debugging OpenFlow behavior
  • Rapid prototyping of flow rules

Author

Maen Artimy http://adhocnode.com

License

Licensed under the Apache 2.0 License. See LICENSE.

About

An SDN application that gives its user the ability to control flows in an OpenFlow network without coding.

Topics

Resources

License

Stars

89 stars

Watchers

9 watching

Forks

Packages

 
 
 

Contributors