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.
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.pyOpen in browser:
http://localhost:8080/home/index.html
- Add, modify, and delete flow entries
- Track flow changes over time
- Manage group tables and meters
- Backup and restore switch state
- View flow, group, and meter tables
- Monitor switch statistics
- Visualize network topology
- Controller: OS-Ken (OpenFlow control plane)
- Backend API: FastAPI
- Validation: Pydantic
- Frontend: Vue.js (v2)
- 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
- jQuery upgrades and stability improvements
- Codebase refactoring and modularization
Clone the repository:
git clone https://github.com/martimy/flowmanager
cd flowmanagerSet up environment:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtRun without local setup:
docker run -d -p 6653:6653 -p 8080:8080 martimy/flowmanagerThen open:
http://localhost:8080/home/index.html
Run FlowManager:
python3 controller.py flowmanager.pyWith 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
- Start FlowManager controller
- Launch a Mininet topology
- Open the web UI
- Inspect flows and topology
- Modify flows and observe behavior
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.pydocker run -d -p 6653:6653 -p 8080:8080 \
-v <path/to/examples>:/home/auser/app \
martimy/flowmanager app/<example>Full documentation: https://martimy.github.io/flowmanager/
Most Ryu applications can be migrated by updating imports:
Form
from ryu.base import app_managerTo
from os_ken.base import app_managerSome API differences may exist. Test and validate behavior after migration.
To use the pre-0.5 version:
git checkout legacy- SDN / OpenFlow teaching labs
- Network experimentation
- Debugging OpenFlow behavior
- Rapid prototyping of flow rules
Maen Artimy http://adhocnode.com
Licensed under the Apache 2.0 License. See LICENSE.



