[e2e] Why do we need TCP flow control (rwnd)?

Michael Scharf michael.scharf at ikr.uni-stuttgart.de
Tue Jul 1 10:48:41 PDT 2008

On Tue, 01 Jul 2008 at 09:20:33, David P. Reed wrote:
> In the case of POP3, there is an application layer "flow control" in the 
> handshakes.   This *partly* would obviate the need for rwnd  - if messages 
> were all shorter than a threshold.  My conclusion when I studied this is 
> that TCP flow control and POP3 handshakes actually get in each others' way.
> If we implemented end-to-end flow control in such a way that apps could 
> dynamically adjust rwnd directly, I'm sure many would.  The current 
> "conservative" approach is neither fish nor fowl.

Just to better understand this: If the app provided frequently a
"perfect" value for rwnd, the network stack would still have to
"allocate" a buffer of size rwnd for this connection, since it cannot
be sure when the app will exactly read the data, right? So, this ends
up more or less in a dynamic app-driven adjustment if the "receive
buffer size"?

Providing such an API to apps should not be very complex (e. g.,
socket option), to some extent it may even exist today. I may be wrong
once again, but I think it would take quite a long time until app
developers would become aware of it...


More information about the end2end-interest mailing list