Linux上UDP上的延迟测量

Latency measurement over UDP on Linux

本文关键字:测量 延迟 UDP Linux      更新时间:2023-10-16

我想测量Linux上两台机器之间的UDP延迟和丢弃率。优选地(但不是关键的)同时在多个机器之间执行测量。

因此,我想得到一个直方图,例如,在测量过程中的每个时刻,每个单独数据包的RTT时间。预期频率约为每秒10个数据包。

你知道我能用什么工具吗?

到目前为止,我尝试的是:

  1. ping-使用icmp而不是UDP
  2. iperf-只测量抖动,不测量延迟
  3. D-ITG-按流量统计的测量值,无直方图
  4. tshark-使用TCP进行ping而不是UDP
  5. 我还创建了一个简单的C++套接字程序,其中每侧都有客户端和服务器,我发送带有计数器和时间戳的UDP数据包。我的程序似乎运行良好,尽管由于我不是网络程序员,我不能100%确定我是否正确处理了缓冲区(特别是在部分数据包等情况下)。所以我更愿意使用一些经过验证的软件来完成这项任务

你能推荐点什么吗?

感谢

这取决于情况。如果你只想要一个有时间戳的轨迹,Wireshark就是你的朋友:https://www.wireshark.org/

我想提醒您,UDP是一种基于消息的协议,数据包有明确的边界。无法接收部分数据包。也就是说,你要么会得到完整的消息,要么就不会得到。所以,你不必担心UDP中的部分数据包。

使用计数器&使用时间增量计算延迟对于UDP来说似乎很好。然而,需要考虑的重要一点是确保客户端和服务器的系统时间同步。