Binomial Congestion Controls

Binomial congestion controls are a new family of congestion control algorithms motivated in part by the requirement for new congestion control algorithms for streaming multimedia applications on the Internet. These congestion controls reduce the large oscillations in the sending rate associated with TCP's AIMD algorithm. For more details, please see this technical report.

The current release of CM supports SQRT (a TCP-friendly member of the binomial congestion control family) algorithm. It is implemented in cm_bincongctl.c and inherits most of its code from cm_tcpcongctl.c (the TCP AIMD-style CM default). To use SQRT congestion control, one needs to choose option "y" for the "Binomial congestion control" option while doing make xconfig. Enabling binomial congestion control and TCP/CM makes all connections use binomial controls by default. However, an application can control the congestion control algorithm that it wants to use by calling cm_setcongalg, described in the CM API documentation.