Elección de un protocolo de comunicación de dispositivos

IoT Hub permite que los dispositivos usen los protocolos de comunicaciones de dispositivo siguientes:

Nota

IoT Hub tiene compatibilidad limitada con características para MQTT. Si la solución necesitase compatibilidad con MQTT v3.1.1 o v5, se recomienda la compatibilidad con MQTT en Azure Event Grid. Para más información, consulte Comparación de la compatibilidad con MQTT en IoT Hub y Event Grid.

Para información sobre cómo estos protocolos admiten características específicas de IoT Hub, consulte Guía de comunicación de dispositivo a nube y Guía de comunicación de nube a dispositivo.

La tabla siguiente proporciona recomendaciones generales para la elección del protocolo:

Protocolo Cuándo elegir este protocolo
MQTT
MQTT sobre WebSockets
Utilice todos los dispositivos que no requieran conexión a varios dispositivos, cada uno con sus propias credenciales por servicio, sobre la misma conexión TLS.
AMQP
AMQP sobre WebSockets
Usar en puertas de enlace de campo y en la nube para aprovechar las ventajas de la multiplexación de la conexión entre dispositivos.
HTTPS Usar con dispositivos que no admiten otros protocolos.

Considere los siguientes aspectos a la hora de elegir el protocolo para las comunicaciones del dispositivo:

  • Patrón de nube a dispositivo. HTTPS no cuenta con una forma eficaz de implementar la inserción de servidor. Por lo tanto, cuando se usa HTTPS, los dispositivos sondean los mensajes de nube a dispositivo en IoT Hub. Este enfoque es ineficaz tanto para el dispositivo como para IoT Hub. Según las directrices actuales de HTTPS, cada dispositivo sondeará si hay mensajes cada 25 minutos o más. Emitir más recepciones HTTP tendrá como resultado la limitación de solicitudes de IoT Hub. AMQP y MQTT admiten la inserción de servidor cuando se reciben mensajes de la nube a dispositivo. Permiten inserciones inmediatas de mensajes desde IoT Hub en el dispositivo. Si le preocupa la latencia de entrega, es mucho mejor usar los protocolos MQTT o AMQP. Para dispositivos conectados en raras ocasiones, HTTPS funciona bien.

  • Puertas de enlace de campo. MQTT y HTTPS solo admiten una única identidad de dispositivo (id. de dispositivo más credenciales) por conexión TLS. Por este motivo, estos protocolos no se admiten en escenarios de puerta de enlace de campo que requieran la multiplexación de mensajes con varias identidades de dispositivo en una única conexión o grupo de conexiones ascendente a IoT Hub. Estas puertas de enlace pueden usar un protocolo que admita varias identidades de dispositivo por conexión, como AMQP, para su tráfico ascendente.

  • Dispositivos con bajos recursos. Las bibliotecas de MQTT y HTTPS tienen una huella menor que las bibliotecas de AMQP. Por ello, si el dispositivo tiene recursos limitados (por ejemplo, menos de 1 MB de RAM), estos protocolos pueden ser la única implementación de protocolo disponible.

  • Cruce seguro de red. El protocolo AMQP estándar utiliza el puerto 5671 y MQTT escucha en el puerto 8883. El uso de estos puertos podría producir problemas en redes cerradas a protocolos que no sean HTTPS. Use MQTT sobre WebSockets, AMQP sobre WebSockets o HTTPS en este escenario.

  • Tamaño de carga. MQTT y AMQP son protocolos binarios que producen cargas más compactas que HTTPS.

Advertencia

Si se usa HTTPS, cada dispositivo debe sondear si hay mensajes de la nube al dispositivo como máximo una vez cada 25 minutos. En el desarrollo, cada dispositivo puede realizar el sondeo con mayor frecuencia, si lo desea.

Importante

La funcionalidad siguiente para los dispositivos que usan la autenticación de la entidad de certificación X.509 no está disponible con carácter general, y se debe habilitar el modo de vista previa:

  • los protocolos HTTPS, MQTT a través de WebSockets y AMQP a través de WebSockets.
  • Cargas de archivos (todos los protocolos).

Estas características están disponibles con carácter general para los dispositivos que usan la autenticación de huella digital X.509. Para obtener más información acerca de la autenticación X.509 con IoT Hub, consulte Certificados X.509 compatibles.

Números de puerto

Los dispositivos pueden comunicarse con Azure IoT Hub en Azure mediante diversos protocolos. Normalmente, la elección del protocolo se basa en los requisitos específicos de la solución. En la tabla siguiente se indican los puertos de salida que deben estar abiertos para que un dispositivo pueda usar un protocolo concreto:

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

La dirección IP de un centro de IoT está sujeta a cambios sin previo aviso. Para obtener información sobre cómo mitigar los efectos de los cambios de dirección IP de IoT Hub en la solución y los dispositivos de IoT, consulte la sección Procedimientos recomendados de direcciones IP de IoT Hub.

Pasos siguientes

Para más información sobre cómo IoT Hub implementa el protocolo MQTT, consulte Comunicación con la instancia de IoT Hub mediante el protocolo MQTT.