Streamy zařízení ioT Hubu (Preview)

Datové proudy zařízení Azure IoT Hub usnadňují vytváření zabezpečených obousměrných tunelů TCP pro různé scénáře komunikace typu cloud-zařízení. Stream zařízení je mediánem koncového bodu streamování ioT Hubu *, který funguje jako proxy server mezi vaším zařízením a koncovými body služby. Toto nastavení, které je znázorněno v diagramu, je zvlášť užitečné, když jsou zařízení za bránou firewall sítě nebo se nacházejí uvnitř privátní sítě. Datové proudy zařízení IoT Hubu tak pomáhají řešit potřebu zákazníků, aby se zařízení IoT dostala způsobem, který je přívětivý pro bránu firewall, a bez nutnosti široce otevírat příchozí nebo odchozí síťové porty brány firewall.

Přehled datových proudů zařízení služby IoT Hub

Pomocí streamů zařízení ioT Hubu zůstanou zařízení zabezpečená a budou muset otevírat odchozí připojení TCP ke koncovému bodu streamování ioT Hubu pouze přes port 443. Po vytvoření datového proudu mají aplikace na straně služby a zařízení každý programový přístup k objektu klienta WebSocket pro odesílání a přijímání nezpracovaných bajtů do sebe. Záruky spolehlivosti a řazení poskytované tímto tunelem jsou v souladu s protokolem TCP.

Zaměstnanecké výhody

Streamy zařízení ioT Hubu poskytují následující výhody:

  • Zabezpečené připojení vhodné pro bránu firewall: Zařízení IoT se dají dostat z koncových bodů služby bez otevření portu příchozí brány firewall v zařízení nebo hraniční síti (přes port 443 je potřeba jenom odchozí připojení ke službě IoT Hub).

  • Ověřování: Strany tunelu zařízení i služby musí být ověřeny ve službě IoT Hub pomocí odpovídajících přihlašovacích údajů.

  • Šifrování: Ve výchozím nastavení streamy zařízení IoT Hubu používají připojení s povoleným protokolem TLS. Tento faktor zajišťuje, že se provoz vždy šifruje bez ohledu na to, jestli aplikace používá šifrování, nebo ne.

  • Jednoduchost připojení: V mnoha případech použití datových proudů zařízení eliminuje potřebu komplexního nastavení virtuálních privátních sítí, aby bylo možné připojení k zařízením IoT.

  • Kompatibilita se zásobníkem PROTOKOLU TCP/IP: Streamy zařízení ioT Hubu můžou obsahovat provoz aplikací TCP/IP. Tento přístup znamená, že tuto funkci může používat široká škála proprietárních protokolů a protokolů založených na standardech.

  • Snadné použití v nastaveních privátní sítě: Služba může komunikovat se zařízením odkazováním na JEHO ID zařízení, nikoli IP adresou zařízení. Tato skutečnost je užitečná v situacích, kdy se zařízení nachází v privátní síti a má privátní IP adresu nebo je její IP adresa přiřazena dynamicky a není pro stranu služby neznámá.

Pracovní postupy datových proudů zařízení

Datový proud zařízení se zahájí, když služba požádá o připojení k zařízení zadáním ID zařízení. Tento pracovní postup se týká zejména modelu komunikace klienta/serveru, včetně SSH a RDP, kde se uživatel hodlá vzdáleně připojit k serveru SSH nebo RDP spuštěného na zařízení pomocí klientského programu SSH nebo RDP.

Proces vytváření datových proudů zařízení zahrnuje vyjednávání mezi hlavními koncovými body zařízení, služby, centra IoT Hub. Zatímco hlavní koncový bod služby IoT Hub orchestruje vytvoření datového proudu zařízení, koncový bod streamování zpracovává provoz, který proudí mezi službou a zařízením.

Tok vytvoření datového proudu zařízení

