[e2e] Nagle algorithm clarification

Matt Wakeley matt_wakeley at agilent.com
Mon Jan 29 21:13:17 PST 2001


Hi,

RFC 1122 Requirements for Internet Hosts states:

"A TCP SHOULD implement the Nagle Algorithm [TCP:9]"

and the reference is:

'[TCP:9] "Congestion Control in IP/TCP," J. Nagle, RFC-896, January 1984.'

Under "discussion" is the following:

"The Nagle algorithm is generally as follows:
If there is unacknowledged data (i.e., SND.NXT >
SND.UNA), then the sending TCP buffers all user
data (regardless of the PSH bit), until the
outstanding data has been acknowledged or until
the TCP can send a full-sized segment."

So, I turn to RFC896 and find that it's official status is "unknown" - what
does that mean?  How can an RFC that is a "standard" mandate the
implementation of an RFC of "unknown" status?

Anyway, RFC 896 Congestion Control in IP/TCP Internetworks (the Nagle
algorithm)
states:

"inhibit the sending of new TCP segments when
new outgoing data arrives from the user if any previously
transmitted data on the connection remains unacknowledged. This
inhibition is to be unconditional; no timers, tests for size of
data received, or other conditions are required."

896 states "This inhibition is to be unconditional" but 1122 adds "or until
the TCP can send a full-sized segment".

So, there appears to be a conflict in the RFCs.  Any comments on which is the
correct implementation?

-Matt



More information about the end2end-interest mailing list