802.11n 无线网络速度低于预期

Ian*_*Ian 5 wireless-networking speed 802.11n

据任务管理器报告,我有两台运行 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
Run Code Online (Sandbox Code Playgroud)

这是一个典型的结果。运行并行客户端线程不会提高整体总速度。

为什么我只能在 150 Mbit 的连接上获得 11.5 Mbit 的流量?我应该期望的合理最大费率是多少?

附近没有其他无线网络,也没有无绳电话或微波炉。

Spi*_*iff 6

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 你的一个无线客户端,你会得到一个往返时间可达6ms。

因此,150,000,000 位/秒的带宽 * 0.006 秒的延迟 = 900,000 位,您需要能够在获得 Ack 之前“投入使用”,以保持管道充满。

900,000 位/每 KibiByte 8192 位 = 需要大约 110 KibiBytes 的 TCP 窗口。让我们大方点,让它成为一个不错的 128 轮。

尝试添加-w 128K到您的iperf参数列表的客户端和服务器,迫使TCP窗口,以合理的东西都在,看看有没有什么帮助。

由于无线是一种变化无常的介质,有时会由于瞬态噪声迫使链路层数据包重新传输而出现延迟峰值,您甚至可以尝试更大,可能高达 512KiB,但在某些时候收益会递减。

如果增加 TCP 窗口大小使您在 IPerf 中的 TCP 吞吐量达到大约 75 兆位/秒,但如果 Windows 7 将窗口大小默认为 8KiB,那么您可能需要弄清楚如何让 Windows 7 选择更好的默认值所有 TCP 连接的 TCP 窗口大小。


小智 2

您是否有连接到网络的速度较慢的设备,例如 iPod touch 或 iPhone?当较慢的设备与网络关联时,硬件会激活保护机制,这将对传输速度产生明显的影响。802.11n 的平均下行速率约为 40Mbit/s,因此连接肯定有问题。我在 802.11n 网络上使用 iperf 获得了超过 35Mbit/s 的速度。