IoT Hub-apparaatstreams (preview)

Met Azure IoT Hub-apparaatstreams kunt u veilige bidirectionele TCP-tunnels maken voor verschillende cloud-naar-apparaat-communicatiescenario's. Een apparaatstream wordt gemediateerd door een IoT Hub-streaming-eindpunt dat fungeert als proxy tussen uw apparaat- en service-eindpunten. Deze installatie, die in het onderstaande diagram wordt weergegeven, is vooral handig wanneer apparaten zich achter een netwerkfirewall bevinden of zich in een particulier netwerk bevinden. Als zodanig helpen IoT Hub-apparaatstreams om tegemoet te komen aan de noodzaak van klanten om IoT-apparaten op een firewallvriendelijke manier te bereiken en zonder de noodzaak om binnenkomende of uitgaande netwerkfirewallpoorten breed te openen.

Met ioT Hub-apparaatstreams blijven apparaten veilig en hoeven alleen uitgaande TCP-verbindingen met het streaming-eindpunt van IoT Hub via poort 443 te worden geopend. Zodra een stream tot stand is gebracht, hebben de toepassingen aan de service- en apparaatzijde elk programmatische toegang tot een WebSocket-clientobject om onbewerkte bytes naar elkaar te verzenden en te ontvangen. De betrouwbaarheids- en bestelgaranties die door deze tunnel worden geboden, zijn gelijk aan TCP.

Vergoedingen

IoT Hub-apparaatstreams bieden de volgende voordelen:

  • Firewallvriendelijke beveiligde connectiviteit: IoT-apparaten kunnen worden bereikt vanuit service-eindpunten zonder binnenkomende firewallpoorten te openen op het apparaat of de netwerkperimeter (alleen uitgaande connectiviteit met IoT Hub is nodig via poort 443).

  • Verificatie: zowel apparaat- als servicezijden van de tunnel moeten worden geverifieerd met IoT Hub met behulp van hun bijbehorende referenties.

  • Versleuteling: IoT Hub-apparaatstreams maken standaard gebruik van TLS-verbindingen. Dit zorgt ervoor dat het verkeer altijd wordt versleuteld, ongeacht of de toepassing versleuteling gebruikt of niet.

  • Eenvoud van connectiviteit: In veel gevallen elimineert het gebruik van apparaatstreams de noodzaak van complexe installatie van virtuele particuliere netwerken om connectiviteit met IoT-apparaten mogelijk te maken.

  • Compatibiliteit met TCP/IP-stack: IoT Hub-apparaatstreams kunnen tcp/IP-toepassingsverkeer verwerken. Dit betekent dat een breed scala aan eigen en op standaarden gebaseerde protocollen deze functie kan gebruiken.

  • Gebruiksgemak in privénetwerkinstellingen: Service kan communiceren met een apparaat door te verwijzen naar de apparaat-id in plaats van het IP-adres van het apparaat. Dit is handig in situaties waarin een apparaat zich in een particulier netwerk bevindt en een privé-IP-adres heeft, of het IP-adres dynamisch wordt toegewezen en onbekend is aan de servicezijde.

Werkstromen voor apparaatstreams

Een apparaatstream wordt gestart wanneer de service vraagt om verbinding te maken met een apparaat door de apparaat-id op te geven. Deze werkstroom past met name in een client-/servercommunicatiemodel, waaronder SSH en RDP, waarbij een gebruiker op afstand verbinding wil maken met de SSH- of RDP-server die op het apparaat wordt uitgevoerd met behulp van een SSH- of RDP-clientprogramma.

Het proces voor het maken van de apparaatstream omvat een onderhandeling tussen het apparaat, de service, de belangrijkste en streaming-eindpunten van de IoT-hub. Hoewel het hoofdeindpunt van IoT Hub het maken van een apparaatstroom organiseert, verwerkt het streaming-eindpunt het verkeer dat tussen de service en het apparaat stroomt.

Stroom voor het maken van apparaatstromen

