Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Linux上UDP协议的时延测量_C++_Linux_Sockets_Networking_Udp - Fatal编程技术网

C++ Linux上UDP协议的时延测量

C++ Linux上UDP协议的时延测量,c++,linux,sockets,networking,udp,C++,Linux,Sockets,Networking,Udp,我想测量Linux上两台机器之间的UDP延迟和丢弃率。最好(但不是关键)同时在多台机器之间进行测量 因此,我想得到一个直方图,例如,在测量过程中的每个时刻,每个数据包的RTT时间。预期频率约为每秒10个数据包 你知道我可以用什么工具吗 到目前为止,我尝试的是: ping-使用icmp而不是UDP iperf-仅测量抖动,不测量延迟 D-ITG-每个流量的测量值统计,无直方图 tshark-使用TCP进行ping,而不是UDP 我还创建了一个简单的C++套接字程序,在每个客户端都有客户端和服务器,

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

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

你知道我可以用什么工具吗

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

  • ping-使用icmp而不是UDP
  • iperf-仅测量抖动,不测量延迟
  • D-ITG-每个流量的测量值统计,无直方图
  • tshark-使用TCP进行ping,而不是UDP
  • 我还创建了一个简单的C++套接字程序,在每个客户端都有客户端和服务器,并且我用计数器和时间戳发送UDP包。我的程序似乎工作正常,但由于我不是一名网络程序员,我不能100%确定我是否正确处理了缓冲区(特别是在部分数据包等情况下)。因此,我更愿意使用一些经过验证的软件来完成这项任务 你能推荐一些吗


    谢谢,视情况而定。如果您只需要带有时间戳的跟踪,Wireshark就是您的朋友:

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


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

    是的,你说得对,但我只计算RTT时间,所以我在发送数据包时只在客户端测量时间,在取回数据包时第二次测量时间。在服务器端,我只回复相同的数据包,没有任何测量,因此我不在乎机器之间的时钟是否关闭。谢谢