Programové vytvoření datového proudu zařízení pomocí sady SDK zahrnuje následující kroky, které jsou také znázorněny na obrázku:

  1. Aplikace zařízení předem zaregistruje zpětné volání, aby byla upozorněna na to, kdy se do zařízení inicializoval nový datový proud zařízení. Tento krok se obvykle provádí, když se zařízení spustí a připojí se ke službě IoT Hub.

  2. Program na straně služby inicializuje datový proud zařízení v případě potřeby zadáním ID zařízení (nikoli IP adresy).

  3. IoT Hub upozorní program na straně zařízení vyvoláním zpětného volání zaregistrovaného v kroku 1. Zařízení může žádost o zahájení streamu přijmout nebo odmítnout. Tato logika může být specifická pro váš scénář aplikace. Pokud zařízení žádost o stream odmítne, IoT Hub odpovídajícím způsobem informuje službu; v opačném případě se provede následující kroky.

  4. Zařízení vytvoří zabezpečené odchozí připojení TCP ke koncovému bodu streamování přes port 443 a upgraduje připojení na webSocket. Adresa URL koncového bodu streamování a přihlašovací údaje, které se mají použít k ověření, poskytuje ioT Hub zařízení jako součást požadavku odeslaného v kroku 3.

  5. Služba je upozorněna na výsledek přijetí datového proudu a pokračuje vytvořením vlastního klienta WebSocket do koncového bodu streamování. Podobně přijímá adresu URL koncového bodu streamování a ověřovací informace ze služby IoT Hub.

Ve výše uvedeném procesu handshake:

  • Proces handshake se musí dokončit do 60 sekund (krok 2 až 5), jinak by handshake selhal s vypršením časového limitu a služba bude odpovídajícím způsobem upozorněna.

  • Po dokončení toku vytvoření datového proudu bude koncový bod streamování fungovat jako proxy server a bude přenášet provoz mezi službou a zařízením přes příslušné webSockety.

  • Zařízení i služba potřebují odchozí připojení k hlavnímu koncovému bodu ioT Hubu i koncovému bodu streamování přes port 443. Adresa URL těchto koncových bodů je k dispozici na kartě Přehled na portálu služby IoT Hub.

  • Záruky spolehlivosti a řazení zavedeného datového proudu jsou v souladu s protokolem TCP.

  • Všechna připojení ke službě IoT Hub a koncovému bodu streamování používají protokol TLS a jsou šifrovaná.

Tok ukončení

Vytvořený datový proud se ukončí, když dojde k odpojení některého z připojení TCP k bráně (službou nebo zařízením). Tato akce se může provést dobrovolně ukončením protokolu WebSocket na zařízení nebo v programech služeb nebo neúmyslně, pokud dojde k vypršení časového limitu připojení k síti nebo selhání procesu. Po ukončení připojení zařízení nebo služby ke koncovému bodu streamování se druhé připojení TCP také (vynuceně) ukončí a služba a zařízení v případě potřeby zodpovídají za opětovné vytvoření datového proudu.

Požadavky na připojení

Zařízení i strany služby streamu zařízení musí být schopné navazovat připojení s povoleným protokolem TLS ke službě IoT Hub a koncovému bodu streamování. Tato situace vyžaduje odchozí připojení přes port 443 k těmto koncovým bodům. Název hostitele přidružený k těmto koncovým bodům najdete na kartě Přehled služby IoT Hub, jak je znázorněno na obrázku:

Koncové body datového proudu zařízení

Informace o koncových bodech je možné načíst také pomocí Azure CLI v části vlastností centra, konkrétně property.hostname pomocí klíčů a property.deviceStreams klíčů centra.

az iot hub devicestream show --name <YourIoTHubName>

Výstupem je objekt JSON všech koncových bodů, ke kterým se může zařízení a služba vašeho centra potřebovat připojit, aby bylo možné vytvořit datový proud zařízení.

