Lo standard per lo scambio dati nel mondo del IoT
Un protocollo specificatamente studiato per le situazioni in cui è richiesto un basso consumo e dove la banda è limitata.
Come noto il cosiddetto Internet delle cose non è una rete vera e propria, ma una definizione nata dal marketing che sintetizza il crescente utilizzo di microprocessori embedded collegati alla rete, spesso connessi a sensori o ad altri strumenti di raccolta dati. Dato che i microprocessori sono ormai poco costosi e le reti sono pervasive, i sistemi embedded hanno il potenziale per fornire una grande quantità di dati che la maggior parte delle aziende potrebbe sfruttare.
In questo scenario, si rende necessaria la definizione di un protocollo di comunicazione standard sul quale basare le implementazioni IoT: L'Organization for the Advancement of Structured Information Standards (OASIS) ha dichiarato che il protocollo MQTT (Message Queuing Telemetry Transport) di IBM è lo standard di riferimento per la comunicazione per l'Internet delle Cose.
Come funziona?
Al posto del modello client/server di HTTP, il protocollo MQTT adotta un meccanismo di pubblicazione e sottoscrizione per scambiare messaggi tramite un appostivo "message broker". Invece di inviare messaggi a un determinato set di destinatari, i mittenti pubblicano i messaggi su un certo argomento (detto topic) sul message broker, Ogni destinatario si iscrive agli argomenti che lo interessano e, ogni volta che un nuovo messaggio viene pubblicato su quel determinato argomento, il message broker lo distribuisce a tutti i destinatari. In questo modo è molto semplice configurare una messaggistica uno-a-molti.
I punti di forza
La leggerezza al centro
In breve MQTT - che ha avuto la sua genesi nel 1999 grazie a un’idea di Andy Stanford-Clark (IBM) e Arlen Nipper (Eurotech) - viene descritto come un protocollo di messaggistica estremamente leggero progettato per dispositivi limitati e reti a bassa larghezza di banda, alta latenza o sostanzialmente inaffidabili. I principi su cui si basa sono quelli di abbassare al minimo le esigenze in termini di ampiezza di banda e risorse mantenendo nel contempo una certa affidabilità e grado di certezza di invio e ricezione dei dati. E’ il mondo del machine-to-machine e, appunto, dell’Internet delle cose ma, affermano i promotori di questo protocollo, anche di quelle applicazioni mobili per le quali va tenuto in maggior conto il consumo di banda in rete e di energia dei dispositivi.Il protocollo viene già utilizzato all’interno di sensori in grado di comunicare con un broker attraverso collegamenti satellitari, in ambienti SCADA (Supervisory Control and Data Acquisition), oppure su connessioni occasionali di dispositivi medicali, oltre ad ambienti di domotica.
Diverse sono quindi le applicazioni che già lo implementano interoperando con vari prodotti che possono godere di caratteristiche di messaggistica così descritte. La prima è la possibilità di pubblicare/sottoscrivere pattern di messaggi per mettere a disposizione una distribuzione da uno a molti e un disaccoppiamento delle applicazioni. Quindi una tecnologia di trasporto dei messaggi agnostica rispetto al contenuto del payload, con l’uso nel contempo del protocollo TCP/IP, alla base di internet così come la conosciamo oggi, per fornire connettività di rete di base.
Tre livelli di servizio
Il primo è chiamato ‘at most once’ (al massimo una volta), con la distribuzione dei messaggi in base a quanto di meglio garantito dalla rete TCP/IP sottostante. Visto che in questo caso la perdita di messaggi o la loro duplicazione possono comunque verificarsi, l’uso ottimale è identificato con i dati raccolti da sensori ambientali dove non importa se una singola lettura viene smarrita in quanto quella successiva godrà presto di un’altra pubblicazione.
Con il livello di servizio ‘at least once’ (almeno una volta) viene invece assicurato l’arrivo dei messaggi, ma possono comunque verificarsi sempre dei duplicati.
L’ultimo grado di servizio, quello più elevato, è definito ‘exactly once’ (esattamente una volta), con l’assicurazione che i messaggi arrivino, appunto, esattamente una volta. Ecco che i sistemi di billing possono essere il target ideale, considerato che la duplicazione o perdita di messaggi può portare all’applicazione di tariffe anche non corrette.
Altre caratteristiche evidenziate di MQTT sono un overhead di trasporto ridotto, grazie a un header a lunghezza fissa da 2 byte, e scambi minimizzati per ridurre il traffico di rete. Infine il protocollo presenta un meccanismo per la notifica alle parti interessate di una disconnessione anormale di un client, utilizzando funzioni battezzate Last Will e Testament.
MQTT supporta infine anche un certo grado di sicurezza considerato che con un suo pacchetto è possibile passare direttamente anche nomi utente e password. Se si vogliono cifrare i dati trasmessi, tra i metodi suggeriti ci sono invece l’affiancamento di SSL (Secure Sockets Layer), il che in ogni caso aggiunge pesantezza al tutto, oppure l’uso di applicazioni di criptatura a monte e a valle della trasmissione.
Esempi grafici di comunicazione tramite protocollo MQTT
Leonardo (04/03/2015)