-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 3367d79
Showing
208 changed files
with
16,853 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
hypatia_plus/gen_data/* | ||
hypatia_plus/__pycache__/* | ||
hypatia_plus/isls/__pycache__/* | ||
k8s-emulator/bash-cni-plugin/*/ | ||
k8s-emulator/gen_cluster_data/* | ||
hypatia_plus/data/starlink_*/*.txt | ||
k8s-emulator/utils/__pycache__/*.pyc | ||
k8s-emulator/k8s_images/*/node_modules/* | ||
k8s-emulator/tests/results/graphs/dummy_scatter_hist.pdf | ||
k8s-emulator/tests/results/graphs/test_graph.py | ||
k8s-emulator/tests/results/logs/__pycache__/log_utils.cpython-37.pyc | ||
k8s-emulator/tests/workloads/cset/*/setup_route.sh | ||
k8s-emulator/tests/results/graphs/cset/test.pdf | ||
k8s-emulator/gen_cluster_data/topo_with_interface_and_ip_file.txt | ||
k8s-emulator/gen_cluster_data/topo_with_interface_file.txt | ||
k8s-emulator/br1.xml | ||
k8s-emulator/tests_temp.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
[submodule "dependencies/hypatia"] | ||
path = dependencies/hypatia | ||
url = https://github.com/patrickkon/hypatia.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# Stargaze: A LEO Constellation Emulator for Security Experimentation | ||
|
||
Stargaze is a first attempt at a low-earth orbit (LEO) constellation emulator geared towards security experimentation, with the ability to deploy real application code within the devices and network connectivity between the devices, along with runtime and management APIs that allow for the manipulation of the constellation in a variety of ways. | ||
|
||
## Introduction | ||
LEO constellations' recent meteoric rise has led to the proposition of many novel use cases and applications, with research also highlighting the broad and unique threat landscape afflicting them. Stargaze runs on a local Kubernetes (k8s) cluster, where each VM (managed by KVM) corresponds to a device (e.g., a LEO satellite, user device, or GS). Stargaze only requires a constellation initialization script provided by the user, which it will ingest to generate a LEO constellation with precomputed (using tools in Hypatia) variations in link latency, bandwidth and connectivity before start-up, according to the configured emulation timescale and timestep granularity. More details can be found here: Stargaze (CPS&IOT '22, colocated with CCS '22). | ||
|
||
## Repository Organization | ||
This repository is split into 3 main folders: | ||
- k8s-emulator: constellation generator. This is the only directory a user needs to access. | ||
- dependencies: external github submodules that Stargaze currently uses. | ||
- hypatia_plus: holds multiple scripts that access the Hypatia submodule to extract network information. | ||
|
||
## Usage: | ||
Please refer to the README.md in k8s-emulator/ | ||
|
||
## Disclaimer | ||
As Stargaze is ongoing work, our emulation fidelity still requires significant improvement. For example, Stargaze does not currently emulate atmospheric attenuation beyond having a coarse-grain static threshold. These will be added incrementally. Please also consider contributing to Stargaze if this is a urgent feature request. Thank you for your patience! | ||
|
||
## Contributing | ||
There's a lot more to build and we welcome all contributions! For a list of feature ideas, please contact @patrickkon directly! | ||
|
||
## Citing: | ||
If you feel our paper and code is helpful, please consider citing our paper by: | ||
|
||
|
||
<!-- ### Note: | ||
1. Hypatia submodule is our own modified fork. | ||
2. sh setup_host.sh --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
|
||
|
||
## Main toolset: | ||
- Obtain satellite and GS position info. | ||
|
||
- Get satellites in range of each GS at this time step, sorted in increasing order of latency. | ||
|
||
- Get ISLs (+grid [find_grid_links or generate_plus_grid_isls] or intra orbital plane [find_orbit_links] or empty isls [generate_empty_isls] for now) at this time step. | ||
|
||
- Get ISLs in range (note we do not expect this to change much) of given group of satellites, at this time step. | ||
|
||
- Get shortest paths to all satellites in the given group, at this time step. | ||
|
||
- Get link utilization (ISLs and GS-sat link) at this time step. | ||
|
||
- Notify k8s cluster scheduler at every time step. | ||
|
||
# Steps: | ||
```bash | ||
# Run this command in this directory: | ||
bash main.sh | ||
``` |
Oops, something went wrong.