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>