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

Detlef Bosau detlef.bosau at web.de
Tue Jul 1 13:58:07 PDT 2008

Michael Scharf wrote:
> 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...
> Michael
As David wrote: It _partly_ obviates the problem.

Think of SMTP. When you agree upon a mail size of several 100 kByte, 
which is possible in ESMTP, you will not get an acknowledgement by the 
application before the whole mail data is successfully submitted.

Howver, the receiving application may well read the mail data from the 
receiving sockets in several read requests, thus the flow control 
problem at socket layer still remains.

Detlef Bosau                          Mail:  detlef.bosau at web.de
Galileistrasse 30                     Web:   http://www.detlef-bosau.de
70565 Stuttgart                       Skype: detlef.bosau
Mobile: +49 172 681 9937

More information about the end2end-interest mailing list