如何在paho-mqtt网络中测量延迟

3
我正在尝试测量MQTT网络中发布者到订阅者的延迟。我希望使用on_message()函数来测量此行程需要多长时间,但我不确定此回调是在代理接收消息之后还是在订阅者接收消息之后调用?
此外,是否有其他建议可以跨网络测量延迟?

你的意思是,你想要测量从发布者到订阅者传输数据包所需的时间吗? - yadhu
是的,我想要测量从发布者到订阅者传输一个数据包所需的时间。 - c.garry
2个回答

3

on_message()会在订阅者接收到消息时被调用。

衡量延迟的一种方法是在同一客户端中进行循环发布,例如:

  1. 设置客户端
  2. 订阅给定主题
  3. 向主题发布消息并记录当前(高分辨率)时间戳。
  4. 当调用on_message()时再次记录时间

值得指出的是,这种测试假定发布者/订阅者将在类似的网络上(例如不是蜂窝网络对千兆光纤)。

此外,延迟将受到代理的负载和订阅给定主题的订阅者数量的影响。

另一种选择是通过监视网络来


3
我曾经涉及类似的工作,需要测量无线传感器网络的延迟。有不同的方法来衡量延迟。 如果订阅者和客户端已同步。 - 在客户端用时间戳值填充有效负载,并将此数据包传输到订阅者。 - 再次在订阅者处记录时间戳,并计算订阅者的时间戳与数据包中时间戳之间的差异。 - 这给出了数据包从客户端到达订阅者所需的时间。 如果订阅者和客户端未同步。 在这种情况下,测量延迟有点棘手。假设网络是对称的。
- 在向订阅者发送数据包之前,在客户端启动计时器。 - 配置订阅者将消息回传到客户端。 - 停止客户端定时器并计算时钟滴答数之差。这个时间表示往返时间,将它除以二就得到单向延迟时间。

如何使订阅者和客户端同步? - c.garry
如果订阅者和客户端都有实时时钟,您可以将相同的日期和时间配置为相同的值。这是一种简单的方法,虽然不太准确,但应该足够用于测量延迟。 - yadhu
NTP也可以用于时间同步,对吧? - Morten Jensen
这个答案提供了一些复杂性的线索。我们在我们的博客文章中有更多细节,链接为https://gambitcomm.blogspot.com/2018/08/video-monitor-end-to-end-latency-of.html - Gambit Support

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接