Enable mplex by default and change --enable-mplex to take bool (#9476)

Enable Mplex by default, and let `--enable-mplex` take a bool argument.


Co-Authored-By: Daniel Knopik <daniel@dknopik.de>

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>
This commit is contained in:
Daniel Knopik
2026-06-16 08:53:25 +02:00
committed by GitHub
parent 58e35bc96f
commit 41dff2d965
5 changed files with 54 additions and 11 deletions

View File

@@ -125,7 +125,7 @@ pub struct Config {
/// Whether light client protocols should be enabled. /// Whether light client protocols should be enabled.
pub enable_light_client_server: bool, pub enable_light_client_server: bool,
/// Whether to enable the deprecated mplex multiplexer alongside yamux. /// Whether to enable the mplex multiplexer alongside yamux. Enabled by default.
pub enable_mplex: bool, pub enable_mplex: bool,
/// Configuration for the outbound rate limiter (requests made by this node). /// Configuration for the outbound rate limiter (requests made by this node).
@@ -365,7 +365,7 @@ impl Default for Config {
proposer_only: false, proposer_only: false,
metrics_enabled: false, metrics_enabled: false,
enable_light_client_server: true, enable_light_client_server: true,
enable_mplex: false, enable_mplex: true,
outbound_rate_limiter_config: None, outbound_rate_limiter_config: None,
invalid_block_storage: None, invalid_block_storage: None,
inbound_rate_limiter_config: None, inbound_rate_limiter_config: None,

View File

@@ -390,9 +390,12 @@ pub fn cli_app() -> Command {
.arg( .arg(
Arg::new("enable-mplex") Arg::new("enable-mplex")
.long("enable-mplex") .long("enable-mplex")
.action(ArgAction::SetTrue) .value_name("BOOLEAN")
.help_heading(FLAG_HEADER) .action(ArgAction::Set)
.help("Enables mplex multiplexer alongside yamux. Yamux is preferred when both are available.") .num_args(0..=1)
.default_value("true")
.default_missing_value("true")
.help("Enables the mplex multiplexer alongside yamux. Yamux is preferred when both are available. Enabled by default; set to \"false\" to disable.")
.display_order(0) .display_order(0)
) )
.arg( .arg(

View File

@@ -7,7 +7,7 @@ use beacon_chain::graffiti_calculator::GraffitiOrigin;
use bls::PublicKeyBytes; use bls::PublicKeyBytes;
use clap::{ArgMatches, Id, parser::ValueSource}; use clap::{ArgMatches, Id, parser::ValueSource};
use clap_utils::flags::DISABLE_MALLOC_TUNING_FLAG; use clap_utils::flags::DISABLE_MALLOC_TUNING_FLAG;
use clap_utils::{parse_flag, parse_required}; use clap_utils::{parse_flag, parse_optional, parse_required};
use client::{ClientConfig, ClientGenesis}; use client::{ClientConfig, ClientGenesis};
use directory::{DEFAULT_BEACON_NODE_DIR, DEFAULT_NETWORK_DIR, DEFAULT_ROOT_DIR}; use directory::{DEFAULT_BEACON_NODE_DIR, DEFAULT_NETWORK_DIR, DEFAULT_ROOT_DIR};
use environment::RuntimeContext; use environment::RuntimeContext;
@@ -1434,8 +1434,8 @@ pub fn set_network_config(
config.disable_quic_support = true; config.disable_quic_support = true;
} }
if parse_flag(cli_args, "enable-mplex") { if let Some(enable_mplex) = parse_optional(cli_args, "enable-mplex")? {
config.enable_mplex = true; config.enable_mplex = enable_mplex;
} }
if parse_flag(cli_args, "disable-upnp") { if parse_flag(cli_args, "disable-upnp") {

View File

@@ -84,6 +84,10 @@ Options:
--discovery-port6 <PORT> --discovery-port6 <PORT>
The UDP port that discovery will listen on over IPv6 if listening over The UDP port that discovery will listen on over IPv6 if listening over
both IPv4 and IPv6. Defaults to `port6` both IPv4 and IPv6. Defaults to `port6`
--enable-mplex [<BOOLEAN>]
Enables the mplex multiplexer alongside yamux. Yamux is preferred when
both are available. Enabled by default; set to "false" to disable.
[default: true]
--enr-address <ADDRESS>... --enr-address <ADDRESS>...
The IP address/ DNS address to broadcast to other peers on how to The IP address/ DNS address to broadcast to other peers on how to
reach this node. If a DNS address is provided, the enr-address is set reach this node. If a DNS address is provided, the enr-address is set
@@ -489,9 +493,6 @@ Flags:
Sets the local ENR IP address and port to match those set for Sets the local ENR IP address and port to match those set for
lighthouse. Specifically, the IP address will be the value of lighthouse. Specifically, the IP address will be the value of
--listen-address and the UDP port will be --discovery-port. --listen-address and the UDP port will be --discovery-port.
--enable-mplex
Enables mplex multiplexer alongside yamux. Yamux is preferred when
both are available.
--enable-partial-columns --enable-partial-columns
Enable partial messages for data columns. This can reduce the amount Enable partial messages for data columns. This can reduce the amount
of data sent over the network. Enabled by default on Hoodi and of data sent over the network. Enabled by default on Hoodi and

View File

@@ -2785,6 +2785,45 @@ fn invalid_block_roots_default_mainnet() {
}) })
} }
#[test]
fn enable_mplex_default() {
CommandLineTest::new()
.run_with_zero_port()
.with_config(|config| {
assert!(config.network.enable_mplex);
})
}
#[test]
fn enable_mplex_true() {
CommandLineTest::new()
.flag("enable-mplex", Some("true"))
.run_with_zero_port()
.with_config(|config| {
assert!(config.network.enable_mplex);
})
}
#[test]
fn enable_mplex_false() {
CommandLineTest::new()
.flag("enable-mplex", Some("false"))
.run_with_zero_port()
.with_config(|config| {
assert!(!config.network.enable_mplex);
})
}
#[test]
fn enable_mplex_no_value() {
CommandLineTest::new()
.flag("enable-mplex", None)
.run_with_zero_port()
.with_config(|config| {
assert!(config.network.enable_mplex);
})
}
#[test] #[test]
fn partial_columns() { fn partial_columns() {
CommandLineTest::new() CommandLineTest::new()