有没有办法在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_wmem
和net.ipv4.tcp_rmem
。 您可以使用sysctl -n
读取这些variables的值,并将其设置为sysctl
。
这里有一个很好的介绍。