Welcher Messaging-Typ kann für zellularnetzwerkorientierte IoT-Protokolle verwendet werden?

14

Dies ist mir kürzlich aufgefallen, als ich auf Youtube ein tolles Video gefunden habe:

Micheal E. Anderson: Vergleichen von Messaging-Techniken für das IoT, OpenIoTSummit, Linux Foundation .

Die Folien für seinen Vortrag sind verfügbar Hier

Auf Folie 26 und 41 Minuten des Videos erörtert er, wie (lassen Sie mich umschreiben):

Mobilfunkbetreiber bevorzugen, dass ihre IoT-Verbraucher HTML- , XML- oder JSON- Nachrichten verwenden, da sie mehr Daten verbrauchen. Mehr Daten bedeutet, dass sie den Verbrauchern mehr Geld für den Service in Rechnung stellen können.

Ich verstehe, dass viele proprietäre Protokolle nämlich. SigFox , Wireless HART oder Z Wave haben niedrigere Datenraten, und das Senden umfangreicher Daten über solche Träger kann eine teure Angelegenheit sein.

Frage

  • Gibt es einige andere leichte Nachrichtenformate, die für die Verwendung in proprietären Protokollen verwendet werden, wodurch sie kosteneffiziente Lösungen für aktuelle und zukünftige IoT-Verbraucher darstellen? (Im Dunkeln gedreht: Irgendwo liegt ein Format namens Lightweight XML oder HTML oder JSON ?)

  • Vielleicht wird so etwas wie CBOR verwendet oder vielleicht?

Shan-Desai
quelle
1
Ich vermute, dass die Datenbandbreite wahrscheinlich Kosten zweiter Ordnung ist und vom Anwendungsentwickler nicht tatsächlich bezahlt wird. Es lohnt sich also, sich Sorgen zu machen, aber in diesem Bereich wird sich wahrscheinlich mehr entwickeln.
Sean Houlihane
1
Gibt es eine bestimmte Situation, an der Sie interessiert sind? Wenn Sie einen vorhersagbaren Datentyp senden (z. B. eine Ganzzahl oder etwas anderes), können Sie auf eine Auszeichnungssprache verzichten, aber die Menge der Informationen, die Sie ausdrücken können, ist begrenzt. Wenn Sie sich nur für eine Situation interessieren, in der Sie normalerweise JSON / HTML / XML verwenden, ist das auch in Ordnung.
Aurora0001
1
@ Aurora0001 Ich habe eigentlich kein spezielles Szenario, aber es lohnt sich darüber nachzudenken. Ich denke für die Kompatibilität mit Web-basierten Netzwerken (IP-dominiert), die mit Markup-Sprachen von Mobilfunknetzen verbunden sein könnten, sind die beste Form des Datenformats. Aber da sich das IoT-Gebiet allgemein abhebt, lohnt es sich möglicherweise, verschiedene Formate auszuprobieren.
Shan-Desai
1
Es tut uns leid, das Bild ein wenig zu mischen: Messaging in einem beliebigen Netzwerk besteht aus mehreren Ebenen, wobei sich die Datenebene nur auf einer Ebene befindet. Alle sind in der Optimierung oder könnten es zumindest sein. 5G zum Beispiel verbessert die verwendete Signalisierung und damit passt mehr Daten hinein. Sogar 5G verbessert die spektrale Effizienz von Signalen in Luft, sodass die Effizienz von vielen Seiten her markiert wird.
mico

Antworten:

6

Fragen Sie nach dem Protokoll oder dem Nachrichtenformat ? Wir verwenden den Begriff Protokoll oft fälschlicherweise, wenn wir das Format der Daten meinen. Ich mache das oft selbst, weil die Unterscheidung nicht jedem klar ist.

Messaging-Protokolle, die im IoT verwendet werden, sind in der Regel recht kompakt, zumindest mehr als http, und bieten wichtige Funktionen für das Messaging (Sitzungen, Flusskontrolle, Zuverlässigkeit usw.). Das Nachrichtenformat ist das der Daten in der Nachricht, die gesendet werden. Ich gehe davon aus, dass Sie danach fragen.

Das kompakteste Nachrichtenformat ist ein sorgfältig ausgewähltes handgerolltes Binärformat. Es wird häufig in Szenarien mit geringer Bandbreite verwendet, in denen Sie einige Bytes senden und genau wissen möchten, wie diese Bytes aussehen. Bei größeren Nachrichten sind die Nachteile erheblich und sollten im Allgemeinen um jeden Preis vermieden werden.

Ich habe eine detaillierte Bewertung zu vielen verschiedenen Serialisierungsoptionen für Daten vorgenommen. Ich erwartete, dass protobuf, messagepack ziemlich kompakt sein würde, was sie auch waren. Mein zweites Problem bestand jedoch darin, Bibliotheken zu finden, die auf verschiedenen Plattformen verwaltet wurden und verfügbar waren, einschließlich C auf dem Gerät.

Das Format, für das ich mich überraschenderweise entschieden habe, war gzip-komprimiertes JSON. Es ist leicht zu implementieren und zu verstehen, läuft überall und war mit den von mir verwendeten Daten ungefähr gleich oder kleiner als andere Methoden.

Beachten Sie auch, dass Sie bei TLS-Handshakes ohnehin einen Datenblock (> 6 KB) verbrauchen, wenn Sie einen sicheren Kanal wie TLS haben.

Vor ein paar Jahren hatte ich erwartet, dass ein Format wie Protokollpuffer dominiert, aber es ist nicht wirklich viel passiert. Wahrscheinlich wegen der Leichtigkeit, mit der JSON geschrieben und analysiert (und komprimiert) werden kann. Ich mag das Aussehen von Flachpuffern , aber der Vorteil liegt eher in der Analysegeschwindigkeit als in der Kompaktheit.

Da Sie sich in der Ermittlungsphase befinden, empfehlen wir Ihnen, jeweils ein bisschen Code mit den für Sie typischen Daten zu schreiben und einige Vergleiche anzustellen. Harte Daten zu Beginn helfen Ihnen, Ihre Auswahl zu bestätigen.

Simon Munro
quelle
4

Der große Vorteil eines auf Markups basierenden Formats besteht darin, dass Sie bei der Auswahl der von Ihnen übertragenen Daten flexibel bleiben. Dies ist in einem sich entwickelnden Ökosystem von enormer Bedeutung, in dem Sie davon ausgehen, dass sich ein Service über mehrere Jahre hinweg entwickelt.

Obwohl die Übertragung einer streng codierten binären Datenstruktur effizient ist, müssen Sie im Voraus mindestens entscheiden, wie die Struktur aussehen soll. Wenn Sie später feststellen, dass auch nur ein Feld erweitert werden muss, stecken Sie fest. Selbst die Aktualisierung des Protokolls ist schwierig, da Sie eine alte Codierung erst dann ersetzen können, wenn alle Endpunkte aktualisiert wurden.

Dies legt nahe, dass der optimale Ansatz darin besteht, minimalistische Pakete und eine auf Markups basierende Codierung zu mischen (wobei letztere als Fallback verwendet wird). Der Wert davon hängt von den Nutzdaten mit der höchsten Bandbreite ab. Wenn Sie bereits häufig Videoblöcke übertragen, lohnt es sich weniger, die seltenen Steuerdaten zu optimieren. Wenn Sie häufig kleine Übertragungen durchführen (z. B. eine Temperatur), ist es sinnvoll, den Übertragungsaufwand so gering wie möglich zu halten. Möglicherweise ist es jedoch auch sinnvoll, die Übertragungen nur stapelweise auszuführen.

Sean Houlihane
quelle