Skip to main content

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 covering link-state, topological, DRA, 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

https://github.com/user-attachments/assets/960df2e5-3f7a-4cd3-a3c2-8b9923298a53

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, +grid and three-laser brick-wall ISL scenarios
Does per-satellite state grow with the constellation? Per-shell runs on FCC-filed shells, and geometry derived from shell constants instead of measured
What does a ground station attached to several satellites cost? Address changes, flow-update messages and stretch per address policy

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. The distance_mode parameter picks the metric, from plain hop count on the logical torus up to the pivot-weighted estimator that accounts for how much longer inter-plane ISLs get near the equator.
  • dra_routing: the DRA family of Ekici, Akyildiz and Bender, pinned to hop-count distance on logical (plane, slot) coordinates. Same forwarding machinery as topological_routing, so a run against it isolates the effect of the distance function and nothing else.
  • explicit_path_routing: centrally planned explicit-path routing with pinned satellite paths, replanned every segment_refresh_interval_steps snapshots.

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

Metadata

Release files for leopath 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for leopath 0.2.1
File Size Uploaded
leopath-0.2.1.tar.gz 187.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for leopath 0.2.1
File Interpreter ABI Platform
leopath-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 406.7 kB

Release files / leopath-0.2.1.tar.gz

Download URL leopath-0.2.1.tar.gz
Size 187.4 kB
Tags Source
SHA-256 checksum
How to use checksums
300170abe948ac5e413e810a0ef8feb33755ffea69174972bc3769378677e367
BLAKE2b-256 checksum
How to use checksums
4907b77bb53968d13550a2c7dd032e354af7526851aa62f80797395eb9a84547
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / leopath-0.2.1-py3-none-any.whl

Download URL leopath-0.2.1-py3-none-any.whl
Size 219.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
09aa6259d1a4ff04a9ddb7a06c607b0ebab4042734ca3c186a18d7b7f9af49dc
BLAKE2b-256 checksum
How to use checksums
5da8ec80afd0f5d99e3d09659b6af168c8bdc424e8750b81097a6beccf4d3f8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page