FreeBSD慢速传输 – RFC 1323缩放问题?

我想我可能会遇到窗口缩放问题(RFC 1323),并希望有人能够对我进行一些启发。

  • 服务器: FreeBSD 9,apache22,提供一个静态的100MB zip文件。 192.168.18.30
  • 客户端: Mac OS X 10.6,火狐192.168.17.47
  • networking:它们之间只有一个交换机 – 子网是192.168.16 / 22(在这个testing中,我也有虚拟网过滤,在所有IPstream量上模拟一个80ms的ping时间,我看到几乎与“真实”与真正的互联网stream量/延迟也)

问题:

  • 这看起来正常吗?
  • 数据包#2是否指定65535的窗口大小和512的比例?
  • 是否数据包#5然后缩小窗口的大小,所以它可以使用512比例,仍然保持整体计算窗口大小接近64K?
  • 窗户为什么如此高?

这里是wireshark的前6个包。 对于数据包5和6,我已经包括了显示数据传输所使用的窗口大小和缩放因子的细节。

No. Time Source Destination Protocol Length Info 108 6.699922 192.168.17.47 192.168.18.30 TCP 78 49190 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=8 TSval=945617489 TSecr=0 SACK_PERM=1 115 6.781971 192.168.18.30 192.168.17.47 TCP 74 http > 49190 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=512 SACK_PERM=1 TSval=2617517338 TSecr=945617489 116 6.782218 192.168.17.47 192.168.18.30 TCP 66 49190 > http [ACK] Seq=1 Ack=1 Win=524280 Len=0 TSval=945617490 TSecr=2617517338 117 6.782220 192.168.17.47 192.168.18.30 HTTP 490 GET /utils/speedtest/large.file.zip HTTP/1.1 118 6.867070 192.168.18.30 192.168.17.47 TCP 375 [TCP segment of a reassembled PDU] 

细节:

 Transmission Control Protocol, Src Port: http (80), Dst Port: 49190 (49190), Seq: 1, Ack: 425, Len: 309 Source port: http (80) Destination port: 49190 (49190) [Stream index: 4] Sequence number: 1 (relative sequence number) [Next sequence number: 310 (relative sequence number)] Acknowledgement number: 425 (relative ack number) Header length: 32 bytes Flags: 0x018 (PSH, ACK) Window size value: 130 [Calculated window size: 66560] [Window size scaling factor: 512] Checksum: 0xd182 [validation disabled] Options: (12 bytes) No-Operation (NOP) No-Operation (NOP) Timestamps: TSval 2617517423, TSecr 945617490 [SEQ/ACK analysis] TCP segment data (309 bytes) 

512)并不是一个真正的高窗口大小 – 它只是说将所提供的窗口大小向左移动9位。 将窗口大小设置为130(否则是非常非常低的值),然后应用比例因子512,可以使您达到66560(130 << 9)。

2.)100M可能太小了一个文件。 事实上,谈判的规模表明,事情是行得通的。 尝试更大的文件,以更好地观察行为。 如果没有别的,你会更好地理解真正的吞吐量。

3.)还要记住,特定客户端的行为实际上可以专门覆盖操作系统的行为 – 例如,Solaris中内置的FTP客户端,用于将窗口大小限制为64K,而不pipe操作系统如何configuration。

我从系统pipe理员小组得知,这个问题是由VMWarenetworking驱动程序不尊重/播放不错的sysctl可调参数引起的。 在物理硬件上使用相同设置的吞吐量对于pipe道来说具有合理的吞吐量,而不是我们在VMware看到的1/10或更less。