feat(p2p): channels with limit of send and recv rate #753
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue being fixed or feature implemented
Mempool sync can DoS a node by sending thousands of transactions and filling whole p2p connection.
What was done?
Introduced new type of channel that can limit send and receive rate of messages and implemented it for mempool.
Changed ChannelIterator to interface, to allow multiple implementations, and implemented
throttledChannelIterator
to read from channel with recv rate limits applied.Introduced new
[mempool]
settings (disabled by default):How Has This Been Tested?
Added unit tests
Tested during Dash Platform load testing.
Breaking Changes
None
Checklist:
For repository code-owners and collaborators only