Linux上的UDP延迟测量

时间:2014-10-12 14:41:54

标签: c++ linux sockets networking udp

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

结果我想得到一个直方图,例如测量期间每个时刻的每个数据包的RTT时间。预期频率约为每秒10个数据包。

您知道我可以用于此目的的任何工具吗?

到目前为止我尝试的是:

  1. ping - 使用icmp而不是UDP
  2. iperf - 仅测量抖动但不测量延迟。
  3. D-ITG - 每流量统计量,无直方图
  4. tshark - 使用TCP代替ping
  5. 我还创建了一个简单的C ++套接字程序,每边都有Client和Server,我发送带有计数器和时间戳的UDP数据包。我的程序似乎工作正常,但由于我不是网络程序员,我不是100%确定我正确处理缓冲区(特别是在部分数据包等情况下)。所以我更愿意使用一些经过验证的软件来完成这项任务。
  6. 你能推荐什么吗?

    由于

2 个答案:

答案 0 :(得分:1)

这取决于。如果您想要的只是带时间戳的跟踪,Wireshark就是您的朋友:https://www.wireshark.org/

答案 1 :(得分:1)

我想提醒您,UDP是一种基于消息的协议,数据包具有明确的边界。无法接收部分数据包。也就是说,您将获得完整的消息,或者您将无法获得它。因此,您无需担心UDP中的部分数据包。

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