Как измерить задержку в сети paho-mqtt

Я пытаюсь измерить задержку от моего издателя к моему подписчику в сети MQTT. Я надеялся использовать функцию on_message (), чтобы измерить, сколько времени займет эта поездка, но мне не ясно, происходит ли этот обратный вызов после того, как брокер получил сообщение или после того, как подписчик получил его?

Также есть ли у кого-нибудь еще предложения о том, как измерить задержку в сети?

1

Решение

on_message() вызывается на подписчике, когда сообщение достигает подписчика.

Один способ измерить задержку состоит в том, чтобы сделать петлевую публикацию в том же клиенте, например

  1. Настройте клиент
  2. Подписаться на данную тему
  3. Опубликуйте сообщение в теме и запишите текущее (высокое разрешение) время.
  4. когда on_message() называется записать время снова

Стоит отметить, что этот тип теста предполагает, что оба издателя / подписчика будут находиться в похожих сетях (например, не сотовая связь, а гигабитное оптоволокно).

Также на задержку будет влиять нагрузка на брокера и количество подписчиков на данную тему.

Другой вариант — пассивно измерять задержку путем мониторинга сети, предполагая, что вы можете видеть весь трафик из одного места, поскольку синхронизировать часы между точками мониторинга очень сложно.

1

Другие решения

Я был вовлечен в подобную работу, где я должен был измерить задержку в беспроводных сенсорных сетях. Существуют разные способы измерения задержек.

Если подписчик и клиент синхронизированы.

  • Заполните полезную нагрузку значением метки времени на клиенте и передайте
    этот пакет подписчику. На подписчика снова не торопитесь
    отметьте разницу между отметкой времени на
    подписчик и значение метки времени в пакете.
  • Это дает время, необходимое для пакета, чтобы достичь подписчика от
    клиент.

Если подписчик и клиент не синхронизированы.

В этом случае измерение задержки немного сложнее. Предполагая, что сеть симметрична.

  • Запустите таймер на клиенте перед отправкой пакета подписчику.
    Настройте подписчика на отправку сообщения клиенту. Остановить
    Таймер на клиенте принимает разницу в тактах. Этот раз
    представляет время поездки туда и обратно, вы делите его на два, чтобы получить один
    задержка направления.
1

По вопросам рекламы [email protected]