Partilhar via


Fluxos de dispositivos do Hub IoT (visualização)

Os fluxos de dispositivo do Hub IoT do Azure facilitam a criação de túneis TCP bidirecionais seguros para vários cenários de comunicação entre nuvem e dispositivo. Um ponto de extremidade de streaming do Hub IoT medeia fluxos de dispositivos, agindo como um proxy entre seu dispositivo e pontos de extremidade de serviço. Essa configuração, descrita no diagrama a seguir, é especialmente útil quando os dispositivos estão atrás de um firewall de rede ou residem dentro de uma rede privada. Como tal, os fluxos de dispositivos do Hub IoT ajudam a atender à necessidade dos clientes de alcançar dispositivos IoT de uma maneira amigável ao firewall e sem a necessidade de abrir amplamente as portas de firewall de rede de entrada ou saída.

Diagrama que mostra uma visão geral dos fluxos de dispositivos do Hub IoT.

Os dispositivos que usam fluxos de dispositivos do Hub IoT podem permanecer seguros e só precisam abrir conexões TCP de saída para o ponto de extremidade de streaming do seu hub IoT pela porta 443. Depois que um fluxo é estabelecido, os aplicativos do lado do serviço e do lado do dispositivo têm acesso programático a um objeto de cliente WebSocket para enviar e receber bytes brutos uns para os outros. A fiabilidade e as garantias de encomenda fornecidas por este túnel estão ao mesmo nível do TCP.

Benefícios

Os fluxos de dispositivos do Hub IoT oferecem os seguintes benefícios:

  • Conectividade segura compatível com firewall: os dispositivos IoT podem ser acessados a partir de pontos de extremidade de serviço sem a abertura da porta de firewall de entrada no dispositivo ou perímetros de rede (apenas a conectividade de saída para o Hub IoT é necessária pela porta 443).

  • Autenticação: os lados do dispositivo e do serviço do túnel precisam se autenticar com o Hub IoT usando suas credenciais correspondentes.

  • Criptografia: por padrão, os fluxos de dispositivos do Hub IoT usam conexões habilitadas para TLS. Esse fator garante que o tráfego seja sempre criptografado, independentemente de o aplicativo usar criptografia ou não.

  • Simplicidade de conectividade: Em muitos casos, o uso de fluxos de dispositivos elimina a necessidade de configuração complexa de Redes Privadas Virtuais para permitir a conectividade com dispositivos IoT.

  • Compatibilidade com pilha TCP/IP: os fluxos de dispositivos do Hub IoT podem acomodar o tráfego de aplicativos TCP/IP. Essa abordagem significa que uma ampla gama de protocolos proprietários e baseados em padrões pode usar esse recurso.

  • Facilidade de uso em configurações de rede privada: o serviço pode se comunicar com um dispositivo fazendo referência ao ID do dispositivo, em vez do endereço IP do dispositivo. Este fato é útil em situações em que um dispositivo está localizado dentro de uma rede privada e tem um endereço IP privado, ou seu endereço IP é atribuído dinamicamente e é desconhecido para o lado do serviço.

Fluxos de trabalho de fluxo de dispositivos

Um fluxo de dispositivo é iniciado quando o serviço solicita a conexão a um dispositivo fornecendo sua ID de dispositivo. Este fluxo de trabalho se encaixa particularmente em um modelo de comunicação cliente/servidor, incluindo SSH e RDP, onde um usuário pretende se conectar remotamente ao servidor SSH ou RDP em execução no dispositivo usando um programa cliente SSH ou RDP.

O processo de criação do fluxo de dispositivos envolve uma negociação entre o dispositivo, o serviço, o principal do hub IoT e os pontos de extremidade de streaming. Enquanto o ponto de extremidade principal do hub IoT orquestra a criação de um fluxo de dispositivo, o ponto de extremidade de streaming lida com o tráfego que flui entre o serviço e o dispositivo.

Fluxo de criação de fluxo de dispositivos

A criação programática de um fluxo de dispositivo usando o SDK envolve as seguintes etapas, que também são representadas na figura:

