linux/net/dccp/ccids/lib
Gerrit Renker a3cbdde8e9 dccp ccid-3: Preventing Oscillations
This implements [RFC 3448, 4.5], which performs congestion avoidance behaviour
by reducing the transmit rate as the queueing delay (measured in terms of
long-term RTT) increases.

Oscillation can be turned on/off via a module option (do_osc_prev) and via sysfs
(using mode 0644), the default is off.

Overflow analysis:
------------------
 * oscillation prevention is done after update_x(), so that t_ipi <= 64000;
 * hence the multiplication "t_ipi * sqrt(R_sample)" needs 64 bits;
 * done using u64 for sqrt_sample and explicit typecast of t_ipi;
 * the divisor, R_sqmean, is non-zero because oscillation prevention is first
   called when receiving the second feedback packet, and tfrc_scaled_rtt() > 0.

A detailed discussion of the algorithm (with plots) is on
http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/ccid3/sender_notes/oscillation_prevention/

The algorithm has negative side effects:
  * when allowing to decrease t_ipi (leads to a large RTT) and
  * when using it during slow-start;
both uses are therefore disabled.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
2008-09-04 07:45:43 +02:00
..
loss_interval.c dccp ccid-3: Update the RX history records in one place 2008-09-04 07:45:42 +02:00
loss_interval.h dccp ccid-3: Update the RX history records in one place 2008-09-04 07:45:42 +02:00
Makefile [TFRC]: Provide central source file and debug facility 2008-01-28 14:56:39 -08:00
packet_history.c dccp ccid-3: Update the RX history records in one place 2008-09-04 07:45:42 +02:00
packet_history.h dccp ccid-3: Update the RX history records in one place 2008-09-04 07:45:42 +02:00
tfrc.c dccp: Toggle debug output without module unloading 2008-09-04 07:45:25 +02:00
tfrc.h dccp ccid-3: Preventing Oscillations 2008-09-04 07:45:43 +02:00
tfrc_equation.c dccp tfrc: Suppress unavoidable "below resolution" warning 2008-09-04 07:45:40 +02:00