Hypatia is a low earth orbit (LEO) satellite network simulation framework. It pre-calculates network state over time, enables packet-level simulations using ns-3 and provides visualizations to aid understanding.
It consists of four main components:
satgenpy
: Python framework to generate LEO satellite networks and generate
routing over time over a period of time. It additionally includes several
analysis tools to study individual cases. It makes use of several Python modules
among which: numpy, astropy, ephem, networkx, sgp4, geopy, matplotlib,
statsmodels, cartopy (and its dependent (data) packages: libproj-dev, proj-data,
proj-bin, libgeos-dev), and exputil.
More information can be found in satgenpy/README.md
.
(license: MIT)
ns3-sat-sim
: ns-3 based framework which takes as input the state generated
by satgenpy
to perform packet-level simulations over LEO satellite networks.
It makes use of the satellite
ns-3 module by Pedro Silva to calculate satellite locations over time.
It uses the basic-sim
ns-3 module to make e.g., running end-to-end TCP flows easier, which makes use of several Python
modules (e.g., numpy, statsmodels, exputil) as well as several other packages (e.g., OpenMPI, lcov, gnuplot).
More information can be found in ns3-sat-sim/README.md
.
(license: GNU GPL version 2)
satviz
: Cesium visualization pipeline to generate interactive satellite network
visualizations. It makes use of the online Cesium API by generating CesiumJS code.
The API calls require its user to obtain a Cesium access token (via https://cesium.com/).
More information can be found in satviz/README.md
.
(license: MIT)
paper
: Experimental and plotting code to reproduce the experiments and
figures which are presented in the paper.
It makes use of several Python modules among which: satgenpy, numpy, networkload, and exputil.
It uses the gnuplot package for most of its plotting.
More information can be found in paper/README.md
.
(license: MIT)
(there is a fifth folder called integration_tests
which is used for integration testing purposes)
This is the code repository introduced and used in “Exploring the “Internet from space” with Hypatia” by Simon Kassing, Debopam Bhattacherjee, André Baptista Águas, Jens Eirik Saethre and Ankit Singla (*equal contribution), which is published in the Internet Measurement Conference (IMC) 2020.
BibTeX citation:
@inproceedings {hypatia,
author = {Kassing, Simon and Bhattacherjee, Debopam and Águas, André Baptista and Saethre, Jens Eirik and Singla, Ankit},
title = ,
booktitle = ,
year = {2020}
}
bash hypatia_install_dependencies.sh
bash hypatia_build.sh
bash hypatia_run_tests.sh
paper/README.md
.Most of the visualizations in the paper are available here.
All of the visualizations can be regenerated using scripts available in satviz
as discussed above.
Below are some examples of visualizations:
SpaceX Starlink 5-shell side-view (left) and top-view (right). To know the configuration of the shells, click here.
Amazon Kuiper 3-shell side-view (left) and top-view (right). To know the configuration of the shells, click here.
RTT changes over time between Paris and Luanda over Starlink 1st shell. Left: 117 ms, Right: 85 ms. Click on the images for 3D interactive visualizations.
Link utilizations change over time, even with the input traffic being static. For Kuiper 1st shell, path between Chicago and Zhengzhou at 10s (top) and 150s (bottom). Click on the images for 3D interactive visualizations.