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 的流量?我应该期望的合理最大费率是多少?
附近没有其他无线网络,也没有无绳电话或微波炉。
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 的速度。
归档时间: |
|
查看次数: |
5998 次 |
最近记录: |