GossipLib is a Java library supporting the development of gossip-based application in a large-scale setting.
Initially introduced as a family of algorithms for maintaining
replicated database systems, gossip-based protocols have been applied
in a wide range of situations such as data dissemination, overlay
maintenance, and, more recently, also in
peer-to-peer streaming applications. In a gossip, each node
periodically exchanges messages with randomly selected nodes in order
to disseminate data, exchange membership information, or build
The structure of a gossip-based application essentially consists of two
blocks of code: the Active Cycle and the Passive Cycle. The former is
executed periodically with a specified gossip frequency. The latter is
instead executed reactively upon the receipt of a gossip message.
During each active cycle, a node selects one or more other nodes to
communicate with and send them a message representing a snapshot or
part of its own state. The nodes receiving the message execute their
passive cycle which uses the information in the message to modify their
own state accordingly. This kind of interaction is present in all
types of gossip protocol and goes under the name of Push phase. In
addition to this, some gossip protocol also incorporate a pull-phase.
In such protocol, the passive cycle does not only modify the state of
the node, but also sends a reply message back to the sender. This
pull-gossip also contains information extracted from the state of the
sending node. However, the structures of the two messages may be
completely different. In principle the process may be iterated an
arbitrary number of times, even though, two phases are most common and
in practice protocols normally do not include more than three phases of
consecutive information exchange between a given pair of nodes.
GossipLib provides application developer with a set of support classes
that constitute a solid starting point for building any gossip-based
application. GossipLib is designed to facilitate code reuse and testing
distributed application and as thus also provides the implementation of
a number of standard gossip protocols that may be used out of the box
or extended to build more complex protocols and applications. These
include for example the peer-sampling protocols for overlay management.
GossipLib also provides facility for the configuration and deployment
of applications as final-product but also as research prototype in
environments like PlanetLab, clusters, network emulators, and even as
event-based simulation. Based on the GenericRuntime library, the code
developed with GossipLib can be run both as a real application and in
simulation simply by changing one line in a configuration file.
The current version of GossipLib provides the implementation of a
peer-sampling protocol, as well as a demo application enabling the
visualization of the execution of the protocols. The architecture of
GossipLib is designed to facilitate code-reuse. Each gossip-based
component may be used as a building block to develop new and more
complex protocols and applicaitions.