El "internet de las cosas" necesita protocolos estándar. Esta es una afirmación en la que parece que todos estamos de acuerdo, pero el tiempo pasa y no acaba de alzarse ninguno claramente sobre los demás. De hecho, continúan saliendo nuevos protocolos.
Quizá lo que no tenga sentido sea la obsesión por encontrar a uno todopoderoso en el que confiar ciegamente y la respuesta pase por elegir el que más se ajuste a las necesidades a las que nos enfrentemos en cada ocasión.
Vamos a hablar sobre los protocolos más presentes en todas las discusiones sobre este tema.
MQTT
Actualmente estándar abierto, es un protocolo de mensajería tipo publicación/suscripción muy ligero y pensado para dispositivos alimentados con baterías ya que tiene un reducido consumo de energía.
Está diseñado para redes de comunicación poco fiables y es interesante comentar que posee tres modos de funcionamiento o “calidad de servicio” (QoS) .
- QoS0 (At most once): El modo menos fiable pero también el más rápido. La publicación se envía pero no se recibe confirmación.
- QoS1 (At least once): Se asegura que el mensaje es entregado al menos una vez, pero pueden recibirse duplicados.
- QoS2 (Exactly once): El modo más fiable y que más ancho de banda consume. Se controlan los duplicados para garantizar que el mensaje es entregado una única vez.
A pesar de sus características, MQTT puede suponer un problema para algunos dispositivos muy restrictivos, por el hecho de ir sobre TCP y de manejar nombres de topics largos. Esto se soluciona con la variante MQTT-SN que utiliza UDP y soporta indexación de nombres de topics.
REST
HTTP y REST es muy útil para la mayoría de servicios y aplicaciones web, gateways y dispositivos. Es ampliamente utilizado y sencillo de implementar lo que facilita y acelera el desarrollo de muchos servicios en el internet de las cosas.
Se puede utilizar de una forma muy simple, por ejemplo, para el intercambio de documentos JSON entre cualquier plataforma y tiene la ventaja de que un gran número de aplicaciones ya están desarrolladas utilizando esta tecnología.
CoAP
Constrained Application Protocol, CoAP, está diseñado para trasladar el modelo HTTP a dispositivos y redes restrictivas.
Es UDP y los paquetes son mucho más pequeños, pero mantiene la misma arquitectura cliente/servidor y soporta las operaciones GET, PUT, POST y DELETE. Además extiende el modelo de request añadiendo la función “observe” que permite al cliente seguir recibiendo cambios de un recurso solicitado al servidor.
De manera similar al MQTT, en CoAP se puede controlar la QoS marcando los mensajes como “confirmable” o “nonconfirmable” lo que indica si el receptor debe devolver un “ack” o no.
Otras características interesantes de CoAP son que soporta negociación de contenido (Content-Type) y que proporciona un mecanismo de descubrimiento de recursos.
Otros protocolos de los que también se suele hablar son ZeroMQ, XMPP, LWM2M, STOMP y AMQP.
Nuestra solución IoT, Play, posee un diseño modular basado en gateways que permite ampliar gradualmente el número de protocolos compatibles. Actualmente implementamos MQTT, REST, CoAP, STOMP, ZeroMQ, OpenWire y AMQP.
Como se puede observar, cada protocolo tiene sus pros y sus contras. Si tuviéramos que recomendar alguno, nosotros hemos tenido buena experiencia con REST y MQTT.
Autor: Roger Guizan
No hay comentarios:
Publicar un comentario