[Bug 286812] Unexpected RST instead of ACK for unacceptable TCP segment

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 15 May 2025 02:58:15 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=286812

            Bug ID: 286812
           Summary: Unexpected RST instead of ACK for unacceptable TCP
                    segment
           Product: Base System
           Version: 14.2-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: huruinan0427@outlook.com

Created attachment 260422
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=260422&action=edit
pcap trace of this issue

I encountered a scenario that may indicate a deviation from the behavior
described in RFC 9293, Section 3.10.7.4:

"If an incoming segment is not acceptable, an acknowledgment should be sent in
reply. After sending the acknowledgment, drop the unacceptable segment and
return."

In the first test, I established a TCP connection and, in the ESTABLISHED
state, sent two invalid packets—first with an invalid SEQ number, which
correctly triggered an ACK response, and then with an invalid ACK number, which
triggered an RST. This behavior appears consistent with the RFC.

In the second test, using a new connection with a different client port, I sent
the first packet with an invalid SEQ number during the ESTABLISHED state. This
time, FreeBSD immediately responded with an RST instead of an ACK.

Interestingly, if I skip the first connection entirely and send only the
abnormal packet from the second test, FreeBSD behaves as expected, replying
with an ACK.

-- 
You are receiving this mail because:
You are the assignee for the bug.