Diagrama que mostra as etapas do processo de saudação para uma corrente de dispositivos do Hub IoT.

  1. O aplicativo de dispositivo registra um retorno de chamada com antecedência para ser notificado quando um novo fluxo de dispositivo é iniciado para o dispositivo. Essa etapa normalmente ocorre quando o dispositivo é inicializado e se conecta ao Hub IoT.

  2. O programa do lado do serviço inicia um fluxo de dispositivo quando necessário, fornecendo o ID do dispositivo (não o endereço IP).

  3. O hub IoT notifica o programa do lado do dispositivo invocando o retorno de chamada registrado na etapa 1. O dispositivo pode aceitar ou rejeitar a solicitação de iniciação de fluxo. Essa lógica pode ser específica para o cenário do aplicativo. Se o dispositivo rejeitar a solicitação de fluxo, o Hub IoT informará o serviço de acordo; caso contrário, serão realizadas as seguintes etapas.

  4. O dispositivo cria uma conexão TCP de saída segura para o ponto de extremidade de streaming pela porta 443 e atualiza a conexão para um WebSocket. A URL do ponto de extremidade de streaming e as credenciais a serem usadas para autenticar são fornecidas ao dispositivo pelo Hub IoT como parte da solicitação enviada na etapa 3.

  5. O serviço é notificado do resultado do dispositivo aceitar o fluxo e continua a criar seu próprio cliente WebSocket para o ponto de extremidade de streaming. Da mesma forma, ele recebe a URL do ponto de extremidade de streaming e as informações de autenticação do Hub IoT.

No processo de aperto de mão descrito anteriormente:

  • O processo de handshake deve ser concluído dentro de 60 segundos (passos 2 a 5), caso contrário, o handshake falhará com um limite de tempo e o serviço será notificado devidamente.

  • Após a conclusão do fluxo de criação descrito anteriormente, o ponto de extremidade de streaming atua como proxy e transfere o tráfego entre o serviço e o dispositivo através dos respetivos WebSockets.

  • O dispositivo e o serviço precisam de conectividade de saída para o ponto de extremidade principal do Hub IoT e o ponto de extremidade de streaming pela porta 443. A URL desses pontos de extremidade está disponível na guia Visão geral no portal do Hub IoT.

  • A confiabilidade e as garantias de ordenação de um fluxo estabelecido estão no mesmo nível do TCP.

  • Todas as conexões com o Hub IoT e seu ponto de extremidade de streaming usam TLS e são criptografadas.

Fluxo de terminação

Um fluxo estabelecido termina quando uma das conexões TCP com o gateway é desconectada (pelo serviço ou dispositivo). Essa ação pode ocorrer voluntariamente, fechando o WebSocket no dispositivo ou nos programas de serviço, ou involuntariamente se um tempo limite de conectividade de rede ou falha de processo. Após o término da conexão de qualquer dispositivo ou serviço com o ponto de extremidade de streaming, a outra conexão TCP também é (forçadamente) encerrada e o serviço e o dispositivo são responsáveis por recriar o fluxo, se necessário.

Requisitos de conectividade

Tanto o dispositivo quanto o lado de serviço de um fluxo de dispositivo devem ser capazes de estabelecer conexões habilitadas para TLS com o Hub IoT e seu ponto de extremidade de streaming. Essa situação requer conectividade de saída pela porta 443 para esses pontos de extremidade. O nome do host associado ao ponto de extremidade de streaming pode ser encontrado no painel de visão geral do seu hub IoT no portal do Azure, conforme mostrado na captura de tela a seguir.

Captura de ecrã da área de trabalho de um hub IoT no portal Azure, destacando o hostname para endpoints de streaming de dispositivos.

Como alternativa, as informações de pontos de extremidade podem ser recuperadas usando a CLI do Azure na seção de propriedades do hub, especificamente property.hostname e property.deviceStreams chaves.

az iot hub devicestream show --name <YourIoTHubName>

A saída é um objeto JSON de todos os pontos de extremidade aos quais o dispositivo e o serviço do hub podem precisar se conectar para estabelecer um fluxo de dispositivos.

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

Nota

