From: Jason Baron <jba...@akamai.com> Date: Tue, 17 Jan 2017 13:37:19 -0500
> From: Jason Baron <jba...@akamai.com> > > Using a Mac OSX box as a client connecting to a Linux server, we have found > that when certain applications (such as 'ab'), are abruptly terminated > (via ^C), a FIN is sent followed by a RST packet on tcp connections. The > FIN is accepted by the Linux stack but the RST is sent with the same > sequence number as the FIN, and Linux responds with a challenge ACK per > RFC 5961. The OSX client then sometimes (they are rate-limited) does not > reply with any RST as would be expected on a closed socket. > > This results in sockets accumulating on the Linux server left mostly in > the CLOSE_WAIT state, although LAST_ACK and CLOSING are also possible. > This sequence of events can tie up a lot of resources on the Linux server > since there may be a lot of data in write buffers at the time of the RST. > Accepting a RST equal to rcv_nxt - 1, after we have already successfully > processed a FIN, has made a significant difference for us in practice, by > freeing up unneeded resources in a more expedient fashion. > > A packetdrill test demonstrating the behavior: ... > Signed-off-by: Jason Baron <jba...@akamai.com> Applied, thanks Jason.