Search code examples
architecturehyperledgerp2psystem-designhyperledger-sawtooth

Need clarification in documentation of Hyperledger Sawtooth Architecture Guide : Validator Peer to Peer (P2P) Network


I would like to understand the below statementS from this documentation.

Part 1:

The network component continues to perform a peer search if its number of peers is less than the minimum connectivity. The network component rejects peering attempts if its number of peers is equal to or greater than the maximum connectivity.

Part 2:

Even if maximum peer connections is reached, a network service should still accept and respond to a reasonable number of connections (for the purposes of other node topology build outs, etc.)

Question:

The statements in part 1 and part 2 - contradict with each other. Is the documentation wrong?

If not, both are valid... then, under what circumstances each of them is valid over the other?

As per part 1:

network component rejects peering attempts if its number of peers is equal to or greater than the maximum connectivity

And as per part 2:

network service should still accept and respond to a reasonable number of connections.


Solution

  • The confusion may be because, I think "maximum connectivity" is actually "maximum connectivity peering". Connections refer to a basic network connection (0MQ I think) with a remote node, before establishing a peer connectivity with that node. A basic connection would be like a client server connection (the remote node being the server) A peer connectivity would involve a bi directional relationship between the two nodes for message passing (block, batches etc). A basic connection to remote node should be there before starting the peering process.

    Even after maximum peer connections are reached, a node should still accept basic connections for things like, allowing other nodes to get a list of your peers, and may be connect with them or just finding other nodes in the network. A node can get the list of peers of a remote node, without having a peer connection with that remote node.