[e2e] Nagle algorithm clarification

David Borman dab at BSDI.COM
Tue Jan 30 08:16:32 PST 2001


Matt,

> From: Matt Wakeley <matt_wakeley at agilent.com>
> Subject: [e2e] Nagle algorithm clarification
> Date: Mon, 29 Jan 2001 21:13:17 -0800
...
> 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?

RFC-1122 is the standard, so from a standards viewpoint, it's
description overrides RFC 896.

The purpose of the Nagle algorithm is to avoid sending lots
of small packets.  So, when you've queued up enough data for a
full packet, there is no longer any advantage in delaying that
packet, since you won't be able to put any more data into it.
The refinements in RFC-1122 are based on the 5 years of experience
after RFC-896 was published. 

			-David Borman, dab at bsdi.com



More information about the end2end-interest mailing list