Leistung von MQTT gegenüber TLS im Vergleich zu MQTT

10

Während MQTT sehr vielseitig ist, ist es auch nicht an sich selbst gesichert. Dies ist beabsichtigt.

Laut Stanford-Clark wurde die Sicherheit anfangs bewusst aus dem Protokoll herausgenommen, da er und Nipper wussten, dass Sicherheitsmechanismen um MQTT gewickelt werden können, um die Sicherheit zu erhöhen. Zu der Zeit sagte Stanford-Clark auch, dass Informationen, die über MQTT gesendet wurden, wie Windgeschwindigkeitsdaten von einer Wetterstation, nicht besonders sicherungsbedürftig waren. - Quelle

Einer dieser Sicherheitsmechanismen, die um MQTT gewickelt werden können, ist TLS. Die meisten Broker unterstützen dies heutzutage. Natürlich verursacht jede Verpackungsmaßnahme Overhead. Dieser Aufwand kann vernachlässigbar sein (vgl. HiveMQ-Blog ).

Derzeit suche ich nach Informationen (hoffentlich eine maßgebliche Quelle) über den Leistungsverlust von MQTT gegenüber TLS im Vergleich zu einfachem MQTT, um die Realisierbarkeit von MQTT für mein Projekt zu bewerten. Besonders wenn die Technologie auf eine große Anzahl von Abonnenten skaliert.

Gibt es neben dem Prototyping eine Möglichkeit, gültige Daten zur Leistung von MQTT über TLS zu erhalten?

Helmar
quelle
1
Überprüfen Sie diese Antwort auf SO: stackoverflow.com/questions/1615882/…
Fraser

Antworten:

10

Ich würde nicht erwarten, dass der Unterschied zu groß ist, sobald die Verbindung hergestellt ist .

Eine Aufschlüsselung des Overheads, den TLS im Allgemeinen erzeugt , finden Sie hier . Die wichtigen Bits sind:

  • Der Gesamtaufwand für die Einrichtung einer neuen TLS-Sitzung beträgt durchschnittlich 6,5 KB
  • Der Gesamtaufwand für die Wiederaufnahme einer vorhandenen TLS-Sitzung beträgt durchschnittlich etwa 330 Byte
  • Der Gesamtaufwand für die verschlüsselten Daten beträgt ca. 40 Byte (20 + 15 + 5).
  • Es ist einfach, die obigen Berechnungen zu ändern, um die Besonderheiten einer Umgebung genauer widerzuspiegeln. Daher sollte dies als Grundlage für den TLS-Overhead und nicht als maßgebliche Antwort auf die gestellte Frage betrachtet werden.

Es lohnt sich zu lesen, wie diese Zahlen berechnet wurden. Sie sollten besser verstehen, wie TLS mit all dem funktioniert. Wie in anderen Antworten erwähnt, ist die Funkübertragung wahrscheinlich einer der größten Energieverbrauchswerte, was im Internet der Dinge häufig eine Einschränkung darstellt. Sobald die Sitzung eingerichtet ist, ist der Overhead nicht allzu hoch, insbesondere wenn es sich um Nachrichten handelt nicht trivial kurz.

Wie von HiveMQ im Artikel erwähnt Wie wirkt sich TLS auf die MQTT-Leistung aus? ::

Die gute Nachricht ist, dass ein MQTT-Client nur einmal pro Sitzung eine Verbindung herstellen muss - im Gegensatz zu Protokollen wie HTTP, bei denen bei jeder Anforderung eine Verbindung wiederhergestellt werden muss (wenn kein Keep-Alive verwendet wird oder andere Techniken wie Long Umfragen sind vorhanden). Sobald die Verbindung zum Broker hergestellt ist, kann der Client Nachrichten ohne zusätzlichen Handshake-Aufwand senden und empfangen. Bei Verwendung von TLS müssen zusätzliche Puffer zugewiesen werden, sodass der RAM-Verbrauch pro MQTT-Verbindung ebenfalls geringfügig höher ist.

Sie bieten auch ein Diagramm der CPU-Auslastung auf dem Broker, wenn 50.000 Clients eine Verbindung herstellen:

Bild der CPU-Auslastung

Bildquelle: HiveMQ (siehe oben verlinkten Artikel)

Beachten Sie, dass dies mit ziemlicher Sicherheit kein typisches Verwendungsmuster ist, die Daten jedoch interessant sind. Wie Sie sehen können, gibt es einen großen Overhead, während die Handshakes ausgeführt werden, aber danach ist der CPU-Overhead nahezu identisch. Ähnliches würde ich vom Kunden erwarten.

Der allgemeine Ratschlag hier ist jedoch richtig: Ein erfundener Benchmark liefert Ihnen nicht die Informationen, die Sie wirklich benötigen. Um zu wissen, wie sich TLS auf Ihren Anwendungsfall auswirkt, müssen Sie es in ... Ihrem Anwendungsfall testen !

Aurora0001
quelle
7

Nicht wirklich, Sie müssen Ihre spezifische Situation testen und bewerten. Folgendes wird sich wahrscheinlich direkt auf die Leistung auswirken.

  • Welche Client / Broker-Hardware verwenden Sie? Hat sie eine Hardwarebeschleunigung für Krypto?
  • Wie groß ist die Nutzlast, die Sie senden?
  • Was ist das Verbindungs- / Wiederverbindungsprofil für Ihre Anwendung?
hardillb
quelle
4

Es ist schwierig, nützliche Leistungsschätzungen vorzunehmen. Es ist wahrscheinlich, dass Ihre Anwendung für mindestens einen Teil des Datenverkehrs eine Verschlüsselung erfordert. Daher ist es unwahrscheinlich, dass Implementierungskosten anfallen, um die Sicherheit für diese Teilmenge des Datenverkehrs verfügbar zu machen.

Bei einer Implementierung mit eingeschränkter Energie ist die Übertragung wahrscheinlich drahtlos. Selbst bei einem geeigneten Funkkanal überwiegen die Energiekosten für das Einrichten des Kanals und das Aushandeln der Verbindung wahrscheinlich die Verarbeitungskosten für das Verschlüsseln einer einfachen Nachricht - insbesondere, wenn einige Nachrichten verschlüsselt werden müssen.

Wenn Ihre Nachrichten nicht trivial sind, kann es gerechtfertigt sein, am Endpunkt mehr Verarbeitung durchzuführen , um den Netzwerkverkehr zu reduzieren.

In einem Szenario, in dem der Kanal stark ausgelastet ist, ist die Leistung möglicherweise nicht so gut, wie Sie es von der Analyse einer trivialeren Implementierung Ihres gesamten Systems erwarten.

Selbst wenn Sie eine Referenz für die gesuchten Daten finden, ist es unwahrscheinlich, dass die Frage ausreichend beantwortet wird, um Entwurfsentscheidungen zu treffen.

Sean Houlihane
quelle