From 11d18acfebb103ada624cfd3ae7c1ac14cfcdfeb Mon Sep 17 00:00:00 2001 From: Tanguy Date: Fri, 23 Jun 2023 09:16:30 +0200 Subject: [PATCH] Add Yamux experimental support (#5080) --- beacon_chain/conf.nim | 6 ++++++ beacon_chain/conf_light_client.nim | 6 ++++++ beacon_chain/networking/eth2_network.nim | 10 ++++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/beacon_chain/conf.nim b/beacon_chain/conf.nim index b3c14fc19..1cd7827f7 100644 --- a/beacon_chain/conf.nim +++ b/beacon_chain/conf.nim @@ -305,6 +305,12 @@ type defaultValue: false name: "enr-auto-update" .}: bool + enableYamux* {. + hidden + desc: "Enable the Yamux multiplexer" + defaultValue: false + name: "enable-yamux" .}: bool + weakSubjectivityCheckpoint* {. desc: "Weak subjectivity checkpoint in the format block_root:epoch_number" name: "weak-subjectivity-checkpoint" .}: Option[Checkpoint] diff --git a/beacon_chain/conf_light_client.nim b/beacon_chain/conf_light_client.nim index 6a61a62a6..51b63ff73 100644 --- a/beacon_chain/conf_light_client.nim +++ b/beacon_chain/conf_light_client.nim @@ -102,6 +102,12 @@ type LightClientConf* = object defaultValue: false name: "enr-auto-update" .}: bool + enableYamux* {. + hidden + desc: "Enable the Yamux multiplexer" + defaultValue: false + name: "enable-yamux" .}: bool + agentString* {. defaultValue: "nimbus", desc: "Node agent string which is used as identifier in network" diff --git a/beacon_chain/networking/eth2_network.nim b/beacon_chain/networking/eth2_network.nim index 5393e6f37..80ff3faeb 100644 --- a/beacon_chain/networking/eth2_network.nim +++ b/beacon_chain/networking/eth2_network.nim @@ -2271,8 +2271,14 @@ func gossipId( proc newBeaconSwitch(config: BeaconNodeConf | LightClientConf, seckey: PrivateKey, address: MultiAddress, rng: ref HmacDrbgContext): Switch {.raises: [Defect, CatchableError].} = - SwitchBuilder - .new() + var sb = + if config.enableYamux: + SwitchBuilder.new().withYamux() + else: + SwitchBuilder.new() + # Order of multiplexers matters, the first will be default + + sb .withPrivateKey(seckey) .withAddress(address) .withRng(rng)