我有两台运行 Windows 7 的华硕笔记本电脑,通过 802.11n 无线连接,速度为 150 Mbit,任务管理器报告显示。路由器是 Netgear WNDR3700。
当使用 iperf 测试无线连接速度时,我没有得到近 150 Mbit:
C:\>iperf -c 10.0.0.123 -t 30
------------------------------------------------------------
Client connecting to 10.0.0.123, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[148] local 10.0.0.116 port 53819 connected with 10.0.0.123 port 5001
[ ID] Interval Transfer Bandwidth
[148] 0.0-30.0 sec 41.2 MBytes 11.5 Mbits/sec
这是典型的结果。运行并行客户端线程不会提高总体速度。
为什么我在 150 Mbit 连接上只能获得 11.5 Mbit?我应该期望的合理最大速率是多少?
附近没有其他无线网络,也没有无绳电话或微波炉。
答案1
Wi-Fi 上 TCP 吞吐量的经验法则是,您可以获得 50-60% 的信号速率。因此,对于您来说,您应该看到每秒 75-90 兆比特的 TCP 吞吐量。
等一下,为什么你的 TCP 窗口大小只有 8 KibiBytes?我觉得这个默认值太低了。
让我们看看你的应该通过计算您的连接的“带宽 x 延迟乘积”来实现。
如果 Windows 7 报告您获得 150 mbps 信号速率,那就是每秒 150,000,000 比特,因此我们将其用作带宽数。
至于延迟,嗯,我通过 Wi-Fi 到 AP 的平均 ping 往返时间略低于 3 毫秒。但是您从一个无线客户端转到另一个无线客户端,该过程由 AP 中继(以避免隐藏节点问题),所以我猜如果您从另一个无线客户端 ping 其中一个无线客户端,您的往返时间最多会达到 6 毫秒。
因此,为了保持管道满载,您需要在收到 Ack 之前将 150,000,000 位/秒的带宽 * 0.006 秒的延迟 = 900,000 位“投入传输”。
900,000 位 / 每 KibiByte 8192 位 = 大约需要 110 KibiByte 的 TCP 窗口。我们大方一点,将其设为 128。
尝试在客户端和服务器上添加参数列表,以强制 TCP 窗口达到合理的值,看看是否有帮助-w 128K
。iperf
由于无线是一种变化无常的媒介,有时会由于瞬态噪声迫使链路层数据包重新传输而出现延迟峰值,因此您甚至可以尝试更大,可能高达 512KiB,但在某些时候收益会递减。
如果增加 TCP 窗口大小可以使 IPerf 中的 TCP 吞吐量达到大约 75 兆比特/秒,但如果 Windows 7 将窗口大小默认为 8KiB,那么您可能需要弄清楚如何让 Windows 7 为所有 TCP 连接选择更好的默认 TCP 窗口大小。
答案2
默认情况下,Windows 会将其无线带宽限制为大约 10-12 Mbps(抱歉,不确定),即使您的设备已准备好 150 Mbps 或 300 Mbps 或更高。密钥在注册表中,您需要编辑它们才能获得最佳效果。
但不用担心,我们的朋友SpeedGuide 论坛为我们提供了便利。如果你想自己调整,请阅读这。如果你不想被调整东西所困扰,那么请下载名为的应用程序SG TCP/IP 优化器从这一页(该页面上还有一些可供调整的链接)。
以下是该应用程序的屏幕截图:
要使用它,您只需拖动滑块以匹配您想要的速度,选择底部的最佳选项,单击应用更改,系统将提示您重新启动。准备好后重新启动。
希望这可以帮助。
答案3
您是否有任何速度较慢的设备连接到网络,例如 iPod touch 或 iPhone?当速度较慢的设备连接到网络时,硬件会激活保护机制,这将对传输速度产生明显影响。802.11n 的平均下行链路约为 40Mbit/s,因此连接肯定存在问题。我在 802.11n 网络上使用 iperf 获得了高达 35Mbit/s 的速度。
答案4
以下是我对这个问题的发现。让我提请大家注意一下点对点无线网络的一个鲜为人知的局限性,这种网络通常用于两台或多台带有 Wi-Fi 适配器的笔记本电脑之间。
IEEE 802.11 标准规定,无论适配器是 802.11b 还是 802.11g,ad-hoc 模式下的性能必须达到 11Mbits/sec,但不能超过这个数字。没有要求制造商超过 11Mbits/sec 的规格,而且大多数制造商都没有超过这个规格。