我试图提高海外的服务器之一的吞吐量,并监测服务器和我的家用电脑之间的传输wireshark后,我敢肯定,我有一个窗口大小的问题。
对于ftp传输,我得到一个14720的接收窗口大小。
Window size value: 115 Calculated window size: 14720 Window size scaling factor: 128
我的发送窗口看起来像我所设置的:
Window size value: 65335 Calculated window size: 261340 Window size scaling factor: 4
那么我该如何解决这个问题? 我已经通过我的服务器上的Linux tcp设置,一切似乎正常。 时间戳打开,同步closures,缩放打开,麻袋打开,立方体是拥塞控制方法,最大接收和发送窗口大小为3mb。 我试过改变默认的tcp_wmem和tcp_rmem值,但是它什么都不做。
编辑:
当我在服务器上closures自动调整和/或窗口缩放时,窗口缩小到14600,这基本上是MSS的10倍。
5337 4.268584 2.2.2.2 1.1.1.1 FTP 106 Response: 227 Entering Passive Mode (2,2,2,2,240,15). 5338 4.268640 1.1.1.1 2.2.2.2 TCP 74 59855 > 61455 [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=431721460 TSecr=0 WS=128 5364 4.300368 1.1.1.1 2.2.2.2 TCP 54 57609 > ftp [ACK] Seq=217 Ack=648 Win=15744 Len=0 5480 4.346856 2.2.2.2 1.1.1.1 TCP 66 61455 > 59855 [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 SACK_PERM=1 WS=128 5481 4.346867 1.1.1.1 2.2.2.2 TCP 54 59855 > 61455 [ACK] Seq=1 Ack=1 Win=14720 Len=0 5482 4.346893 1.1.1.1 2.2.2.2 FTP 70 Request: STOR 100mb.bin 5570 4.428061 2.2.2.2 1.1.1.1 FTP 109 Response: 150 Opening BINARY mode data connection for 100mb.bin 5571 4.428078 1.1.1.1 2.2.2.2 TCP 54 57609 > ftp [ACK] Seq=233 Ack=703 Win=15744 Len=0 5572 4.428155 1.1.1.1 2.2.2.2 FTP-DATA 2974 FTP Data: 2920 bytes 5573 4.428166 1.1.1.1 2.2.2.2 FTP-DATA 1514 FTP Data: 1460 bytes 5662 4.505384 2.2.2.2 1.1.1.1 TCP 60 61455 > 59855 [ACK] Seq=1 Ack=1461 Win=8832 Len=0 5663 4.505392 1.1.1.1 2.2.2.2 FTP-DATA 2974 FTP Data: 2920 bytes 5664 4.505421 2.2.2.2 1.1.1.1 TCP 60 61455 > 59855 [ACK] Seq=1 Ack=2921 Win=11776 Len=0 5665 4.505429 1.1.1.1 2.2.2.2 FTP-DATA 2974 FTP Data: 2920 bytes 5666 4.505535 2.2.2.2 1.1.1.1 TCP 60 61455 > 59855 [ACK] Seq=1 Ack=4381 Win=14720 Len=0 5667 4.505543 1.1.1.1 2.2.2.2 FTP-DATA 2974 FTP Data: 2920 bytes 5734 4.583769 2.2.2.2 1.1.1.1 TCP 60 61455 > 59855 [ACK] Seq=1 Ack=5841 Win=17536 Len=0 5735 4.583778 1.1.1.1 2.2.2.2 FTP-DATA 2974 FTP Data: 2920 bytes 5736 4.583781 2.2.2.2 1.1.1.1 TCP 60 61455 > 59855 [ACK] Seq=1 Ack=7301 Win=20480 Len=0 5737 4.583787 1.1.1.1 2.2.2.2 FTP-DATA 2974 FTP Data: 2920 bytes
从2.6.17(或者大约)linux内核开始,默认比例因子增加了。 这样做的缺点是似乎有路由器/防火墙/等。 那些没有正确处理TCP Window Scaling(rfc只有〜16岁)。 如果你必须遍历这些设备之一,那么你需要closures窗口缩放,否则事情变得很慢。
在Redhat / Redhat系统上,“修正”是:
/bin/cat <<'EOT'>>/etc/sysctl.conf # Turn off the tcp_window_scaling net.ipv4.tcp_window_scaling = 0 EOT /sbin/sysctl -p
嗯。 你能给我们更多的信息吗? 如 …
TCP发布{Reno,Vegas等} Trasfer方向{桌面 – >服务器,服务器 – >桌面,别的东西}你用什么测量? iperf? 鱼叉?