https://github.com/imdea-software/atomic-multicast
White-box genuine atomic multicast, mirror from
https://github.com/imdea-software/atomic-multicast
Last synced: over 1 year ago
JSON representation
White-box genuine atomic multicast, mirror from
- Host: GitHub
- URL: https://github.com/imdea-software/atomic-multicast
- Owner: imdea-software
- Created: 2019-04-11T23:51:11.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-09-09T08:34:54.000Z (almost 7 years ago)
- Last Synced: 2025-01-06T20:33:25.677Z (over 1 year ago)
- Language: C
- Homepage: https://gitlab.software.imdea.org/multicast/libamcast
- Size: 383 KB
- Stars: 0
- Watchers: 6
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# White-box atomic multicast
This repository contains an implementation of the
[White-Box Atomic Multicast](https://arxiv.org/abs/1904.07171) algorithm.
The implementation is event-driven and rely on [libevent](https://libevent.org)
for asynchronous network communication.
The protocol logic lies in `src/amcast*` and makes use of
[Glib2](https://www.gtk.org/)'s red-black tree and hashmap data structures.
The microbenchmarking application found under the `bench` folder can also drive
[LibMCast](https://bitbucket.org/paulo_coelho/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](https://libevent.org),
[Glib2](https://www.gtk.org), and
[LibMCast](https://bitbucket.org/paulo_coelho/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](https://www.emulab.net) and [Cloudlab](https://cloudlab.us)
environment, this may be generated the `utils/emulab_clusterconf_gen.sh`
## License :
Prototype implementation. Use at your own risks.