diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2011-07-03 09:55:03 -0600 |
---|---|---|
committer | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2011-07-04 12:37:49 -0600 |
commit | 113ced1f52e5ed2dfedc0771a1b11b536cde8168 (patch) | |
tree | 513df4ef1ad8b8530e12329f8f02c89140860b36 /lib/crc32defs.h | |
parent | 58fdea0f3170c13a3b875ef904d5b67cf73814be (diff) | |
download | linux-113ced1f52e5ed2dfedc0771a1b11b536cde8168.tar.bz2 |
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>
Diffstat (limited to 'lib/crc32defs.h')
0 files changed, 0 insertions, 0 deletions