Linux initcwnd и initrwnd через /etc/sysctl.conf
Люди, как мы знаем, ядра 3.x имеют более высокие значения соединения TCP по умолчанию, такие как initcwnd и initrwnd. Для друзей 2.x, есть ли способ установить их в /etc/sysctl.conf вместо пути ip?
Вместо следующего:
sudo ip route change default via 192.168.1.1 dev eth0 proto static initcwnd 10
Есть ли способ установить то же самое в /etc/sysctl.conf?
Спасибо
4 ответа
Не совсем отвечаю на вопрос, но в декабре 2017 года в systemd-networkd была добавлена поддержка изменения этих значений, так что теперь вы можете добавить это в/etc/systemd/network/*.network
чтобы сделать его постоянным:
[Route]
Gateway=_dhcp4
InitialCongestionWindow=10 # initcwnd
InitialAdvertisedReceiveWindow=10 # initrwnd
The Gateway=_dhcp4
необходима, если вы хотите, чтобы этот раздел применялся к шлюзу, предоставляемому через DHCP. В противном случае добавьтеInitial*
линии к существующему[Route]
раздел, где вы вручную указываете адрес шлюза.
В случае с CentOS 7 в ifup вызывается скрипт /sbin/ifup-pre-local . Поэтому я просто сделал скрипт /sbin/ifup-pre-local:
#!/bin/bash
defrt=`ip route | grep "^default" | head -1`
ip route change $defrt initcwnd 10
И initcwnd устанавливается во всех перезагрузках и перезагрузке сети.
Под "via sysctl.conf" вы на самом деле имеете в виду, что вы хотите, чтобы настройки применялись при каждой загрузке?
Если это так, вы можете написать /sbin/ifup-local
запускать любые команды в качестве последней части интерфейса запуска. ifup
скрипт вызывает это с именем интерфейса в качестве параметра.
Так что ваши /sbin/ifup-local
может содержать:
#!/bin/bash
if [[ "$1" == "eth0" ]]
then
ip route change default via 192.168.1.1 dev eth0 proto static initcwnd 10
fi
По крайней мере, это работает на RHEL/CentOS. Я не пробовал Deb/Ubu/ другие.
В RHEL/CentOS/Oracle/Scientific Linux и других дистрибутивах на базе EL:
Легко, просто не указывайте GATEWAY= в файле /etc/sysconfig/network-scripts/ifcfg-eth0. Затем создайте там же второй файл с именем Route-eth0 и напишите там свой шлюз:
default via 192.168.0.1 initcwnd 10 initrwnd 10
Этот метод:
- Сохраняет конфигурацию сети в одном месте, где она должна находиться, чтобы ее можно было легко найти в будущем, а также при перемещении/обновлении серверов.
- Избегает создания необычных скриптов /sbin/, которые будут забыты через 10 лет.
- Не зависит от systemd