linux initcwnd 和 initrwnd 通过 /etc/sysctl.conf

CMa*_*Mag 6 linux linux-kernel tcp-slow-start

伙计们,正如我们所知,3.x 内核具有更高的 TCP 默认连接值,例如 initcwnd 和 initrwnd。对于 2.x 的朋友,有没有办法在 /etc/sysctl.conf 中设置这些而不是 ip route 方式?

而不是以下内容:

sudo ip route change default via 192.168.1.1 dev eth0  proto static initcwnd 10
Run Code Online (Sandbox Code Playgroud)

有没有办法在 /etc/sysctl.conf 中设置相同的?

谢谢

Mal*_*ous 5

没有完全回答这个问题,但在 2017 年 12 月,systemd-networkd 添加了对更改这些值的支持,因此您现在可以将其放入/etc/systemd/network/*.network以使其持久化:

[Route]
Gateway=_dhcp4
InitialCongestionWindow=10          # initcwnd
InitialAdvertisedReceiveWindow=10   # initrwnd
Run Code Online (Sandbox Code Playgroud)

如果您希望该部分应用于通过 DHCP 提供的网关,则Gateway=_dhcp4需要该行。[Route]否则,请将这些行添加到您手动指定网关地址的Initial*现有部分。[Route]


sup*_*ami 2

“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
Run Code Online (Sandbox Code Playgroud)

至少这可以在 RHEL/CentOS 上运行。我没有尝试过 Deb/Ubu/其他。