Skip to content

Commit

Permalink
init commit
Browse files Browse the repository at this point in the history
  • Loading branch information
patrickkon committed Sep 3, 2022
0 parents commit 3367d79
Show file tree
Hide file tree
Showing 208 changed files with 16,853 additions and 0 deletions.
17 changes: 17 additions & 0 deletions .gitignore
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
3 changes: 3 additions & 0 deletions .gitmodules
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
29 changes: 29 additions & 0 deletions README.md
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 -->
22 changes: 22 additions & 0 deletions hypatia_plus/README.md
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
```
Loading

0 comments on commit 3367d79

Please sign in to comment.