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.
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:
meshsub/1.1.0
].meshsub/1.2.0
].meshsub/1.2.0
].meshsub/2.0.0
.cc @raulk @Stebalien @whyrusleeping @ZenGround0