Огляд мережевих протоколів та протоколів обміну повідомленнями для IoT

Привіт, хабрівчани! Перший у Росії онлайн-курс IoT-розробник стартує в OTUS вже у жовтні. Прямо зараз відкритий набір на курс, у зв'язку із чим ми продовжуємо ділитися з вами корисними матеріалами.

Огляд мережевих протоколів та протоколів обміну повідомленнями для IoT

Інтернет речей (IoT, Internet of Things) буде побудований на базі існуючої мережевої інфраструктури, технологій та протоколів, що використовуються в даний час у будинках/офісах та в Інтернеті, і запропонує багато іншого.

Мета цього посібника – дати короткий огляд мережевих та прикладних протоколів для IoT.

Примітка. У вас мають бути знання основ мережевих технологій.

IoT-мережі

IoT працюватиме у існуючих TCP/IP-мережах.

TCP/IP використовує чотирирівневу модель з певними протоколами кожному рівні. Див. understanding the TCP/IP 4 layer model (Розбираємося з чотирирівневою моделлю TCP/IP).

На діаграмі нижче показано порівняння протоколів, що використовуються в даний час, і тих, які, швидше за все, використовуватимуться для IoT.

Огляд мережевих протоколів та протоколів обміну повідомленнями для IoT

Примітки до діаграми:

  1. Розмір шрифту відображає ступінь популярності протоколу. Наприклад, зліва IPv4 більше, оскільки він набагато популярніший у сучасному Інтернеті. Однак справа він менший, оскільки очікується, що IPv6 буде популярнішим у IoT.

  2. Показано не всі протоколи.

  3. Найбільше змін на канальному (рівні 1 та 2) та прикладному рівнях (рівень 4).

  4. Мережевий та транспортний рівні, швидше за все, залишаться незмінними.

Протоколи канального рівня

На канальному рівні (Data Link) вам потрібно з'єднати між собою пристрої. Вони можуть бути як недалеко, наприклад, у локальних мережах (local networks) і великій відстані друг від друга: у міських (metropolitan area networks) і світових мережах (wide area networks).

В даний час на цьому рівні в домашніх та офісних мережах (LAN) використовуються Ethernet та Wi-Fi, а в мобільних (WAN) – 3G/4G. Однак багато IoT-пристроїв малопотужні, наприклад, датчики, і живляться тільки від батарей. У цих випадках Ethernet не підходить, але можна використовувати low powered Wi-Fi і low powered Bluetooth.

Хоча для підключення цих пристроїв, як і раніше, будуть використовуватися існуючі бездротові технології (Wi-Fi, Bluetooth, 3G/4G), варто також звернути увагу на нові технології, спеціально розроблені для IoT-додатків, популярність яких, ймовірно, зростатиме.

Серед них:

  • BLE – Bluetooth з низьким рівнем енергії

  • LoRaWAN – Long Range WAN

  • SigFox

  • LTE-M

Більш детально вони описані у статті An overview of IOT бездротові технології (Огляд бездротових технологій IoT).

Мережевий рівень

На мережному рівні (Networking) у довгостроковій перспективі домінуватиме протокол IPv6. Малоймовірно, що використовуватиметься IPv4, але він може відігравати певну роль на початкових етапах. Більшість пристроїв IoT для дому, наприклад, розумні лампочки, в даний час використовують IPv4.

Транспортний рівень 

На транспортному рівні (Transport) в Інтернеті та Інтернеті домінує TCP. Він використовується як у HTTP, так і в багатьох інших популярних протоколах Інтернету (SMTP, POP3, IMAP4 тощо).

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

Однак у майбутньому через нижчі накладні витрати, я очікую, що UDP буде більш популярний для IoT. Ймовірно, більшого поширення набуде MQTT-SNпрацює над UDP. статтю про порівняння TCP проти UDP .

Прикладний рівень та протоколи обміну повідомленнями

Важливі характеристики для протоколів IoT:

  • Швидкість — кількість даних, що передаються в секунду.

  • Затримка — час, необхідний для надсилання повідомлення.

  • Споживана потужність.

  • Безпека.

  • Наявність програмних засобів.

В даний час на цьому рівні активно використовуються два основні протоколи: HTTP та MQTT.

