Skip to Content
Support Palestine 🍉  ⬩  Know what's happening →
ProjectsFlowOptix - SDN Traffic Optimization Simulator

v1.2.0 Flow-Optix - SDN Traffic Optimization Simulator

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.

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.



đź’ˇ

Some of my latest posts on LinkedIn

Last updated on