Flowmanager
An SDN application that gives its user the ability to control flows in an OpenFlow network without coding.
Install / Use
/learn @martimy/FlowmanagerREADME
FlowManager
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
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
- Start FlowManager controller
- Launch a Mininet topology
- Open the web UI
- Inspect flows and topology
- 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.
Related Skills
tmux
350.1kRemote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
diffs
350.1kUse the diffs tool to produce real, shareable diffs (viewer URL, file artifact, or both) instead of manual edit summaries.
blogwatcher
350.1kMonitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.
github-trending
Multi-agent orchestration system for infrastructure monitoring, incident response, and load testing with autonomous AI agents




