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 without local setup:

docker run -d -p 6653:6653 -p 8080:8080 martimy/flowmanager

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 behavior

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

Examples (Docker)

docker run -d -p 6653:6653 -p 8080:8080 \
-v <path/to/examples>:/home/auser/app \
martimy/flowmanager app/<example>

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.