如何诊断 Linux 主机的长非对称 ping 时间?

Owe*_*wen 5 networking linux wireless-networking

我有两台计算机,都运行 Linux Mint Petra(一台 32 位,一台 64 位)。称它们为 A 和 B。它们位于无线网络上。

RTT 奇怪地不对称:

阿巴

user@A $ ping B
~~ 5ms, consistent times ~~
Run Code Online (Sandbox Code Playgroud)

巴布

user@B $ ping A
~~ 100-2000ms, wildly inconsistent times ~~
Run Code Online (Sandbox Code Playgroud)

我不知道有什么机制。显然,两个网络接口都涉及 ABA 或 BAB,因此我不怀疑驱动程序有问题,但你永远不知道。是否有一些我可以寻找的相关配置?问题更可能出现在 A 方还是 B 方?

Spi*_*iff 6

主机A可能正在使用 802.11 省电模式,在流量突发之间关闭其接收器,并让 AP 为其排队数据包,直到下次唤醒其接收器,此时它会与 AP 进行检查获取其排队的数据包并处理它们。

大多数供应商实现 802.11 省电的方式是,在出现流量突发时让接收器保持唤醒状态,然后在没有任何流量的情况下(例如,信标间隔(约 100 毫秒))将接收器置于睡眠状态发送或接收。

因此,当 A 向 B 发送 ping 时,B 始终处于唤醒状态,并在 A 将其接收器置于睡眠状态之前的 5 毫秒内收到响应。

但是,当 B 向 A 发送 ping 时,A 的接收器已经处于睡眠状态,并且在几个信标间隔内没有醒来,然后醒来,从 AP 获取 B 排队的 ping 请求,然后将其 ping 响应发送到B. 由于该ping命令默认每秒发送一次 ping,因此 A 的接收器通常有足够的时间(几个 100ms 信标间隔)在收到下一个 ping 请求之前进入睡眠状态。

A 休眠多长时间的确切时间,以及它如何与每秒一次 ping 保持一致,可能会导致“相位效应”或 ping 时间的周期性振荡。此外,A 需要处理的其他流量有时可能会使 A 保持更长时间的唤醒状态,从而导致 ping 时间缩短。