Protocolli di comunicazione

MQTT: cos’è il protocollo e come riesce a far comunicare i dispositivi IoT

Il protocollo di comunicazione, nato un ventennio fa, in ragione della sua flessibilità e facilità d’utilizzo, si è progressivamente affermato come uno standard de facto dell’Internet of Things

Pubblicato il 13 Mar 2020

smart object dati

In questi anni abbiamo assistito al boom del fenomeno IoT: la connettività applicata agli oggetti di uso comune, alle macchine industriali e quant’altro, è forse una delle maggiori rivoluzioni tecnologiche di questi tempi, capace di produrre numerosi benefici sia dal lato aziendale che dei consumatori finali, in termini di efficacia, efficienza, maggiore produttività, ecc. Dietro la connessione degli oggetti, però, c’è però una quantità notevole di tecnologia, a partire dai sensori che rendono possibile la cattura delle grandezze elaborabili dai dispositivi. Questi dati però, non vanno soltanto catturati, ma anche trasmessi dalla fonte al destinatario: per la trasmissione sono necessari dei protocolli, che definiscono formato e ordine dei messaggi spediti e ricevuti tra entità della rete, nonché le azioni da compiere in seguito alla ricezione e/o trasmissione dei messaggi o di altri eventi. Non c’è dubbio che l’avvento dell’Internet of Things abbia cambiato le carte in tavola anche dal punto di vista delle modalità di trasmissione: le caratteristiche stesse dell’IoT impongono infatti l’adozione di un modello di comunicazione in real-time, capace di inviare le informazioni in modalità many-to-one e di recepire un evento nel momento stesso in cui si verifica. Quale tipo di protocollo di comunicazione occorre scegliere allora? Il più noto è sicuramente l’HTTP, HyperText Transfer Protocol, il protocollo di trasmissione delle informazioni utilizzato sul Web. Si tratta però di un protocollo adatto all’Internet of Things? La risposta è, generalmente, no: innanzitutto l’HTTP è ritenuto dagli esperti come “verboso”, dal momento che prevede sempre e comunque l’invio di molti bytes, non certo l’ideale per la comunicazione machine to machine, generalmente caratterizzata dall’emissione di un numero limitato di Bit. Inoltre, questo protocollo non rende possibile stabilire una comunicazione asincrona, che invece è un’esigenza classica dell’IoT.

Cos’è MQTT (Message Queue Telemetry Transport): una storia lunga 20 anni

Un protocollo che, invece, nel corso del tempo si è rivelato particolarmente adatto per la trasmissione dei dati prodotti dai dispositivi IoT è sicuramente l’MQTT (Message Queue Telemetry Transport), nato 20 anni fa, per l’esattezza nel 1999, con l’obiettivo di gestire le connessioni machine to machine, ovvero per abilitare la comunicazione tra le macchine in maniera estremamente efficiente. Le caratteristiche principali di MQTT sono quelle di essere un protocollo semplice e leggero per lo scambio di messaggi, nonché di minimizzare il traffico sulle reti e richiedere poche risorse ai dispositivi per la sua gestione. Si tratta inoltre di un protocollo capace di eseguire in maniera efficiente la distribuzione efficiente di messaggi da uno a molti destinatari, il disaccoppiamento delle applicazioni e la scalabilità dei sistemi. Questo insieme di caratteristiche lo rendono estremamente adatto per tutti quegli ambienti dove le risorse disponibili e la larghezza di banda della rete sono limitate, oppure dove sono presenti dispositivi remoti dotati di poca memoria e scarsa capacità di calcolo, rendendo possibile un funzionamento ottimale anche quando si ha a che fare con reti non perfette in termini di stabilità della connessione, soggette a molteplici interruzioni. Questo protocollo è mirato a ridurre al minimo i requisiti delle risorse dei dispositivi tentando al contempo di garantire affidabilità e un certo livello di garanzia di consegna.

Il funzionamento tecnico del protocollo MQTT

