Framework for Distributed Experiments

Supervisor: Kruliš, Zavoral
Intended Scope: Master thesis
Required Skills: C/C++, networking in Linux

Description:

In the future, we would like to extend the Principles of Distributed Systems course by adding some practical assignments. In these assignments, the students will be engaged by technical and implementation aspects of distributed algorithms, such as ensuring causal ordering or total ordering of delivered messages, atomic broadcast, node group management, distributed consensus, etc.

For these assignments (and also for scientific experimentation), we will require a simple framework, that will handle the tedious details of computer internetworking. The framework will be responsible for establishing links between nodes of a distributed system (using both preconfigured information and some discovery mechanisms) and then provide simple API for sending messages between the nodes over TCP protocol (whilst handling serialization/deserialization details). The framework will also implement means for debugging, message tracing/logging, and network/node failure simulations.

The framework will be used in both virtual environment (multiple VMs running in vSpere on our virtualization cluster) and on several low-power devices, such as Raspberry PI computers. The applicability of the framework will be tested by implementing at least one selected distributed problem.

The content is available under Creative Commons BY-NC 3.0 License