Blog
MQTT 5: Neuerungen für ressourcenbeschränkte Clients
28.10.2018
Bei der Entwicklung des MQTT 5 Standards wurde u.a. besonderer Wert auf die bessere Unterstützung für ressourcenbeschränkte Clients und Leistungssteigerungen gelegt: Topic Alias, Maximum Packet Size, Flow Control, Subscription Options und Retained Message Control.
Topic Alias
Lange Topic Namen führen zu einem großen Paket Overhead. Das äußert sich insbesondere dann, wenn immer wieder dieselben Topic Namen verwendet werden. MQTT 5 führt aus diesem Grund Topic Aliase ein. Sie erlauben es, den Topic Namen durch einen zwei Byte großen Integerwert zu ersetzen. Dadurch kann die Größe des PUBLISH Pakets stark reduziert und Bandbreite eingespart werden.
Maximum Packet Size Client und Server können unabhängig voneinander die maximal unterstützte Paketlänge festlegen. Wenn ein Paket diese Länge überschreitet, muss der Server es verwerfen. So kann sichergestellt werden, dass gesendete Nachrichten eine bestimmte Größe nicht überschreiten.
Flow Control (Receive Maximum) Client und Server können unabhängig voneinander die Anzahl der QoS=1 und QoS=2 Nachrichten begrenzen, die sie gleichzeitig verarbeiten können. Das Receive Maximum legt fest, wie viele PUBLISH Nachrichten ohne den Empfang eines ACKNOWLEDGE gesendet werden können. Der Sender pausiert das Senden dieser Nachrichten, um unter dem Receive Maximum Wert zu bleiben. QoS=0 Nachrichten können nicht begrenzt werden, da für diese Pakete kein ACKNOWLEDGE Mechanismus implementiert ist. Das Receive Maximum dient dem Schutz langsamerer Clients. Dieser Schutz gilt allerdings nicht für QoS 0 Nachrichten.
Subscription Options
noLocal In MQTT 5 können Optionen für das Abonnieren festgelegt werden. In vorherigen MQTT Versionen hat ein Client Nachrichten, die er an einen Topic gesendet hat, auch immer selbst empfangen, wenn er den Topic abonniert hatte. Mit der Option noLocal lässt sich dieses Verhalten nun unterbinden.
Retained Message Control Mit einer weiteren Option kann das Verhalten von aufbewahrten Nachrichten (Retained Messages) eingestellt werden.
0 = Aufbewahrte Nachrichten werden zum Zeitpunkt des Abonnements gesendet
1 = Aufbewahrte Nachrichten werden nur zum Zeitpunkt des Abonnements gesendet, wenn das Abonnement noch nicht existiert
2 = Keine aufbewahrten Nachrichten zum Zeitpunkt des Abonnements senden
Quellen: Mixed Mode – der professionelle Partner für IoT-Anwendungen!
Maximum Packet Size Client und Server können unabhängig voneinander die maximal unterstützte Paketlänge festlegen. Wenn ein Paket diese Länge überschreitet, muss der Server es verwerfen. So kann sichergestellt werden, dass gesendete Nachrichten eine bestimmte Größe nicht überschreiten.
Flow Control (Receive Maximum) Client und Server können unabhängig voneinander die Anzahl der QoS=1 und QoS=2 Nachrichten begrenzen, die sie gleichzeitig verarbeiten können. Das Receive Maximum legt fest, wie viele PUBLISH Nachrichten ohne den Empfang eines ACKNOWLEDGE gesendet werden können. Der Sender pausiert das Senden dieser Nachrichten, um unter dem Receive Maximum Wert zu bleiben. QoS=0 Nachrichten können nicht begrenzt werden, da für diese Pakete kein ACKNOWLEDGE Mechanismus implementiert ist. Das Receive Maximum dient dem Schutz langsamerer Clients. Dieser Schutz gilt allerdings nicht für QoS 0 Nachrichten.
Subscription Options
noLocal In MQTT 5 können Optionen für das Abonnieren festgelegt werden. In vorherigen MQTT Versionen hat ein Client Nachrichten, die er an einen Topic gesendet hat, auch immer selbst empfangen, wenn er den Topic abonniert hatte. Mit der Option noLocal lässt sich dieses Verhalten nun unterbinden.
Retained Message Control Mit einer weiteren Option kann das Verhalten von aufbewahrten Nachrichten (Retained Messages) eingestellt werden.
0 = Aufbewahrte Nachrichten werden zum Zeitpunkt des Abonnements gesendet
1 = Aufbewahrte Nachrichten werden nur zum Zeitpunkt des Abonnements gesendet, wenn das Abonnement noch nicht existiert
2 = Keine aufbewahrten Nachrichten zum Zeitpunkt des Abonnements senden
Quellen: Mixed Mode – der professionelle Partner für IoT-Anwendungen!