49 releases (7 stable)

1.2.1 Jan 27, 2022
1.2.0 Mar 25, 2021
1.1.3 Feb 12, 2021
1.0.0 Dec 23, 2020
0.2.1 Mar 6, 2019

#1340 in Network programming

Download history 1/week @ 2024-07-28 25/week @ 2024-08-04 3/week @ 2024-08-11 2/week @ 2024-08-25 2/week @ 2024-09-01 17/week @ 2024-09-08 20/week @ 2024-09-15 133/week @ 2024-09-22 71/week @ 2024-09-29 14/week @ 2024-10-06 40/week @ 2024-10-13 26/week @ 2024-10-20 2/week @ 2024-10-27 63/week @ 2024-11-03

136 downloads per month

MIT/Apache

63KB
1.5K SLoC

Poldercast's P2P topology organization

This crate implements the Poldercast's Peer to Peer (P2P) topology construction. The idea is to allow the node to participate actively into building the decentralized topology of the p2p network.

This is done through gossiping. This is the process of sharing with others topology information: who is on the network, how to reach them and what are they interested about.

In the poldercast paper there are 3 different modules implementing 3 different strategies to select nodes to gossip to and to select the gossiping data:

  • Cyclon: this module is responsible to add a bit of randomness in the gossiping strategy. It also prevent nodes to be left behind, favouring contacting Nodes we have the least used;
  • Vicinity: this module helps with building an interest-induced links between the nodes of the topology. Making sure that nodes that have common interests are often in touch.
  • Rings: this module create an oriented list of nodes. It is an arbitrary way to link the nodes in the network. For each topics, the node will select a set of close nodes (see documentation in the implementation for more details about this).

Papers of reference

This crate is a concrete implementation of the Poldercast paper:

Customization

Now this crate allows room for different kind of management of the modules. It is possible to add the Poldercast default modules (the default). It is possible to setup a custom topology strategy utilizing part or all of the poldercast's modules or with new custom modules.

License

This project is licensed under either of the following licenses:

Please choose the licence you want to use.

Dependencies

~3.5MB
~63K SLoC