diff --git a/core/src/tpu.rs b/core/src/tpu.rs index 2a03333ffb03a6..877c527d99347b 100644 --- a/core/src/tpu.rs +++ b/core/src/tpu.rs @@ -111,7 +111,7 @@ impl Tpu { tpu_enable_udp: bool, tpu_quic_server_config: QuicServerParams, tpu_fwd_quic_server_config: QuicServerParams, - voe_quic_server_config: QuicServerParams, + vote_quic_server_config: QuicServerParams, prioritization_fee_cache: &Arc, block_production_method: BlockProductionMethod, enable_block_production_forwarding: bool, @@ -174,7 +174,7 @@ impl Tpu { vote_packet_sender.clone(), exit.clone(), staked_nodes.clone(), - voe_quic_server_config, + vote_quic_server_config, ) .unwrap(); diff --git a/core/src/validator.rs b/core/src/validator.rs index 204c798da98fbb..41bcab28cd6b46 100644 --- a/core/src/validator.rs +++ b/core/src/validator.rs @@ -497,31 +497,33 @@ pub struct ValidatorTpuConfig { pub vote_quic_server_config: QuicServerParams, } -/// A convenient function to build a ValidatorTpuConfig for testing with good -/// default. -pub fn build_validator_tpu_config_for_test(tpu_enable_udp: bool) -> ValidatorTpuConfig { - let tpu_quic_server_config = QuicServerParams { - max_connections_per_ipaddr_per_min: 32, - ..Default::default() - }; +impl ValidatorTpuConfig { + /// A convenient function to build a ValidatorTpuConfig for testing with good + /// default. + pub fn new_for_tests(tpu_enable_udp: bool) -> Self { + let tpu_quic_server_config = QuicServerParams { + max_connections_per_ipaddr_per_min: 32, + ..Default::default() + }; - let tpu_fwd_quic_server_config = QuicServerParams { - max_connections_per_ipaddr_per_min: 32, - max_unstaked_connections: 0, - ..Default::default() - }; + let tpu_fwd_quic_server_config = QuicServerParams { + max_connections_per_ipaddr_per_min: 32, + max_unstaked_connections: 0, + ..Default::default() + }; + + // vote and tpu_fwd share the same characteristics -- disallow non-staked connections: + let vote_quic_server_config = tpu_fwd_quic_server_config.clone(); - // vote and tpu_fwd share the same characteristics -- disallow non-staked connections: - let vote_quic_server_config = tpu_fwd_quic_server_config.clone(); - - ValidatorTpuConfig { - use_quic: DEFAULT_TPU_USE_QUIC, - vote_use_quic: DEFAULT_VOTE_USE_QUIC, - tpu_connection_pool_size: DEFAULT_TPU_CONNECTION_POOL_SIZE, - tpu_enable_udp, - tpu_quic_server_config, - tpu_fwd_quic_server_config, - vote_quic_server_config, + ValidatorTpuConfig { + use_quic: DEFAULT_TPU_USE_QUIC, + vote_use_quic: DEFAULT_VOTE_USE_QUIC, + tpu_connection_pool_size: DEFAULT_TPU_CONNECTION_POOL_SIZE, + tpu_enable_udp, + tpu_quic_server_config, + tpu_fwd_quic_server_config, + vote_quic_server_config, + } } } @@ -2833,7 +2835,7 @@ mod tests { None, // rpc_to_plugin_manager_receiver start_progress.clone(), SocketAddrSpace::Unspecified, - build_validator_tpu_config_for_test(DEFAULT_TPU_ENABLE_UDP), + ValidatorTpuConfig::new_for_tests(DEFAULT_TPU_ENABLE_UDP), Arc::new(RwLock::new(None)), ) .expect("assume successful validator start"); @@ -3049,7 +3051,7 @@ mod tests { None, // rpc_to_plugin_manager_receiver Arc::new(RwLock::new(ValidatorStartProgress::default())), SocketAddrSpace::Unspecified, - build_validator_tpu_config_for_test(DEFAULT_TPU_ENABLE_UDP), + ValidatorTpuConfig::new_for_tests(DEFAULT_TPU_ENABLE_UDP), Arc::new(RwLock::new(None)), ) .expect("assume successful validator start") diff --git a/local-cluster/src/local_cluster.rs b/local-cluster/src/local_cluster.rs index 759b3a2664c96e..56987fd22d19ec 100644 --- a/local-cluster/src/local_cluster.rs +++ b/local-cluster/src/local_cluster.rs @@ -11,9 +11,7 @@ use { solana_client::connection_cache::ConnectionCache, solana_core::{ consensus::tower_storage::FileTowerStorage, - validator::{ - build_validator_tpu_config_for_test, Validator, ValidatorConfig, ValidatorStartProgress, - }, + validator::{Validator, ValidatorConfig, ValidatorStartProgress, ValidatorTpuConfig}, }, solana_gossip::{ cluster_info::Node, @@ -345,7 +343,7 @@ impl LocalCluster { socket_addr_space, // We are turning tpu_enable_udp to true in order to prevent concurrent local cluster tests // to use the same QUIC ports due to SO_REUSEPORT. - build_validator_tpu_config_for_test(true), + ValidatorTpuConfig::new_for_tests(true), Arc::new(RwLock::new(None)), ) .expect("assume successful validator start"); @@ -549,7 +547,7 @@ impl LocalCluster { None, // rpc_to_plugin_manager_receiver Arc::new(RwLock::new(ValidatorStartProgress::default())), socket_addr_space, - build_validator_tpu_config_for_test(DEFAULT_TPU_ENABLE_UDP), + ValidatorTpuConfig::new_for_tests(DEFAULT_TPU_ENABLE_UDP), Arc::new(RwLock::new(None)), ) .expect("assume successful validator start"); @@ -1079,7 +1077,7 @@ impl Cluster for LocalCluster { None, // rpc_to_plugin_manager_receiver Arc::new(RwLock::new(ValidatorStartProgress::default())), socket_addr_space, - build_validator_tpu_config_for_test(DEFAULT_TPU_ENABLE_UDP), + ValidatorTpuConfig::new_for_tests(DEFAULT_TPU_ENABLE_UDP), Arc::new(RwLock::new(None)), ) .expect("assume successful validator start"); diff --git a/test-validator/src/lib.rs b/test-validator/src/lib.rs index 274d4c5e69bf8b..75718c6ea8791f 100644 --- a/test-validator/src/lib.rs +++ b/test-validator/src/lib.rs @@ -13,9 +13,7 @@ use { solana_core::{ admin_rpc_post_init::AdminRpcRequestMetadataPostInit, consensus::tower_storage::TowerStorage, - validator::{ - build_validator_tpu_config_for_test, Validator, ValidatorConfig, ValidatorStartProgress, - }, + validator::{Validator, ValidatorConfig, ValidatorStartProgress, ValidatorTpuConfig}, }, solana_feature_set::FEATURE_NAMES, solana_geyser_plugin_manager::{ @@ -1045,7 +1043,7 @@ impl TestValidator { rpc_to_plugin_manager_receiver, config.start_progress.clone(), socket_addr_space, - build_validator_tpu_config_for_test(config.tpu_enable_udp), + ValidatorTpuConfig::new_for_tests(config.tpu_enable_udp), config.admin_rpc_service_post_init.clone(), )?); diff --git a/validator/src/admin_rpc_service.rs b/validator/src/admin_rpc_service.rs index 6c86aea768a085..5efe0bd550f5ae 100644 --- a/validator/src/admin_rpc_service.rs +++ b/validator/src/admin_rpc_service.rs @@ -871,7 +871,7 @@ mod tests { }, solana_core::{ consensus::tower_storage::NullTowerStorage, - validator::{build_validator_tpu_config_for_test, Validator, ValidatorConfig}, + validator::{Validator, ValidatorConfig, ValidatorTpuConfig}, }, solana_gossip::cluster_info::{ClusterInfo, Node}, solana_inline_spl::token, @@ -1395,7 +1395,7 @@ mod tests { None, // rpc_to_plugin_manager_receiver start_progress.clone(), SocketAddrSpace::Unspecified, - build_validator_tpu_config_for_test(DEFAULT_TPU_ENABLE_UDP), + ValidatorTpuConfig::new_for_tests(DEFAULT_TPU_ENABLE_UDP), post_init, ) .expect("assume successful validator start"); diff --git a/validator/src/cli.rs b/validator/src/cli.rs index 8efbe0a489d503..ec908f56352c63 100644 --- a/validator/src/cli.rs +++ b/validator/src/cli.rs @@ -917,37 +917,37 @@ pub fn app<'a>(version: &'a str, default_args: &'a DefaultArgs) -> App<'a, 'a> { .help("Controls the max concurrent connections per IpAddr."), ) .arg( - Arg::with_name("max_tpu_staked_connections") - .long("max-tpu-staked-connections") + Arg::with_name("tpu_max_staked_connections") + .long("tpu-max-staked-connections") .takes_value(true) - .default_value(&default_args.max_tpu_staked_connections) + .default_value(&default_args.tpu_max_staked_connections) .validator(is_parsable::) .hidden(hidden_unless_forced()) .help("Controls the max concurrent connections for TPU from staked nodes."), ) .arg( - Arg::with_name("max_tpu_unstaked_connections") - .long("max-tpu-unstaked-connections") + Arg::with_name("tpu_max_unstaked_connections") + .long("tpu-max-unstaked-connections") .takes_value(true) - .default_value(&default_args.max_tpu_unstaked_connections) + .default_value(&default_args.tpu_max_unstaked_connections) .validator(is_parsable::) .hidden(hidden_unless_forced()) .help("Controls the max concurrent connections fort TPU from unstaked nodes."), ) .arg( - Arg::with_name("max_fwd_staked_connections") - .long("max-fwd-staked-connections") + Arg::with_name("tpu_max_fwd_staked_connections") + .long("tpu-max-fwd-staked-connections") .takes_value(true) - .default_value(&default_args.max_fwd_staked_connections) + .default_value(&default_args.tpu_max_fwd_staked_connections) .validator(is_parsable::) .hidden(hidden_unless_forced()) .help("Controls the max concurrent connections for TPU-forward from staked nodes."), ) .arg( - Arg::with_name("max_fwd_unstaked_connections") - .long("max-fwd-unstaked-connections") + Arg::with_name("tpu_max_fwd_unstaked_connections") + .long("tpu-max-fwd-unstaked-connections") .takes_value(true) - .default_value(&default_args.max_fwd_unstaked_connections) + .default_value(&default_args.tpu_max_fwd_unstaked_connections) .validator(is_parsable::) .hidden(hidden_unless_forced()) .help("Controls the max concurrent connections for TPU-forward from unstaked nodes."), @@ -2380,10 +2380,10 @@ pub struct DefaultArgs { pub tpu_max_connections_per_peer: String, pub tpu_max_connections_per_ipaddr_per_minute: String, - pub max_tpu_staked_connections: String, - pub max_tpu_unstaked_connections: String, - pub max_fwd_staked_connections: String, - pub max_fwd_unstaked_connections: String, + pub tpu_max_staked_connections: String, + pub tpu_max_unstaked_connections: String, + pub tpu_max_fwd_staked_connections: String, + pub tpu_max_fwd_unstaked_connections: String, pub tpu_max_streams_per_ms: String, pub num_quic_endpoints: String, @@ -2482,12 +2482,12 @@ impl DefaultArgs { DEFAULT_MAX_CONNECTIONS_PER_IPADDR_PER_MINUTE.to_string(), vote_use_quic: DEFAULT_VOTE_USE_QUIC.to_string(), tpu_max_connections_per_peer: DEFAULT_MAX_QUIC_CONNECTIONS_PER_PEER.to_string(), - max_tpu_staked_connections: DEFAULT_MAX_STAKED_CONNECTIONS.to_string(), - max_tpu_unstaked_connections: DEFAULT_MAX_UNSTAKED_CONNECTIONS.to_string(), - max_fwd_staked_connections: DEFAULT_MAX_STAKED_CONNECTIONS + tpu_max_staked_connections: DEFAULT_MAX_STAKED_CONNECTIONS.to_string(), + tpu_max_unstaked_connections: DEFAULT_MAX_UNSTAKED_CONNECTIONS.to_string(), + tpu_max_fwd_staked_connections: DEFAULT_MAX_STAKED_CONNECTIONS .saturating_add(DEFAULT_MAX_UNSTAKED_CONNECTIONS) .to_string(), - max_fwd_unstaked_connections: 0.to_string(), + tpu_max_fwd_unstaked_connections: 0.to_string(), tpu_max_streams_per_ms: DEFAULT_MAX_STREAMS_PER_MS.to_string(), num_quic_endpoints: DEFAULT_QUIC_ENDPOINTS.to_string(), rpc_max_request_body_size: MAX_REQUEST_BODY_SIZE.to_string(), diff --git a/validator/src/main.rs b/validator/src/main.rs index 22ff183dae9715..e9b44fa719f2cd 100644 --- a/validator/src/main.rs +++ b/validator/src/main.rs @@ -1970,13 +1970,14 @@ pub fn main() { let tpu_max_connections_per_peer = value_t_or_exit!(matches, "tpu_max_connections_per_peer", u64); - let max_tpu_staked_connections = value_t_or_exit!(matches, "max_tpu_staked_connections", u64); - let max_tpu_unstaked_connections = - value_t_or_exit!(matches, "max_tpu_unstaked_connections", u64); + let tpu_max_staked_connections = value_t_or_exit!(matches, "tpu_max_staked_connections", u64); + let tpu_max_unstaked_connections = + value_t_or_exit!(matches, "tpu_max_unstaked_connections", u64); - let max_fwd_staked_connections = value_t_or_exit!(matches, "max_fwd_staked_connections", u64); - let max_fwd_unstaked_connections = - value_t_or_exit!(matches, "max_fwd_unstaked_connections", u64); + let tpu_max_fwd_staked_connections = + value_t_or_exit!(matches, "tpu_max_fwd_staked_connections", u64); + let tpu_max_fwd_unstaked_connections = + value_t_or_exit!(matches, "tpu_max_fwd_unstaked_connections", u64); let tpu_max_connections_per_ipaddr_per_minute: u64 = value_t_or_exit!(matches, "tpu_max_connections_per_ipaddr_per_minute", u64); @@ -2087,8 +2088,8 @@ pub fn main() { let tpu_quic_server_config = QuicServerParams { max_connections_per_peer: tpu_max_connections_per_peer.try_into().unwrap(), - max_staked_connections: max_tpu_staked_connections.try_into().unwrap(), - max_unstaked_connections: max_tpu_unstaked_connections.try_into().unwrap(), + max_staked_connections: tpu_max_staked_connections.try_into().unwrap(), + max_unstaked_connections: tpu_max_unstaked_connections.try_into().unwrap(), max_streams_per_ms, max_connections_per_ipaddr_per_min: tpu_max_connections_per_ipaddr_per_minute, coalesce: tpu_coalesce, @@ -2097,8 +2098,8 @@ pub fn main() { let tpu_fwd_quic_server_config = QuicServerParams { max_connections_per_peer: tpu_max_connections_per_peer.try_into().unwrap(), - max_staked_connections: max_fwd_staked_connections.try_into().unwrap(), - max_unstaked_connections: max_fwd_unstaked_connections.try_into().unwrap(), + max_staked_connections: tpu_max_fwd_staked_connections.try_into().unwrap(), + max_unstaked_connections: tpu_max_fwd_unstaked_connections.try_into().unwrap(), max_streams_per_ms, max_connections_per_ipaddr_per_min: tpu_max_connections_per_ipaddr_per_minute, coalesce: tpu_coalesce, diff --git a/vortexor/src/cli.rs b/vortexor/src/cli.rs index f813fb8e01bb1d..1363b137c10917 100644 --- a/vortexor/src/cli.rs +++ b/vortexor/src/cli.rs @@ -3,11 +3,9 @@ use { solana_clap_utils::input_validators::{is_keypair_or_ask_keyword, is_parsable}, solana_net_utils::{MINIMUM_VALIDATOR_PORT_RANGE_WIDTH, VALIDATOR_PORT_RANGE}, solana_sdk::quic::QUIC_PORT_OFFSET, - solana_streamer::{ - nonblocking::quic::{ - DEFAULT_MAX_CONNECTIONS_PER_IPADDR_PER_MINUTE, DEFAULT_MAX_STREAMS_PER_MS, - }, - quic::{MAX_STAKED_CONNECTIONS, MAX_UNSTAKED_CONNECTIONS}, + solana_streamer::quic::{ + DEFAULT_MAX_CONNECTIONS_PER_IPADDR_PER_MINUTE, DEFAULT_MAX_STAKED_CONNECTIONS, + DEFAULT_MAX_STREAMS_PER_MS, DEFAULT_MAX_UNSTAKED_CONNECTIONS, }, }; @@ -33,10 +31,10 @@ impl Default for DefaultArgs { bind_address: "0.0.0.0".to_string(), dynamic_port_range: format!("{}-{}", VALIDATOR_PORT_RANGE.0, VALIDATOR_PORT_RANGE.1), max_connections_per_peer: DEFAULT_MAX_QUIC_CONNECTIONS_PER_PEER.to_string(), - max_tpu_staked_connections: MAX_STAKED_CONNECTIONS.to_string(), - max_tpu_unstaked_connections: MAX_UNSTAKED_CONNECTIONS.to_string(), - max_fwd_staked_connections: MAX_STAKED_CONNECTIONS - .saturating_add(MAX_UNSTAKED_CONNECTIONS) + max_tpu_staked_connections: DEFAULT_MAX_STAKED_CONNECTIONS.to_string(), + max_tpu_unstaked_connections: DEFAULT_MAX_UNSTAKED_CONNECTIONS.to_string(), + max_fwd_staked_connections: DEFAULT_MAX_STAKED_CONNECTIONS + .saturating_add(DEFAULT_MAX_UNSTAKED_CONNECTIONS) .to_string(), max_fwd_unstaked_connections: 0.to_string(), max_streams_per_ms: DEFAULT_MAX_STREAMS_PER_MS.to_string(), diff --git a/vortexor/tests/vortexor.rs b/vortexor/tests/vortexor.rs index 8d2f683c9e2006..17ab106c7753e2 100644 --- a/vortexor/tests/vortexor.rs +++ b/vortexor/tests/vortexor.rs @@ -3,11 +3,11 @@ use { solana_net_utils::VALIDATOR_PORT_RANGE, solana_sdk::{net::DEFAULT_TPU_COALESCE, pubkey::Pubkey, signature::Keypair, signer::Signer}, solana_streamer::{ - nonblocking::{ - quic::{DEFAULT_MAX_CONNECTIONS_PER_IPADDR_PER_MINUTE, DEFAULT_MAX_STREAMS_PER_MS}, - testing_utilities::check_multiple_streams, + nonblocking::testing_utilities::check_multiple_streams, + quic::{ + DEFAULT_MAX_CONNECTIONS_PER_IPADDR_PER_MINUTE, DEFAULT_MAX_STAKED_CONNECTIONS, + DEFAULT_MAX_STREAMS_PER_MS, DEFAULT_MAX_UNSTAKED_CONNECTIONS, }, - quic::{MAX_STAKED_CONNECTIONS, MAX_UNSTAKED_CONNECTIONS}, streamer::StakedNodes, }, solana_vortexor::{ @@ -54,10 +54,10 @@ async fn test_vortexor() { tpu_sender, tpu_fwd_sender, DEFAULT_MAX_QUIC_CONNECTIONS_PER_PEER.try_into().unwrap(), - MAX_STAKED_CONNECTIONS.try_into().unwrap(), - MAX_UNSTAKED_CONNECTIONS.try_into().unwrap(), - MAX_STAKED_CONNECTIONS - .saturating_add(MAX_UNSTAKED_CONNECTIONS) + DEFAULT_MAX_STAKED_CONNECTIONS.try_into().unwrap(), + DEFAULT_MAX_UNSTAKED_CONNECTIONS.try_into().unwrap(), + DEFAULT_MAX_STAKED_CONNECTIONS + .saturating_add(DEFAULT_MAX_UNSTAKED_CONNECTIONS) .try_into() .unwrap(), // max_fwd_staked_connections 0, // max_fwd_unstaked_connections