Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Jan 2003 10:54:45 -0800
From:      Jeffrey Hsu <hsu@FreeBSD.org>
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/netinet tcp_input.c tcp_seq.h tcp_timer.c tcp_var.h
Message-ID:  <0H8O00FKL1V1NA@mta5.snfc21.pbi.net>
In-Reply-To: Message from Jeffrey Hsu <hsu@FreeBSD.org> "of Mon, 13 Jan 2003 03:01:20 PST." <200301131101.h0DB1Lum021477@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
  > hsu         2003/01/13 03:01:20 PST
  > 
  >   Modified files:
  >     sys/netinet          tcp_input.c tcp_seq.h tcp_timer.c 
  >                          tcp_var.h 
  >   Log:
  >   Fix NewReno.
  >   
  >   Reviewed by: Tom Henderson <thomas.r.henderson@boeing.com>
  >   
  >   Revision  Changes    Path
  >   1.187     +44 -41    src/sys/netinet/tcp_input.c
  >   1.19      +1 -1      src/sys/netinet/tcp_seq.h
  >   1.56      +2 -5      src/sys/netinet/tcp_timer.c
  >   1.84      +3 -1      src/sys/netinet/tcp_var.h

The state for when we are enter, are in, and leave the NewReno Fast Recovery
period has been split out from t_dupacks into its own state variable, snd_high,
which has the semantics described in the spec
  RFC2582, NewReno Modification to TCP's Fast Recovery
for the variable call "send_high".  Previously, this state was
overloaded in the t_dupacks field of the tcpcb.  The problem with this
is a number of conditions which reset t_dupacks such as data flowing
back the other way, window size changes, and re-ordered acks which
erroneously kick you out of Fast Recovery mode.  The end result
is the TCP stack often has to wait for a timeout to retransmit, which
would have been avoided if NewReno was working correctly.  Tom Henderson
has analyzed before and after packet traces and the ones before were very
sick.  Now, we correctly transition into and out of Fast Recovery, do the
correct window adjustments on partial acks, and retransmit when we should.

In addition, the variable named "send_high" in the spec has been split
out from snd_recover, in order to make the check for more explicit
and to detect for sequence wraparound.  This new version of the
NewReno logic implements what the spec calls the Careful variant of Fast
Retransmit, which is the version recommended by the spec.

							Jeffrey


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0H8O00FKL1V1NA>