![Ping 不准确?](https://linux22.com/image/1328075/Ping%20%E4%B8%8D%E5%87%86%E7%A1%AE%EF%BC%9F.png)
我一直在尝试诊断我的互联网连接的一些延迟问题。
我玩在线视频游戏等时一直卡顿,当然这可能是他们的服务器的问题。所以,我一直在运行 ping。它没有显示任何异常,但它的行为确实有点奇怪。
我可以用类似这样的命令来启动它,ping internethost -i 0.1
这样它就会发送大量的数据包,每隔 10-20 秒它就会冻结 2 或 3 秒。不过数据包仍然以正确的顺序接收,并且没有数据包丢失。最奇怪的是,在短暂冻结之后,它通常只会报告比平均值高出约 10-30 毫秒的 ping 时间。
这是怎么回事?ping 值还准确吗?
我使用的是 Arch Linux。我 ping 的主机是我的网站,它不应该进行任何类型的 ping 减慢或过滤。
答案1
我通常mtr
每隔几秒到一分钟运行一次,以查看问题所在。并非所有路由器都会给予回显请求高优先级,因此时间可能有点奇怪。但是,它们应该随着跳数的增加而增加。
除了您的 ping 没有检测到任何丢包之外,我怀疑是数据包丢失。您是否尝试过在运行结束时设置计数限制以获取摘要。
洪水攻击可能会引发问题,因此我通常会尽量避免它。
也可能是您的系统在定期交换某些内容时冻结。运行sar
可用于查找高交换活动和许多其他可能导致问题的因素。 top
对于系统性能的总体概述也很有用。
为了测试网站,还有一些工具可以通过 HTTP 协议执行 ping 和跟踪路由。
编辑:曾经有大窗口和大缓冲区存在类似问题的报告在路由器上。我实施的解决方案是将流量调整到略小于我的带宽。
答案2
它可能是缓冲区膨胀、总体拥塞、或每一跳或任意一跳的网络堆栈延迟。
“冻结”后延迟增加听起来很正常……如果你冻结了。然而,这很可能是上游拥塞的迹象,如果是的话普通的不是最佳的当然。
如果可行(即边缘路由器或您支持它,并且路由器后面没有其他人(如果有的话)会介意),请将上行链路限制到略高于您的吞吐量需求。您可能还想设置其他形式的 QoS 并优先处理视频游戏的数据包。尝试tcpdumping
在路由器或端点上查看使用了哪个端口。
对于节流,看看 OpenBSD 是否有类似的东西令牌桶过滤器, 或者分级令牌桶。