The Congestion Manager Software

The Congestion Manager (CM) is an end-system module that:

  1. Enables an ensemble of multiple concurrent streams from a sender destined to the same receiver and sharing the same congestion properties to perform proper congestion avoidance and control.
  2. Allows applications to easily adapt to network congestion by providing a platform-independent adaptation API.

The CM framework integrates congestion management across all applications and transport protocols on a per-macroflow basis. The CM maintains congestion parameters (available aggregate and per-stream bandwidth, per-receiver round-trip times, etc.) and exports an API that enables applications to learn about network characteristics, pass information to the CM, share congestion information with each other, and schedule data transmissions.

The CM architecture can be incrementally deployed in the Internet: the current release (version 1.0) involves changes to the protocol stack only at the sender, and not at any receiver. However, it does require that CM receiver applications (e.g., TCP) provide feedback in some form to their senders, to enable feedback-based congestion management.

Click on the links on the left for the source code, example applications, and documentation, and here for the copyright notice.

Experience and a disclaimer

This should be considers an alpha release. Although we will strive to make only backward-compatible changes, we cannot be certain that this will be the case (in fact, it will almost certainly not be the case!). We have been using the CM kernel on some of our machines for a few months now with relatively few problems. We have observed that a few connections sometimes hang, and are tracking the reasons for this; however, this happens very rarely and has not proved to be a big usability problem in practice. We do run the CM on a few of our desktop machines that are critical to us. To our knowledge, we have not seen any data corruption or other such problems for protocols and applications using the CM.