FUSION

Flexible, Unified Simulator for Intelligent Optical Networking

FUSION is an open-source discrete-event simulation framework for Software-Defined Elastic Optical Networks (SD-EONs). It provides researchers and engineers with tools to model, analyze, and optimize optical network behavior under realistic conditions, with built-in support for reinforcement learning integration and network survivability experiments.

Tip

Version 6.0 introduces the Orchestrator architecture with pipeline-based request processing. Legacy simulations continue to work unchanged.


Why Use FUSION?

FUSION is designed to solve real research problems in optical networking:

Routing and Spectrum Assignment (RSA)

Evaluate algorithms that jointly solve the path selection and spectrum allocation problem in elastic optical networks. Learn more

Network Survivability

Test protection and restoration mechanisms against link failures, node failures, SRLG events, and geographic disasters. Learn more

AI/ML Integration

Train reinforcement learning agents to make intelligent routing decisions, with built-in Stable-Baselines3 integration and action masking for safe exploration. Learn more

Algorithm Benchmarking

Compare routing algorithms (K-shortest-path, congestion-aware, crosstalk-aware) and spectrum assignment strategies (First-Fit, Best-Fit, Last-Fit) under identical conditions.

Physical Layer Modeling

Account for signal quality constraints including SNR, crosstalk in multi-core fiber, and modulation format selection based on path reach. Learn more


How FUSION Simulates Networks

FUSION uses discrete-event simulation to model optical network behavior:

Time    Event
-----   -------------------------
0.00    Request 1 arrives (A->D, 100Gbps)
0.05    Request 2 arrives (B->E, 200Gbps)
0.12    Request 1 departs
0.18    Link failure on link (0,1)
...

What Gets Simulated

  • Traffic arrivals: Poisson process with configurable Erlang load

  • Request handling: Routing + spectrum assignment + optional SNR validation

  • Resource allocation: Spectrum slots on each link, core, and band

  • Network events: Failures, repairs, protection switchovers

  • Metrics collection: Blocking probability, fragmentation, utilization

What You Can Configure

  • Network topology (NSFNet, COST239, USNet, custom)

  • Traffic parameters (Erlang load, bandwidth distribution, holding time)

  • Algorithm selection (routing, spectrum, SNR measurement)

  • Physical layer (cores, bands, guard slots, modulation formats)

  • Experiment control (iterations, confidence intervals, parallel threads)

See Configuration Tutorials for configuration examples.


Core Capabilities

Simulation Engine

  • Discrete-event simulation with configurable traffic models

  • Support for multiple Erlang loads with automatic sweeping

  • Confidence interval-based stopping for statistical significance

  • Multi-process parallel execution for parameter studies

Learn more

RSA Algorithms

  • Routing: K-shortest-path, congestion-aware, fragmentation-aware, XT-aware

  • Spectrum: First-Fit, Best-Fit, Last-Fit with multi-band and multi-core support

  • Pluggable registry pattern for adding custom algorithms

Routing | Spectrum

Reinforcement Learning

  • Stable-Baselines3 integration (PPO, A2C, DQN, QR-DQN)

  • In-house algorithms (Q-learning, bandits)

  • Action masking for safe exploration

  • GNN-based feature extractors (GAT, SAGE, GraphConv)

  • Optuna hyperparameter optimization

Learn more

Network Survivability

  • Failure types: Link (F1), Node (F2), SRLG (F3), Geographic (F4)

  • 1+1 disjoint path protection

  • Failure injection and recovery metrics

Learn more

Physical Layer Modeling

  • SNR calculation with crosstalk for multi-core fiber

  • Modulation format selection based on path reach

  • Guard band management

Learn more


Choose Your Path

Researcher

Running baseline simulations, comparing algorithms, publishing results.

Start: Installation then Tutorial

RL Researcher

Training agents to make routing decisions in optical networks.

Start: Installation then Reinforcement Learning Module

Student

Learning about elastic optical networks and simulation concepts.

Start: Installation then Architecture

Contributor

Adding features, fixing bugs, improving documentation.

Start: Installation, then read the Development Quickstart

HPC User

Running large-scale experiments on clusters.

Start: Installation, then see Unity Module

GUI User

Prefer a visual interface over the command line.

Start: Installation, then Web-Based GUI


Quickstart: Your First Simulation

Run your first simulation in under 10 minutes:

# 1. Clone and install
git clone git@github.com:SDNNetSim/FUSION.git
cd FUSION
python3.11 -m venv venv && source venv/bin/activate
./install.sh

# 2. Run a minimal simulation
python -m fusion.cli.run_sim --config_path fusion/configs/templates/minimal.ini

