Forum: Mikrocontroller und Digitale Elektronik Protokoll für Internet of Things


von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Versteht jemand die Aktion von Elektor und embedded-projects?

http://www.iot-contest.com/

Ich bin gerade dabei, meine Hausautomatisierung mit NRF24L01+ Modulen zu 
machen.

Natürlich werden die NRF24L01+ in einem Mesh-Netz untereinander 
verbunden und können damit quer durch das versorgte Gebiet funken.

Natürlich werden die Daten verschlüsselt, damit auch Haustür- und 
Garagentüröffner möglich sind, siehe
Beitrag "Re: Verschlüsselung einer Funkstrecke - Hat jemand einen Tipp?"

Und natürlich wird es ein Gateway ins LAN geben, z.B. mit einer neuen 
Firmware auf Ebay-Artikel Nr. 231118158116.

Der NRF24L01+ hat eine maximale Paket-Größe von 32 Bytes. Was ich z.B. 
nicht verstehe:

> "Das Protokoll sollte daher ASCII-basiert und nicht binär sein."

Warum diese Forderung?

Bei einem HMAC mit SHA-256 habe ich 20 Byte für Nutzdaten frei. Warum 
darf man hier nicht binär sein?

Ich denke, preiswertere Lösungen werden sich ggf. durchsetzen. Kommen 
werden sie eh: Wenn nicht aus Europa, dann aus China.

> "Eine Verschlüsselung oder Sicherung soll als Erweiterung möglich
> sein (Optional kann man HTTPS verwenden)."

Aha! ???

: Bearbeitet durch User
von Dumschwätzer (Gast)


Lesenswert?

Torsten C. schrieb:
>> "Das Protokoll sollte daher ASCII-basiert und nicht binär sein."

Damit man überteuerten Scheiß an Idioten verkaufen kann.

Schön das du auf NRF24L01+ umgestiegen bist.

von Rolf Magnus (Gast)


Lesenswert?

Torsten C. schrieb:
>> "Das Protokoll sollte daher ASCII-basiert und nicht binär sein."
>
> Warum diese Forderung?

Das Wort "daher" legt nahe, daß die Begründung im Satz davor steht.

von Dennis S. (eltio)


Lesenswert?

Davor ist folgender Punkt:
"Zu Testzwecken soll man mit Teilnehmern per Standard-Browser 
kommunizieren können (Eingabe in der Adresszeile, Ausgabe im 
HTML-Fenster)."

siehe
http://www.iot-contest.com/index.php?content=infos

von Stefan F. (Gast)


Lesenswert?

Na also, da hast Du die Antwort: Damit es leichter zu testen ist.

von Tim  . (cpldcpu)


Lesenswert?

Die Antwort ist anscheinend "JSON"

von Nosnibor (Gast)


Lesenswert?

Kommt drauf an, wieviele Schichten man verwenden will und wo dann die 
Verschlüsselung hinkommt. Bei einem mesh-Netzwerk findet ja sowieso 
Routing statt, Nachrichten werden also mehrmals weitergereicht, bevor 
sie ihren Empfänger erreichen. Da stellt sich automatisch die 
(Vertrauens-)Frage, ob die Crypto end-to-end oder hop-by-hop arbeiten 
soll. Und wenn man sich für end-to-end entscheidet, kann man auch gleich 
so eine Art TCP einführen, so daß die Nachrichten zwischen den 
Endpunkten unabhängig von der Paketgröße im Netzwerk sind.
Beispiele für beides gibt es in der Internet-Technik ja schon:
 - MACsec verschlüsselt Ethernetpakete einzeln, immer auf der Strecke 
von einem Switch zum nächsten
 - HTTPS baut erstmal eine TCP-Verbindung durchs (unsichere) Netz auf 
und überträgt dann damit seine Crypto-Token und Nutzdaten, ohne auf die 
Paketgröße im Netz dazwischen Rücksicht nehmen zu müssen
 - IPsec liegt irgendwo dazwischen: es werden einzelne IP-Pakte 
verschlüsselt; das kann end-to-end, aber auch auf einer Teilstrecke 
passieren

"Das Protokoll sollte daher ASCII-basiert und nicht binär sein."
Der Grund für diese Forderung steht doch genau darüber: es soll auch per 
Browser funktionieren. Damit ist schonmal viel festgelegt.

Wenn man schon IP benutzt, hätte ich ja SNMP als angemessener für 
Sensoren, Schalter und einfache Steuerungen empfunden. Das kommt an den 
Geräten mit weniger Ressourcen aus (z.B.kein TCP nötig), weil es die 
ganzen Präsentationsaufgaben (MIB interpretieren und darstellen) auf den 
Rechner verlagert. Aber, ja, Browser können's nicht und wer das Netz nur 
durch die Brille des Browsers kennt kann damit entsprechend nichts 
anfangen.
Naja, Sicherheit als allerletzten Punkt aufzuführen, mit den Worten 
"optional" und "Erweiterung" dabei, zeigt ja deutlich, wo die 
Prioritäten nicht liegen. Damit hat sich das Konzept für Tür- Tor- und 
Fensteröffner ja schon disqualifiziert. (Wobei: der Schließzylinder ist 
in jeder Tür doch eigentlich auch nur optional, oder?)

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Nosnibor schrieb:
> Bei einem mesh-Netzwerk findet ja sowieso
> Routing statt, … Da stellt sich automatisch die … Frage, ob die
> Crypto end-to-end oder hop-by-hop arbeiten soll.

Hop-by-hop klingt nach mehr Rechenaufwand. Einen Vorteil kann ich gerade 
nicht erkennen, also end-to-end.

