Το MQTT (MQ Telemetry Transport) είναι ένα πρωτόκολλο ανταλλαγής μηνυμάτων για επικοινωνία μεταξύ συσκευών (Μ2Μ networks). Πάμε όμως να δούμε από τι αποτελείτε. Το πρωτόκολλο λειτουργεί με τοπολογία server-client.
Απο τί αποτελείται;
Στο MQTT έχουμε 3 βασικά στοιχεία, τον broker, τους publishers και τους subscribers.
- MQTT Broker : Ούσιαστικά είναι ο server του συστήματος μηνυμάτων. Είναι αυτός που λαμβάνει και διαχειρίζεται την πληροφορία. Γνωστοί brokers του εμπορίου είναι ο Mosquitto , o HiveMQ o VernerMQ και άλλοι
- MQTT Publisher: Είναι αυτός που στέλνει πληροφορίες στον server. μπορεί να είναι κάποιος sensor ή κάποιο πρόγραμμα, ακόμα και ένα webpage.
- MQTT Subscriber:Είναι αυτός που συνδέεται στον server και λαμβάνει πληροφορίες.
Πως λειτουργεί;
Ένας Publisher στέλνει την πληροφορία που θέλει να μοιράσει στον Broker, χρησιμοποιώντας στο μήνυμά του ένα topic. Όσοι Subscribers είναι συνδεδεμένοι στον Broker χρησιμοποιώντας το συγκεκριμένο topic θα λάβουν την πληροφορία. Οποιαδήποτε συσκευή είναι συνδεδεμένη στον broker (ακόμα και ο ίδιος) μπορεί να λειτουργεί και ως subscriber και ώς publisher.
Ασφάλεια του συστήματος
Το συγκεκριμένο πρωτόκολλο επικοινωνίας από σχεδιασμού του χρησιμοποιεί απλό κείμενο για την μετάδοση της πληροφορία. Όμως έχει υποστήριξη SSL-TLS καθώς και υποστηρίζει χρήστες για σύνδεση ως subscribers/publishers, οπότε ουσιαστικά αν προσέξουμε την εγκατάσταση του και ακολουθήσουμε πιστά κανόνες ασφαλείας, τότε η ασφάλεια του συστήματος, είναι τόσο καλή όσο είναι και η ασφάλεια του μηχανήματος που είναι εγκατεστημένος ο broker μας.
Ο γραφών, σε δική μου εγκατάσταση χρησιμοποιω τον Mosquitto broker σε debian 10 εγκατάσταση. Ο mosquitto πάσχει απο τα εξής , λόγω προρύθμισης:
- Επιτρέπει by default ανώνυμους χρήστες να συνδεθούν και να κάνούν publish /subscribe μηνύματα. Μετά την εγκατάσταση είναι σημαντικό να ρυθμίσουμε το mosquitto να κόβει τους ανώνυμους χρήστες και να επιτρέπει πρόσβαση μόνο σε χρήστες με λογαριασμούς.
- Έχει “ανοιχτά” τα SYS-Topics, Αυτά είναι συστεμικά τοπικ στα οποία ο broker στέλνει δεδομένα για monitoring. Ενώ σε άλους brokers τα SYS-Topics είναι κλειδωμένα και μπορεί να τα χρησιμοποιεί μόνο κάποιος συστεμικός χρήστης, στο mosquitto , by default είναι ανοιχτά για να τα χρησιμοποιούν όλοι. Ετσι μπορεί οποιοσδήποτε να στείλει ψέυτικά δεδομένα σε clients. Ενας απο τους τρόπους να το αποτρέψεις είναι χρησιμοποιώντας Access Lists ACL. μπορείτε να δείτε περισσότερα εδω..
Κλείνoντας…
Με την απλότητα στην εγκατάσταση και χρήση του και την χαμηλή ανάγκη του για πόρους συστήματος, έχει καταφέρει κυριαρχήσει στις επικοινωνίες μεταξύ συσκευών Internet of things. Ο server του είναι τόσο μικρός που μπορεί να τρέξει μέχρι και από ένα arduino, και μηνύματα μπορούμε να στέλνουμε ή να διαβάζουμε χρησιμοποιώντας ένα απλό ESP8266 wifi module. Αυτό από μόνο του το κάνει απαραίτητο στην επικοινωνία με απλούς sensors, και θαυματουργό σε embeded συστήματα με δυνατότητες IoT.