https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285158

            Bug ID: 285158
           Summary: TCP segment with 0 length upon receiving partial ack
           Product: Base System
           Version: Unspecified
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: b...@freebsd.org
          Reporter: yjaey...@gmail.com

I am observing somewhat strange pcap behavior.

Scenario:
   A --> B

A is the only sender of the data and B is the only receiver. Note that
we use PRR. When B is sending partial ACKs to A, there are cases when A sends
out
just an empty segment with the same sequence number to B. Which seems
to be pure overhead.

After digging through the code, I think this could be triggered by the
following sequence:

1.
https://github.com/freebsd/freebsd-src/blob/main/sys/netinet/tcp_input.c#L2892
during prr-partial ack processing, it calls tcp_output with ACKNOW flag.

2.https://github.com/freebsd/freebsd-src/blob/main/sys/netinet/tcp_output.c#L415
in tcp_output, it determines "len" how much to send and when ACKed
bytes in partial ack is small enough, this "len" becomes zero.

3.
https://github.com/freebsd/freebsd-src/blob/main/sys/netinet/tcp_output.c#L702
As the flag is set to "ACKNOW", with zero length, it anyway sends out
a segment with 0 length.

I believe there should be some checks before sending out like checking
if the length is zero at the tcp_output?

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

Reply via email to