Jakiego typu komunikatów można używać w przypadku protokołów IoT zorientowanych na sieć komórkową?

14

Zwróciłem na to uwagę niedawno, gdy znalazłem niesamowite wideo na Youtube:

Micheal E. Anderson: Porównanie technik przesyłania wiadomości dla Internetu Rzeczy, OpenIoTSummit, Linux Foundation .

Slajdy z jego przemówienia są dostępne tutaj

Na slajdzie 26 i 41 minutach filmu omawia, w jaki sposób (pozwólcie, że sparafrazuję):

Operatorzy komórkowi wolą, aby ich konsumenci IoT używali wiadomości typu HTML , XML lub JSON, ponieważ zużywają więcej danych. Więcej danych oznacza, że ​​mogą obciążyć konsumentów większą kwotą za usługę.

Rozumiem, że jest wiele protokołów własności. SigFox , Wireless HART lub Z Wave mają niższe prędkości transmisji danych, a przesyłanie nieporęcznych danych przez takich nośników może być kosztowną sprawą.

Pytanie

  • Czy istnieją inne lekkie formaty wiadomości używane w protokołach zastrzeżonych, co czyni je ekonomicznymi rozwiązaniami dla obecnych i przyszłych konsumentów Internetu Rzeczy? (Strzał w ciemność: gdzieś leży jakiś format zwany lekkim XML, HTML lub JSON ?)

  • Może coś takiego jak CBOR jest lub może jest używane?

Shan-Desai
źródło
1
Podejrzewam, że przepustowość danych jest prawdopodobnie kosztem drugiego rzędu i nie jest faktycznie opłacana przez twórcę aplikacji. Tak więc, chociaż warto się martwić, ale prawdopodobnie nastąpi rozwój w tej dziedzinie.
Sean Houlihane,
1
Czy interesuje Cię jakaś sytuacja? Jeśli wysyłasz przewidywalny typ danych (np. Tylko liczbę całkowitą lub coś takiego), możesz całkowicie zrezygnować z języka znaczników, ale ogranicza to ilość informacji, które możesz wyrazić. Jeśli interesuje Cię tylko sytuacja, w której normalnie używasz JSON / HTML / XML, to też jest w porządku.
Aurora0001
1
@ Aurora0001 Tak naprawdę nie mam scenariusza, ale warto o tym pomyśleć. Myślę, że najlepsza forma formatu danych to kompatybilność z sieciami internetowymi (zdominowanymi przez IP), które mogą być podłączone do języków znaczników sieci komórkowych. Ale ponieważ dziedzina Internetu Rzeczy zasadniczo się rozwija, warto spróbować podać różne formaty.
Shan-Desai,
1
Przepraszam, że trochę pomieszałem obraz: Wiadomości w dowolnej sieci mają kilka warstw, przy czym warstwa danych jest tylko jedna na górze. Wszystkie są w trakcie optymalizacji, a przynajmniej mogą być. Na przykład 5G poprawia wykorzystywaną sygnalizację, a tym samym mieści się więcej danych. Nawet 5G zwiększa efektywność widmową sygnałów w powietrzu, więc wydajność jest tagowana z wielu stron.
mico

Odpowiedzi:

6

Czy pytasz o protokół lub format wiadomości ? Często niewłaściwie używamy terminu protokół, gdy mamy na myśli format danych. Robię to sam, często dlatego, że rozróżnienie nie jest jasne dla wszystkich.

Protokoły przesyłania wiadomości używane w IoT są zazwyczaj dość zwarte, przynajmniej bardziej niż http i oferują istotne funkcje, które są ważne w przesyłaniu wiadomości (sesje, kontrola przepływu, niezawodność itp.). Format wiadomości to dane w wiadomości, które zostaną wysłane. Zakładam, że o to pytasz.

Najbardziej kompaktowy format wiadomości to starannie przemyślany, ręcznie zwijany format binarny. Jest często używany w scenariuszach o niskiej przepustowości, gdy chcesz wysłać kilka bajtów i dokładnie wiedzieć, jak te bajty wyglądają. W przypadku większych komunikatów wady są znaczące i ogólnie należy za wszelką cenę unikać.

Przeszedłem szczegółową ocenę wielu różnych opcji serializacji danych. Spodziewałem się, że protobuf, pakiet wiadomości będzie dość zwarty, czym były. Jednak moim drugim problemem było znalezienie bibliotek, które były utrzymywane i dostępne na wielu różnych platformach, w tym C na urządzeniu.

Niespodziewanie formatem, który wybrałem, był skompresowany gzip JSON. Jest łatwy do wdrożenia i zrozumienia, działa wszędzie, a przy danych, których używałem, był mniej więcej taki sam lub mniejszy niż inne metody.

Uważaj również, że jeśli masz bezpieczny kanał, taki jak TLS, i tak zużyjesz porcję danych (> 6 KB) podczas uzgadniania TLS.

Kilka lat temu spodziewałem się, że dominują takie formaty jak bufory protokołów, ale tak naprawdę niewiele się wydarzyło. Prawdopodobnie z powodu łatwości, z jaką json może być zapisany i parsowany (i skompresowany). Podoba mi się wygląd Flatbufferów , ale zaletą jest bardziej szybkość przetwarzania niż kompaktowość.

Ponieważ jesteś na etapie dochodzenia, sugeruję, aby napisać trochę kodu na każdym z nich, używając danych typowych dla twojej sytuacji, i dokonać porównań. Posiadanie twardych danych na początku pomaga potwierdzić twoje wybory.

Simon Munro
źródło
4

Dużą zaletą formatu opartego na znacznikach jest to, że zachowujesz elastyczność w wyborze przesyłanych danych. Jest to niezwykle ważne w ewoluującym ekosystemie, w którym spodziewamy się usług ewoluujących w ciągu kilku lat rozwoju.

Chociaż ściśle zakodowana struktura danych binarnych będzie wydajna do przesyłania, musisz przynajmniej z góry zdecydować, jak będzie wyglądać struktura. Kiedy później zdasz sobie sprawę, że nawet jedno pole wymaga ekspansji, utkniesz. Nawet wdrożenie aktualizacji protokołu jest trudne, ponieważ nie można zdezaktualizować starego kodowania, dopóki każdy punkt końcowy nie zostanie zaktualizowany.

Sugeruje to, że optymalnym podejściem jest mieszanie minimalistycznych pakietów i kodowania opartego na znacznikach (używanie tego drugiego jako rezerwowego). Wartość tego zależy od największych obciążeń przepustowości. Jeśli już przesyłasz często fragmenty wideo, optymalizacja rzadkich danych kontrolnych jest mniej opłacalna. Jeśli masz częste małe transfery (być może temperatura), warto zminimalizować narzut w transmisji - ale może po prostu grupowanie transferów jest równie dobre.

Sean Houlihane
źródło