Per operare in questo modo, l’MQTT segue un paradigma di pubblicazione e sottoscrizione classico, definito “publish and subscribe”, ossia asincrono. Semplificando al massimo la questione: quando il nodo A vuole comunicare con il nodo B, non lo fa in modo sincrono, ovvero come se fosse una telefonata a cui occorre rispondere immediatamente. Al contrario, nel protocollo MQTT il messaggio viene pubblicato dal nodo A (publish) e viene ricevuto dai nodi che sottoscrivono la ricezione del messaggio stesso (subscribe). Sostanzialmente, dunque, con MQTT si disaccoppia fortemente la produzione dalla ricezione del messaggio stesso, anche da un punto di vista temporale. Si tratta perciò di un funzionamento molto diverso dal protocollo del web, che è di tipo request-response. A voler essere ulteriormente più precisi, l’MQTT prevede lo scambio di messaggi tramite un apposito Broker. Un broker MQTT non è altro che un software (ormai ne esistono tantissimi), che si occupa di ricevere i messaggi dai produttori degli stessi e renderli disponibili verso gli utilizzatori. Il broker dunque si occupa di consegnare il messaggio soltanto per i topics (ovvero gli argomenti, ad esempio la temperatura) sottoscritti dal ricevente.

Un altro aspetto tecnologicamente significativo è che per ciascuna connessione client/broker può essere specificato un diverso livello di qualità del servizio:
1) At most once: il messaggio viene inviato una sola volta senza conferma di ricezione.
2) At least once – il messaggio viene inviato più volte finché non si ottiene una conferma di ricezione.
3) Exactly once – il messaggio viene inviato una e una sola volta con conferma di ricezione.

Pregi e difetti del protocollo MQTT

A partire dalla sua nascita nel 1999, il protocollo MQTT si è progressivamente diffuso, pur senza una particolare enfasi. La vera svolta è avvenuta a partire da una decina di anni fa, più o meno in concomitanza con la diffusione dell’IoT: anche se non è particolarmente chiaro come, il dato inequivocabile è che oggi l’MQTT è diventato lo standard de facto per alcuni ambiti dell’IoT. Basti pensare che tutti i grandi cloud provider (AWS, Google Cloud, Microsoft Azure) ormai forniscono nativamente un broker MQTT. Le applicazioni sono infatti notevoli soprattutto sul versante consumer ma non solo. Occorre infatti considerare che la piccola e media impresa che è interessata alle potenzialità del mondo dell’Internet of Things sta guardando con crescente attenzione a questo protocollo, soprattutto in ragione della sua facilità e semplicità di implementazione. Molto spesso, infatti, risulta difficile implementare in queste realtà le classiche soluzioni di Industrial IoT che funzionano in cloud, che fanno leva su altri protocolli più sofisticati (come ad esempio OPC UA) ma che – a loro volta – si portano dietro infrastrutture più complicate. Dunque, per ragioni di costo e di risorse, o semplicemente perché si ha bisogno di avere un’infrastruttura più flessibile, l’adozione del protocollo MQTT risulta funzionale anche alle esigenze delle piccole e medie imprese. I punti di forza, d’altronde, sono numerosi: innanzitutto l’architettura publishing/subscribe risulta molto adatta all’IoT, perché sostanzialmente consente la gestione ed elaborazione dei dati in tempo reale. Un altro beneficio riguarda la discovery insita nelle caratteristiche di base del broker, possibilità che non è altrettanto scontata in altri protocolli IoT, che si aggiunge a un’elevata semplicità sul lato client. D’altra parte il protocollo, nato una ventina di anni fa, presenta una serie di limiti: innanzitutto occorre considerare che MQTT è nato per una comunicazione machine to machine, mentre oggi esiste sempre più un’esigenza di comunicazione machine to human, cioè i dati generati dai sensori hanno non di rado come destinatario un essere umano. Basti pensare, ad esempio, agli assistenti vocali (Amazon Echo, Google Home ecc) che sono ormai sempre più presenti nelle nostre case. Gli stessi aspetti di sicurezza, in occasione della creazione del protocollo, erano stati fortemente trascurati, data anche la limitata dimensione del fenomeno cybercrime. D’altra parte un ventennio fa soluzioni oggi standard come crittografia, autenticazione e autorizzazione erano poco o per nulla sviluppate. Una recente ricerca condotta dal vendor di sicurezza Trend Micro, condotta su un arco temporale di 4 mesi, ha evidenziato come oltre 200 milioni di messaggi MQTT fossero stati trafugati a causa di server esposti. Gli attaccanti hanno potuto localizzare questi dati fuoriusciti utilizzando semplici parole di ricerca e trasformarli in informazioni su asset, personale o tecnologie che possono essere utilizzate per attacchi mirati. In particolare, gli attaccanti possono arrivare a controllare da remoto gli endpoint IoT o compiere attacchi DDOS.