Het programmatisch maken van een apparaatstream met behulp van de SDK omvat de volgende stappen, die ook worden weergegeven in de onderstaande afbeelding:

  1. De apparaattoepassing registreert vooraf een callback om op de hoogte te worden gesteld wanneer een nieuwe apparaatstream naar het apparaat wordt gestart. Deze stap vindt doorgaans plaats wanneer het apparaat wordt opgestart en verbinding maakt met IoT Hub.

  2. Het programma aan de servicezijde initieert een apparaatstream wanneer dat nodig is door de apparaat-id op te geven (niet het IP-adres).

  3. IoT Hub meldt het programma aan de apparaatzijde door de callback aan te roepen die is geregistreerd in stap 1. Het apparaat kan de aanvraag voor het starten van de stream accepteren of afwijzen. Deze logica kan specifiek zijn voor uw toepassingsscenario. Als de streamaanvraag door het apparaat wordt geweigerd, informeert IoT Hub de service dienovereenkomstig; anders volgen de onderstaande stappen.

  4. Het apparaat maakt een beveiligde uitgaande TCP-verbinding met het streaming-eindpunt via poort 443 en werkt de verbinding met een WebSocket bij. De URL van het streaming-eindpunt en de referenties die moeten worden gebruikt om te verifiëren, worden beide door IoT Hub aan het apparaat verstrekt als onderdeel van de aanvraag die in stap 3 is verzonden.

  5. De service wordt op de hoogte gesteld van het resultaat van het accepteren van de stream en gaat verder met het maken van een eigen WebSocket-client naar het streaming-eindpunt. Op dezelfde manier ontvangt het de URL en verificatiegegevens van het streaming-eindpunt van IoT Hub.

In het bovenstaande handshakeproces:

  • Het handshake-proces moet binnen 60 seconden worden voltooid (stap 2 tot en met 5), anders mislukt de handshake met een time-out en wordt de service dienovereenkomstig op de hoogte gesteld.

  • Nadat de bovenstaande stroom is gemaakt, fungeert het streaming-eindpunt als proxy en wordt verkeer tussen de service en het apparaat overgedragen via hun respectieve WebSockets.

  • Apparaten en services hebben zowel uitgaande connectiviteit met het hoofdeindpunt van IoT Hub als het streaming-eindpunt via poort 443 nodig. De URL van deze eindpunten is beschikbaar op het tabblad Overzicht in de Portal van IoT Hub.

  • De betrouwbaarheid en volgorde van garanties voor een gevestigde stream zijn gelijk aan TCP.

  • Alle verbindingen met IoT Hub en streaming-eindpunten maken gebruik van TLS en worden versleuteld.

Beëindigingsstroom

Een tot stand gebrachte stream wordt beëindigd wanneer een van de TCP-verbindingen met de gateway wordt verbroken (door de service of het apparaat). Dit kan vrijwillig plaatsvinden door de WebSocket te sluiten op het apparaat of de serviceprogramma's, of onvrijwillig in het geval van een time-out of procesfout in de netwerkverbinding. Na beëindiging van de verbinding van het apparaat of de service met het streaming-eindpunt, wordt de andere TCP-verbinding ook (geforceerd) beëindigd en zijn de service en het apparaat verantwoordelijk voor het opnieuw maken van de stream, indien nodig.

vereisten voor Verbinding maken iviteit

Zowel het apparaat als de servicezijde van een apparaatstream moeten in staat zijn om TLS-verbindingen tot stand te brengen met IoT Hub en het bijbehorende streaming-eindpunt. Hiervoor is uitgaande connectiviteit via poort 443 naar deze eindpunten vereist. De hostnaam die aan deze eindpunten is gekoppeld, vindt u op het tabblad Overzicht van IoT Hub, zoals wordt weergegeven in de onderstaande afbeelding:

U kunt ook de eindpuntgegevens ophalen met behulp van Azure CLI in de sectie Eigenschappen van de hub, met name property.hostname en property.deviceStreams sleutels.

az iot hub devicestream show --name <YourIoTHubName>

De uitvoer is een JSON-object van alle eindpunten waarmee het apparaat en de service van uw hub mogelijk verbinding moeten maken om een apparaatstream tot stand te brengen.

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

