This repository contains the example application we use to evaluate Celestial. Check out the main repository to learn more about Celestial!
There are three clients, a tracker, and a number of satellite (or cloud) servers.
The clients are based on Matthew Rahtz' ultra_ping utility, which we heavily modified for our use case.
It sends UDP packets based on the included workload.csv WebRTC traces.
The tracker selects an optimal satellite server and instructs clients to send their data to that server.
The server forwards UDP packets to the three clients and duplicates incoming packets.
This is based on NFTables.
We include several Jupyter notebooks in this repository to help you analyze and graph your results.
To try out the videoconferencing evaluation, you need:
- a Celestial testbed including a Coordinator with database features enabled
- the Celestial
rootfsbuilderDocker image built - Docker
- go version >=1.16 installed and on your
PATH make- the ability to configure and build Linux kernels (see the Celestial's documentation for more information on this)
First, build the root filesystems for the three components.
Simply use make to build everything.
You will end up with tracker.img, alt-tracker.img, server.img, and
client.img in this folder.
Use the client/client-kernel.config and server/server-kernel.config to
build client-linux.bin and server-linux.bin Linux kernels.
Note that using off-the-shelf kernels will not work in most situations since
the server needs support for NFTables duplication and clients need to trust
the host's randomness pool.
However, you can use the default Celestial kernel
for clients.
Make sure that your Celestial hosts have all root filesystems and kernels in their
/celestial directory.
Depending on your setup, you may need to adapt the included Celestial configuration
files.
There is videoconference-cloud.toml for the cloud-based application and
videoconference-satellite.toml for the satellite server based application.
Make sure that all host addresses and your Coordinator's address for the database
are set correctly.