bug in tcp?

From: Sebastian Kuzminsky
Date: Mon Apr 16 2007 - 17:45:37 EST


I'm seeing some weird behavior in TCP. The issue is perfectly
reproducible using netcat and other programs. This is what I do:

1. Open a TCP connection over the loopback (over IPv4).

2. Send a couple of bytes of data each way. No problems.

3. Wait about 120 hours with no writes on either side of the
connection.

4. write() a few bytes to the server's socket. I'd expect the data
to go through, but it doesnt. I see the TCP frame from the
server to the client, but instead of an ACK, the client sends
back a RST. netstat shows the bytes sitting in the server's
socket's send-buffer.

5. write a few bytes to the client's socket. The server gets
these immediately.

6. On the next server-to-client retransmit, the client gets the
bytes from the server. After this, the connection works normally.


The libpcap capture file is here: http://highlab.com/~seb/tcp-idleness-bug


The behavior is reproducible on all kernels I've tried: 2.4.32, 2.6.19.1,
and 2.6.20.4. I dont think it's iptables-related, though I'm rerunning
the tests on a machine without iptables to be sure. I'll have results
for you in 120 hours. ;-)


--
Sebastian Kuzminsky
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/