Dealing with TCP congestion these days


rajil.s

Well-Known Member
Adept
Apr 19, 2011
461
95
66
45
I am seeing high TCP congestion during peak hours these days. This is especially for long distance routes like between Bangalore and Lucknow. The RTT is about 47ms.
Code:
# mtr lucknowan -w
Start: 2020-07-30T10:18:27+0530
HOST: ubuntu-s-1vcpu-1gb-blr1-01 Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- ???                                         100.0    10    0.0   0.0   0.0   0.0   0.0
  2.|-- 10.66.4.42                                   0.0%    10    0.5   0.6   0.4   0.8   0.1
  3.|-- 138.197.249.22                               0.0%    10    0.3   0.6   0.3   1.8   0.5
  4.|-- 219.65.110.185.static-bangalore.vsnl.net.in  0.0%    10    1.3   2.4   1.2  10.9   3.0
  5.|-- ???                                         100.0    10    0.0   0.0   0.0   0.0   0.0
  6.|-- 14.142.187.86.static-Delhi.vsnl.net.in       0.0%    10   37.9  37.9  37.8  38.3   0.2
  7.|-- broadband.actcorp.in                         0.0%    10   35.5  35.9  35.5  37.9   0.7
  8.|-- broadband.actcorp.in                         0.0%    10   34.5  34.2  34.0  34.6   0.2
  9.|-- broadband.actcorp.in                         0.0%    10   46.3  46.9  46.3  47.3   0.3
For instance uploading from Bangalore (Digital Ocean) to Lucknow shows the following:
Code:
# iperf3 -c lucknowan  -p 5201
Connecting to host lucknowan, port 5201
[  4] local 157.245.100.246 port 39900 connected to lucknowan port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  2.58 MBytes  21.6 Mbits/sec    7   69.3 KBytes 
[  4]   1.00-2.00   sec  1.49 MBytes  12.5 Mbits/sec    0   82.0 KBytes 
[  4]   2.00-3.00   sec  1.68 MBytes  14.1 Mbits/sec    1   66.5 KBytes 
[  4]   3.00-4.00   sec  1.06 MBytes  8.86 Mbits/sec    5   36.8 KBytes 
[  4]   4.00-5.00   sec   700 KBytes  5.73 Mbits/sec    0   41.0 KBytes 
[  4]   5.00-6.00   sec   891 KBytes  7.30 Mbits/sec    0   56.6 KBytes 
[  4]   6.00-7.00   sec   954 KBytes  7.82 Mbits/sec    4   50.9 KBytes 
[  4]   7.00-8.00   sec   891 KBytes  7.30 Mbits/sec    1   45.2 KBytes 
[  4]   8.00-9.00   sec  1.06 MBytes  8.86 Mbits/sec    0   60.8 KBytes 
[  4]   9.00-10.00  sec  1.24 MBytes  10.4 Mbits/sec    1   53.7 KBytes 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  12.5 MBytes  10.5 Mbits/sec   19             sender
[  4]   0.00-10.00  sec  11.6 MBytes  9.70 Mbits/sec                  receiver

iperf Done.


The above results are for cubic congestion control algorithm
Code:
# sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = cubic


The congestion algorithm can be changed to BBR,
Code:
$sysctl -w net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_congestion_control = bbr


Iperf then gives the full line speed,
Code:
# iperf3 -c lucknowan  -p 5201
Connecting to host lucknowan, port 5201
[  4] local 157.245.100.246 port 39900 connected to lucknowan port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  14.6 MBytes   122 Mbits/sec   33   1021 KBytes 
[  4]   1.00-2.00   sec  18.4 MBytes   154 Mbits/sec   25   1.72 MBytes 
[  4]   2.00-3.00   sec  17.7 MBytes   149 Mbits/sec   13   1.73 MBytes 
[  4]   3.00-4.00   sec  17.7 MBytes   149 Mbits/sec   16   1.72 MBytes 
[  4]   4.00-5.00   sec  17.7 MBytes   149 Mbits/sec   14   1.72 MBytes 
[  4]   5.00-6.00   sec  17.7 MBytes   149 Mbits/sec   10   1.72 MBytes 
[  4]   6.00-7.00   sec  17.7 MBytes   149 Mbits/sec   20   1.72 MBytes 
[  4]   7.00-8.00   sec  17.7 MBytes   149 Mbits/sec   41   1.71 MBytes 
[  4]   8.00-9.00   sec  17.7 MBytes   149 Mbits/sec   12   1.73 MBytes 
[  4]   9.00-10.00  sec  17.4 MBytes   146 Mbits/sec   13   1.18 MBytes 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   174 MBytes   146 Mbits/sec  197             sender
[  4]   0.00-10.00  sec   172 MBytes   144 Mbits/sec                  receiver

iperf Done.
 
Last edited: