Skip to content

imdea-software/atomic-multicast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

White-box atomic multicast

This repository contains an implementation of the White-Box Atomic Multicast algorithm.

The implementation is event-driven and rely on libevent for asynchronous network communication.

The protocol logic lies in src/amcast* and makes use of Glib2's red-black tree and hashmap data structures.

The microbenchmarking application found under the bench folder can also drive LibMCast's servers to conduct a comparative study with other genuine atomic multicast protocols it implements.

Build :

git clone [this repo url]
make

Depends directly on libevent, Glib2, and LibMCast only for benchmarking purposes.

Usage :

Sample usage as a library may be found under bench/node-bench.c which instantiate server or clients on a single machine.

One-time experiments can be run with bench/runbench_tmux.sh.

Experiments for a range of clients, destination groups and protocols may be run with bench/run_cmpbench.sh

Configuration :

Pay attention to environment-specific variables in each bench script.

A cluster configuration read by bench/node-bench.c from stdin should be formatted as a tsv in the following manner: NODE_ID\tGROUP_ID\tIP_ADDR\tLISTENER_PORT, One line per server and client nodes.

On Emulab and Cloudlab environment, this may be generated the utils/emulab_clusterconf_gen.sh

License :

Prototype implementation. Use at your own risks.