Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to use Compound TCP in Ubuntu.

The Wikipedia page says:

In addition to Windows, CTCP was also ported to Linux [...] Since kernel version 2.6.17 the module has been incompatible and fails to compile due to kernel API changes.

Is there a newer implementation that works correctly?

share|improve this question
up vote 5 down vote accepted

Compound TCP by Microsoft is just one implementation of a congestion algorithm protocol. In Linux this has been discarded as you've already found, and it seems that TCP Illinois was the direct successor, but not used that much any more.

Some work has been done to implement Illinois since 2.6.22: LWN article: TCP Illinois preliminary version. It also seems still available in current versions: net/ipv4/tcp_illinois.c in linux-stable tree.

TCP New Reno, another alternative based on RFC3782 seems to be the most commonly used in Linux and completely integrated in the kernel. See also the manpage tcp(7):

  tcp_available_congestion_control (String; read-only; since Linux 2.4.20)
          Show  a list of the congestion-control algorithms that are registered.  This
          list is a limiting set for the list in tcp_allowed_congestion_control.  More
          congestion-control algorithms may be available as modules, but not loaded.

Check the ones available on your system:

cat /proc/sys/net/ipv4/tcp_available_congestion_control

and active:

cat /proc/sys/net/ipv4/tcp_congestion_control

Change the active one by writing to it (example reno):

echo reno | sudo tee /proc/sys/net/ipv4/tcp_congestion_control

Bottom line: You're probably already using a very modern and very efficient TCP congestion algorithm protocol just by using a recent Linux kernel.

share|improve this answer

As far as I could see it, it was removed from mainline kernel (see git commit). According to a search within git it never came back. So the entry in Wikipedia is right. You have no chance to get it working (until you rewrite the code).

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.