-
Notifications
You must be signed in to change notification settings - Fork 58
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
A0-4318: network rate-limiter for the substrate network #1780
A0-4318: network rate-limiter for the substrate network #1780
Conversation
- parametrized by TimeProvider instead of taking `now: Instant` as argument for `rate_limit` - simplified rate_limit method - re-aligned tests of TokenBucket - TokenBucket can be set to rate_per_second = 0 - no data will be read
- seperate RateLimiter implementations for [`tokio::io::AsyncRead`] and [`futures::AsyncRead`] - using [`std::sync::Mutex`] for TokenBucket in RateLimiter - it should allow for `global` rate-limit, not just per connection
… substrate's [`sc_client::network::NetworkWorker`]
- s/alephbft_bit_rate/alephbft_network_bit_rate
…ces `TokenBucket`
…substrate_network
… [`finality-aleph/src/network/build/transport.rs`]
…port.rs`] - removed references to [`libp2p`] from [`finality-aleph/src/network/build/mod.rs`]
04c0718
to
3e7ff62
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice PR, left one question regarding write rate limiting and some nits.
…substrate_network
…d of `requeste` and `available`. It should be also easier now to transform it into wait-free version.
…substrate_network
… - so far only tested locally using 7 instances of aleph-node.
…>` in `network/substrate.rs`
…substrate_network
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I only have one miniscule nit, but we should finish the conversation about how much this actually helps before this gets merged.
…n `finality-aleph/src/network/build/mod.rs`
6b21677
to
21b4b73
Compare
…ant>>` in TokenBucket
…substrate_network
- added ShareTokenBucket, AsyncTokenBucket and ShredBandwidthManager - used for sharing bandwidth between multiple connections
…and Socket-based networks (sync + alephbft) - new default values for rate-limiters (sync + alephbft). 768Kib for alephbft and 5Mib for sync. These values were tested using t3a.xlarge aws instances - nodes were not able to handle more.
…docker/docker_entrypoint.sh to allow configuration of rate-limiting for both sync and alephbft networks
Description
Implementation of the rate-limiter algorithm for the substrate-based part of our network code. It limits only the
read
side of connections.Additionally, now both rate-limit parameters for alephbft and substrate networks apply to all open connection (rate-limit for all nodes, not just single connection).An exploit together with e2e tests will be provided in another PR.Type of change