Escolher um protocolo de comunicação de dispositivo

O Hub IoT permite que os dispositivos usem os seguintes protocolos para comunicação no lado do dispositivo:

Observação

O Hub IoT tem suporte limitado a recursos para MQTT. Se a sua solução precisar de suporte para MQTT v3.1.1 ou v5, recomendamos o suporte ao MQTT na Grade de Eventos do Azure. Para obter mais informações, confira Comparar o suporte ao MQTT no Hub IoT e na Grade de Eventos.

Para saber mais sobre como esses protocolos dão suporte a recursos específicos do Hub IoT, confira Orientação sobre comunicações de dispositivo para a nuvem e Orientação sobre comunicações de dispositivo para a nuvem.

A tabela a seguir fornece as recomendações de alto nível para sua escolha de protocolo:

Protocolo Quando você deve escolher este protocolo
MQTT
MQTT sobre WebSockets
Use em todos os dispositivos que não exigem conexão com vários dispositivos, cada um com suas próprias credenciais por dispositivo, sobre a mesma conexão TLS.
AMQP
AMQP sobre WebSockets
Use em gateways de campo e de nuvem para tirar proveito da multiplexação de conexão entre dispositivos.
HTTPS Use para dispositivos que não dão suporte a outros protocolos.

Considere os seguintes pontos ao escolher seu protocolo de comunicação do lado do dispositivo:

  • Padrão da nuvem para o dispositivo. O HTTPS não tem uma maneira eficiente de implementar o envio por push do servidor. Assim, ao usar HTTPS, os dispositivos sondam o Hub IoT em busca de mensagens da nuvem para o dispositivo. Essa abordagem é ineficiente para o dispositivo e para o Hub IoT. De acordo com as diretrizes atuais de HTTPS, cada dispositivo deve sondar mensagens a cada 25 minutos ou mais. Emitir mais recebimentos de HTTPS resulta na limitação das solicitações pelo Hub IoT. MQTT e o AMQP dão suporte ao envio por push do servidor quando recebem mensagens de nuvem para o dispositivo. Eles permitem envios por push imediatos de mensagens do Hub IoT para o dispositivo. Se a latência de entrega for uma preocupação, o MQTT ou AMQP serão as melhores opções de protocolo. Para dispositivos conectados raramente, o HTTPS funciona também.

  • Gateways de campo. O MQTT e o HTTPS oferecem suporte apenas a uma única identidade de dispositivo (ID do dispositivo mais credenciais) por conexão TLS. Por esse motivo, esses protocolos não têm suporte para cenários de gateway de campo que exijam mensagens de multiplexação, com o uso de várias identidades de dispositivo, em uma única conexão ou em um pool de conexões upstream para IoT Hub. Esses gateways podem usar um protocolo que ofereça suporte a várias identidades de dispositivo por conexão, como AMQP, para seu tráfego upstream.

  • Dispositivos com poucos recursos. As bibliotecas de MQTT e HTTPS têm uma superfície menor do que as bibliotecas de AMQP. Dessa forma, caso o dispositivo tenha recursos limitados (por exemplo, menos de 1 MB de RAM), esses protocolos poderão ser a única implementação de protocolo disponível.

  • Percurso da rede. O protocolo AMQP padrão usa a porta 5671 e o MQTT escuta na porta 8883. O uso dessas portas pode causar problemas em redes fechadas para protocolos não HTTPS. Use MQTT por WebSockets, AMQP, AMQP por WebSockets ou HTTPS nesse cenário.

  • Tamanho da carga. O MQTT e o AMQP são protocolos binários, que resultam em cargas mais compactas que o HTTPS.

Aviso

Quando se usa HTTPS, cada dispositivo deve sondar se há mensagens da nuvem para o dispositivo no máximo uma vez a cada 25 minutos. Em tarefas de desenvolvimento, cada dispositivo pode sondar com mais frequência, se desejado.

Importante

A funcionalidade a seguir para dispositivos que usam a autenticação de autoridade de certificação (CA) do certificado X.509 ainda não está disponível e o modo de visualização deve ser habilitado:

  • HTTPS, MQTT por WebSockets e AMQP por protocolos WebSockets.
  • Carregamentos de arquivos (todos os protocolos).

Geralmente, esses recursos estão em disponibilidade geral em dispositivos que usam a autenticação de impressão digital X.509. Para saber mais sobre a autenticação X.509 com o Hub IoT, confira Certificados X.509 com suporte.

Números de porta

Os dispositivos podem se comunicar com o Hub IoT no Azure usando uma variedade de protocolos. Normalmente, a opção de protocolo é orientada por requisitos específicos da solução. A tabela a seguir lista as portas de saída que devem ser abertas para um dispositivo para poder usar um protocolo específico:

Protocolo Porta
MQTT 8883
MQTT sobre WebSockets 443
AMQP 5671
AMQP sobre WebSockets 443
HTTPS 443

O endereço IP de um Hub IoT está sujeito a alterações sem aviso prévio. Para saber como atenuar os efeitos das alterações do endereço IP do hub IoT em sua solução e seus dispositivos de IoT, consulte a seção de Melhores práticas de endereços IP do Hub IoT.

Próximas etapas

Para obter mais informações sobre como o Hub IoT implementa o protocolo MQTT, confira Comunicação com o hub IoT usando o protocolo MQTT.