Subject: Persist Mode

From: Martin McSweeney <[email-masked]>
Date: Tue, 19 Jun 2001 01:14:58 -0400 (EDT)

Hello, my question regards the persist mode feature of TCP.

In general, sending a zero window acknowledgement forces a sender into
persist mode, and a subsequent acknowledgement re-opens the send window.
I have found that in some implementations (AIX 4.3 and SunOS 5.6, for
example), sending a zero window acknowledgment that moves the right
edge of the send window left still forces the sender into persist mode.
Once another acknowledgement re-opens the window, all segments that were
moved to the right of the send window are retransmitted immediately
(because congestion control mechanism are not invoked).

However, with other implementations (Linux, for example), behavior is
quite the opposite. It seems that Linux does not enter persist mode unless
a zero window acknowledgement acknowledges all outstanding bytes.
Even if a zero window acknowledgement does put a sender into persist mode,
Linux will not freeze its transmission rate, but rather use slow-start to
recover losses. I think the idea behind this is from RFC 2861---a pause in
communication invalidates the congstion window.

Does anyone have a comment an how an implementation should re-act to a
zero window acknowledgement?  RFC 1122 is very brief on this subject.

Thank you,
Martin McSweeney

---

From: Charles Esson <[email-masked]>
Date: Tue, 19 Jun 2001 16:33:59 +1000

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.