The Colorful Epidemiologist

by Neil Williams

Purpose and Description

The colorful epidemiologist is a graphical representation of a small (400 node) peer-to-peer distributed system using a gossip protocol. I wrote the program in my free time while taking a distributed systems course as a way for me to visualize the dissemination of information through a gossip network.

The program is divided into two parts. The node-client is written in python, and the network status display (the epidemiologist) is written in C# for rapid development. The node-client's source code is included, but the epidemiologist's is not because it is a relatively simple application that is of little interest to the gossip network itself.

Usage

  1. Download the following files:
  2. Start ColorfulEpidemiologist.exe
  3. Run gossip.py (you must have Python 2.5+ installed). As gossip.py initializes, ColorfulEpidemiologist should paint itself black.
  4. gossip.py will start printing out network-connectedness statistics, Wait until the "min" jumps into the 40s.
  5. Double click somewhere in the black area in ColorfulEpidemiologist and select a color in the dialog that appears
  6. Watch the color propogate throughout the network
  7. Continue sending colors as desired

Credits

To make the network scale to larger numbers of nodes, I used a membership protocol described in Correctness of a gossip based membership protocol by Andre Allavena, Alan Demers, and John E. Hopcroft. The protocol works by keeping the addresses of a randomly shifting subset of the whole network on each client. In the case of this program, each node only knows about 50 of the 400 nodes.