MQTT, Smart House

MQTT (Message Queuing Telemetry Transport) — лёгкий сетевой протокол обмена сообщениями, предназначенный для передачи данных между устройствами в распределённых системах, включая приложения интернета вещей (IoT). Протокол ориентирован на работу в сетях с ограниченной пропускной способностью, высокой задержкой или нестабильным соединением.

MQTT стандартизирован международной организацией OASIS и является открытым протоколом.

Терминология

MQTT представляет собой прикладной протокол обмена сообщениями, реализующий модель публикации и подписки (publish/subscribe). В отличие от клиент-серверных протоколов, MQTT отделяет отправителей сообщений от получателей посредством промежуточного узла — брокера сообщений.

Назначение и область применения

MQTT применяется для передачи телеметрических данных, событий и управляющих команд между устройствами и сервисами. Основные области применения включают:

  • системы интернета вещей;
  • промышленную автоматизацию;
  • мониторинг и управление инфраструктурой;
  • телеметрию и сбор данных;
  • облачные сервисы и распределённые приложения.

Протокол не предназначен для передачи больших объёмов данных или мультимедийного контента.

Архитектура и модель взаимодействия

MQTT использует архитектуру publish/subscribe, в которой выделяются следующие компоненты:

  • Broker — центральный узел, принимающий сообщения от клиентов и распределяющий их подписчикам;
  • Publisher — клиент, публикующий сообщения;
  • Subscriber — клиент, подписывающийся на сообщения.

Клиенты взаимодействуют друг с другом исключительно через брокер.

Принцип работы

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

Сообщения передаются поверх транспортного протокола TCP. Для защиты соединений может использоваться шифрование с применением TLS.

Качество обслуживания (QoS)

MQTT поддерживает три уровня качества обслуживания сообщений:

  • QoS 0 — доставка без подтверждения;
  • QoS 1 — доставка как минимум один раз;
  • QoS 2 — доставка ровно один раз.

Выбор уровня QoS позволяет балансировать между надёжностью доставки и сетевой нагрузкой.

Протокольный стек

MQTT функционирует на прикладном уровне модели OSI и использует:

  • транспортный уровень — TCP;
  • механизмы безопасности — TLS (опционально);
  • прикладной уровень — MQTT.

Существует также вариант MQTT-SN, предназначенный для сетей с ограниченными ресурсами и не использующий TCP напрямую.

Версии протокола

  • MQTT 3.1.1 — широко распространённая версия, стандартизированная OASIS;
  • MQTT 5.0 — расширенная версия, включающая улучшенную обработку ошибок, свойства сообщений и расширенные механизмы управления сессиями.

Безопасность

MQTT не включает встроенного механизма шифрования, однако поддерживает использование TLS для защиты соединений. Аутентификация клиентов может осуществляться с использованием имени пользователя и пароля, сертификатов или внешних механизмов безопасности.

Производительность и ограничения

MQTT характеризуется низким сетевым и вычислительным накладным расходом, что делает его пригодным для устройств с ограниченными ресурсами. Ограничениями протокола являются зависимость от брокера и необходимость устойчивого транспортного соединения.

Сравнение с другими протоколами

MQTT часто сравнивается с протоколами HTTP, AMQP и CoAP. Основным отличием MQTT является модель publish/subscribe и оптимизация для передачи небольших сообщений в условиях нестабильных сетей.

Заблуждения

Распространённым заблуждением является восприятие MQTT как прямого аналога HTTP. MQTT предназначен для событийного обмена сообщениями и не ориентирован на запросно-ответную модель взаимодействия.

MQTT-SN (MQTT for Sensor Networks)

MQTT-SN (Message Queuing Telemetry Transport for Sensor Networks) — расширение протокола MQTT, разработанное для использования в сенсорных сетях и средах с ограниченными ресурсами, где применение TCP/IP затруднено или нецелесообразно.

В отличие от классического MQTT, MQTT-SN не требует использования TCP и может работать поверх альтернативных транспортных протоколов, включая UDP и специализированные канальные технологии (например, IEEE 802.15.4).

Назначение

MQTT-SN предназначен для устройств с крайне ограниченными вычислительными ресурсами, малым объёмом памяти и низким энергопотреблением, таких как беспроводные датчики и встроенные системы.

Архитектура

MQTT-SN сохраняет модель публикации и подписки, но вводит дополнительный компонент:

  • MQTT-SN Gateway — шлюз, преобразующий сообщения MQTT-SN в стандартный MQTT и обеспечивающий взаимодействие с брокером MQTT.

Устройства MQTT-SN (клиенты) взаимодействуют с брокером исключительно через шлюз.

Особенности протокола

К ключевым особенностям MQTT-SN относятся:

  • отсутствие зависимости от TCP;
  • поддержка коротких идентификаторов топиков вместо строковых имён;
  • оптимизация формата сообщений для снижения накладных расходов;
  • возможность работы в сетях с периодическим соединением.

Применение

MQTT-SN применяется в:

  • беспроводных сенсорных сетях;
  • системах промышленного мониторинга;
  • автономных устройствах интернета вещей;
  • сетях с высокой задержкой или нестабильным соединением.

Ограничения

MQTT-SN не получил такого же широкого распространения, как классический MQTT, и требует наличия специализированных шлюзов для интеграции с существующей MQTT-инфраструктурой.

Сравнение MQTT, CoAP и HTTP

ХарактеристикаMQTTCoAPHTTP
Модель взаимодействияPublish/SubscribeЗапрос–ответЗапрос–ответ
Уровень модели OSIПрикладнойПрикладнойПрикладной
Транспортный протоколTCP (TLS опционально)UDP (DTLS опционально)TCP (TLS для HTTPS)
Ориентация на IoTДаДаОграниченно
Накладные расходыНизкиеНизкиеВысокие
Работа при нестабильном соединенииПоддерживаетсяПоддерживаетсяОграничена
Центральный узелБрокерНе требуетсяСервер
Поддержка событийной моделиДаОграниченноНет
Качество доставки сообщенийQoS 0–2ПодтвержденияЗависит от реализации
ЭнергоэффективностьВысокаяВысокаяНизкая
Типичные области примененияIoT, телеметрияIoT, встроенные системыВеб-приложения, API

Обобщение

  • MQTT оптимален для событийного обмена сообщениями и телеметрии в распределённых системах.
  • CoAP ориентирован на REST-подобное взаимодействие в сетях с ограниченными ресурсами.
  • HTTP применяется преимущественно в веб-ориентированных и сервисных архитектурах и менее пригоден для автономных IoT-устройств.