rwolski@lll-lcc.UUCP (Richard Wolsoi) (08/29/89)
Greetings netlanders. My question regards the Nagle algorithms for small-packet avoidance, which have been implemented in the various flavors of UNIX now running around. A colleague of mine has written an RPC mechanism to run over TCP sockets on UNIX systems and we are seeing some very strange performance numbers for certain kinds of messaging. An ethernet trace and several minutes with the source code convinced us that TCP was delaying both data sends and acknowledgements in an effort to avoid silly windows. Part of the$problem comes from the RPC implementation which makes two send system calls for each request or reply (no flames please we are dealing with some serious history here) in that UNIX sends out the information in two different packets. The first goes out immediately (as the Nagle algorithm prescribes) while the second is delayed until the first is acked. Unfortunately, the ack is delayed as part of the receiver's half of the bargain and so we were seeing a whopping 10 packets per second. Now for my question. Is there any way to defeat the Nagle algorithms under standard implementations? I seem to recall that the Tahoe (or is it Tajo) release of 4.3 had such a defeat wlich was put in for X-11, but we don't have systems which are quite so modern. Specifically, we are using SunOS 3.4, Ultrix 3.0 and UTS something-or-other with WIN-UTS. My boss's boss says that there are some vevsions of RPC which use TCP streams. If they exist, what are they called? Do they suffer this problem or do they rely on the apparent fact that UNIX will attempt to put all of a send system call in a single packet (which is not part of the spec to my knowledge)? Thank you all in advance, Rich A tourist in Technical Disneyland rwolski@lll-lcc.llnl.gov Internet (415)423-8594 Bell-net Rich Wolski Mail-net President, Mark Boolootian ski-boat foundation (an inside joke) P.O. Box$808, L-60 Livermore, CA. 94550