本地网络上机器的 ping 时间高且不稳定

本地网络上机器的 ping 时间高且不稳定

我的本地网络上有两台机器,都连接到无线路由器。如果我从机器 A ping 路由器,我会得到以下信息:

10 packets transmitted, 10 received, 0% packet loss, time 9038ms
rtt min/avg/max/mdev = 0.836/2.488/3.749/0.931 ms

如果我通过机器 B ping 我的路由器,我会得到以下信息:

10 packets transmitted, 10 received, 0% packet loss, time 9017ms
rtt min/avg/max/mdev = 2.068/3.452/4.908/0.795 ms

但如果我从 A ping B,我会得到

10 packets transmitted, 10 received, 0% packet loss, time 9010ms
rtt min/avg/max/mdev = 3.077/223.724/507.174/186.355 ms

从 B ping A 的结果类似。

这可能是什么原因造成的?我该如何解决?两台机器都使用 Arch Linux,并且已完全更新。

答案1

Wi-Fi 硬件通常会尽可能地进入低功耗状态,在此期间 AP 会缓冲数据包,而客户端设备只会以一定的时间间隔检查等待的传入数据包:

当机器发送首先发送一个 ping 数据包,其 Wi-Fi 接口将保持在线一段时间,等待响应到达,因此不会有任何明显的延迟。但是当机器完全空闲并即将收到来自另一个设备的第一个数据包,它不会立即看到您正在尝试 ping 它,直到下一次轮询,这可能需要很长时间。

如果您希望将机器用作服务器(使用交流电源,接受传入的 SSH 或其他连接),则可以使用以下方法禁用省电功能:

iw dev wlan0 set power_save off

可以将其添加到 udev 规则中,以便在每次启动时应用它,或者将其添加到 acpid 脚本中,以便在系统连接到 AC 时应用它。(它不过这会影响电池寿命,所以我不会为了让ping mylaptop外观好看而禁用它。我是在半睡半醒的时候写这篇文章的。

相关内容