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

Consensus: Peer Stats on Faulty Behavior #6118

Closed
4 tasks
Tracked by #65 ...
alexanderbez opened this issue Feb 16, 2021 · 2 comments
Closed
4 tasks
Tracked by #65 ...

Consensus: Peer Stats on Faulty Behavior #6118

alexanderbez opened this issue Feb 16, 2021 · 2 comments
Labels
C:consensus Component: Consensus S:proposal Status: Proposal stale for use by stalebot

Comments

@alexanderbez
Copy link
Contributor

Summary

ref: #5969 (review)

I guess the only qualm I have is that we have two stats that we use to keep track of peer behavior (votes and blocks) but the peer manager is never informed when anything bad happens i.e. invalid proposal or invalid vote.

While the peer manager and scoring system is still, at this moment, being fleshed out, we should consider if it is worthwhile to introduce stats, and as a result, peer updates to adjust peers scores when a given peer sends an invalid proposal or vote.

Currently, we only track "good" behavior and not any "bad" behavior.

/cc @cmwaters @ebuchman @brapse @melekes


For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned
@alexanderbez alexanderbez added C:consensus Component: Consensus S:proposal Status: Proposal labels Feb 16, 2021
@cmwaters
Copy link
Contributor

I would just like to append a few observations concerning this:

  1. Errors are currently just logged and not sent back to the reactor to update the peer manager
  2. What is sent back, if successful, is the entire original message through the statsMsgQueue whereas the only information the reactor cares about is "was it either a valid and helpful message or invalid and malicious".
  3. This comment here:
// if err == ErrAddingVote {
	// TODO: punish peer
	// We probably don't want to stop the peer here. The vote does not
	// necessarily comes from a malicious peer but can be just broadcasted by
	// a typical peer.
	// https://github.com/tendermint/tendermint/issues/1281
// }

seems to indicate that nodes will continue to broadcast invalid votes. Why does this happen?

@alexanderbez
Copy link
Contributor Author

Right, it seems like we can and just should augment the statsMsgQueue to reflect good and bad behavior so Reactor#peerStatsRoutine can handle these events accordingly.

@github-actions github-actions bot added the stale for use by stalebot label Jul 18, 2023
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Jul 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C:consensus Component: Consensus S:proposal Status: Proposal stale for use by stalebot
Projects
None yet
Development

No branches or pull requests

2 participants