Subject: Re: Appropriate byte counting, revisited.
To: None <tech-net@NetBSD.org>
From: Rui Paulo <rpaulo@fnop.net>
List: tech-net
Date: 06/05/2006 14:39:42
At Sun, 4 Jun 2006 18:41:54 +0000,
Kentaro A. Kurahone wrote:
> 
> There was some discussion a while back regarding Appropriate Byte
> Counting (RFC 3465).  As part of poking at HSTCP, I found a compelling
> reason to implement this mechanism:
> 
> When a connection is in congestion avoidance, we currently grow the
> window like thus:
>   u_int cw = tp->snd_cwnd;
>   u_int incr = tp->t_segsz;
> 
>   incr = incr * incr / cw;
> 
> The problem occurs when the congestion window grows past t_segsz
> segments, since the increment is under a byte, the congestion window
> won't be opened further.
> 
> Diff:
> http://www.sigusr1.org/~kurahone/misc-hacks/tcp-abc-netbsd-3.99.20.diff.gz
> 
> The diff implements straight forward per-RFC ABC, with the "L" parameter
> set at "1*SMSS".  As an additional bonus, I changed the header prediction
> code to execute even when the connection is congestion window bound,
> which should help overall performance.
> 
> Questions/Comments?

I found a typo ;-)
+                               /* Grow our congestion window if neccecary. */

What about a sysctl to disable/enable this ? As the RFC says:

   On the other hand, in some cases
   the modified cwnd growth algorithm causes larger bursts of segments
   to be sent into the network.  In some cases this can lead to a non-
   negligible increase in the drop rate and reduced performance (see
   section 4 for a larger discussion of the issues).