Share via


IoT Hub-apparaatstreams (preview)

Met Azure IoT Hub-apparaatstreams kunt u beveiligde bidirectionele TCP-tunnels maken voor verschillende cloud-naar-apparaat-communicatiescenario's. Een IoT Hub-streaming-eindpunt mediaeert apparaatstreams, die fungeren als een proxy tussen uw apparaat- en service-eindpunten. Deze installatie, weergegeven in het volgende diagram, 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.

Diagram met een overzicht van IoT Hub-apparaatstreams.

Apparaten die gebruikmaken van IoT Hub-apparaatstreams kunnen veilig blijven en hoeven alleen uitgaande TCP-verbindingen te openen met het streaming-eindpunt van uw IoT-hub via poort 443. 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. Deze factor 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. Deze benadering betekent dat een breed scala aan bedrijfseigen 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 in de afbeelding worden weergegeven:

Diagram met de stappen van het handshakeproces voor een IoT Hub-apparaatstream.

  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 stroominitiatieaanvraag accepteren of afwijzen. Deze logica kan specifiek zijn voor uw toepassingsscenario. Als het apparaat de streamaanvraag weigert, informeert IoT Hub de service dienovereenkomstig; anders worden de volgende stappen uitgevoerd.

  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 voor verificatie, 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 eerder beschreven proces van handdrukken:

  • 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 gewaarschuwd.

  • Nadat de eerder beschreven stroomcreatie is voltooid, fungeert het streaming-eindpunt als proxy en transporteert verkeer tussen de service en het apparaat via hun respectieve WebSockets.

  • Zowel apparaat als service hebben uitgaande connectiviteit met het hoofdeindpunt van IoT Hub en 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 het streaming-eindpunt gebruiken 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). Deze actie kan vrijwillig worden uitgevoerd door de WebSocket op het apparaat of de serviceprogramma's te sluiten, of onvrijwillig als er een time-out of procesfout op het netwerk is opgetreden. 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.

Connectiviteitsvereisten

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. Voor deze situatie is uitgaande connectiviteit via poort 443 naar deze eindpunten vereist. De hostnaam die is gekoppeld aan het streaming-eindpunt vindt u in het overzichtsvenster van uw IoT-hub in Azure Portal, zoals wordt weergegeven in de volgende schermopname.

Schermopname van het werkvenster voor een IoT-hub in Azure Portal, waarin de hostnaam voor apparaatstreaming-eindpunten wordt gemarkeerd.

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.73.0 of hoger installeert. 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 initiëren 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 die is gekoppeld aan het streaming-eindpunt vindt u in het overzichtsvenster van uw IoT-hub in Azure Portal, zoals wordt weergegeven in de volgende schermopname.

Schermopname van het werkvenster voor een IoT-hub in Azure Portal, waarin de hostnaam voor apparaatstreaming-eindpunten wordt gemarkeerd.

U kunt deze informatie ook vinden met behulp van de Azure CLI, zoals wordt weergegeven in het volgende voorbeeld:

az iot hub devicestream show --name <YourIoTHubName>

Notitie

Zorg ervoor dat u Azure CLI versie 2.73.0 of hoger installeert. 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. Deze aanpak kan nuttig zijn in scenario's voor probleemoplossing.

Volg deze stappen om een diagnostische instelling te maken voor het verzenden van resourcelogboeken voor 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 Apparaatstreams (preview) in de lijst met logboeken. Selecteer vervolgens Verzenden naar Log Analytics-werkruimte. U wordt begeleid bij het kiezen van een bestaande Log Analytics-werkruimte of het maken van een nieuwe werkruimte.

    Schermopname van het deelvenster Diagnostische instellingen in de Azure portal, waarbij de instellingen voor apparaatstreams-resourcelogboeken worden gemarkeerd.

  3. Nadat u een diagnostische instelling hebt gemaakt om de resourcelogboeken van apparaatstreams 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. Resource-logboeken voor apparaatsstromen worden weergegeven in de AzureDiagnostics tabel en hebben Category=DeviceStreams. Het kan enkele minuten duren voordat logboeken in de tabel worden weergegeven.

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

    Schermopname van de AzureDiagnostic-logboeken voor een IoT-hub, waarin de identiteit, bewerking en resultaten voor een resourcelogboekvermelding voor Device Streams gemarkeerd zijn.

Zie Azure IoT Hub bewaken voor meer informatie over het gebruik van Azure Monitor met IoT Hub. Voor informatie over alle resource-logboeken, metrics en tabellen die beschikbaar zijn voor IoT Hub, zie naslaginformatie over Azure IoT Hub-bewakingsgegevens.

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 C- en C#-SDK's ondersteunen apparaatstreams aan de apparaatzijde.

  • De Node.js- en C#-SDK's ondersteunen apparaatstreams aan de servicezijde.

Volgende stappen