Skip to content

tcp: report duplicate data below the cumulative ACK - #16622

Open
copybara-service[bot] wants to merge 1 commit into
masterfrom
test/cl1009163261
Open

copybara-service[bot] wants to merge 1 commit into
masterfrom
test/cl1009163261

Conversation

@copybara-service

Copy link
Copy Markdown

tcp: report duplicate data below the cumulative ACK

A sender that retransmits data already acknowledged by the receiver
gets the same ACK it would get for a gap. With SACK negotiated, put
the duplicate sequence range in the first SACK block of the response
so the sender can recognize a spurious retransmission 1.

Report only the previously acknowledged prefix when a segment crosses
RCV.NXT. Advance the cumulative ACK through any queued data that the
new suffix makes contiguous. If that consumes a queued FIN, return the
duplicate block in its ACK. A retransmitted final segment also reports
the FIN's sequence number, as Linux tcp_send_dupack() does 2. Keep
the duplicate block out of the receiver's ordinary SACK history.

FUTURE_COPYBARA_INTEGRATE_REVIEW=#16403 from tamird:fix/tcp-receiver-dsack c451fa7

@copybara-service copybara-service Bot added the exported Issue was exported automatically label Oct 28, 2026
@copybara-service
copybara-service Bot force-pushed the test/cl1009163261 branch 2 times, most recently from 5db52d5 to 919a266 Compare October 29, 2026 17:11
A sender that retransmits data already acknowledged by the receiver
gets the same ACK it would get for a gap. With SACK negotiated, put
the duplicate sequence range in the first SACK block of the response
so the sender can recognize a spurious retransmission [1].

Report only the previously acknowledged prefix when a segment crosses
RCV.NXT. Advance the cumulative ACK through any queued data that the
new suffix makes contiguous. If that consumes a queued FIN, return the
duplicate block in its ACK. A retransmitted final segment also reports
the FIN's sequence number, as Linux tcp_send_dupack() does [2]. Keep
the duplicate block out of the receiver's ordinary SACK history.

[1]: https://www.rfc-editor.org/rfc/rfc2883#section-4
[2]: https://github.com/torvalds/linux/blob/830b3c68c1fb1e9176028d02ef86f3cf76aa2476/net/ipv4/tcp_input.c#L4481-L4501

FUTURE_COPYBARA_INTEGRATE_REVIEW=#16403 from tamird:fix/tcp-receiver-dsack c451fa7
PiperOrigin-RevId: 1009163261
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

exported Issue was exported automatically

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant