Re: Persist Mode -- ** Standards bug ??
- I think we have conflicting standards.... although I agree with your
recollection, I believe that strict "never retract the window" can not be
implemented. Consider the following scenario:
A connection negotiates TCP window scale (e.g. 3, so the window size is
quantized in steps of 8 bytes).
After running for awhile with a reasonable window, the receiver stops
The sender continues to send data, 1 byte at a time, progressively filling
Under these conditions the right edge of the window can not be maintained at a
constant position in the sequence space. Following 7 consecutive data packets
it will advance by one byte. On the 8th, it will retract by 7 bytes.
(Alternatively, if the TCP rounds windows to MSS, the steps are MSS sized).
Furthermore when the window finally closes all the way, it will always be due
to a window retraction.
If the TCP doesn't behave this way it will violate some other part of RFC1323
or the base specifications. Therefore every TCP that implements 1323 violates
rule 1 under some conditions.
Furthermore any TCP requires strict adherence to rule 1 is broken.
I believe that this is "well tested" in todays Internet (it happens all the
time) but nobody has been looking for symptoms.
Now a question for the readers: what might happen if this rule was formally
retracted or amended?
On Tue, 19 Jun 2001, Charles Esson wrote:
> 1) Somewhere in the mile high stack of paper that represents the TCP standard
> it says that the receiver is not allowed to reduce it's advertised window.
> 2) Somewhere else it says the sender is not allowed to expect nice things if
> it transmits past the advertised window.
> If both conditions are met the receiver can't close his window before
> in-flight packets are acked.
> If I am right ( and this is from memory), then all three behave correctly as
> the condition should not arise.
> It would seem AIX4.3 and Sun0S 5.6 throw their hands in the air and wait for
> some sanity. Linux insists you obey rule 1.
> As I only allow the window to move forward I am with linux.