Ubuntu 无线MQTT/TCP延迟测量->;锯齿图和10ms的零星偏差

Ubuntu 无线MQTT/TCP延迟测量->;锯齿图和10ms的零星偏差,ubuntu,tcp,raspberry-pi,mqtt,wireless,Ubuntu,Tcp,Raspberry Pi,Mqtt,Wireless,Hi Stack Overflowers 我正在本地无线网络上进行延迟测试。期望的结果是使用MQTT对两个设备之间的消息延迟进行可靠的估计 测量路线为: Ubuntu18笔记本电脑->交换机->无线接入点->无线接入点->带Ubuntu20的Raspberry Pi 4 笔记本电脑在RPi上发布到MQTT代理,同时订阅它。我正在测量消息发送和消息接收之间的时间。我使用笔记本电脑上的Python脚本以及连接到笔记本电脑的无线接入点上的wireshark监控数据 图(链接在本文顶部)显示了测量结果的

Hi Stack Overflowers

我正在本地无线网络上进行延迟测试。期望的结果是使用MQTT对两个设备之间的消息延迟进行可靠的估计

测量路线为: Ubuntu18笔记本电脑->交换机->无线接入点->无线接入点->带Ubuntu20的Raspberry Pi 4

笔记本电脑在RPi上发布到MQTT代理,同时订阅它。我正在测量消息发送和消息接收之间的时间。我使用笔记本电脑上的Python脚本以及连接到笔记本电脑的无线接入点上的wireshark监控数据

图(链接在本文顶部)显示了测量结果的一小部分。它显示了两个我完全无法理解的现象。x轴代表消息编号,y轴代表以毫秒为单位测量的延迟。每100毫秒发送一条消息

  • 总的来说,它是锯齿形的。延迟从大约35毫秒下降到27毫秒,然后再上升。当我使用Ping工具(23-16ms)时也会发生同样的情况。有人知道为什么会这样吗
  • 有些测量样本与此周期性结果存在偏差。但真正奇怪的是,它们与锯齿形状的偏差正好为10毫秒。观察此行为的理想部分是两条消息的偏差,大约在消息编号50处。如果我从这些样本中减去10毫秒,它们正好符合锯齿形状。在16号信息上,偏差正好为20毫秒
  • 这些差异似乎如此一致,应该有一个具体的原因。但我不知道是什么

    接入点上的Wireshark跟踪显示每个发送消息的以下记录:

  • 已发送的已发布消息
  • 接收到TCP确认
  • 已收到订阅消息
  • 已发送TCP确认
  • 2&3(10ms)和3&4(0.2ms)之间的时间增量非常一致。该偏差发生在发布的消息和第一个TCP Ack之间。第一次TCP确认和收到的订阅消息之间的时间正好是10毫秒。在我看来,第一次确认时间偏差的原因与此有关

    我很高兴你们能给我任何意见