Certifique-se de instalar a CLI do Azure versão 2.73.0 ou mais recente. Você pode baixar a versão mais recente na página Instalar a CLI do Azure.

Permitir conectividade de saída para os pontos de extremidade de streaming do dispositivo

Conforme mencionado no início deste artigo, o seu dispositivo cria uma conexão de saída com o endpoint de streaming do Hub IoT durante o processo de iniciação dos fluxos do dispositivo. Seus firewalls no dispositivo ou em sua rede devem permitir a conectividade de saída para o gateway de streaming pela porta 443 (observe que a comunicação ocorre por meio de uma conexão WebSocket criptografada usando TLS).

O nome do host associado ao ponto de extremidade de streaming pode ser encontrado no painel de visão geral do seu hub IoT no portal do Azure, conforme mostrado na captura de tela a seguir.

Captura de ecrã da área de trabalho de um hub IoT no portal Azure, destacando o hostname para endpoints de streaming de dispositivos.

Como alternativa, você pode encontrar essas informações usando a CLI do Azure, conforme mostrado no exemplo a seguir:

az iot hub devicestream show --name <YourIoTHubName>

Nota

Certifique-se de instalar a CLI do Azure versão 2.73.0 ou mais recente. Você pode baixar a versão mais recente na página Instalar a CLI do Azure.

Solucionar problemas por meio de logs de recursos do Device Streams

Você pode configurar o Azure Monitor para coletar os logs de recursos para fluxos de dispositivos emitidos pelo seu hub IoT. Essa abordagem pode ser útil na solução de problemas de cenários.

Siga estas etapas para criar uma configuração de diagnóstico para enviar logs de recursos do Device Streams para seu hub IoT para os Logs do Azure Monitor:

  1. No portal do Azure, navegue até seu hub IoT. No painel esquerdo, em Monitoramento, selecione Configurações de diagnóstico. Em seguida, selecione Adicionar configuração de diagnóstico.

  2. Forneça um nome para a configuração de diagnóstico e selecione Fluxos de dispositivos (visualização) na lista de logs. Em seguida, selecione Enviar para o espaço de trabalho do Log Analytics. Você é orientado a escolher um espaço de trabalho existente do Log Analytics ou criar um novo.

    Captura de ecrã que mostra o painel de definições de diagnósticos no portal do Azure, realçando as definições dos Device Streams nos registos de recursos.

  3. Depois de criar uma configuração de diagnóstico para enviar seus logs de recursos do Device Streams para um espaço de trabalho do Log Analytics, você pode acessar os logs selecionando Logs em Monitoramento no painel esquerdo do seu hub IoT no portal do Azure. Os logs de recursos do Device Streams aparecem na AzureDiagnostics tabela e têm Category=DeviceStreams. Pode levar vários minutos após uma operação para que os logs apareçam na tabela.

    Como mostrado aqui, a identidade do dispositivo alvo e o resultado da operação também estão disponíveis nos logs.

    Captura de ecrã que mostra os logs AzureDiagnostic para um hub IoT, destacando a identidade, a operação e os resultados de uma entrada de registo de recursos do Device Streams.

Para saber mais sobre como usar o Azure Monitor com o Hub IoT, consulte Monitorar o Hub IoT do Azure. Para obter informações sobre todos os logs de recursos, métricas e tabelas disponíveis para o Hub IoT, consulte Referência de dados de monitoramento do Hub IoT do Azure.

Disponibilidade regional

Durante a visualização pública, os fluxos de dispositivos do Hub IoT estão disponíveis nas regiões Central dos EUA, Leste dos EUA EUAP, Norte da Europa e Sudeste Asiático. Certifique-se de criar seu hub em uma dessas regiões.

Disponibilidade do SDK

Dois lados de cada fluxo (no lado do dispositivo e do serviço) usam o SDK do Hub IoT para estabelecer o túnel. Durante a visualização pública, os clientes podem escolher entre os seguintes idiomas do SDK:

  • Os SDKs C e C# suportam fluxos de dispositivo no lado do dispositivo.

  • Os SDKs Node.js e C# oferecem suporte a fluxos de dispositivos no lado do serviço.

Próximos passos