local tcp stalls

Matthias Moeller (mattes@ice.robin.de)
Mon, 22 Feb 1999 00:10:53 +0100 (CET)


After upgrading to kernel 2.2.x I get tcp stalls from time to time.
The applications are Xemacs/Gnus<->INN and IPop3d<->Pop3client.
All this stuff is running on the same machine.

Even with a self written server and client I could reproduce the
problem. The simple server is spawned by inetd and puts 1Mb of
data to stdout. The client reads the data in a select() read()
loop. Sometimes (not always) the select() call never returns and
the write() operation of the server blocks as well.
This only happens when the client reads small amounts of data
(5-20 bytes) at the same time.

I checked 2.2.0, 2.2.1 and 2.2.2pre5, all the same.
Using kernel 2.0.34 I never had this problem.

The machine is a single PII-350 on a GA686BXD dual board.

(BTW I think somebody reported the same problem some weeks
ago but got no answer.)

Here are the last lines of a tcpdump of a stalled connection:

[...]
23:50:07.634627 localhost.1319 > localhost.pop-2: . ack 59105 win 0 <nop,nop,timestamp 692966 692966> (DF)
23:50:07.705625 localhost.pop-2 > localhost.1319: P 62977:63489(512) ack 1 win 31072 <nop,nop,timestamp 692973 692968> (DF)
23:50:07.705625 localhost.pop-2 > localhost.1319: P 62977:63489(512) ack 1 win 31072 <nop,nop,timestamp 692973 692968> (DF)
23:50:07.705648 localhost.1319 > localhost.pop-2: . ack 63489 win 27104 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.705648 localhost.1319 > localhost.pop-2: . ack 63489 win 27104 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.705825 localhost.pop-2 > localhost.1319: P 63489:64513(1024) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.705825 localhost.pop-2 > localhost.1319: P 63489:64513(1024) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.706134 localhost.pop-2 > localhost.1319: P 64513:66561(2048) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.706134 localhost.pop-2 > localhost.1319: P 64513:66561(2048) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.706440 localhost.pop-2 > localhost.1319: P 66561:68609(2048) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.706440 localhost.pop-2 > localhost.1319: P 66561:68609(2048) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.706452 localhost.1319 > localhost.pop-2: . ack 68609 win 23232 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.706452 localhost.1319 > localhost.pop-2: . ack 68609 win 23232 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.706617 localhost.pop-2 > localhost.1319: P 68609:69633(1024) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.706617 localhost.pop-2 > localhost.1319: P 68609:69633(1024) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.706924 localhost.pop-2 > localhost.1319: P 69633:71681(2048) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.706924 localhost.pop-2 > localhost.1319: P 69633:71681(2048) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707229 localhost.pop-2 > localhost.1319: P 71681:73729(2048) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707229 localhost.pop-2 > localhost.1319: P 71681:73729(2048) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707241 localhost.1319 > localhost.pop-2: . ack 73729 win 18112 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707241 localhost.1319 > localhost.pop-2: . ack 73729 win 18112 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707406 localhost.pop-2 > localhost.1319: P 73729:74753(1024) ack 1 win 31072 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707418 localhost.1319 > localhost.pop-2: . ack 74753 win 17088 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707418 localhost.1319 > localhost.pop-2: . ack 74753 win 17088 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707593 localhost.1319 > localhost.pop-2: . ack 75777 win 16064 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707593 localhost.1319 > localhost.pop-2: . ack 75777 win 16064 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707768 localhost.1319 > localhost.pop-2: . ack 76801 win 15040 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707768 localhost.1319 > localhost.pop-2: . ack 76801 win 15040 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707943 localhost.1319 > localhost.pop-2: . ack 77825 win 14016 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.707943 localhost.1319 > localhost.pop-2: . ack 77825 win 14016 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708118 localhost.1319 > localhost.pop-2: . ack 78849 win 12992 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708118 localhost.1319 > localhost.pop-2: . ack 78849 win 12992 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708293 localhost.1319 > localhost.pop-2: . ack 79873 win 11968 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708293 localhost.1319 > localhost.pop-2: . ack 79873 win 11968 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708469 localhost.1319 > localhost.pop-2: . ack 80897 win 10944 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708469 localhost.1319 > localhost.pop-2: . ack 80897 win 10944 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708643 localhost.1319 > localhost.pop-2: . ack 81921 win 9920 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708643 localhost.1319 > localhost.pop-2: . ack 81921 win 9920 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708818 localhost.1319 > localhost.pop-2: . ack 82945 win 8896 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708818 localhost.1319 > localhost.pop-2: . ack 82945 win 8896 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708998 localhost.1319 > localhost.pop-2: . ack 83969 win 7872 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.708998 localhost.1319 > localhost.pop-2: . ack 83969 win 7872 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.709185 localhost.1319 > localhost.pop-2: . ack 84993 win 6848 <nop,nop,timestamp 692973 692973> (DF)
23:50:07.709185 localhost.1319 > localhost.pop-2: . ack 84993 win 6848 <nop,nop,timestamp 692973 692973> (DF)

I am no tcp expert, I hope the dump is okay.

ciao Matthias

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