Skip to content

FUSION is an open-source project aimed at revolutionizing networking through the simulation of advanced SD-EONs and AI-enhanced networks, inviting community collaboration to shape the future of networking.

License

Notifications You must be signed in to change notification settings

SDNNetSim/FUSION

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

FUSION

Flexible, Unified Simulator for Intelligent Optical Networking


Documentation: https://sdnnetsim.github.io/FUSION/


About This Project

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.

We welcome contributions from the community. See our Contributing Guide to get started.

Documentation

Full documentation is available at: https://sdnnetsim.github.io/FUSION/

Key sections:

Building Documentation Locally

If you prefer to build the documentation locally:

# Install documentation dependencies
pip install -r docs/requirements.txt

# Build the documentation
cd docs
make html          # macOS/Linux
.\make.bat html    # Windows

# View locally
make serve         # Then visit http://localhost:8000
# Or open docs/_build/html/index.html directly

Getting Started

Supported Operating Systems

  • macOS (requires manual compilation steps)
  • Ubuntu 20.04+
  • Fedora 37+
  • Windows 11

Supported Programming Languages

  • Python 3.11.X

Installation Instructions

FUSION offers multiple installation methods. Choose the one that best fits your needs:

Automatic Installation (Recommended)

For the easiest setup experience, use our automated installation script:

# Clone the repository
git clone git@github.com:SDNNetSim/FUSION.git
cd FUSION

# Create and activate a Python 3.11 virtual environment
python3.11 -m venv venv
source venv/bin/activate

# Run automated installation
./install.sh

The script automatically:

  • Detects your platform (macOS, Linux, Windows)
  • Handles PyTorch Geometric compilation issues
  • Installs all dependencies in the correct order
  • Sets up development tools
  • Installs and configures pre-commit hooks
  • Verifies the installation

Package Installation

For a more controlled installation using Python packaging:

# Clone and create venv (same as above)
git clone git@github.com:SDNNetSim/FUSION.git
cd FUSION
python3.11 -m venv venv
source venv/bin/activate

# Install core package
pip install -e .

# Install optional components as needed:
pip install -e .[dev]        # Development tools (ruff, mypy, pytest, pre-commit)
pip install -e .[rl]         # Reinforcement learning (stable-baselines3)
pip install -e .[all]        # Everything except PyTorch Geometric

# Install pre-commit hooks (for development)
pre-commit install
pre-commit install --hook-type commit-msg

# PyTorch Geometric requires manual installation:
# macOS (Apple Silicon):
MACOSX_DEPLOYMENT_TARGET=11.0 pip install --no-build-isolation torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-2.2.2+cpu.html

# macOS (Intel):
MACOSX_DEPLOYMENT_TARGET=10.15 pip install --no-build-isolation torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-2.2.2+cpu.html

# Linux/Windows:
pip install torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-2.2.2+cpu.html

# Finally install PyTorch Geometric:
pip install torch-geometric==2.6.1

Legacy Requirements Installation

If you prefer using requirements files:

# Core dependencies
pip install torch==2.2.2
pip install -r requirements.txt
pip install -r requirements-dev.txt

Note: This method may fail on PyTorch Geometric packages. Use the automatic installer instead.


Standards and Guidelines

To maintain the quality and consistency of the codebase, we adhere to the following standards and guidelines:

  1. Commit Formatting: Follow the commit format specified here.
  2. Code Style: All code should follow the PEP 8 coding style guidelines.
  3. Versioning: Use the semantic versioning system for all git tags.
  4. Coding Guidelines: Adhere to the team's coding guidelines document.
  5. Unit Testing: Each unit test should follow the FUSION testing standards.

Contributors

This project is brought to you by the efforts of Arash Rezaee, Ryan McCann, and Vinod M. Vokkarane. We welcome contributions from the community to help make this project even better!


Publications

Primary Citation

If you use FUSION in your research, please cite the following paper:

R. McCann, A. Rezaee, and V. M. Vokkarane, "FUSION: A Flexible Unified Simulator for Intelligent Optical Networking," 2024 IEEE International Conference on Advanced Networks and Telecommunications Systems (ANTS), Guwahati, India, 2024, pp. 1-6. DOI: 10.1109/ANTS63515.2024.10898199

BibTeX

@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}
}

Related Publications

This section will be updated as research using FUSION is published. If you have published work using FUSION, please open an issue or pull request to add it here.


Development & Contributing

Setting Up Pre-commit Hooks

The project uses pre-commit hooks for code quality checks. Set them up once:

# Install pre-commit (if not already installed)
pip install pre-commit

# Install the git hooks
pre-commit install

# Install commit message hook
pre-commit install --hook-type commit-msg

Running Code Quality Checks

Pre-commit hooks (recommended):

# Run all checks on staged files
pre-commit run

# Run all checks on all files
pre-commit run --all-files

# Run specific hook
pre-commit run ruff --all-files
pre-commit run mypy --all-files

Using Makefile:

# Run tests
make test

# Run linting (using pre-commit)
make lint

# Full validation (lint + tests)
make validate

# Clean up generated files
make clean

What Gets Validated

Pre-commit hooks check:

  • Ruff - Code linting and formatting (replaces pylint)
  • Mypy - Type checking
  • Vulture - Dead code detection
  • Bandit - Security vulnerability scanning
  • Pre-commit hooks - Trailing whitespace, file endings, YAML validation
  • Conventional commits - Commit message format

Development Workflow

  1. Install pre-commit hooks (one time): pre-commit install
  2. Make your changes
  3. Stage files: git add .
  4. Hooks run automatically on commit, or run manually: pre-commit run
  5. Run tests: make test or pytest
  6. Submit your PR - all checks should pass

For more details, see CONTRIBUTING.md.

About

FUSION is an open-source project aimed at revolutionizing networking through the simulation of advanced SD-EONs and AI-enhanced networks, inviting community collaboration to shape the future of networking.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 7