我有一台华硕 RT-N16 路由器,运行最新版本的 OpenWrt(OpenWrt Chaos Calmer r43801 / LuCI Master (git-14.359.33351-5e6c33e))。我一直遇到一些糟糕的网络性能问题,因此我决定在我的服务器(有线连接到路由器)上创建一个 5GiB 测试文件,并将其传输到我的台式机(距离约 3 米的无线 Mac mini)。
我的传输速度最高可达 250KiB/s 左右。这是内部网络,应该比这快得多,不是吗?可能是什么问题?
编辑:我还必须终止测试传输过程,因为我无法发布这个问题。网络堵塞了——速度为 250KiB/s...
答案1
首先让我们设定一些期望:
ASUS RT-N16 是一款非常老旧的 2.4GHz 专用、HT40(40MHz 宽通道)兼容、2 空间流 802.11n 路由器。使用 40MHz 宽通道时,它可以使用 300Mbps 数据速率,但 2.4GHz 频段的 40MHz 通道会占用频段,不会为蓝牙等其他用途留下空间,因此 Apple 选择让所有 802.11n 产品仅使用 2.4GHz 频段的传统 20MHz 宽通道。因此,最佳 PHY 速率(物理层每包信令速率,开销前)为 144.4Mbps。如果您的 Mac mini 距离 AP 3 米,并且 AP 处于清晰的通道上,那么它应该获得 144.4Mbps PHY 速率。经过 Wi-Fi 和 TCP/IP 开销后,高效文件传输协议(如 HTTP 或 FTP)的预期良好吞吐量应为 70-100Mbps(以兆位为单位;每秒 1,000,000 比特;即 8-12 MiB/s(MebiBytes;1,048,576 个 8 位字节))。因此,您获得的 2Mbps(==250 MiB/s)确实相当低。
除了升级到现代 AP 之外,还可以尝试以下操作:
- 确保您的 AP 使用最干净的可用信道。如果您有 Wi-Spy 之类的频谱分析仪,请使用它,因为它会向您显示全部每个通道中的射频干扰,包括蓝牙、无线鼠标和键盘、2.4GHz 无绳电话、微波炉、Wii 遥控器、无线摄像头和安全系统、无线扬声器(尤其是低音炮)、婴儿监视器等。否则,您可以使用或像 inSSIDer 这样的 Wi-Fi 扫描仪,但它只会显示其他 Wi-Fi 内容。
- 如果您启用了无线安全,请确保您使用的是 WPA2,而不是 WEP 或 WPA[1]。WEP 和 WPA 使用为 WEP 设计的旧 RC4 硬件实现,无法跟上 802.11n 的速度。WPA2 使用为 802.11n 速率设计的 AES-CCMP 硬件实现。
- 如果您的 OpenWrt 允许您打开或关闭 WMM(QoS),请确保其处于打开状态。802.11n 需要 WMM。
请注意,如果 #2 和 #3 设置错误,您的 Mac mini 将以 802.11g 速度关联,最大 PHY 速率为 54Mbps,预期最大吞吐量可能为 25Mbps(3 MiB/s)
- 如果 OpenWrt 允许您选择 20MHz 宽度的信道,请尝试一下。也许它不太聪明,因为 Mac mini 只想使用 20MHz 宽度的信道,所以 AP 有时会浪费时间尝试向 Mac mini 传输 40MHz 宽度的信号。这种情况不太可能发生,但很容易尝试。
- 测试时,请断开或关闭所有其他网络设备。也许您的大量带宽被某些在后台自动进行软件更新的设备占用。因此,请确保您的 Mac mini 和服务器没有在后台进行任何其他网络通信。
- 允许您像本地磁盘一样挂载远程共享的文件服务协议(如 SMB、AFP 和 NFS)往往不如仅用于文件传输的协议(如 FTP、HTTP 和 rsync)那么高效。如果您一直在使用其中一种远程卷挂载协议,请尝试使用其中一种仅用于文件传输的协议。或者考虑使用 IPerf 作为基准测试工具,这样您就可以确定您拥有一个编写良好、高效的 TCP 应用程序,并且没有任何文件服务开销。
- 尝试通过千兆以太网对服务器进行基准测试,以确保不仅仅是服务器出现故障。
- 尝试回到华硕的最新官方固件进行健全性检查。也许 OpenWrt 在 RT-N16 上很糟糕。
答案2
许多因素可能导致传输速度缓慢:
- 路由器的 CPU 或内存已达到最大容量 - 您可以通过进入路由器的管理控制台并检查状态来验证这一点,以确保其在传输文件时没有达到最大容量。
- 客户端连接 - 最新的 OSX Yosemite(已升级)似乎存在一些问题。
在 Mac 上,尝试删除网络配置:
- 从无线菜单项关闭 Wi-Fi
- 在 OS X Finder 中,按 Command+Shift+G 并输入以下路径:
/Library/Preferences/SystemConfiguration/
- 将以下文件移动到某个临时文件夹中:
com.apple.airport.preferences.plist com.apple.network.identification.plist com.apple.wifi.message-tracer.plist NetworkInterfaces.plist preferences.plist
- 重启并重新连接 Wifi