Přeskočit na hlavní obsah

Protokol zařízení (FLAP)

Zařízení HARDWARIO s mobilním modemem (například CHESTER a GLIDER) komunikují s HARDWARIO Cloud přes UDP protokolem FLAP. FLAP je úsporný protokol typu požadavek a odpověď navržený pro mobilní IoT: má malou režii, na jednu výměnu potřebuje jen několik paketů a funguje s úspornými režimy LTE-M a NB-IoT (PSM, RAI).

Název vychází ze čtyř příznaků v hlavičce paketu: First, Last, Ack a Poll.

informace

Tato sekce je technická reference přenosového protokolu pro vývojáře firmwaru a integrátory. Pro běžné používání HARDWARIO Cloud se zařízením HARDWARIO ho znát nepotřebujete, protože protokol implementuje SDK zařízení.

Principy návrhu​

  • Zařízení vždy začíná. Cloud pouze odpovídá a nikdy sám paket nepošle. Díky tomu protokol funguje za NAT operátora i s PSM, kdy zařízení mezi vysíláními není dosažitelné.
  • Jeden paket, jedna odpověď. Na každý paket ze zařízení Cloud odpoví nejvýše jedním paketem.
  • Fragmentace. Zpráva o velikosti až 16 KiB se rozdělí na fragmenty, které se vejdou do 508 bajtů UDP payloadu. To je největší payload, který zaručeně projde internetem bez IP fragmentace (RFC 791, RFC 1122).
  • Potvrzování. Každý fragment se potvrzuje a sekvenční číslo odhalí ztracené i zdvojené pakety.
  • Downlink přes dotazování. Cloud zařízení oznámí, že na něj čeká downlink, a zařízení si ho vyzvedne paketem poll.

Vrstvy protokolu​

Samotný FLAP je jen paket: dvoubajtová hlavička s příznaky a sekvenčním číslem, za ní jeden fragment zprávy. Na cestě mezi zařízením a Cloudem je každý paket FLAP zabalený do jedné ze dvou kryptografických obálek:

  • Obálka MAC (flap-hash): před paketem FLAP je tag autentizačního kódu zprávy (MAC) a sériové číslo zařízení. Obálka se posílá buď v surové binární podobě (raw), nebo jako text base64. Příjemce base64 nejprve dekóduje zpět na binární data a obálku pak zpracuje stejně.
  • Obálka DTLS (flap-dtls): paket FLAP putuje uvnitř relace DTLS 1.2. Tag MAC ani sériové číslo v ní nejsou, protože se zařízení ověří a identifikuje už při navázání relace DTLS.
VrstvaObsahPopsáno v
ZprávaJedna aplikační jednotka, například odeslání dat: bajt typu a hodnotaTypy zpráv
Paket FLAPDvoubajtová hlavička s příznaky a sekvenčním číslem, za ní jeden fragment zprávyPakety a přenosy
ObálkaObálka MAC nebo obálka DTLS, chrání paket FLAP na cestěObálka MAC, Obálka DTLS
TransportJeden datagram UDP nese jeden paket FLAP v obálceTato stránka

Obálky a porty​

ObálkaNastavení zařízeníPort UDPAutentizace a autorizaceIntegritaŠifrováníPoužívá
MAC (raw)flap-hash5002Claim token64bitový MAC s klíčem claim tokenNeZařízení s nRF9160 nebo nRF9151
MAC (base64)CHESTER LTE v25003Claim token64bitový MAC s klíčem claim tokenNeCHESTER (nRF9160)
DTLSflap-dtls5005Předsdílený klíč (PSK)DTLS 1.2, AES-128-CCM-8Ano, AES-128-CCM-8Zařízení s nRF9151

Tajemství obálky, tedy claim token nebo PSK, ověřuje zařízení a opravňuje ho vystupovat jako zařízení registrované v HARDWARIO Cloud. V obálce MAC je claim token zároveň klíčem MAC, takže stejné tajemství chrání i integritu každého paketu.

Pakety FLAP, zprávy i stav zařízení v Cloudu jsou stejné bez ohledu na obálku. Adresa serveru závisí na SIM kartě a APN, viz Nastavení SIM karty.

Dostupnost DTLS

Obálka DTLS je zatím dostupná jen na zařízeních postavených na nRF9151 (například WIMBER). Zařízení CHESTER používá obálku MAC jako text base64. Jde o omezení současného SDK pro CHESTER, ne protokolu, a podpora DTLS pro CHESTER je plánovaná.

Terminologie​

PojemVýznam
UplinkSměr ze zařízení do Cloudu
DownlinkSměr z Cloudu do zařízení
Paket FLAPDvoubajtová hlavička FLAP a jeden fragment zprávy
ObálkaKryptografické zabalení paketu FLAP: obálka MAC nebo obálka DTLS
ZprávaJedna aplikační jednotka (relace, data, konfigurace, příkaz shellu, část firmwaru)
FragmentČást zprávy přenášená v jednom paketu FLAP
PřenosVýměna všech fragmentů jedné zprávy včetně potvrzení
Sekvenční číslo12bitový čítač v každém paketu FLAP, který určuje pořadí výměny
Tag MACOsmibajtový autentizační kód zprávy na začátku obálky MAC
Claim tokenŠestnáctibajtové tajemství jedinečné pro každé zařízení, zapsané ve výrobě. Slouží k přidání zařízení do Cloudu a jako klíč MAC