LEOPath
Research-grade LEO satellite routing simulator with dynamic topology, routing-state evaluation, and CesiumJS constellation visualization.
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/
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. Thedistance_modeparameter 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 astopological_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 everysegment_refresh_interval_stepssnapshots.
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
- Documentation site: https://fundacio-i2cat.github.io/LEOPath/
- Cesium constellation viewer: https://fundacio-i2cat.github.io/LEOPath/cesium/
- Quickstart: https://fundacio-i2cat.github.io/LEOPath/quickstart/
- Routing algorithms: https://fundacio-i2cat.github.io/LEOPath/algorithms/
- Evaluation guide: https://fundacio-i2cat.github.io/LEOPath/evaluation/
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.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| leopath-0.2.1.tar.gz | 187.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|