netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Eric Dumazet <edumazet@google.com>
To: "Ahmed, Shehab Sarar" <shehaba2@illinois.edu>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"ncardwell@google.com" <ncardwell@google.com>,
	 "kuniyu@google.com" <kuniyu@google.com>
Subject: Re: [BUG] TCP: Duplicate ACK storm after reordering with delayed packet (BBR RTO triggered)
Date: Wed, 27 Aug 2025 20:15:59 -0700	[thread overview]
Message-ID: <CANn89iJJkpSPMeK7PFH6Hrs=0Hw3Np1haR-+6GOhPwmvsq9x5Q@mail.gmail.com> (raw)
In-Reply-To: <DS0PR11MB77685D8DB5CEACC52391D4E6FD3BA@DS0PR11MB7768.namprd11.prod.outlook.com>

On Wed, Aug 27, 2025 at 6:12 PM Ahmed, Shehab Sarar
<shehaba2@illinois.edu> wrote:
>
> Hello,
>
> I am a PhD student doing research on adversarial testing of different TCP protocols. Recently, I found an interesting behavior of TCP that I am describing below:
>
> The network RTT was high for about a second before it was abruptly reduced. Some packets sent during the high RTT phase experienced long delays in reaching the destination, while later packets, benefiting from the lower RTT, arrived earlier. This out-of-order arrival triggered the receiver to generate duplicate acknowledgments (dup ACKs). Due to the low RTT, these dup ACKs quickly reached the sender. Upon receiving three dup ACKs, the sender initiated a fast retransmission for an earlier packet that was not lost but was simply taking longer to arrive. Interestingly, despite the fast-retransmitted packet experienced a lower RTT, the original delayed packet still arrived first. When the receiver received this packet, it sent an ACK for the next packet in sequence. However, upon later receiving the fast-retransmitted packet, an issue arose in its logic for updating the acknowledgment number. As a result, even after the next expected packet was received, the acknowledgment number was not updated correctly. The receiver continued sending dup ACKs, ultimately forcing the congestion control protocol into the retransmission timeout (RTO) phase.
>
> I experienced this behavior in linux kernel 5.4.230 version and was wondering if the same issue persists in the recent-most kernel. Do you know of any commit that addressed this issue? If not, I am highly enthusiastic to investigate further. My suspicion is that the problem lies in tcp_input.c. I will be eagerly waiting for your reply.

I really wonder why anyone would do any research on v5.4.230, a more
than 2 years old kernel, clearly unsupported.

I suggest you write a packetdrill test to exhibit the issue, then run
a reverse bisection to find the commit fixing it (assuming recent
kernels are fixed).

There are about 8200 patches between v5.4.230 and v5.4.296, a
bisection should be fast.

>
> Thanks
> Shehab

  reply	other threads:[~2025-08-28  3:16 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-28  1:12 [BUG] TCP: Duplicate ACK storm after reordering with delayed packet (BBR RTO triggered) Ahmed, Shehab Sarar
2025-08-28  3:15 ` Eric Dumazet [this message]
2025-08-28 20:51   ` Neal Cardwell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CANn89iJJkpSPMeK7PFH6Hrs=0Hw3Np1haR-+6GOhPwmvsq9x5Q@mail.gmail.com' \
    --to=edumazet@google.com \
    --cc=kuniyu@google.com \
    --cc=ncardwell@google.com \
    --cc=netdev@vger.kernel.org \
    --cc=shehaba2@illinois.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).