¿CoAP tiene una huella más baja que MQTT?

8

Recientemente leí una pregunta de Quora sobre si CoAP o MQTT es más liviano, pero las respuestas no parecen particularmente satisfactorias y todas se contradicen entre sí: la respuesta principal dice que MQTT requiere menos recursos, y otra a continuación dice que CoAP es menos exigente.

Por lo que he encontrado, tendría sentido que CoAP fuera menos exigente que MQTT , ya que CoAP solo requiere UDP, y sus mensajes son principalmente disparar y olvidar, a diferencia de MQTT que funciona a través de TCP (y, por lo tanto, sería mucho más) involucrado).

¿Qué protocolo requiere menos recursos para funcionar?


Por recursos, estoy pensando principalmente en la potencia del procesador, la RAM y los datos necesarios para transmitir. Por ejemplo, en la pregunta de Quora que vinculé , la respuesta principal señala que un simple chip ESP8266 podría ejecutar MQTT, que solo tiene un procesador de 80MHz y menos de 1MB de RAM. Tengo curiosidad por saber si CoAP podría ejecutarse en algo como esto, o en un entorno aún más limitado.

El tipo de caso de uso que estoy imaginando es donde el dispositivo recibiría principalmente datos de otro dispositivo (por ejemplo, comandos para encender / apagar), pero es posible que con poca frecuencia (tal vez algunas veces por hora) envíe actualizaciones con el estado del dispositivo . Me gustaría utilizar la menor potencia de procesamiento posible para reducir los costos del dispositivo y transmitir relativamente poca frecuencia para reducir el uso de energía tanto como sea posible.

Aurora0001
fuente
1
Para evitar comparaciones de manzanas y naranjas, sería útil si pudiera presentar un caso de uso muy, muy específico. ¿Qué tarea le gustaría utilizar como base para la comparación?
goobering
@goobering he editado con más información sobre un caso de uso más concreto; Avísame si necesitas algo más.
Aurora0001
¿En el servidor / concentrador o en el punto final? Su dispositivo de ejemplo parece muy por encima de las especificaciones para un punto final restringido.
Sean Houlihane
@SeanHoulihane En el punto final. Los recursos necesarios en el centro no son un factor tan importante en mi pregunta; solo con el objetivo de minimizar los recursos de punto final.
Aurora0001

Respuestas:

7

CoAP y MQTT tienen el mismo uso de RAM, medido en 10kbits [1].

La diferencia está en el uso de la CPU y la red: [2]

Todos los clientes admiten TCP y mantienen una conexión abierta al intermediario.

Por lo tanto, CoAP tiene menos huella y, según el caso de uso completo (datos pequeños de vez en cuando), parece ser su mejor opción.

Como lo mencionó, CoAP usa UDP. No garantiza la entrega de datos. Aún así, se desempeña 'excelente' en condiciones de pérdida, mientras que MQTT es solo 'bueno'. Entonces, no me preocuparía mucho por eso.

Fuentes:

[1] http://embedded-computing.com/articles/internet-things-requirements-protocols/

[2] http://www.altencalsoftlabs.com/blogs/2016/08/08/analyzing-mqtt-vs-coap/

mico
fuente
Su referencia no parece respaldar su conclusión: "20 KB adicionales de flash y 8 KB de RAM para actualizar a TCP". Si redondea a 10kbits, o incluso a 10kB, significa que la diferencia en el uso de RAM entre CoAP y MQTT no es despreciable.
Gilles 'SO- deja de ser malvado'
Depende de si TCP es un criterio de selección. Se opone al caso normal del protocolo, que es UDP. Tomar CoAP casi significa aceptar UDP.
mico