Wenn man Broadcast benötigt (z.B. um im ganzen Haus die gleiche Musik zu 
hören), müsste man das nochmal überdenken. Aber vielleicht kann man 
dabei auch auf Crypto verzichten.

> Und wenn man sich für end-to-end entscheidet, kann man auch gleich
> so eine Art TCP einführen, so daß die Nachrichten zwischen den
> Endpunkten unabhängig von der Paketgröße im Netzwerk sind.

20 Bytes Headerdaten für TCP wären für den NRF24L01+ m.E. zuviel, zumal 
es z.B. auf dem NRF24L01-Funkkanal auch schon ein CRC gibt. Und z.B. bei 
einem HMAC mit SHA-256 braucht man m.E. keinen zusätzlichen CRC mehr. 
Ein schlankeres  Transmission Control Protocol wäre trotzdem nicht 
schlecht. Gibt's da was, oder müsste man sich was proprietäres 
überlegen?

> "Das Protokoll sollte daher ASCII-basiert und nicht binär sein."
> Der Grund für diese Forderung steht doch genau darüber: es soll auch per
> Browser funktionieren. Damit ist schonmal viel festgelegt.

Das könnte im Gatway ↔ NRF24L01 ja eventuell binär komprimiert werden. 
Mal schauen, was beim IoT-Contest heraus kommt. Ich finde das unnötig 
aufwendig und würde das gern vermeiden, zumal man ja beim komprimieren 
gar nicht genau weiss, welche Bezeichner in den JSON-Daten verwendet 
werden.

Wenn man also ein "Protokoll für Internet of Things" erfinden will, dann 
sollte man z.B. die Bezeichner festlegen, um die JSON-Daten binär 
komprimieren zu können.

Ich habe mal den Newsletter abonniert. Mal schauen, ob das was 
sinnvolles kommt.

PS: Remote IRMP setzt ja z.B. auch schon eine LAN-Anbindung voraus. 
Ich finde das etwas übertrieben.

: Bearbeitet durch User
von Copacabana (Gast)


Lesenswert?


von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Copacabana schrieb:
> das IoT RFC

Danke. :-)

Also ein neues "Constrained Application Protocol (CoAP)"
über dem "User Datagram Protocol (UDP)".

Mal sehen, wie man das mit dem NRF24L01+ verheiratet.

PS:
> "CoAP itself does not provide protocol primitives for authentication
> or authorization"

Hmmm. Klingt nach viel Overhead.

: Bearbeitet durch User
von Nosnibor (Gast)


Lesenswert?

Torsten C. schrieb:
> Hop-by-hop klingt nach mehr Rechenaufwand. Einen Vorteil kann ich gerade
> nicht erkennen, also end-to-end.
Der Vorteil bei hop-by-hop ist, daß alle höheren Protokolle es nur noch 
mit authentischen Paketen von offiziellen Netzteilnehmern zu tun haben. 
Die "Angriffsfläche" für irgendwelche trickreich gefälschten Pakete ist 
also geringer.
Ein Beispiel aus der IP-Welt: SYN-flooding nutzt eine Eigenheit von TCP 
aus, um ohne Aufwand beim Angreifer Ressourcen beim Empfänger zu 
blockieren. SSL (end-to-end, oberhalb von TCP) hilft nicht dagegen. 
MACsec würde helfen.

Aber TCP in voller Pracht und Schönheit hat in einem Netz mit 32 Byte 
Paketgröße sowieso nichts verloren. IPv4 kann zwar theoretisch 
fragmentieren, das ist aber bei weitem nicht robust genug (und bei so 
kleinen Paketen barbarisch ineffizient). Ich meinte nur, daß man von TCP 
einige Eigenschaften oder Tricks abgucken kann, z.B. das Aufteilen 
größerer Datenmengen in einzelne Pakete, das Bestätigen empfangener 
Pakete, das Wiederholen unbestätigter Pakete und die ganzen Timer, die 
man dafür braucht. Wobei mich bei TCP immer genervt hat, daß es nicht 
Pakete sondern Bytes verwaltet, was die Nummern länger macht. Vielleicht 
hat HDLC etwas passenderes zu bieten.

Eines ist aber klar: 32 Bytes Paketgröße ist ungeeignet für IP (min. 20 
Bytes Header), und wenn man das Internet Protocol nicht nutzen kann, 
wird es wohl auch nichts mit dem Internet of Things. Ist aber auch 
Quatsch, in jedem Lichtschalter TCP/IP zu rechnen. Es sei den, man 
wollte Hardware verkaufen (http://www.elektor.com/e-lock )…

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Nosnibor schrieb:
> und wenn man das Internet Protocol nicht nutzen kann,
> wird es wohl auch nichts mit dem Internet of Things.

Zum Thema "Internet of Things": Die Botschaft hör ich wohl (seit 
Jahren), allein mir fehlt der Glaube (zumindest in den nächsten Jahren).

Daher ich schrieb:
> Ich denke, preiswertere Lösungen werden sich ggf. durchsetzen. Kommen
> werden sie eh: Wenn nicht aus Europa, dann aus China.

Mir wär's nur ganz lieb, wenn man solche "preiswerteren Lösungen" 
trotzdem irgendwie kompatibel halten könnte, über ein Gateway.

> Bis 2022 wird der durchschnittliche Haushalt mit zwei jugendlichen
> Kindern rund 50 Geräte besitzen, die mit dem Internet verbunden sind.
Aus: http://www.pressetext.com/news/20130424002

Wenn pro Funkknoten ein NRF24L01+ verwendet wird statt WLAN und man bei 
WLAN mit etwa 8€ Mehrpreis pro Knoten rechnet, dann sind das pro 
Haushalt 400€ mehr. Das bezahlt doch keiner!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.