Skip to content

net: TCP: FIN packets aren't queued for retransmission, loss leads to TCP timeout on peer's side #8188

@pfalcon

Description

@pfalcon

This continues from were #8187 leaves off. Let's look again at the zephyr output:

[slip] [INF] slip_send: sent: pkt 0x20001ec4 llr: 14, len: 54
[slip] [INF] slip_send: sent: pkt 0x20001ec4 llr: 14, len: 1506
[slip] [INF] slip_send: sent: pkt 0x20001e78 llr: 14, len: 783
[slip] [INF] slip_send: sent: pkt 0x20001e2c llr: 14, len: 54
Connection from 192.0.2.2 closed
[slip] [INF] slip_send: sent: pkt 0x20001e78 llr: 14, len: 783

What we can see here is that Zephyr IP stack sends 2 data packets, 1506, 783 bytes, and then sends FIN as a result of socket close(). As explained in #8187, what really happens in this case is that 783bts packet doesn't get thru and is retransmitted. Looking at Wireshark screenshot there, the peer acks it, but that's where it all ends: FIN doesn't get retransmitted, so, everything gets stuck, until peer closes it by timeout.

Metadata

Metadata

Assignees

Labels

area: NetworkingbugThe issue is a bug, or the PR is fixing a bugpriority: mediumMedium impact/importance bug

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions