[e2e] Nagle algorithm clarification
dab at BSDI.COM
Tue Jan 30 08:16:32 PST 2001
> 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
> "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