Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The Evolutionary Road to Episub #233

Open
4 tasks
vyzo opened this issue Nov 19, 2019 · 1 comment
Open
4 tasks

The Evolutionary Road to Episub #233

vyzo opened this issue Nov 19, 2019 · 1 comment

Comments

@vyzo
Copy link
Collaborator

vyzo commented Nov 19, 2019

Gossipsub is the base pubsub protocol and intermediate step towards our endgame, which is the episub protocol.
Episub can be construed as a set of optimizations over vanilla gossipsub and will get the meshsub/2.0.0 protocol ID, with backwards compatibility with vanilla gossipsub.
Instead of a bing-bang approach, we propose to evolve the implementation of gossipsub towards episub as a set of PRs that expand the scope of the protocol, until we have implemented all the episub features.

Here is a list of the essential features we want for the transition to episub:

  • Peer eXchange on mesh prune; briefly, when a peer gets pruned from the mesh, the pruning peer should return a list of other peers where the pruned peer can connect to reestablish overlay connectivity. This will allow us to recover from pathological bootstrap situations and make the mesh self-bootstrapping. With this extension, we can bootstrap a full mesh starting from a single known peer or a star topology [meshsub/1.1.0].
  • Mesh regrafting; briefly, when a peer receives messages only through gossip and not directly through mesh propagation, we want to regraft that peer into the mesh. This will allow us to recover from overlay pathologies because of failures and node churn and minimize the latency globally [meshsub/1.2.0].
  • Pathological peer greylisting; briefly, when a peer is consistently dropping messages because it has a poor network connection, it should be pruned from the mesh and transition to only gossip. This is the opposite of mesh regrafting for peers and acts as a circuit-breaker [meshsub/1.2.0].
  • Tree forming for stable sources; briefly, this is the fundamental feature of epidemic broadcast trees, which is the inspiration for episub. The idea is that stable sources can form a tree overlay on top of the mesh, where messages from the source only propagate through the tree instead of the full mesh. This will drop the global amplification factor to near 1. This is the final step in the transition, where we switch the protocol to meshsub/2.0.0.

cc @raulk @Stebalien @whyrusleeping @ZenGround0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants