Folks, As we know, the 3.x kernels have higher TCP default connection values, such as initcwnd and initrwnd. For 2.x friends, is there a way to set these in /etc/sysctl.conf instead of the ip route way?

Instead of the following:

sudo ip route change default via dev eth0  proto static initcwnd 10

Is there a way to set the same in /etc/sysctl.conf?


  • 1
  • perfect, however, any way to set this setting in /etc/sysctl.conf ? – CMag Oct 24 '13 at 22:34
  • Nope. The default value is a constant in #define. However, you may be able to persuade your init scripts to install the default route with the parameters you want. For example, on Gentoo, this can be easily achieved. – Laszlo Valko Oct 24 '13 at 22:50

By "via sysctl.conf" do you actually mean you want the settings to apply every boot?

If so, you can write /sbin/ifup-local to run any commands as the last part of the interface start. The ifup script calls this with the interface name as a parameter.

So your /sbin/ifup-local could contain:

if [[ "$1" == "eth0" ]]
  ip route change default via dev eth0 proto static initcwnd 10

At least this works on RHEL/CentOS. I have not tried Deb/Ubu/others.

  • What if its a different interface that you want to change the setting of, other than the default one? – UpTheCreek Nov 4 '14 at 7:54
  • There is no "default interface". The script is called with the device name as a parameter, so you just add/change the if condition to match what interface(s) you want to change settings for. – suprjami Nov 5 '14 at 9:04

In case of CentOS 7 the script called in ifup is /sbin/ifup-pre-local . So i just made the script /sbin/ifup-pre-local :


defrt=`ip route | grep "^default" | head -1`
ip route change $defrt initcwnd 10

And the initcwnd is set in all reboots and network restart.


Not quite answering the question but in December 2017 support for changing these values was added to systemd-networkd so you can now put this in /etc/systemd/network/*.network to make it persistent:

InitialCongestionWindow=10          # initcwnd
InitialAdvertisedReceiveWindow=10   # initrwnd

The Gateway=_dhcp4 line is needed if you want the [Route] section to apply to the gateway supplied via DHCP. Otherwise add the Initial* lines to your existing [Route] section where you manually specify your gateway address.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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