OpenFogStack / celestial-videoconferencing-evaluation

GNU General Public License v3.0
2 stars 0 forks source link

Celestial: Videoconferencing Evaluation

This repository contains the example application we use to evaluate Celestial. Check out the main repository to learn more about Celestial!

Application

There are three clients, a tracker, and a number of satellite (or cloud) servers.

Client

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.

Tracker

The tracker selects an optimal satellite server and instructs clients to send their data to that server.

Server

The server forwards UDP packets to the three clients and duplicates incoming packets. This is based on NFTables.

Evaluation

We include several Jupyter notebooks in this repository to help you analyze and graph your results.

Usage

To try out the videoconferencing evaluation, you need:

Building Root Filesystems

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.

Building Kernel

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.

Copying Everything Over

Make sure that your Celestial hosts have all root filesystems and kernels in their /celestial directory.

Configuring Configuration Files

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.