gossip_mp1
=====
Implementation of Gossip Protocol as described in http://publicatio.bibl.u-szeged.hu/1529/1/gossip11.pdf
Sebastian Fernandez, Gabby Munger, Justin Gomez
Description
This program creates a network of independent nodes which spread a message via the gossip protocol, with the intention of using this program to gather data on runtime between the three different protocols (Push, Pull, and Push-Pull) and on systems of varying size.
How To Run
1. Clone Git Repository
2. Run using:
go run main.go
3. Input the message you would like to send
The type of message(i.e. int, float, boolean, string) does not matter, as the program will read it as a string. There is strange behavior exhibited if the string includes a space, however the program still gives the desired output, as shown below.
4. Input the specific gossip protocol to use.
There are three protocols to choose from: push, pull, and push-pull. As described by Jelasity:
In push gossip, susceptible nodes are passive and infective nodes actively infect the population. In pull and push-pull gossip each node is active.
The program will create a system of nodes that executes the desired gossip protocol to send a message between all of the nodes. The number of nodes in the system can be changed according to the instructions in the block comment at the top of main.go.
5. Example of expected output:
This example shows an input of systems as the message, and a to indicate the Push protocol in a system of 100 nodes. The output displays the time taken to complete the gossip protocol.
This example shows an input of message as the message, and b to indicate the Pull protocol in a system of 100 nodes. The output displays the time taken to complete the gossip protocol.
This example shows an input of hello as the message, and c to indicate the Push-Pull protocol in a system of 20 nodes. The output displays the time taken to complete the gossip protocol.
Occasionally an error occurs when running the Push-Pull algorithm, resulting in a deadlock. This can be resolved by running the program again.