Skip to content


Folders and files

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]

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/

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

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/

License :

Prototype implementation. Use at your own risks.