HTTP, ймовірно, найвідоміший протокол цього рівня, що лежить в основі Інтернету (WWW). Він, як і раніше, матиме важливе значення для IoT, оскільки використовується для REST API – основного механізму взаємодії веб-додатків та сервісів. Однак, через високі накладні витрати, HTTP навряд чи стане основним протоколом IoT, хоча все одно буде широко використовуватися в Інтернеті.

MQTT (Message Queuing Telemetry Transport) став основним протоколом обміну повідомленнями в IoT, завдяки своїй легкості та простоті у використанні. статтю Introduction to MQTT for beginners (Вступ до MQTT для початківців).

Порівняння HTTP та MQTT для IoT

MQTT швидко стає стандартом де-факто для IoT-додатків. Це відбувається через його легкість і швидкість в порівнянні з HTTP і те, що він є протоколом "один до багатьох", а не "один до одного" (HTTP).

Багато сучасних веб-додатків з радістю використовували б MQTT замість HTTP, якби він був доступний на момент їх розробки.

Хороший приклад - відправка інформації безлічі клієнтів, наприклад, про прибуття та відправлення поїздів/автобусів/літаків. У цьому сценарії протокол «один до одного», такий як HTTP, має великі накладні витрати і створює велике навантаження на веб-сервери. Масштабування цих веб-серверів може бути ускладненим. З MQTT клієнти підключаються до брокера, який легко можна додавати для балансування навантаження. Дивіться про це туторіал з відео Republish HTML Data Over MQTT (Flight Arrivals Example) та статтю MQTT vs HTTP for IOT.

Інші протоколи обміну повідомленнями

HTTP не був розроблений для IoT-додатків, але, як уже згадувалося, він буде широко використовуватися протягом якогось часу завдяки його широкому використанню в API.

Майже всі платформи IoT підтримують як HTTP, і MQTT.

Проте є інші протоколи, які варто розглянути.

протоколи

  • MQTT - (Message Queuing Telemetry Transport). Використовує TCP/IP. Для моделі видавець-передплатник потрібен брокер повідомлень.

  • AMQP - (Advanced Message Queuing Protocol). Використовує TCP/IP. Моделі «видавець-передплатник» та «крапка-крапка».

  • COAP - (Constrained Application Protocol). Використовує UDP. Розроблений спеціально для IoT, використовує модель запиту-відповіді як у HTTP. RFC 7252.

  • DDS - (Data Distribution Service) 

В цій статті розглядаються основні протоколи та їх застосування. Висновок цієї статті полягає в тому, що IoT буде використовувати набір протоколів, залежно від їхнього передбачуваного застосування.

Однак, якщо озирнутися назад, у перші роки існування Інтернету протокол HTTP, який згодом став домінуючим, був лише одним з безлічі протоколів.

Незважаючи на те, що HTTP не був спочатку задуманий для передачі файлів та електронної пошти, сьогодні він використовується і для того, і для іншого.

Я очікую, що в IoT з протоколами обміну повідомленнями відбудеться те саме: більшість сервісів будуть використовувати один переважний протокол.

Нижче наведено графіки Google Trends, які показують, як змінювалася популярність MQTT, COAP та AMQP за останні кілька років.

Огляд Google Trends 

Огляд мережевих протоколів та протоколів обміну повідомленнями для IoT

Підтримка протоколів по платформах

  • Microsoft Azure - MQTT, AMQP, HTTP та HTTPS

  • AWS - MQTT, HTTPS, MQTT over websockets

  • IBM Bluemix - MQTT, HTTPS, MQTT

  • Thingworx - MQTT, HTTPS, MQTT, AMQP

Резюме

Найбільше змін на канальному (рівні 1 та 2) та прикладному рівнях (рівень 4).

Мережевий та транспортний рівні, швидше за все, залишаться незмінними.

На прикладному рівні компоненти IoT будуть використовувати протоколи обміну повідомленнями. Хоча ми все ще знаходимося на ранньому етапі розвитку IoT, цілком імовірно, що виділиться один або, можливо, два протоколи обміну повідомленнями.

За останні кілька років MQTT став найпопулярнішим, і саме на ньому я зараз фокусуюсь на цьому сайті.

HTTP також буде використовуватися, оскільки він вже добре вбудований в існуючі IoT-платформи.

На цьому все. Запрошуємо вас записатися на безкоштовний демо-урок на тему "Чат-бот для швидких команд пристрою".

Читати ще:

Джерело: habr.com

Додати коментар або відгук