Skip to main content

A user-friendly, extensible Python-based simulator for analyzing routing algorithms in LEO satellite constellations.

Project description

LEOPath

LEOPath logo

Research-grade LEO satellite routing simulator with dynamic topology, routing-state evaluation, and CesiumJS constellation visualization.

PyPI PyPI status Python 3.8+ License: AGPL-3.0 Documentation CesiumJS demo GitHub stars GitHub issues Last commit Code style: black

LEOPath helps researchers and network engineers study how routing algorithms behave when the network itself is moving. It generates synthetic LEO constellations, builds time-varying inter-satellite and ground-to-satellite links, computes forwarding state, and exports metrics for scalability studies.

The short version: use LEOPath when you want to compare routing strategies under realistic orbital dynamics without building a full packet-level simulator first.

Highlights

  • Dynamic LEO topology generation from configurable constellation parameters and SGP4/TLE data.
  • Inter-satellite links (ISLs), ground-to-satellite links (GSLs), and nearest-satellite attachment models.
  • Pluggable routing algorithms for link-state, topological, predictive, and explicit-path approaches.
  • Evaluation harness for stretch, churn, forwarding-state size, and compute-time metrics.
  • Browser-based CesiumJS visualization for inspecting constellations, ISLs, GSLs, and orbital motion.
  • Docker-first workflow for reproducible runs, plus editable local Python installs for development.

Visualization

One of LEOPath's best features is the interactive constellation viewer:

Open the live Cesium demo: https://fundacio-i2cat.github.io/LEOPath/cesium/

LEOPath Cesium constellation visualization demo

The viewer runs in the browser and lets you inspect satellite motion, ring vs +grid ISL topologies, ground stations, nearest-visible GSL attachments, and dense constellation samples.

Quickstart

Run with Docker

git clone https://github.com/Fundacio-i2CAT/LEOPath.git
cd LEOPath
./run-simulations.sh run -c leopath/config/ether_simple.yaml

Generate a local visualization

./run-simulations.sh visualise -c leopath/config/ether_simple.yaml

Open http://localhost:8080.

Run from source

python -m venv .venv
source .venv/bin/activate
pip install -e .
leopath --config leopath/config/ether_simple.yaml

What You Can Study

Question LEOPath output
How much stretch does a routing strategy introduce? Hop and distance stretch vs shortest-path baseline
How often does forwarding state change? Per-step churn metrics
How much state does each satellite need? Forwarding-state size metrics
How expensive is route recomputation? Per-step compute-time metrics
How does topology shape behavior? Ring and +grid ISL scenarios

Routing Algorithms

LEOPath currently includes:

  • shortest_path_link_state: Dijkstra baseline over each dynamic topology snapshot.
  • topological_routing: 6G-RUPA-inspired forwarding using structured satellite addresses.
  • predictive_link_state: link-state computed on a predicted future topology snapshot.
  • explicit_path_routing: centrally planned explicit-path routing with pinned satellite paths.

New routing algorithms can be added under leopath/network_state/routing_algorithms/ and registered in the routing algorithm factory.

Evaluation Workflow

Run a compact evaluation matrix:

./run-quick-eval.sh

Generate paper-oriented evaluation outputs:

./run-paper-eval.sh

Common outputs include CSV metrics, logs, plots, and metadata describing algorithm parameters and topology scenarios.

Documentation

Build and serve docs locally:

bash scripts/build-docs-site.sh
python -m http.server -d site

Then open http://localhost:8000.

Project Scope

LEOPath focuses on topology, routing state, and scalability metrics. It is not a packet-level simulator and does not model TCP/IP stacks, queues, PHY behavior, or detailed link-layer effects.

For packet-level studies, use LEOPath to generate forwarding-state artifacts and connect them to tools such as NS-3.

Development

python -m venv .venv
source .venv/bin/activate
pip install -e .
pytest
flake8
black .

Contributing

Contributions are welcome. Good first areas are new routing algorithms, additional constellation presets, visualization improvements, evaluation metrics, and documentation examples.

Before opening a pull request, run tests and formatters, and include a short note explaining the scenario or metric affected by the change.

License

LEOPath is released under the AGPL-3.0 license.

i2CAT logo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

leopath-0.1.3.tar.gz (132.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

leopath-0.1.3-py3-none-any.whl (152.9 kB view details)

Uploaded Python 3

File details

Details for the file leopath-0.1.3.tar.gz.

File metadata

  • Download URL: leopath-0.1.3.tar.gz
  • Upload date:
  • Size: 132.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for leopath-0.1.3.tar.gz
Algorithm Hash digest
SHA256 ea8ed2ca1e2cea75dd0eac91841922c6d4e7f3cfeb70482a2df11747b256561a
MD5 2097adc853fdaff29a210389b2645fb0
BLAKE2b-256 0606ce3f64b8efd91a4c95b34369bcfc190bb6b394eaf4d80040839749e110dc

See more details on using hashes here.

File details

Details for the file leopath-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: leopath-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 152.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for leopath-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a90378ef546c59b7e516d5d149f089adad1e801cc3bd21dd3ad6bc5fa8b9f8fc
MD5 98009531f1e8308f3e9153840ef90844
BLAKE2b-256 15e128b7ac11dfdef4ab77332e38d960c71bea7672807fe539d70160c92a859e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page