C++ Linux上UDP协议的时延测量
我想测量Linux上两台机器之间的UDP延迟和丢弃率。最好(但不是关键)同时在多台机器之间进行测量 因此,我想得到一个直方图,例如,在测量过程中的每个时刻,每个数据包的RTT时间。预期频率约为每秒10个数据包 你知道我可以用什么工具吗 到目前为止,我尝试的是: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++套接字程序,在每个客户端都有客户端和服务器,
谢谢,视情况而定。如果您只需要带有时间戳的跟踪,Wireshark就是您的朋友:我想提醒您,UDP是一种基于消息的协议,数据包有明确的边界。无法接收部分数据包。也就是说,你要么得到完整的信息,要么就得不到。因此,您不必担心UDP中的部分数据包
使用计数器计算数据包丢弃的方法&使用时间增量计算延迟对于UDP来说似乎很好。然而,需要考虑的重要一点是确保客户端和服务器的系统时间同步。是的,你说得对,但我只计算RTT时间,所以我在发送数据包时只在客户端测量时间,在取回数据包时第二次测量时间。在服务器端,我只回复相同的数据包,没有任何测量,因此我不在乎机器之间的时钟是否关闭。谢谢