[fa.tcp-ip] Tinygrams on 4.2BSD

tcp-ip@ucbvax.ARPA (06/07/85)

From: bellcore!karn@BERKELEY (Phil R. Karn)

It is true that TCP on 4.2 effectively does a push every time the user
process does a write() system call. It really has no choice since there are
no semantics by which the user can indicate a push in the write call. But it
doesn't have to be a problem IF programs call the standard I/O library
instead. Stdio tries to fill its 1K buffers completely before calling the
system, and the user is given a push-like subroutine fflush() for when it is
really needed.  The only real offenders (besides character-at-a-time Telnet)
are those few programs that insist on using the bare I/O system calls
directly to write small amounts of data; they should be taken out and shot.
They give lousy performance even when a network isn't involved.

I'm still looking forward to the new version which is rumored to include
John Nagle's transmission algorithms.

Phil

tcp-ip@ucbvax.ARPA (06/07/85)

From: MILLS@USC-ISID.ARPA

In response to the message sent  Fri, 7 Jun 85 01:36:52 edt from bellcore!karn@Berkeley 

Phill,

Please understand the "John Nagle algorithm" does not in itself represent
a panacea, but only one of many detail-engineering issues involved in making
TCP work well over widely ranging scenarios. That algorithm must be addressed
in the context of a good ack policy. Experiments done here reveal the algorithm
can result in very poor performance with some ack policies and can adversely
affect performance in scenarios in the middle, so to speak, of the TELNET
character-at-a-time and FTP spectrum. Simply stuffing the algorithm in the
system blindly may exchange better performance at these extremes, which
we ordinarily see first-hand, for poorer performance in the middle (e.g. mail),
which chugs in the background slurping up resources we may not notice.

Dave
-------