在Ubuntu服务器上更改TCP窗口大小

有没有办法在Ubuntu服务器上启动大于默认的TCP窗口大小?

我看到/proc/sys/net/ipv4/ eg中有一些参数:

 /proc/sys/net/ipv4/tcp_window_scaling (which is 1) /proc/sys/net/ipv4/tcp_adv_win_scale (2) /proc/sys/net/ipv4/tcp_slow_start_after_idle (1) /proc/sys/net/ipv4/tcp_window_scaling (1) 

由于TCP是全双工的,因此有两个初始拥塞窗口(IW),一个用于发送,另一个用于接收。 可以使用route命令设置它们,但是在2.6.32中发现在查看数据包捕获之后它不工作。 在我的桌面(3.0.0)的IW是更高的(10包)作为默认,所以我没有在后来的版本testing,因为这是我想要的增加。

理论上来说,这些可以用ip route来设置,如下所示:

sudo ip route add <DEST IP> via <GATEWAY IP> proto static initcwnd 10

对于发送IW。 接收IW将initcwnd更改为initrwnd

如果这个工作正常,我相信你应该把新的窗口大小反映在TCP握手的SYN或SYN / ACK数据包(取决于发送/接收窗口)。 。 由于拥塞窗口是内部的,并且与TCP报头中的窗口不同,所以唯一的办法是testing更高延迟的连接,看看是否有更多的初始数据包被发送。 我最近刚刚一直在看这个,所以作为一个免责声明,我对这一切都是100%的肯定。

在此之后,窗口大小应该按照默认的Linux参数进行扩展,而不会在Window边界上产生任何问题。 你可能不想搞砸这个,除非你捕获显示你经常遇到窗口绑定的情况(如果是这种情况,接收者将发送大量的Win 0包)。

net.ipv4.tcp_wmemnet.ipv4.tcp_rmem 。 您可以使用sysctl -n读取这些variables的值,并将其设置为sysctl

这里有一个很好的介绍。