GithubHelp home page GithubHelp logo

xuyangcaoucsd / leoem Goto Github PK

View Code? Open in Web Editor NEW
53.0 3.0 8.0 14.77 MB

A real-time low-Earth-orbit satellite network emulator

License: MIT License

MATLAB 8.38% Python 74.53% C 17.09%
low-earth-orbit networking satellite-communication emulator handover simulator tcp wireless-network

leoem's Introduction

LeoEM: a Real-Time LEO Satellite Network Emulator 🛰️

from SaTCP: Link-Layer Informed TCP Adaptation for Highly Dynamic LEO Satellite Networks, IEEE INFOCOM 2023

Xuyang Cao ([email protected]) and Prof. Xinyu Zhang ([email protected]) from University of California San Diego

LeoEM emulates highly dynamic low-Earth-Orbit (LEO) satellite networks (satnets) with crucial configurable parameters (e.g., whether to use inter-satellite laser or bent-pipe radio for the physical layer) and features (e.g., the presence of handovers). It faithfully represents not only the LEO satnets but also the network stack in the end hosts' OS, so any program can be natively run and evaluated over the dynamic links in real time. Not constrained by application-level simulation, the network has a high degree of real-time observability. For example, video streams can be exchanged between two ends of an emulated satnet path, isolated by two network namespaces. Meanwhile, the media quality can be directly monitored through playback. Therefore, LeoEM provides a powerful and flexible platform for researchers to experiment their innovations targeting LEO satellite networks.

Overview

To use LeoEM, let's first understand the following high-level workflow and the function of each component.

We can see LeoEM is divided into three stages.

Image: workflow.png


NOTE

The details (e.g., prerequisites, setups, execution, and principles) of each component can be found in the README of its corresponding subdirectory.


Stage 1: LEO Constellation Construction

Given our ultimate goal is to emulate the network, we will first derive the time-varying spatial data of all the network components in the constellation. I.e., satellites. In this way, we can calculate the connectivity among nodes, latency of a link, and candidate routes at a certain moment.

Essentially, you specify the key parameters of a LEO constellation in constellation_params/, which will then be fed into some orbit propogation software. The software will calculate the dynamic 3D location of the celestial object using reasonable orbit models, at a certain frame rate, across one orbit period. In our case, those of all the satellites in the constellation will be computed and saved. For this purpose, we adopt StarPerf's solution and implementation. Big thanks to StarPerf and their detailed explainations to our questions. Please see StarPerf_MATLAB_stage/ for details.

The spatial data output will reside in constellation_output/.

Some LEO systems' data are available at StarPerf and you could directly use them for stage 2.

Stage 2: Dynamic Route Computation

Knowing how nodes move over time from stage 1, you specify the source and destination. You also choose inter-satellite lasers or bent-pipe radios as the links. To use bent-pipe, ground station locations (ground_stations.xlsx) will be needed for relaying purpose. We adopt shortest-path/Dijkstra's algorithm for route computation with the propogation latency as the weight. We adopt yet considerably modify StarPerf's route computation framework. Big thanks to StarPerf again. Please see route_stage/ for details.

Stage 2 hence outputs the precomputed end-to-end dynamic routes across one oribtal period, after which they just repeat. They reside in precomputed_paths/.

Stage 3: Real-Time Network Emulation

Finally, the route data from stage 2 will be fed to the emulator process(es), and now you can experience the LEO satnet! Specifically, two network namespaces will be created, and they are reachable from each other through the emulated dynamic network. Also, handovers and less-disruptive events will be introduced to the network as well. The underlying technology is Mininet and a set of Linux network utilities. Please see emulation_stage/ for details.

What exciting is you can run (networked) programs natively on the two namespaces which represent two end UEs, and observe the behaviors of the entire real software network stack in real time. That means you can see how the physical dynamics may impact the IP-, transport-, application-layer implementations. Furthermore, you can modify the network stack in kernel or userspace to experiment your idea against the high network dynamics!

Please check each folder to start LeoEM, following the above workflow. Don't hesitate to ask us questions!

SaTCP

Another main contribution of the paper is SaTCP, a link-layer informed TCP adaptation that inhibits the congestion control when a handover is approaching. We also open-source our SaTCP implementation and the calculation of handover prediction error (i.e., report timing error in the paper). For details and the integration with LeoEM, please see emulation_stage/satcp/. To understand its principle, please see the paper.

Citing LeoEM or SaTCP

If you use LeoEM or SaTCP, please cite with the following BibTeX entry.

@inproceedings{infocom2023satcp,
  title={SaTCP: Link-Layer Informed TCP Adaptation for Highly Dynamic LEO Satellite Networks,
  author={Cao, Xuyang and Zhang, Xinyu},
  year={2023},
  booktitle={IEEE INFOCOM 2023 - IEEE Conference on Computer Communications},
}

Thank You for Writing READMEs of the Nature and Engineering on Them

of course

OCISLY Autonomous Spaceport Droneship by SpaceX

Shannon

Claude Shannon

Prinicipia

Philosophiæ Naturalis Principia Mathematica

leoem's People

Contributors

xuyangcaoucsd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

leoem's Issues

Some typo issues related to using StarPerf's public spatial data

Thanks for this interesting tool. Some typo issues found when using it:

The file paths of "constellation_outputs/" should be "../constellation_outputs/" in precompute_path_15s{bp,isl}.py_, if the scripts were to be executed under route_stage/ directory. Otherwise, File Not Found error would be thrown out.

Also, when using StarPerf's public spatial data, the downloaded Starlink's data is named as StarLink, while the example commands in the README.md of route_state is Starlink. This may also cause File Not Found error.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.