Gerrit Renker 113ced1f52 dccp ccid-2: Perform congestion-window validation
CCID-2's cwnd increases like TCP during slow-start, which has implications for
 * the local Sequence Window value (should be > cwnd),
 * the Ack Ratio value.
Hence an exponential growth, if it does not reflect the actual network
conditions, can quickly lead to instability.

This patch adds congestion-window validation (RFC2861) to CCID-2:
 * cwnd is constrained if the sender is application limited;
 * cwnd is reduced after a long idle period, as suggested in the '90 paper
   by Van Jacobson, in RFC 2581 (sec. 4.1);
 * cwnd is never reduced below the RFC 3390 initial window.

As marked in the comments, the code is actually almost a direct copy of the
TCP congestion-window-validation algorithms. By continuing this work, it may
in future be possible to use the TCP code (not possible at the moment).

The mechanism can be turned off using a module parameter. Sampling of the
currently-used window (moving-maximum) is however done constantly; this is
used to determine the expected window, which can be exploited to regulate
DCCP's Sequence Window value.

This patch also sets slow-start-after-idle (RFC 4341, 5.1), i.e. it behaves like
TCP when net.ipv4.tcp_slow_start_after_idle = 1.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
2011-07-04 12:37:49 -06:00
..
2011-05-23 16:29:24 -04:00
2011-06-16 23:19:27 -04:00
2011-04-17 00:48:31 -07:00
2011-07-01 16:11:15 -07:00
2011-03-17 11:59:32 +11:00
2011-01-12 19:00:40 -08:00
2011-07-01 16:11:16 -07:00
2011-07-01 16:11:16 -07:00
2011-03-21 18:16:39 -07:00
2011-06-16 23:19:27 -04:00
2011-07-01 16:11:16 -07:00
2011-06-16 23:19:27 -04:00
2011-07-01 16:11:16 -07:00
2011-07-01 16:16:19 -07:00
2011-06-27 00:14:10 -07:00
2011-07-01 16:11:16 -07:00
2011-07-01 16:11:16 -07:00
2011-05-24 01:13:12 -04:00
2011-03-31 11:26:23 -03:00
2011-07-01 16:11:16 -07:00
2011-05-05 11:10:14 -07:00
2011-04-29 10:20:53 -07:00