>  There seem to be two problematic cases.  In the first, _both_ of these
>  conditions fire in tcp_input.c:
>
>  else if (++tp->t_dupacks == tcprexmtthresh) {
>
>  and
>
>  if (tcp_do_newreno && SEQ_LT(th->th_ack,
>      tp->snd_recover)) {

yes, this is a problem because FreeBSD 4.[34 and before?] did not
always initialized tp->snd_recover on the session startup and
presented a problem when the initial segment sequence is greater
than 0x7fffffff.

The only other way to tigger this error is if you went half way
through the sequence without a duplicate ack. We talked about this
a little on -net and decided the prevention would have more overhead
than it would effectively cure.

FreeBSD 4.5 and greater fixed the initialization of snd_recover with the
addition of the "syncache" code.

FreeBSD 4.5 also fixed some serious socket errors that would cause more 
even greater performance problems. I suggest you upgrade.

--mark tinguely.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message

Reply via email to