TCP 窗口大小的优化基于多种因素,包括网络链路速度和网络延时。出于使用 PlateSpin 产品目的,为进行优化初始选择的 TCP 窗口大小以如下所示的标准计算(因特网上及其他地方广泛提供了此信息)为依据:
WinSizeInBytes=((LINK_SPEED(Mbps)/8)*DELAY(sec))*1000*1024
例如,对于延时为 150 毫秒的 54 Mbps 链路,合适的初始窗口大小为:
(54/8)*0.15*1024*1000 = 1,036,800 字节
对于延时为 10 毫秒的 1000 Mbps 链路,合适的初始窗口大小为:
(1000/8)*.01*1000*1024 = 1,280,000 字节
要获得网络的延时值,请在命令提示符 (Windows) 或终端 (Linux) 处使用 ping。虽然 ping 往返时间 (RTT) 按理与实际的延时不同,但获得的值足够接近,可以用于此方法。
下面是 Windows ping 命令的输出示例,其中观察到的延时为平均 164 毫秒:
ping 10.10.10.232 -n 5 Pinging 10.10.10.232 with 32 bytes of data: Reply from 10.10.10.232: bytes=32 time=154ms TTL=61 Reply from 10.10.10.232: bytes=32 time=157ms TTL=61 Reply from 10.10.10.232: bytes=32 time=204ms TTL=61 Reply from 10.10.10.232: bytes=32 time=153ms TTL=61 Reply from 10.10.10.232: bytes=32 time=153ms TTL=61 Ping statistics for 10.10.10.232: Packets: Sent = 5, Received = 5, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 153ms, Maximum = 204ms, Average = 164ms
下面是 Linux ping 命令的输出示例,其中观察到的延时为平均 319 毫秒:
ping 10.10.10.232 -c 5 PING 10.10.10.232 (10.10.10.232) 56(84) bytes of data. 64 bytes from 10.10.10.232: icmp_seq=1 ttl=62 time=0.328 ms 64 bytes from 10.10.10.232: icmp_seq=2 ttl=62 time=0.280 ms 64 bytes from 10.10.10.232: icmp_seq=3 ttl=62 time=0.322 ms 64 bytes from 10.10.10.232: icmp_seq=4 ttl=62 time=0.349 ms 64 bytes from 10.10.10.232: icmp_seq=5 ttl=62 time=0.316 ms --- 10.10.10.232 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 3998ms rtt min/avg/max/mdev = 0.280/0.319/0.349/0.022 ms
实际执行时,您应使用 -n 或 -c 选项来指定大量 ping 包,以便获得更接近的延时测量值。