IDM

IDM es un protocolo de red virtual para la integración de dispositivos en dominios heterogéneos. Se trata de un protocolo de alto nivel, ya que está diseñado para transportar invocaciones a objetos o servicios.

El nombre Inter-Domain Messaging hace referencia a dos cuestiones importantes:

  • Las unidades de transferencia que maneja son «mensajes», es decir, información estructurada semánticamente relevante para la aplicación. En muchos sentidos se trata de un protocolo de transporte de «invocaciones».
  • IDM no interconecta redes para crear inter-redes (como hace IP). IDM interconecta dominios. Un dominio está formado por todos aquellos dispositivos que pueden comunicarse entre sí mediante algún protocolo existente y pueden hacerlo sin restricciones relevantes (firewalls), de forma simétrica y sin traducción de direcciones. Por ejemplo, toda la Internet pública es un único dominio IDM.

IDM es un protocolo cross-layer, es decir, no está ligado a una pila de protocolos concreta. El objetivo siempre es hacer llegar el mensaje a su destino haciendo uso de los mecanismos de transporte disponibles. El destino de un mensaje IDM siempre es un objeto. Debe entenderse «objeto» en un sentido amplio: un agente pasivo (un servidor) que proporciona una colección de operaciones bien definidas y relacionadas (una interfaz) que permiten gestionar un recurso o colección de ellos, y que tiene un identificador único. Esta es una definición muy cercana al concepto de «servicio», puesto que no son necesarios los aspectos de encapsulación, herencia y polimorfirmo.

En una comunicación IDM siempre hay un cliente y un objeto destino. El cliente debe conocer la dirección IDM del objeto destino y la interfaz que ofrece, para así poder crear un mensaje con la serialización adecuada.

Direccionamiento

IDM utiliza un esquema de direccionamiento jerárquico, muy similar al de «classless IP». Se utiliza una máscara que permite determinar qué parte de la dirección corresponde al direccionamiento local, es decir, a la localización de un vecino.

Entrega local

La entrega local o directa ocurre cuando un el router IDM se encuentra en el mismo dominio (mismo prefijo de dirección) que el objeto destino. En esta situación, el router debe determinar los medios de entrega disponibles y enviar el mensaje IDM sobre la tecnología de red correspondiente. Para ello es necesario un mecanismo de «descubrimiento de vecinos».

Éste es un mecanismo típico en los protocolos de red para averiguar la correspondencia entre direcciones lógicas y físicas. La principal diferencia estriba en que, en este caso, la correspondencia se realiza entre una dirección IDM (efectivamente una dirección lógica, aunque de objeto, no de host) y una colección de endpoints.

Un endpoint es cualquier información que describe un medio de localizar al objeto en el host que lo aloja. Puede tratarse de una dirección IP y un puerto relativo a un socket TCP, una dirección MAC relevante para la red concreta en la que se encuentre, un identificador de dispositivo USB, una dirección de memoria en la que está mapeado un periférico, etc. La única restricción es que dicha información debe tener sentido para ese último router que envía el mensaje. Todos los otros componentes, incluyendo por supuesto al cliente, no conocen ni necesitan los endpoints del objeto.

En IDM el mecanismo de descubrimiento de vecinos es en realidad un mecanismo de «anunciamiento» de vecinos. Todo objeto debe conocer la dirección de al menos un router IDM local (en la misma red IDM). El objeto realiza una invocación en la que da a conocer su dirección IDM y sus endpoints. Esta invocación puede realizarse en el arranque del dispositivo, periódicamente, bajo demanda, o una combinación de estas opciones.

En el estado actual de la implementación de IDM, no existen invocaciones cliente-objeto. Todas las invocaciones involucran al menos a un router. De este modo, los clientes son más sencillos puesto que no tienen que lidiar con el mecanismo de anunciamiento de vecinos, almacenar sus endpoints y otras tareas de gestión. Además, las tecnologías LAN usadas a menudo en IoT requieren que todos los mensajes deban pasar por un «bridge» (o punto de acceso), lugar ideal para desplegar el router IDM local.

Entrega indirecta

La entrega indirecta ocurre cuando el router IDM no está en el mismo dominio que el objeto destino. En ese caso, el router debe determinar mediante su «tabla de flujos» cuáles son los endpoints del «siguiente router» para de ese modo reenviar (forward) la invocación.

Router

El router IDM siempre se despliega en la frontera entre al menos dos dominios, ya que su función es interconectarlos. El router debe ser capaz de manejar endpoints con las tecnologías de red disponibles en esos dominios. Por ejemplo, puede desplegarse un router en un computador que tiene una interfaz de red conectada a Internet y otra interfaz conectada a una red Bluetooth.

Estos dos dominios deberán tener prefijos diferentes y el router debe contar con una tabla de flujos que le permita localizar a los objetos directamente accesibles o bien localizar a otros routers presentes en esos dominios.

Controlador

La gestión de los routers IDM se realiza utilizando un protocolo similar a OpenFlow. Siguiendo las ideas de OpenFlow, y de SDN en general, se despliegan uno o varios controladores que son quienes determinan el contenido de las tablas de flujos de los routers. Por ejemplo, los routers informan al controlador de mensajes con destinos desconocidos, y el controlador puede reaccionar añadiendo un nuevo flujo al router.

Un flujo es similar a una regla de rutado, pero mucho más fléxible, puesto que puede utilizarse para realizar otras acciones, no sólo re-envíos. Con el uso de este protocolo y el sistema controlador-router se pueden implementar routers más simples y flexibles, y se puede paliar la complejidad de implementar protocolos de encaminamiento dinámico distribuidos.

  • Ice
  • IceC
  • DUO
  • Soporte para ESP 8266, sonoff
  • Soporte para Arduino
    • RS485
    • TCP/ethernet
    • ZigBee
    • YUN
  • node-red
    • nodos DUO/IDM
  • Prototipo inter-red IDM

results matching ""

    No results matching ""