MQTT.cool: un gateway che potenzia il protocollo MQTT

Questi limiti del protocollo sono noti a Lightstreamer, società del Gruppo Par-Tec che, a partire dalla sua esperienza nella trasmissione di dati in tempo reale per il mondo del finance e bancario, ha deciso di proporre sul mercato MQTT.Cool. La prima cosa da chiarire è che non si tratta dell’ennesimo broker presente sul mercato. Piuttosto MQTT.Cool deve essere concepito come un gateway, ossia come un vero e proprio tassello intermedio tra il broker MQTT e il dispositivo client dell’utilizzatore finale. L’obiettivo? Aumentare e migliorare la sicurezza, le prestazioni e l’architettura dello stesso broker. Una delle caratteristiche di MQTT.Cool è quella di rendere il protocollo più adatto alla comunicazione machine to human: occorre infatti considerare che ormai Internet è costellato di firewall, di proxy, che permettono il passaggio di alcuni protocolli ma non di altri, tra cui l’MQTT. MQTT.Cool, dunque, permette di rendere compatibile il protocollo con il web, offrendo così la possibilità di oltrepassare questa barriera, consentendo così ai dati trasmessi da MQTT di arrivare a qualunque client sia connesso a Internet, pur mantenendo le capacità di real time e non sacrificando gli aspetti relativi alla sicurezza. Un altro problema tipico dell’IoT che viene affrontato da MQTT.Cool è quello della sovrapproduzione di dati: i sensori producono enormi volumi di dati, che possono essere utili e assorbiti in contesti machine to machine ma che, invece, in ambiti machine to human possono essere ridondanti per le capacità di ricezione dell’essere umano, rischiando anche di saturare le capacità elaborativa del browser e del client. Torniamo sul classico esempio del sensore di temperatura che, probabilmente, può arrivare a produrre una media di 100 rilevazioni al secondo, una quantità eccessiva e spropositata per le capacità di ricezione dell’essere umano.

In questo senso MQTT.Cool è capace di andare nel senso della riduzione del volume dei dati destinati al client, permettendo tramite un ricampionamento istantaneo la conservazione dei dati più significativi. MQTT.Cool regolerà automaticamente il flusso di dati per ciascun utente, adattandosi così a qualsiasi congestione della rete. Un altro caposaldo di MQTT.Cool è la maggiore attenzione alla sicurezza che, come abbiamo accennato in precedenza, può rappresentare uno dei talloni di Achille del protocollo. Il gateway di Lightstreamer è in grado filtrare le richieste dal punto di vista della sicurezza (tramite un sistema di autenticazione e autorizzazione) eliminando completamente questo onere per il broker che sta alle spalle In questo modo diventa più semplice impedire a determinati client di essere in grado di effettuare operazioni di publish/subscribe su qualsiasi argomento. Da un punto di vista tecnico MQTT.Cool si basa sul motore Lightstreamer, un server ad alte prestazioni utilizzato da molti anni da banche di alto livello, organizzazioni spaziali e della difesa, società del mondo dei media e altri settori per fornire dati in tempo reale sul Web in modo efficiente e affidabile. In buona sostanza, quello che riesce a fare MQTT.Cool è riuscire rimappare in modo trasparente il protocollo MQTT tramite il protocollo Lightstreamer, beneficiando della capacità dello stesso di spostare elevati volumi di dati attraverso il web.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 3