On Wed, Nov 18, 2015, at 18:28, Eric Dumazet wrote: > On Wed, 2015-11-18 at 16:54 +0100, Hannes Frederic Sowa wrote: > > > Still, the RST packet can be dropped along the way. So the teardown of > > the socket on the other side might not happen. > > This is why it is better to send RST for every incoming in-excess packet
I agree it would be better to send a RST than ACK incoming data. Just thinking out loud, would it make sense to add a sub-state to timewait so we RST all other packets for TIMEWAIT_LEN duration? > Try following packetdrill test, before and after your patch : > > 0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3 > 0.000 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 > 0.000 bind(3, ..., ...) = 0 > 0.000 listen(3, 1) = 0 > 0.100 < S 0:0(0) win 29200 <mss 1460> > 0.100 > S. 0:0(0) ack 1 <mss 1460> > 0.200 < . 1:1(0) ack 1 win 257 > 0.200 accept(3, ..., ...) = 4 > // close our side. > 0.210 close(4) = 0 > // we should expect to see FIN now, sk moves to FIN_WAIT_1 > 0.210 > F. 1:1(0) ack 1 win 29200 > > // receive data, but sk already closed -> Reset > +.010 < P. 1:1001(1000) ack 1 win 46 > +0 > R 1:1(0) win 0 > > // Are we properly sending a RST like prior packet did ? > +.010 < P. 1001:2001(1000) ack 1 win 46 > +0 > R 1:1(0) win 0 Thanks, Hannes -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html