Notitie

Zorg ervoor dat u Azure CLI versie 2.0.57 of hoger hebt geïnstalleerd. U kunt de nieuwste versie downloaden op de pagina Azure CLI installeren.

Uitgaande connectiviteit met de streaming-eindpunten van het apparaat toestaan

Zoals vermeld aan het begin van dit artikel, maakt uw apparaat een uitgaande verbinding met het IoT Hub-streaming-eindpunt tijdens het starten van apparaatstreams. Uw firewalls op het apparaat of het bijbehorende netwerk moeten uitgaande connectiviteit met de streaminggateway via poort 443 toestaan (houd er rekening mee dat communicatie plaatsvindt via een WebSocket-verbinding die is versleuteld met TLS).

De hostnaam van het streaming-eindpunt voor apparaten vindt u in de Azure IoT Hub-portal op het tabblad Overzicht.

U kunt deze informatie ook vinden met behulp van Azure CLI:

az iot hub devicestream show --name <YourIoTHubName>

Notitie

Zorg ervoor dat u Azure CLI versie 2.0.57 of hoger hebt geïnstalleerd. U kunt de nieuwste versie downloaden op de pagina Azure CLI installeren.

Problemen oplossen via resourcelogboeken van apparaatstreams

U kunt Azure Monitor instellen voor het verzamelen van de resourcelogboeken voor apparaatstreams die door uw IoT Hub worden verzonden. Dit kan erg handig zijn in scenario's voor probleemoplossing.

Volg de onderstaande stappen om een diagnostische instelling te maken voor het verzenden van logboeken van apparaatstreams voor uw IoT Hub naar Azure Monitor-logboeken:

  1. Navigeer in Azure Portal naar uw IoT-hub. Selecteer diagnostische instellingen in het linkerdeelvenster onder Bewaking. Selecteer vervolgens Diagnostische instelling toevoegen.

  2. Geef een naam op voor uw diagnostische instelling en selecteer DeviceStreams in de lijst met logboeken. Selecteer vervolgens Verzenden naar Log Analytics. U wordt begeleid bij het kiezen van een bestaande Log Analytics-werkruimte of het maken van een nieuwe werkruimte.

    Enable device streams logs

  3. Nadat u een diagnostische instelling hebt gemaakt om uw apparaatstreamlogboeken naar een Log Analytics-werkruimte te verzenden, hebt u toegang tot de logboeken door logboeken te selecteren onder Bewaking in het linkerdeelvenster van uw IoT-hub in Azure Portal. Logboeken voor apparaatstreams worden weergegeven in de AzureDiagnostics tabel en hebben Category=DeviceStreams. Houd er rekening mee dat het enkele minuten kan duren voordat logboeken in de tabel worden weergegeven.

    Zoals hieronder wordt weergegeven, is de identiteit van het doelapparaat en het resultaat van de bewerking ook beschikbaar in de logboeken.

Zie IoT Hub bewaken voor meer informatie over het gebruik van Azure Monitor met IoT Hub. Zie Azure IoT Hub-gegevensreferenties bewaken voor informatie over alle resourcelogboeken, metrische gegevens en tabellen die beschikbaar zijn voor IoT Hub.

Regionale beschikbaarheid

Tijdens de openbare preview zijn IoT Hub-apparaatstreams beschikbaar in de regio's VS - centraal, VS - oost EUAP, Europa - noord en Azië - zuidoost. Zorg ervoor dat u uw hub in een van deze regio's maakt.

Beschikbaarheid van SDK

Twee zijden van elke stream (aan de apparaat- en servicezijde) gebruiken de IoT Hub SDK om de tunnel tot stand te brengen. Tijdens de openbare preview kunnen klanten kiezen uit de volgende SDK-talen:

  • De apparaatstreams van de C- en C#-SDK aan de apparaatzijde.

  • De NodeJS- en C#SDK ondersteunen apparaatstreams aan de servicezijde.

Volgende stappen

Gebruik de onderstaande koppelingen voor meer informatie over apparaatstreams.