{
  "streamingEndpoints": [
    "https://<YourIoTHubName>.<region-stamp>.streams.azure-devices.net"
  ]
}

Poznámka:

Ujistěte se, že jste nainstalovali Azure CLI verze 2.0.57 nebo novější. Nejnovější verzi si můžete stáhnout ze stránky Instalace Azure CLI .

Povolení odchozího připojení ke koncovým bodům streamování zařízení

Jak je uvedeno na začátku tohoto článku, vaše zařízení během procesu inicializace datových proudů zařízení vytvoří odchozí připojení ke koncovému bodu streamování ioT Hubu. Brány firewall v zařízení nebo jeho síti musí umožňovat odchozí připojení k bráně streamování přes port 443 (upozorňujeme, že komunikace probíhá přes připojení WebSocket, které je šifrované pomocí protokolu TLS).

Název hostitele koncového bodu streamování zařízení najdete na portálu Azure IoT Hub na kartě Přehled. Koncové body datového proudu zařízení

Případně můžete tyto informace najít pomocí Azure CLI:

az iot hub devicestream show --name <YourIoTHubName>

Poznámka:

Ujistěte se, že jste nainstalovali Azure CLI verze 2.0.57 nebo novější. Nejnovější verzi si můžete stáhnout ze stránky Instalace Azure CLI .

Řešení potíží prostřednictvím protokolů prostředků streamů zařízení

Azure Monitor můžete nastavit tak, aby shromažďovala protokoly prostředků pro datové proudy zařízení generované vaší službou IoT Hub. Tento přístup může být užitečný ve scénářích řešení potíží.

Pomocí následujícího postupu vytvořte nastavení diagnostiky pro odesílání protokolů streamů zařízení pro ioT Hub do protokolů služby Azure Monitor:

  1. Na webu Azure Portal přejděte do centra IoT. V levém podokně v části Monitorování vyberte Nastavení diagnostiky. Pak vyberte Přidat nastavení diagnostiky.

  2. Zadejte název nastavení diagnostiky a ze seznamu protokolů vyberte DeviceStreams . Pak vyberte Odeslat do Log Analytics. Provedete vás výběrem existujícího pracovního prostoru služby Log Analytics nebo vytvořením nového pracovního prostoru.

    Povolení protokolů streamů zařízení

  3. Po vytvoření nastavení diagnostiky pro odesílání protokolů streamů zařízení do pracovního prostoru služby Log Analytics můžete k protokolům přistupovat tak , že v levém podokně centra IoT na webu Azure Portal vyberete Protokoly v části Monitorování . Protokoly datových proudů zařízení se zobrazují v AzureDiagnostics tabulce a mají Category=DeviceStreams. Může trvat několik minut, než se protokoly zobrazí v tabulce.

    Jak je znázorněno tady, identita cílového zařízení a výsledek operace jsou k dispozici také v protokolech.

    Přístup k protokolům streamu zařízení

Další informace o používání služby Azure Monitor se službou IoT Hub najdete v tématu Monitorování IoT Hubu. Informace o všech protokolech prostředků, metrikách a tabulkách dostupných pro IoT Hub najdete v tématu Monitorování referenčních informací k datům služby Azure IoT Hub.

Regionální dostupnost

Ve verzi Public Preview jsou streamy zařízení IoT Hubu dostupné v oblastech USA – střed, USA – východ, USA – východ, Severní Evropa a Jihovýchodní Asie. Ujistěte se, že centrum vytvoříte v jedné z těchto oblastí.

Dostupnost sady SDK

Dvě strany každého datového proudu (na straně zařízení a služby) používají k vytvoření tunelu sadu SDK služby IoT Hub. Ve verzi Public Preview si zákazníci můžou vybrat z následujících jazyků sady SDK:

  • Sada SDK jazyka C a C# podporuje datové proudy zařízení na straně zařízení.

  • Sada NodeJS a C# SDK podporují streamy zařízení na straně služby.

Další kroky