3.1 Updates:
  1. 2023-10-05: Exposed TII reports for this assignment.

CSC435 Distributed Systems
Gossip Calculations using UDP

Professor Clark Elliott

Copyright (c) 2023 by Dr. Clark Elliott with all rights reserved.

NOTE: UNDER CONSTRUCTION—This program will undergo minor adminstration changes for two submissions.



Precisely named submission files:


Summary:

Implement a fully distributed gossip algorithm for calculating or discovering (a) the average value in the network, (b) the size of the network, (c) the maximum and minimum values in the network and then some other gossip functions. Use UDP and serialized Java Objects exclusively for network communications. Nodes may only gossip with immediate neighbors (by node number). This is a relatively easy assignment to start, so at least partial credit should be within reach of everyone.


GossipStarter.java ←You are free to use this utility code (only!) however you like, if you wish, to get started. I strongly recommend that you TYPE IN THIS CODE if you are not yet fully comfortable with network programming.

Administration:


Features of the assignment:


Console commands to be implemented:

All responses are printed on the ONE console, or ALL the consoles in the Gossip [sub-]network as indicated. For EACH of the following preceed all other output with The Local Node ID. MAKE YOUR OUTPUT SUCCINCT, ONE LINE (or fewer) per piece of information when possible. At the end of the output, print at least a blank line to make reading the console output easy.

Design considerations:


Grading your system


Suggested development order:

Write a collection of small utility programs, one per sub-directory. This is "throw-away" code, designed only for you to learn the techniques. In general, you will want to print out information on the consoles of the various processes as a result of these untility methods.

Commentary:

Unlike TCP, UDP never establishes a connection. Once you send a datagram packet off to the network, there is no certain way to know it arrives unless you, yourself, arrange for an ack from the destination. What this means, in practice, is that if no one is listening at that destination, you might not know it. (Some of the time you might get a "destination unreachable" ICMP message from the last router in the chain, but you shouldn't count on this.)

You might want to review our discussions of request / reply / acknowledge protocols which might be useful in your design.