Přenos zpráv IoT protokolem MQTT

-- 14.05.19

Protokol MQTT (Message Queuing Telemetry Transport) se pro přenos zpráv internetu věcí (Internet of Things – IoT) začal poprvé využívat coby průmyslový komunikátor systému SCADA (Supervisory Control And Data Acquisition) u systému potrubního rozvodu. 

Protokol MQTT se v posledních pěti letech stal jedním z dominantních způsobů transportu zpráv IoT napříč různými průmyslovými odvětvími. Vzhledem k tomu, že většina cloudových služeb poskytuje nativní funkce MQTT, stále více výrobců zařízení, softwaru a služeb implementuje produkty založené na MQTT. 

Vznik MQTT

Využívání protokolu MQTT společností Facebook, poskytovateli cloudových služeb a mnoha dalšími v prostoru informačních technologií by mohlo vést k domněnce, že MQTT byl vytvořen se záměrem cílit na IT řešení, avšak motivací k vytvoření protokolu MQTT byla potřeba řešit problém průmyslové komunikace.

V roce 1997 instalovala společnost Phillips 66 jeden z prvních terminálů VSAT (Very-Small-Aperture-Terminal) na bázi protokolu TCP/IP (Transmission Control Protocol / Internet Protocol) na trhu pro použití ve svém systému SCADA určeném pro systém potrubního rozvodu. Aby bylo možné účinně využívat tuto síťovou infrastrukturu, bylo nutno řešit řadu výzev. Až do zavedení tohoto systému byly u každé implementace systému SCADA standardem protokoly na bázi dotazu a odpovědi (poll/response).

Kvůli zpožděním šíření souvisejícím s komunikací VSAT a nákladům spojeným s nepřetržitým dotazováním regulovaných veličin, které se ani nemusely změnit, však společnost Phillips hledala lepší způsob optimalizace své síťové infrastruktury.

Oddělení informačních technologií (IT) v té době využívala software typu MOM (Message-Oriented Middleware) pro oddělování aplikací od sebe. Byly to efektivní infrastruktury, které využívaly zprostředkovatele zpráv, aby zajistily, že aplikace, které „publikovaly“ informace, mohly být připojeny k aplikacím, jež se „přihlásily“ k odběru těchto informací. Informace mohly být publikovány na základě výjimky pro každou aplikaci, která měla zájem a byla přihlášena k odběru těchto informací.

Záměrem bylo použít stejný typ infrastruktury pro systém SCADA reálného času. Jediným problémem bylo, že produkty MOM v té době dostupné na trhu nebyly vhodné pro použití v prostředí SCADA.

Na základě těchto požadavků byl zahájen projekt s cílem vytvořit specifikaci MOM, která by byla vhodná pro použití v těchto typech průmyslových prostředí. To nakonec vedlo k návrhu protokolu MQTT.

Původním záměrem při tvorbě protokolu MQTT bylo, aby byl jednoduchý, účinný, stavový a otevřený.

Jednoduchý. Když byl MQTT zpočátku vyvíjen, nabídka hardwarových platforem na trhu pro vzdálený edge computing byla minimální; standardem byly osmibitové mikroprocesory s 64 kB paměti. Protokol MQTT musel být snadno implementovatelný s minimálními výpočetními zdroji. V roce 2018 již mohly mikrořadiče Arduino poskytovat kompletní komunikační zásobníky MQTT.

Účinný. Poskytovatelé rané verze systému VSAT si účtovali za každý bajt odeslaných a přijatých informací. Transport MQTT musel mít minimální nároky na síťový provoz. Jakmile je navázána relace MQTT, publikované zprávy představují síťový provoz o objemu pouze 2 bajty.

Stavový. Pokud uživatel poskytuje infrastrukturu pro kritickou infrastrukturu reálného času, pak je „stav“ spojení MQTT TCP/IP kritický. MQTT poskytuje mechanismus označovaný jako „nepřetržité povědomí o relaci“ (continuous session awareness), jenž informuje všechny klienty, kteří se zajímají o informace o stavu připojení MQTT v reálném čase.

Otevřený. Koncem roku 1990 byly produkty SCADA/DCS/telemetrie založeny především na proprietárních protokolech dotazu a odpovědi (poll/response). Aby byl protokol MQTT užitečný pro průmysl jako celek, mělo se za to, že když byl vydán, musel být otevřenou specifikací, kterou může kdokoli implementovat zdarma.

Avšak i při splnění těchto kritérií by bylo snadné předpokládat, že bylo vynecháno několik důležitých aspektů, jež uvádíme níže:

Zabezpečení. Mnoho lidí si všimne, že specifikace MQTT nedefinuje žádné zabezpečení. Je to proto, že specifikace MQTT je založena nad rámec protokolu TCP/IP. Vždy se předpokládalo, že nejnovější bezpečnostní postupy TCP/IP budou použitelné pro infrastrukturu MQTT. Tento rozsah sahá od privátních sítí, kde není zabezpečení vyžadováno, až po certifikáty zabezpečení TLS (Transport Security Layer) používané pro připojení. Vzhledem k tomu, že MQTT je vzdáleným připojením, okrajová (edge) zařízení a klienti ani nemusejí mít žádné otevřené porty TCP/IP, což znamená obrovské snížení celkové zranitelné plochy pro kybernetické zabezpečení.

Datový formát odesílané zprávy. Protokol MQTT je datově agnostický, pokud jde o obsah odesílané zprávy (payload). Může se jednat o binární zprávu z programovatelného automatu (PLC), obrázek JPEG, dokument XML nebo řetězec JSON (Java Script Object Notation). MQTT ponechává kódování a interpretaci obsahu odesílané zprávy na poskytovateli softwaru. 

Protokol MQTT s odolností pro průmysl

S tím, jak řešení internetu věcí (IoT) využívající MQTT začala migrovat na kriticky významnější implementace průmyslového internetu věcí (IIoT), potřeboval trh specifikaci, která by umožnila dodavatelům řešení MQTT snadnou interoperabilitu. Ačkoli specifikace MQTT nediktuje žádný jmenný prostor témat zpráv ani reprezentaci dat, jedna byla zapotřebí pro prostor IIoT. Specifikace Sparkplug přesně toto pro trh IIoT nabízí.

Specifikace Sparkplug byla vyvinuta, aby pomohla definovat, jak nejlépe začít používat MQTT v kriticky významné aplikaci reálného času. Specifikace Sparkplug definuje:

 

  1. Známý jmenný prostor témat MQTT, aby vydavatelé a odběratelé informací mohli pro zajištění interoperability předem znát jmenný prostor témat.
  2. Binární obsah odesílané zprávy je optimalizovaný pro proměnné průmyslových procesů. Specifikace Sparkplug respektuje, že průmyslové infrastruktury nemají neomezenou šířku pásma a musejí dobře fungovat prostřednictvím VSAT, rádiové a mobilní infrastruktury.
  3. Jak funguje „stavový“ management v MQTT a jak jej efektivně využívat v systémech SCADA, distribuovaných řídicích systémech (DCS) a průmyslových řídicích systémech (ICS), aby v reálném čase znaly stav všech klientů MQTT.

Specifikace Sparkplug a veškerý referenční implementační kód napsaný v jazyce C, Java, Java Script, Python a Node Red byly předány organizaci Eclipse Foundation a projektu open source. 

Arlen Nipper je prezident/CTO společnosti Cirrus Link Solutions. Upravil Chris Vavra, redaktor časopisu Control Engineering, CFE Media, cvavra@cfemedia.com.