Protocolos de transporte en IoT

Post date: Mar 19, 2015 11:02:01 AM

Asociado al concepto de Internet of Things están apareciendo numerosos protocolos con ánimo de solventar las distintas tareas (enrutamiento, transporte, gestión, etc.) que en escenarios no básicos, es decir, con una complejidad media-alta deben resolverse.

Como en cualquier campo las propuestas son variadas y todas tienen sus pros y sus contras. Al menos en este campo una cosa parece clara, si vamos a conectar las cosas a Internet tenemos que hablar, al menos de momento, el protocolo IPv4. Evidentemente, los problemas de direccionamiento en IPv4 se hacen mucho mas evidentes si el concepto de IoT empieza a extenderse de forma masiva. Las técnicas de NAT solventan de manera eficiente el problema por ahora, pero la comunidad científica tiene claro que IoT requerirá de IPv6 mas que ningún otro campo en Internet. En este campo, la iniciativa 6lowPAN pretende acomodar IPv6 sobre redes IEEE 802.15.4.

Si la necesidad de ser compatible con Internet nos fija el protocolo IP a nivel de red, cuando hablamos de los protocolos de transporte la cosa no empieza a estar tan clara. TCP en cuanto a confiabilidad complica excesivamente la implementación en dispositivos de bajo coste y el tamaño de la cabecera limita su aplicación en redes como 802.15.4 donde el MTU a nivel de MAC es de 127 bytes. Además muchas veces los requisitos de confiabilidad en las comunicaciones no están presentes. En esos casos tenemos UDP, bastante mas simple en cuanto a implementación y tamaño de la cabecera.

Hay, no obstante, mas alternativas, en nuestro grupo de investigación y para el proyecto VIA (monitorización de las vallas de seguridad en autovías y autopistas mediante redes de sensores inalámbricas) estuvimos investigando el protocolo orientado a eventos MQTT de IBM (con licencia libre). Originalmente diseñado para aplicaciones de telemetría, MQTT esta viviendo una segunda juventud (se define en 1999 pero no se libera hasta 2010) con el mundo del M2M e IoT. MQTT sigue un patrón publicador/subscriptor a través un broker de eventos con semántica "como mucho uno", "al menos uno" y "exactamente uno". Si bien es cierto que es independiente del protocolo de transporte, al final la mayoría de las aplicaciones usan TCP/IP. En este mismo campo de protocolos adaptados a IoT podemos incluir el protocolo "extensible messaging and presence protocol" (XMPP) (usado por la famosa aplicación Jabber) originalmente orientado a comunicar personas. Al igual que MQTT se usa principalmente con TCP y una de sus principales ventajas es su modo de direccionamiento que lo hace muy apropiado para Internet al usar direccionamiento del tipo dispositivo@dominio..

También cabe destacar el servicio definido por el OMG "Data Distribution Service" (DDS) cuyas implementaciones (ej. openDDS) están apareciendo en los últimos años y que, aunque más dedicados a los sistemas inteligentes, también se están introduciendo en el mundo de IoT. Se sigue un modelo descentralizado (no hay broquer central) y con UDP como método transporte.

Siguiendo en esta capa de transporte/distribución, tenemos "Advanced Message Queuing Protocol" (AMQP) que ha dado su salto desde la industria de transacciones bancarias (y por tanto con escalibidad/confiabilidad bien probada) al mundo del IoT. Los publicadores y subscriptores también deben usar TCP para no perder mensajes.

En el ámbito de los protocolos de aplicación la cosa se vuelve mas heterogénea debido precisamente a que depende de la aplicación, no obstante merece la pena mencionar "The constrained application protocol"(CoAP) es un protocolo ligero con la misma filosofía que los web services con una arquitectura tipo REST pero para dispositivos de bajo coste y que puede verse como una versión simplificada de HTTP con una fácil correspondencia con éste último, cualidad básica para no tener problemas en Internet con el tema de filtrados de protocolos/puertos.