From 35ac4cfbfcfcac08b32ca772db92b4865de9b062 Mon Sep 17 00:00:00 2001 From: Roy Williams Date: Thu, 25 May 2023 11:48:32 -0400 Subject: [PATCH] Add a knob for maxInFlightConnectionAttempts on TCP connectons Signed-off-by: Roy Williams --- wgengine/netstack/netstack.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/wgengine/netstack/netstack.go b/wgengine/netstack/netstack.go index 3457065db..86c320070 100644 --- a/wgengine/netstack/netstack.go +++ b/wgengine/netstack/netstack.go @@ -246,6 +246,15 @@ func (ns *Impl) wrapProtoHandler(h func(stack.TransportEndpointID, stack.PacketB } } +var tcpMaxInFlightConnectionAttemptsVar = envknob.RegisterInt("TS_TCP_MAX_IN_FLIGHT_CONNETION_ATTEMPTS") +func () tcpMaxInFlightConnectionAttempts int { + if x := tcpMaxInFlightConnectionAttemptsVar(); x != 0 { + return x + } + return 16 +} + + // Start sets up all the handlers so netstack can start working. Implements // wgengine.FakeImpl. func (ns *Impl) Start(lb *ipnlocal.LocalBackend) error { @@ -256,7 +265,8 @@ func (ns *Impl) Start(lb *ipnlocal.LocalBackend) error { ns.e.AddNetworkMapCallback(ns.updateIPs) // size = 0 means use default buffer size const tcpReceiveBufferSize = 0 - const maxInFlightConnectionAttempts = 16 + + const maxInFlightConnectionAttempts = tcpMaxInFlightConnectionAttempts() tcpFwd := tcp.NewForwarder(ns.ipstack, tcpReceiveBufferSize, maxInFlightConnectionAttempts, ns.acceptTCP) udpFwd := udp.NewForwarder(ns.ipstack, ns.acceptUDP) ns.ipstack.SetTransportProtocolHandler(tcp.ProtocolNumber, ns.wrapProtoHandler(tcpFwd.HandlePacket))