无线网络工具

无线网络工具

我发现与我距离只有一跳的 wifi 路由器的 ping 时间很不稳定,有时甚至很长。ping192.168.1.1有时会产生 400-800 毫秒的延迟。

有很多方法可以尝试(固件、路由器位置、AP 通道等),但我想更有条理地解决这个问题:

  • 首先,我该如何可视化网络的性能如何?
  • 那么我该如何基准给定配置的性能,以便我可以在进行调整后进行可靠的比较?

答案1

这个 serverfault 答案有很好的高级指导说明该怎么做 - 所以从那里开始吧。不过最后一步确实很难:想必你(我是说我)不想为此投资专用硬件……

下面是一些很好的工具,首先用于了解本地 WiFi 网络内的连接健康状况,然后用于了解互联网端点的连接健康状况。

无线网络工具

网络点(适用于 Mac)

它跟踪本地 WiFI AP 并提供基本数据,如 SNR、信道、信号强度。它还可以对物理空间进行基本的站点调查,指示强度和干扰。在 AP 发现模式下,您还可以绘制随时间变化的信号强度图表,从而让您测试位置并调整干扰可能性。 在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

Android 版 Wifi 速度测试

非常有帮助。您将在您的机器上运行一个简单的 python 服务器,该应用程序可以测试一些场景,为您提供实时速度反馈。

在此处输入图片描述

无线网络分析仪,另一款出色的 Android 应用,提供了一些有关哪些 AP wifi 信道处于活动状态的宝贵信息。可能是无需做大量工作即可选择 AP 信道的最佳免费工具。

增强型

了解本地网络性能的备受推崇的工具。您需要两个盒子,一个作为服务器,一个作为客户端。您可以设置多个参数,运行测试,并查看带宽和抖动的结果。我更喜欢将它与jPerf 图形用户界面用于绘制结果图表和调整参数。

brew install iperf
iperf -s # on server, next one on client
iperf -c 192.168.1.XXX -P 1 -i 1 -p 5001 -f m -t 60

在此处输入图片描述

互联网连接健康

地铁(ping 与 traceroute 结合)

对所有跟踪路由跳数进行 ping。提供趋势数据。棒极了。

brew install mtr
mtr 8.8.4.4

速度测试-cli

常用 ookla speedtest.net 的 CLI 版本。项目维护者声明它并不一致,但尝试衡量巨大差异仍然很方便。

wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
chmod +x speedtest-cli
speedtest-cli --list | head # and chose a top server (sorted by distance)
speedtest-cli --server 2761 # re-use the same server

国家预防性防弹少年团:网络路径和应用程序诊断

自动诊断服务器,用于排除终端系统和最后一英里网络故障。运行一系列测试后,结果摘要页面如下。我建议使用这个NPAD 服务器重定向链接找到最近的 NPAD 服务器(它们遍布各地)并使用该主机名进行测试。

  wget http://netspeed.usc.edu:8000/diag-client.c
  cc diag-client.c -o diag-client
# ./diag-client <server_name> <port> <target_RTT> <target_data_rate_in_MB/S>
  ./diag-client ps.psc.xsede.org 8001 30 5

在此处输入图片描述


我的个人结果:

我花了好几个小时做这些,尝试了不同的方法(从 DD-WRT 切换到 Tomato 固件)并阅读了资料。结果发现不是网络层的问题,而是老旧的射频干扰,主要来自蓝牙!我的电脑、蓝牙鼠标和键盘距离路由器不到 5 英尺。(旧路由器仍处于 2.4Ghz 上,它们会发生冲突。)

为此,我充分利用了Android 版 Wifi 速度测试,当我在公寓里搬动东西时,它会定期运行。由于它每 200 毫秒左右报告一次更新,因此当干扰导致我的数据包丢失时,它会清楚地传达信息。

我强烈推荐阅读常见干扰源Metageek 的指南。(他们还制作了 InSSIDer 和其他看起来不错的 Wifi 分析工具。)

