Lawrence,
Glad to see we achieved mutual understanding on the technical side.
On Wed, 1 Aug 2007, Lawrence Stewart wrote:
Agreed. This would save quite a bit of confusion. Although dropping the
"window size" term completely is perhaps not quite the right way to
handle it. As you note below, the receive buffer size is related to the
TCP window. Perhaps changing the terminology to refer to "maximum
advertised window" would make it clearer.
Also please note that, due to latency, the sender systematically sees
a smaller TCP window than the one published to him by the receiver at
the same time.
That's really the big problem with the current documentation: it makes
the user believes she can set a complex and very dynamic protocol
value. Untrue. And we are not even speaking of congestion avoidance here.
I feel that having a switch behave differently when used in 2 different
contexts is very confusing. You could change the documentation to
explain the current behaviour, but that would involve describing 2
different behaviours depending on running in client or server mode, and
also makes it more difficult to implement an additional switch to
provide the fine grained control over either send or receive buffer
sizes depending on whether you run in client or server mode.
You do make a fair point regarding the entrenched use of the "-w" switch
in its current form. Perhaps the "-w" switch could be left intact and a
pair of new switches added to specifically set the send/receive socket
buffer sizes. Use of these switches and the "-w" switch could be made
mutually exclusive so they don't step on eachother's toes. To me,
leaving the "-w" switch intact still feels a bit hacky... but I can see
why it would be useful.
I'm less affirmative concerning user interface design but I believe in
backward compatibility. I agree that the "too clever" behaviour of the
current -w option is a bit confusing, but it seems to me it still can
be documented correctly. This can even be terse provided it stands
after the new options. Something like this:
-X1
Sets the receive buffer size / maximum TCP window size
[blabla].
-X2
Sets the send buffer size [blabla].
-w
"Magic" buffer size: sizes the receive buffer on the receiver,
and the send buffer on the sender.