From 0d9f9b926c1c0e2ec5c5f4a8963c2ff847528c05 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Apr 2026 20:10:19 +0000 Subject: [PATCH] Increase QUIC idle timeout to 30s and keep-alive to 5s The previous 10s idle timeout was too aggressive, causing premature connection drops. Bump to 30s with a 5s keep-alive interval. https://claude.ai/code/session_01S4vV1ymQU92mr8wkWDiuMr --- rs/moq-native/src/noq.rs | 8 ++++---- rs/moq-native/src/quinn.rs | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rs/moq-native/src/noq.rs b/rs/moq-native/src/noq.rs index 865d0b192..6d2a7470f 100644 --- a/rs/moq-native/src/noq.rs +++ b/rs/moq-native/src/noq.rs @@ -23,8 +23,8 @@ impl NoqClient { let socket = std::net::UdpSocket::bind(config.bind).context("failed to bind UDP socket")?; let mut transport = noq::TransportConfig::default(); - transport.max_idle_timeout(Some(time::Duration::from_secs(10).try_into().unwrap())); - transport.keep_alive_interval(Some(time::Duration::from_secs(4))); + transport.max_idle_timeout(Some(time::Duration::from_secs(30).try_into().unwrap())); + transport.keep_alive_interval(Some(time::Duration::from_secs(5))); transport.mtu_discovery_config(None); // Disable MTU discovery let max_streams = config.max_streams.unwrap_or(crate::DEFAULT_MAX_STREAMS); @@ -148,8 +148,8 @@ pub(crate) struct NoqServer { impl NoqServer { pub fn new(config: ServerConfig) -> anyhow::Result { let mut transport = noq::TransportConfig::default(); - transport.max_idle_timeout(Some(Duration::from_secs(10).try_into().unwrap())); - transport.keep_alive_interval(Some(Duration::from_secs(4))); + transport.max_idle_timeout(Some(Duration::from_secs(30).try_into().unwrap())); + transport.keep_alive_interval(Some(Duration::from_secs(5))); transport.mtu_discovery_config(None); // Disable MTU discovery let max_streams = config.max_streams.unwrap_or(crate::DEFAULT_MAX_STREAMS); diff --git a/rs/moq-native/src/quinn.rs b/rs/moq-native/src/quinn.rs index 3ac07bd61..b1849a8a6 100644 --- a/rs/moq-native/src/quinn.rs +++ b/rs/moq-native/src/quinn.rs @@ -22,8 +22,8 @@ impl QuinnClient { // TODO Validate the BBR implementation before enabling it let mut transport = quinn::TransportConfig::default(); - transport.max_idle_timeout(Some(time::Duration::from_secs(10).try_into().unwrap())); - transport.keep_alive_interval(Some(time::Duration::from_secs(4))); + transport.max_idle_timeout(Some(time::Duration::from_secs(30).try_into().unwrap())); + transport.keep_alive_interval(Some(time::Duration::from_secs(5))); transport.mtu_discovery_config(None); // Disable MTU discovery let max_streams = config.max_streams.unwrap_or(crate::DEFAULT_MAX_STREAMS); @@ -149,8 +149,8 @@ impl QuinnServer { // Enable BBR congestion control // TODO Validate the BBR implementation before enabling it let mut transport = quinn::TransportConfig::default(); - transport.max_idle_timeout(Some(Duration::from_secs(10).try_into().unwrap())); - transport.keep_alive_interval(Some(Duration::from_secs(4))); + transport.max_idle_timeout(Some(Duration::from_secs(30).try_into().unwrap())); + transport.keep_alive_interval(Some(Duration::from_secs(5))); transport.mtu_discovery_config(None); // Disable MTU discovery let max_streams = config.max_streams.unwrap_or(crate::DEFAULT_MAX_STREAMS);