在此处输入图片描述

我没有的一个工具是物理频谱分析仪。手机和笔记本电脑只能检测到 Wifi AP,但无法检测到蓝牙或其他基于 RF 的技术的干扰。Metageek 在这方面有一些不错的解决方案(无线网络监控内部办公室)并希望我们能看到更多工具出现,例如空中鲨鱼

答案2

正如我在上面的评论中所述:通常用于诊断 Wi-Fi 问题的工具实际上可能会导致此问题。扫描 Wi-Fi 网络时,无线电必须离开信道,通常它会告诉 AP 为其缓冲帧,以便它可以“休眠”,然后切换信道进行扫描。

此外,自从 AirDrop 推出以来,iOS 和 OS X 就会将 Wi-Fi 无线电移出频道来寻找其他 AirDrop 服务,而 Yosemite 也会定期移出频道来支持切换。

答案3

所以我的路由器也出现了这些 Wi-Fi ping 波动。

PING 192.168.0.1 (192.168.0.1): 56 data bytes
64 bytes from 192.168.0.1: icmp_seq=0 ttl=63 time=2.334 ms
64 bytes from 192.168.0.1: icmp_seq=1 ttl=63 time=1.813 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=63 time=2749.664 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=63 time=1748.912 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=63 time=748.162 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=63 time=1.796 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=63 time=1.806 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=63 time=1.991 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=63 time=1.797 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=63 time=1.832 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=63 time=1.713 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=63 time=1.819 ms
64 bytes from 192.168.0.1: icmp_seq=12 ttl=63 time=1.616 ms
64 bytes from 192.168.0.1: icmp_seq=13 ttl=63 time=1.748 ms
64 bytes from 192.168.0.1: icmp_seq=14 ttl=63 time=1.677 ms
64 bytes from 192.168.0.1: icmp_seq=15 ttl=63 time=3427.213 ms
64 bytes from 192.168.0.1: icmp_seq=16 ttl=63 time=2426.371 ms
64 bytes from 192.168.0.1: icmp_seq=17 ttl=63 time=1425.634 ms
64 bytes from 192.168.0.1: icmp_seq=18 ttl=63 time=424.834 ms
64 bytes from 192.168.0.1: icmp_seq=19 ttl=63 time=1.829 ms
64 bytes from 192.168.0.1: icmp_seq=20 ttl=63 time=1.691 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=63 time=2.038 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=63 time=1.679 ms
^C--- 192.168.0.1 ping statistics ---
23 packets transmitted, 23 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.616/564.346/3427.213/1015.102 ms

我更换了路由器(从 TL-WR743ND 换成了 DIR-815),尝试了几个 Wi-Fi USB 适配器(大部分是 TP-LINK,不过我觉得 D-Link DWA-160 也出现了这个问题),从 2.5 GHz 换成了 5GHz,然后搜索了各个频道。但还是不行,问题依然存在。

直到我注意到,当我进行网络速度测试或运行 bittorrent 客户端时,ping 值都正常。只有在网络空闲时才会波动。

可能是 Windows 7 的问题,或者我的 TP-LINK 适配器的问题,但当我在 Wi-Fi 上施加一点负载时,波动就会消失,网络正常运行。

到目前为止,我已经编写了一个小 Rust 程序来维持我的 Wi-Fi 网络正常运行。

// Need a constant wifi load in order not to have the ping drops.
fn wifi_load() {
  // This *might* be useful if the router suddenly supports Keep-Alive.
  // Not the case with DIR-815 though, we'll keep making new connections to it.
  let config = hyper::client::pool::Config {max_idle: 1};

  let client = hyper::client::Client::with_pool_config (config);
  loop {
    let url = "http://192.168.0.1/css/init.css";
    if let Err (err) = client.get (url) .send() {
      log! ("wifi_load] Error fetching {}: {}", url, err);
      sleep (Duration::from_secs (9));}
    sleep (Duration::from_millis (100));}} 

相关内容