# 3. View results
ls data/output/NSFNet/
cat data/output/NSFNet/*/*/s1/*_erlang.json

What just happened?

  1. You ran a simulation on the NSFNet topology (14 nodes, 21 links)

  2. Traffic loads of 300, 400, 500 Erlang were simulated

  3. Each load ran for 100 requests over 2 iterations

  4. Results include blocking probability, hop counts, and resource utilization

Next steps


Web-Based GUI

Tip

New in v6.1: FUSION includes a web-based interface for managing simulations, visualizing topologies, and exploring the codebase.

Launch the GUI with:

python -m fusion.cli.run_gui

Open http://127.0.0.1:8765 in your browser.

Features:

  • Real-time log streaming for running simulations

  • Interactive network topology visualization

  • Configuration editor with syntax highlighting

  • Codebase explorer with guided architecture tour

Learn more


Common Tasks

Task

Documentation

Launch the GUI

GUI Getting Started

Run a basic simulation

Core Tutorial Part 1

Create a custom configuration

Configuration Tutorials

Add a new routing algorithm

Routing Module

Train an RL agent

RL Module

Run survivability experiments

Failures Module

Understand blocking metrics

Core Metrics

Use the orchestrator (v6.0+)

Core Architecture

Contribute to FUSION

Contributing Guide


Architecture at a Glance

+---------------------------------------------------------------+
|                      CLI Entry Points                          |
|    fusion-sim (run_sim)         fusion-train (run_train)       |
+---------------------------------------------------------------+
                              |
                              v
+---------------------------------------------------------------+
|                   Configuration System                         |
|         INI files -> ConfigManager -> SimulationConfig         |
+---------------------------------------------------------------+
                              |
          +-------------------+-------------------+
          |                                       |
          v                                       v
+---------------------+               +---------------------+
|    LEGACY PATH      |               |   ORCHESTRATOR      |
| (use_orchestrator   |               | (use_orchestrator   |
|  = False)           |               |  = True)            |
+---------------------+               +---------------------+
|                     |               |                     |
| SimulationEngine    |               | SimulationEngine    |
|       |             |               |       |             |
|       v             |               |       v             |
| SDNController       |               | SDNOrchestrator     |
|   - routing         |               |   - pipelines       |
|   - spectrum        |               |   - policies        |
|   - snr             |               |   - adapters        |
+---------------------+               +---------------------+
          |                                       |
          +-------------------+-------------------+
                              |
                              v
+---------------------------------------------------------------+
|                     Algorithm Modules                          |
|  routing/    spectrum/    snr/    rl/    failures/             |
+---------------------------------------------------------------+
                              |
                              v
+---------------------------------------------------------------+
|                    Output & Analysis                           |
|     data/output/    logs/    SimStats -> JSON/CSV              |
+---------------------------------------------------------------+

See Architecture for detailed documentation.


Which Architecture Should I Use?

FUSION v6.0 supports two simulation architectures:

Legacy (SDNController)

Orchestrator (SDNOrchestrator)

Enable with

use_orchestrator = False (default)

use_orchestrator = True

Best for

Reproducing existing experiments, simple simulations

New development, RL integration, protection features

Maturity

Stable, well-tested

New in v6.0, under active development

Extensibility

Modify source directly

Add pipeline stages via protocols

RL Support

Limited

Full ControlPolicy interface

Recommendation

  • Use Legacy for: Baseline experiments, algorithm comparison studies, reproducing published results

  • Use Orchestrator for: RL experiments, survivability testing with protection, new feature development

See Architecture for a detailed comparison.


Project Status

Current Version: 6.0.0

Actively Developed

  • Web-based GUI (v6.1)

  • Sphinx documentation (this site)

  • Orchestrator pipeline architecture

  • RL module (UnifiedSimEnv environment)

  • Survivability features (1+1 protection)

Beta Status

  • Failures module (partial orchestrator integration)

  • ML utilities module

  • Visualization plugins

Planned

  • Replace adapters with native orchestrator implementations

  • Multi-band RL support (L-band)

  • Multi-process RL training

See the GitHub Issues for the roadmap.


A Note from the Developer

FUSION has been in development for over three years. What started as an internal research tool has evolved into an open-source project built for the broader optical networking community.

We believe the field needs a trusted baseline simulator—one that is maintainable, well-documented, and designed to outlast any single paper or student. Version 6 marks our commitment to making FUSION a project meant for other people, not just for us.

Read the full manifesto


The Team

FUSION is developed by the Advanced Communications and Networking Laboratory under the guidance of Dr. Vinod Vokkarane (Principal Investigator).

Ryan McCann

Technical & Full-Stack Architect | AI Lead | Product Manager

Responsible for overall simulator architecture, internal system design, and integration of artificial intelligence components. Oversees HPC compatibility, experiment automation (e.g., SLURM), configuration management, and reproducibility. Leads development of intelligent control frameworks including reinforcement learning. Maintains modularity, extensibility, and testing standards to support sustainable growth of the codebase and its scientific integrity.

Arash Rezaee

Networking Systems Lead | Research & Development Lead

Leads implementation of core optical networking features, including traffic modeling, request generation, physical layer constraints, and resource allocation. Develops and maintains modules related to routing, spectrum allocation, SNR measurements, fixed and flex grid handling, grooming support, multi-band and multi-core support, and key performance metrics. Ensures the simulator reflects realistic network assumptions and constraints and guides ongoing networking model extensions.

Contact


Getting Help

Documentation

Community

Contributing

We welcome contributions of all kinds:

Citation

If you use FUSION in your research, please cite:

@INPROCEEDINGS{10898199,
  author={McCann, Ryan and Rezaee, Arash and Vokkarane, Vinod M.},
  booktitle={2024 IEEE International Conference on Advanced Networks and
             Telecommunications Systems (ANTS)},
  title={FUSION: A Flexible Unified Simulator for Intelligent Optical Networking},
  year={2024},
  pages={1-6},
  doi={10.1109/ANTS63515.2024.10898199}
}