[comp.unix.ultrix] Nagle algo. in Unix-TCP

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