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

fix: bump flood ban messages config #3799

Merged
merged 3 commits into from
Feb 7, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions applications/launchpad/backend/assets/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ track_reorgs = true

[base_node.dibbler]
db_type = "lmdb"
flood_ban_max_msg_count = 10000
flood_ban_max_msg_count = 100_000
allow_test_addresses = false
use_libtor = false
base_node_identity_file = "/var/tari/base_node/config/dibbler/tari_base_node_id.json"
Expand All @@ -65,7 +65,7 @@ grpc_base_node_address = "0.0.0.0:18142"

[base_node.igor]
db_type = "lmdb"
flood_ban_max_msg_count = 10000
flood_ban_max_msg_count = 100_000
allow_test_addresses = false
use_libtor = false
base_node_identity_file = "/var/tari/base_node/config/igor/base_node_id.json"
Expand Down
4 changes: 2 additions & 2 deletions applications/launchpad/docker_rig/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ track_reorgs = true

[base_node.dibbler]
db_type = "lmdb"
flood_ban_max_msg_count = 10000
flood_ban_max_msg_count = 100_000
data_dir = "/blockchain/dibbler"
force_sync_peers = []
allow_test_addresses = false
Expand All @@ -64,7 +64,7 @@ console_wallet_tor_identity_file = "config/dibbler/console_wallet_tor.json"

[base_node.igor]
db_type = "lmdb"
flood_ban_max_msg_count = 10000
flood_ban_max_msg_count = 100_000
data_dir = "/blockchain/igor"
force_sync_peers = []
allow_test_addresses = false
Expand Down
12 changes: 6 additions & 6 deletions common/config/presets/base_node.toml
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ db_type = "lmdb"
# is "0", which indicates an archival node without any pruning.
#pruning_horizon = 0

# The amount of messages that will be permitted in the flood ban timespan of 100s (Default dibbler = 1000,
# default mainnet = 10000)
flood_ban_max_msg_count = 10000
# The amount of messages that will be permitted in the flood ban timespan of 100s (Default dibbler = 100000,
# default mainnet = 100000)
flood_ban_max_msg_count = 100_000

# The relative path to store persistent data
data_dir = "dibbler"
Expand Down Expand Up @@ -223,9 +223,9 @@ db_type = "lmdb"
# is "0", which indicates an archival node without any pruning.
#pruning_horizon = 0

# The amount of messages that will be permitted in the flood ban timespan of 100s (Default weatherwax = 1000,
# default mainnet = 10000)
flood_ban_max_msg_count = 10000
# The amount of messages that will be permitted in the flood ban timespan of 100s (Default igor = 100000,
# default mainnet = 100000)
flood_ban_max_msg_count = 100_000

# The relative path to store persistent data
data_dir = "igor"
Expand Down
8 changes: 4 additions & 4 deletions common/src/configuration/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ pub fn default_config(bootstrap: &ConfigBootstrap) -> Config {
cfg.set_default("base_node.mainnet.grpc_base_node_address", "127.0.0.1:18142")
.unwrap();
cfg.set_default("wallet.grpc_address", "127.0.0.1:18143").unwrap();
cfg.set_default("base_node.mainnet.flood_ban_max_msg_count", 10000)
cfg.set_default("base_node.mainnet.flood_ban_max_msg_count", 100_000)
.unwrap();

//---------------------------------- Weatherwax Defaults --------------------------------------------//
Expand All @@ -175,7 +175,7 @@ pub fn default_config(bootstrap: &ConfigBootstrap) -> Config {
cfg.set_default("base_node.weatherwax.pruning_horizon", 0).unwrap();
cfg.set_default("base_node.weatherwax.pruned_mode_cleanup_interval", 50)
.unwrap();
cfg.set_default("base_node.weatherwax.flood_ban_max_msg_count", 10000)
cfg.set_default("base_node.weatherwax.flood_ban_max_msg_count", 100_000)
.unwrap();
cfg.set_default("base_node.weatherwax.peer_seeds", Vec::<String>::new())
.unwrap();
Expand Down Expand Up @@ -220,7 +220,7 @@ pub fn default_config(bootstrap: &ConfigBootstrap) -> Config {
cfg.set_default("base_node.igor.pruning_horizon", 0).unwrap();
cfg.set_default("base_node.igor.pruned_mode_cleanup_interval", 50)
.unwrap();
cfg.set_default("base_node.igor.flood_ban_max_msg_count", 10000)
cfg.set_default("base_node.igor.flood_ban_max_msg_count", 100_000)
.unwrap();
cfg.set_default("base_node.igor.grpc_enabled", false).unwrap();
cfg.set_default("base_node.igor.grpc_base_node_address", "127.0.0.1:18142")
Expand All @@ -236,7 +236,7 @@ pub fn default_config(bootstrap: &ConfigBootstrap) -> Config {
}

fn set_common_network_defaults(cfg: &mut Config) {
for network in ["mainnet", "weatherwax", "igor", "localnet"] {
for network in ["mainnet", "dibbler", "igor", "localnet"] {
let key = format!("base_node.{}.dns_seeds_name_server", network);
cfg.set_default(&key, "1.1.1.1:853/cloudflare-dns.com").unwrap();

Expand Down
10 changes: 7 additions & 3 deletions comms/dht/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,14 @@ pub struct DhtConfig {
/// Length of time to ban a peer if the peer misbehaves at the DHT-level.
/// Default: 6 hrs
pub ban_duration: Duration,
/// Length of time to ban a peer for a "short" duration.
/// Default: 30 mins
pub ban_duration_short: Duration,
/// This allows the use of test addresses in the network.
/// Default: false
pub allow_test_addresses: bool,
/// The maximum number of messages over `flood_ban_timespan` to allow before banning the peer (for `ban_duration`)
/// Default: 1000 messages
/// The maximum number of messages over `flood_ban_timespan` to allow before banning the peer (for
/// `ban_duration_short`) Default: 100_000 messages
pub flood_ban_max_msg_count: usize,
/// The timespan over which to calculate the max message rate.
/// `flood_ban_max_count / flood_ban_timespan (as seconds) = avg. messages per second over the timespan`
Expand Down Expand Up @@ -151,8 +154,9 @@ impl Default for DhtConfig {
join_cooldown_interval: Duration::from_secs(10 * 60),
network_discovery: Default::default(),
ban_duration: Duration::from_secs(6 * 60 * 60),
ban_duration_short: Duration::from_secs(60 * 60),
allow_test_addresses: false,
flood_ban_max_msg_count: 10000,
flood_ban_max_msg_count: 100_000,
flood_ban_timespan: Duration::from_secs(100),
offline_peer_cooldown: Duration::from_secs(2 * 60 * 60),
}
Expand Down
7 changes: 5 additions & 2 deletions comms/dht/src/connectivity/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -266,8 +266,11 @@ impl DhtConnectivity {
self.connectivity
.ban_peer_until(
peer,
self.config.ban_duration,
"Exceeded maximum message rate".to_string(),
self.config.ban_duration_short,
format!(
"Exceeded maximum message rate. Config: {}/{:#?}. Rate: {:.2} m/s",
self.config.flood_ban_max_msg_count, self.config.flood_ban_timespan, mps
),
)
.await?;
}
Expand Down