Skip to Content
Support Palestine 🍉  ⬩  Know what's happening
ProjectsIntroduction

Introduction

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.

Actions

  1. 🗃️ Download Windows EXE File ~v1.2.0

  2. Open GitHub Repository source for this project. (Closed-source)

  3. Open Google Drive folder to view all associated files and source.

  4. Open presentation in Google Slides.

  1. Open report in Google Docs.

📌 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



💡

Some of my latest posts on LinkedIn

Last updated on