Flow-Optix is a conceptual Python-based simulation and visualization tool for optimizing Software-Defined Networking (SDN) traffic using multiple routing strategies. It allows users to compare the network impact of four algorithms—Shortest Path, Load Balancing, Congestion Avoidance, and Q-Learning—under randomized traffic flow conditions. The tool emphasizes educational clarity, algorithmic transparency, and visual interpretability.
Table of contents
Open Table of contents
Actions
-
🗃️ Download Windows EXE File
~v1.2.0 -
Open
GitHub Repository
source for this project. (Closed-source) -
Open
Google Drive
folder to view all associated files and source.
📌 Features
- Custom network topology simulating a LAN with hosts, switches, and interlinks
- Random flow generation with configurable rates and traffic types
- Four routing algorithms:
- Shortest Path Routing
- Load Balancing Routing
- Congestion-Aware Routing
- Q-Learning (Reinforcement Learning-based) Routing
- GUI-based simulation control using Tkinter
- Detailed visual output using matplotlib and networkx
- Link load analysis and path annotations for each strategy
- Supports multi-round simulation (5 rounds per strategy)
- Export functionality for graphs (
.png
) and simulation logs - Compiled standalone
.exe
version via PyInstaller (see releases)
📌 Installation
1. Clone the Repository
git clone https://github.com/s-m-quadri/flow-optix
cd flow-optix
2. Create Virtual Environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
3. Install Requirements
pip install -r requirements.txt
📌 Usage
Run in Python
python main.py
Run from Executable
A standalone .exe
build is available in the Releases section as FlowOptix.exe
. No Python installation is required to run the compiled version.
📌 Project Structure
├── main.py # Entry point
├── gui.py # Tkinter-based GUI
├── topology.py # Network topology and flow generation
├── routing.py # All routing algorithms
├── visualization.py # Drawing and visual annotations
├── requirements.txt # Dependencies
├── setup.spec # PyInstaller spec file
├── icon.ico # App icon for .exe
├── README.md # This file
📌 Algorithms
1. Shortest Path Routing
Uses Dijkstra’s algorithm to determine the shortest path between source and destination for each flow.
2. Load Balancing Routing
Distributes flows across all available shortest paths to avoid overuse of a single link.
3. Congestion-Aware Routing
Avoids links with high utilization by applying a dynamic threshold-based penalty to congested links.
4. Q-Learning Routing
Implements reinforcement learning to train agents that learn optimal paths based on link costs (negative weights). Supports training over multiple episodes per round.
📌 License and Access
This project is closed-source. The source code is not publicly visible in the GitHub repository. Interested users may request access by contacting the author.
📌 Support
For questions or access requests, please contact:
Developer Email: dev.smq@gmail.com
Repository: https://github.com/s-m-quadri/flow-optix