Messaggistica MQTT
MQTT è uno standard aperto gestito dall'organizzazione di standardizzazione OASIS e riconosciuto a livello internazionale dall'ISO. È il protocollo principale utilizzato dai dispositivi e dalle applicazioni per comunicare con lo IoT strumento.
MQTT è un protocollo di trasporto di messaggistica di pubblicazione e sottoscrizione progettato per lo scambio efficiente di dati in tempo quasi reale tra sensori e dispositivi mobili. Per ulteriori informazioni, vedere OASIS Message Queuing Telemetry Transport.
MQTT esegue oltre TCP/IP e, mentre è possibile codificare direttamente su TCP/IP, è anche possibile scegliere di utilizzare una libreria che gestisce i dettagli del protocollo MQTT per voi. Sono disponibili una vasta gamma di librerie client MQTT. IBM contribuisce allo sviluppo e al supporto di diverse librerie client, comprese quelle disponibili nei seguenti siti:
Norme e requisiti
Per ulteriori informazioni sulle versioni di MQTT supportate dallo IoT strumento, consultare Standard e requisiti.
Limitazioni e limitazioni
Per ulteriori informazioni sulle restrizioni e limitazioni applicabili ai client MQTT quando sono connessi allo IoT strumento, vedere Restrizioni e limitazioni.
Sicurezza della porta
I dispositivi, i gateway e le applicazioni si connettono allo IoT strumento utilizzando il protocollo MQTT o HTTP.
| Tipo di connessione | Protocollo | Numero di porta |
|---|---|---|
| Sicuro (TLS) | MQTT e HTTPS | 443 |
MQTT è supportato su TCP e WebSockets. I client MQTT si collegano utilizzando le credenziali appropriate, come token di autenticazione dei dispositivi per dispositivi e chiavi API e token per le applicazioni. Le credenziali TLS sono sempre crittografate quando inviate nei porti sicuri.
Quando si utilizza la messaggistica MQTT sicura sulla porta 443, le librerie client più recenti riconoscono automaticamente come attendibile il certificato predefinito presentato dallo IoT strumento. Se questo non è il caso del tuo ambiente client, puoi scaricare e utilizzare la catena di certificati completa da messaging.pem. Se si carica un certificato personalizzato, potrebbe essere necessario assicurarsi che l'appropriata catena di fiducia venga aggiunta al proprio ambiente client.
TLS
È necessario abilitare TLS nella propria applicazione per evitare di inviare dati insicuri.
Per ulteriori informazioni, fare riferimento ai seguenti argomenti:
Politica di fair use
In 8.10 e versioni successive, la limitazione del fair use sospende le operazioni di lettura sulle connessioni che superano il limite di connessioni. I limiti di throttling per lo IoT strumento sono specifici per ciascun dispositivo e si basano sulla classe del dispositivo, ad esempio dispositivo, gateway o applicazione. Questi limiti vengono utilizzati per prevenire attacchi Denial-of-Service ( DoS ) provenienti dai dispositivi. I limiti di throttling non sono proporzionali alle dimensioni IoT dell'implementazione dello strumento. Il throttling non si applica alle connessioni di breve durata che inviano pochi messaggi, come le connessioni per i client di messaggizzazion HTTP. Per ulteriori informazioni, consulta Quotas.
Per massimizzare la velocità di trasmissione dei messaggi, assicurati che l'applicazione di acquisizione dati dello IoT strumento distribuisca il carico su più dispositivi o applicazioni MQTT. Il IoT servizio MQTT è progettato per gestire numerose connessioni di dispositivi, ciascuno dei quali pubblica dati a bassa frequenza.
Autenticazione client MQTT
Ogni client MQTT richiede un ID client univoco. Se si tenta di collegare un client nella propria organizzazione utilizzando un ID client già connesso, la prima connessione è disconnessa.
I dispositivi e i gateway collegati direttamente allo IoT strumento visualizzano un'icona di stato sul dashboard per indicare che sono collegati. I dispositivi connessi indirettamente tramite un gateway vengono mostrati come disconnessi in quanto il pannello di controllo non è a conoscenza di dispositivi connessi tramite un gateway.
Livelli QoS (quality of service) di messaggistica (QoS)
| Livello | Descrizione |
|---|---|
| Al massimo una volta (QoS 0) | Il livello QoS (Quality of Service) 0 (QoS 0) è la modalità di trasferimento più rapida. Il messaggio viene consegnato al massimo una volta o potrebbe non essere consegnato affatto. La consegna nella rete non viene riconosciuta e il messaggio non viene memorizzato. Il messaggio potrebbe essere perso se il client è disconnesso o se il server fallisce. Il protocollo MQTT non richiede che i server inoltrino le pubblicazioni a livello di QoS (quality of service) 0 a un client. Se il client è disconnesso nel momento in cui il server riceve la pubblicazione, la pubblicazione potrebbe essere eliminata, a seconda dell'implementazione del server. Quando i dati in tempo quasi reale vengono inviati in un intervallo, utilizzare il livello di QoS (quality of service) 0. Se manca un solo messaggio, non importa davvero perché un altro messaggio che contiene i dati più recenti viene inviato poco dopo. In questo scenario, il costo extra di utilizzo di una maggiore qualità del servizio non comporta alcun beneficio tangibile. |
| Almeno una volta (QoS 1) | Con il livello di qualità del servizio 1 ( QoS 1), il messaggio viene sempre consegnato almeno una volta. Se si verifica un errore prima che un riconoscimento venga ricevuto dal mittente, un messaggio può essere consegnato più volte. Il messaggio deve essere memorizzato localmente al mittente fino a quando il mittente riceve la conferma che il messaggio è stato pubblicato dal destinatario. Il messaggio viene memorizzato nel caso in cui debba essere inviato nuovamente. La consegna affidabile del messaggio al broker MQTT non significa che Maximo® Monitor elaborerà il messaggio. |
| Esattamente una volta (QoS 2) | Il livello di servizio 2 ( QoS 2) garantisce la massima affidabilità nella consegna dei messaggi, ma è anche la modalità di trasferimento più lenta. Il messaggio viene sempre consegnato esattamente una volta e deve essere memorizzato anche localmente al mittente fino a quando il mittente riceve la conferma che il messaggio è stato pubblicato dal destinatario. Il messaggio viene memorizzato nel caso in cui debba essere inviato nuovamente. Con la qualità del livello di servizio 2, viene utilizzata una sequenza di handshake e di riconoscimento più sofisticata che per il livello 1 per garantire che i messaggi non siano duplicati. La consegna affidabile del messaggio al broker MQTT non significa che Maximo Monitor elaborerà il messaggio. Quando si inviano comandi, se si desidera la conferma che solo il comando specificato viene agito e che verrà agito solo una volta, utilizzare la qualità del livello di servizio 2. In questo esempio, le spese generali aggiuntive del livello 2 possono essere vantaggiose rispetto agli altri livelli. |
- Le prestazioni I/O del disco sono fondamentali per l' QoS e 1 e l' QoS e 2, poiché questi livelli richiedono la persistenza del disco nei componenti di IoT messaggistica dello strumento.
- La specifica MQTT fornisce una negoziazione di controllo del flusso a livello di protocollo tra client e server. Il client e il server negoziano il numero di messaggi non riconosciuti consentiti nella sessione. Se il client non dispone di alcun ID messaggio disponibile, il client deve sospendere la pubblicazione fino a quando gli ID non sono disponibili. Gli ID messaggio sono disponibili quando vengono ricevuti i riconoscimenti del messaggio (ACK). Per ulteriori informazioni, consultare la specifica MQTT standard OASIS.
Velocità di inserimento dati
Per ottenere tassi di inserimento dati più elevati, utilizza il protocollo di messaggistica MQTT e tieni aperta la connessione del dispositivo durante la pubblicazione dei messaggi.
MQTT CONNECT
MQTT PUBLISH
MQTT PUBLISH
MQTT PUBLISH
...MQTT CONNECT
MQTT PUBLISH
MQTT DISCONNECT
MQTT CONNECT
MQTT PUBLISH
MQTT DISCONNECT
...I seguenti fattori influenzano la velocità di inserimento dati:
- Il protocollo di messaggistica. MQTT è un protocollo di volume elevato. HTTP è un protocollo a basso volume.
- Il modello di messaggistica. Per migliorare la frequenza di inserimento dati, non chiudere le sessioni MQTT dopo la pubblicazione di ciascun messaggio. Lasciare la connessione aperta.
- Il numero di periferiche. Per migliorare l'inserimento dei dati e la frequenza dei messaggi, distribuire il carico su più connessioni.
- La classe periferica. Le quote di utilizzo equo si basano sulla classe periferica.
- QoS. Livelli elevati di affidabilità della messaggistica richiedono costi più elevati.