7

I am using Ubuntu 14.04 LTS with Linux Kernel version 3.13.0-34.

How can I find out what is the default or what is the current TCP congestion control algorithm being used ?

Thanks.

1

3 Answers 3

7

There aren't TCP variants; there are TCP congestion control algorithms:

sysctl net.ipv4.tcp_congestion_control

cat /proc/sys/net/ipv4/tcp_congestion_control

The default is usually cubic or reno, although plenty others are available, and programs can set the preferred algorithm for individual connections (e.g. Transmission enables lp if available).

(The same knob affects both IPv4 and IPv6, despite its name.)

6

Adding to @grawity answer, it is possible to check all TCP congestion control algorithms available with the following command:

sysctl net.ipv4.tcp_available_congestion_control

A list of some of the possible output (i.e.- availble flavours) is:

reno: Traditional TCP used by almost all other OSes. (default)

cubic: CUBIC-TCP

bic: BIC-TCP

htcp: Hamilton TCP

vegas: TCP Vegas

westwood: optimized for lossy networks

YeAH: delay-aware/state-enabled to keep a pipe at or below a threshold

NOTE: If cubic and/or htcp are not listed when you do 'sysctl net.ipv4.tcp_available_congestion_control', try the following, as most distributions include them as loadable kernel modules:

/sbin/modprobe tcp_htcp
/sbin/modprobe tcp_cubic

For more detailes you can have look here:

TCP tuning Details

Hope it helps.

Cheers,

Guy.

2

If you want to find out the current congestion control algorithm used on each connection you can use the ss command (part of the iproute2 package/tools):

ss -ti

Here's some example output: Below the connection details, the first item in the parameter output is the congestion control algorithm - in this case cubic- which is followed by various parameters related to the TCP connection.

ESTAB      0      0      192.168.56.102:ssh           192.168.56.1:61795
 cubic wscale:6,7 rto:201 rtt:0.218/0.038 ato:40 mss:1448 rcvmss:1392
 advmss:1448 cwnd:10 bytes_acked:8753 bytes_received:3945 segs_out:40
 segs_in:63 send 531.4Mbps lastsnd:1 lastrcv:2 lastack:1
 pacing_rate 1059.1Mbps rcv_rtt:2 rcv_space:28960

Note: It is possible for applications to chose the congestion control algorithm they want to use by using the TCP_CONGESTION setsockopt() call.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .