From nobody Fri Jun 13 15:52:38 2025 X-Original-To: net@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4bJkS70hZhz5xcGQ for ; Fri, 13 Jun 2025 15:52:39 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bJkS66zbRz3fJn for ; Fri, 13 Jun 2025 15:52:38 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749829959; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LrmzGpY9J9xifKT3TZseI9vQCIBrMjMz780DieM4+J8=; b=AeE7vN/lvmlwVwg5eLLSJL45dcyYSxgNEPCn4HhqI8BrJdttytMBKedAJfh9ijFURceVVc Avnlifl+A12IhBbSLU1JDEgMzbTdJaw2qpwfSbLuyfThPAvGnYT91p4rSSKrNHZjkUyB9q sZc11w4vPiYPg0izZxisVzxRklgt/J7lEhLqJetrTi2h/2lFwvrLMIFagWtO3RIKiw1IwC b1si59/gOiTzUsPcDKY9wB8yl4cqeygKyRsnRfl/iqzaE/i/uhF0xhu8aRTVjQv5AClG0r f5y5gsLR/NnJm32ieDCt4X4D7U1cv5PR/jg6L2s2dqm+/bzth1Oik83lGqBy1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749829959; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LrmzGpY9J9xifKT3TZseI9vQCIBrMjMz780DieM4+J8=; b=aZLX/VjQg37cLrlE0pc+7fsiaw+ecLPcWYpH5JSAIzAuQ0YpkLMPyjFohzciWuYqx7N88e XGJa5Xny2ZHv8FM12SEoy1/x+/Vh9P2S1QrMQuh1MpVAdamLj8jHmsuEoQMvtvKA5s8ZUg OfhodQKqExgc0ZQv5+qGRsUSv/hXe0ebX89py3AZ4r4vAhCLOiWLE7T9vZWWx44inhr6a5 Mtclh+NjlYG1uO2JSfcrKuLUnvYrb9c2OZuCrsezDYNq1sxWKUhXaPJ4kuGu+uqA1fbJw8 dw5tC+NazYIMs729leE4npu4CTDdUvvXs3Al4RjeiSX9Je8S8lh91YlVxX+EHQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1749829959; a=rsa-sha256; cv=none; b=ZFEhxlb7o3DuSHyuGy2JmYnH2D1ZADHCohCyVzIsAIgNYzD3JJHLq5BOupOVO3dhgcO/63 wlLyN0NenL5aO1KDf+HMgRYHjJ6ciWWAoC3ThB2GwrO1GihWstaAFUc8+9hrOjv/3Z2PSX TJgIalJAM8/k00orxVH4H4RV1XzyMiz8BrZ5Cy+1k0GfErBM3ZSxL37YMP9jnJRp9rnRHi sIDdKA0kTNOq2dGqe4gzj46Zs7YSfDrA2wWNG5+colQl0Z/W5/yPltqCxA3wvoBep2OL3e 0jeKb4vFAVMB1iwe7QHU8MfGP+zS0tonqEZLLYatgTHHEKenNNM2YVHsxwrTlA== Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2610:1c1:1:606c::50:1d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bJkS66Zmbz14Fp for ; Fri, 13 Jun 2025 15:52:38 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org ([127.0.1.5]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id 55DFqcOD095096 for ; Fri, 13 Jun 2025 15:52:38 GMT (envelope-from bugzilla-noreply@freebsd.org) Received: (from www@localhost) by kenobi.freebsd.org (8.15.2/8.15.2/Submit) id 55DFqcIc095090 for net@FreeBSD.org; Fri, 13 Jun 2025 15:52:38 GMT (envelope-from bugzilla-noreply@freebsd.org) X-Authentication-Warning: kenobi.freebsd.org: www set sender to bugzilla-noreply@freebsd.org using -f From: bugzilla-noreply@freebsd.org To: net@FreeBSD.org Subject: [Bug 286631] TCP SACK: CWND set to 2 MSS after successful SACK recovery Date: Fri, 13 Jun 2025 15:52:38 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: 14.3-STABLE X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Many People X-Bugzilla-Who: yjaeyong@gmail.com X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: net@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated List-Id: Networking and TCP/IP with FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-net List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-net@FreeBSD.org MIME-Version: 1.0 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D286631 --- Comment #3 from JY --- Here I posted the tcp internal states in tcp_sack_doack at the start and en= d of the function. What I see interesting is the "sacked_bytes and sack_bytes_rexmit. As I understand sacked_bytes is how much data is delivered by SACK and sack_bytes_rexmit is how much data is actually sent as sack-recovery. And I= see sacked_bytes are larger than sack_bytes_rexmit which seems odd. It looks like this happens in the case CWND growth is limited by receiver-s= ide window and the few segments are lost. In such case, TCP is not able to send sack-recoveries as as sacked_bytes is counting how many bytes are received through sack-blocks hence causing this discrepancy. And when this happens, tcp_compute_pipe calculation gives negative values a= nd cause issues.=20 tcp_sack_doack-ENTER fack 0 una 2865053040 ack 2865053040 sch 0 SACK blocks: [2865054452..2865061512] SACK holes: none tcp_sack_doack-LEAVE fack 2865061512 una 2865053040 ack 2865053040 sch 1 delivered 7060 sacked_bytes 7060 sack_bytes_rexmit 0 SACK holes: [2865053040..2865054452] tcp_sack_doack-ENTER fack 2865061512 una 2865053040 ack 2865053040 sch 0 SA= CK blocks: [2865054452..2865069984] SACK holes: [2865053040..2865054452] tcp_sack_doack-LEAVE fack 2865069984 una 2865053040 ack 2865053040 sch 1 delivered 8472 sacked_bytes 15532 sack_bytes_rexmit 1412 SACK holes: [2865053040..2865054452] tcp_sack_doack-ENTER fack 2865069984 una 2865053040 ack 2865053040 sch 0 SA= CK blocks: [2865054452..2865074220] SACK holes: [2865053040..2865054452] tcp_sack_doack-LEAVE fack 2865074220 una 2865053040 ack 2865053040 sch 1 delivered 4236 sacked_bytes 19768 sack_bytes_rexmit 1412 SACK holes: [2865053040..2865054452] tcp_sack_doack-ENTER fack 2865074220 una 2865053040 ack 2865053040 sch 0 SA= CK blocks: [2865054452..2865075632] SACK holes: [2865053040..2865054452] tcp_sack_doack-LEAVE fack 2865075632 una 2865053040 ack 2865053040 sch 1 delivered 1412 sacked_bytes 21180 sack_bytes_rexmit 1412 SACK holes: [2865053040..2865054452] One more concern is, even if sacked_bytes are correctly calculated (which is smaller or equal to sack_bytes_rexmit), I believe such CWND choke up still happens. As the way CWND is calculated at the post recovery is based on the pipe size. The pipe size is actually chocked by the condition (receiver-window-limited-CWND).=20 I am not sure if this is a valid concern, please let me know your opinions.= I am willing to test some ideas to resolve this issue as well. --=20 You are receiving this mail because: You are the assignee for the bug.=