Resource Location and Discovery Base Protocol (también llamado RELOAD), es un Draft publicado por el IETF y ya ha sido presentado al IESG para su aprobación. Es un protocolo de señalización P2P que sirve para proveer almacenamiento y un servicio de mensajes de señalización entre un conjunto de peers cooperantes que forman una red Overlay.
Tiene un modelo de seguridad basado en un servicio de registro que provee identidades únicas. NAT traversal es un servicio fundamental del protocolo usado para acceder a peers situados detrás de NATs o firewalls .
Destaca por ofrecer características muy beneficiosas para un protocolo P2P:
Una red P2P normalmente suele establecerse entre peers que no confían unos con otros. RELOAD proporciona un servidor de inscripción central que puede ser usado por los peers para autentificar cada operación realizada. Además, este mecanismo reduce las posibilidades de que se produzca un ataque.
Este protocolo está diseñado para soportar gran variedad de aplicaciones. Permite la definición de nuevos usos de aplicación, ya que cada uno de ellos puede definir sus propios tipos de datos, con sus reglas de uso.
Permite funcionar con la mayoría de los nodos dentro de un NAT o un firewall. Para ello incluye ICE[1] (Interactive Connectivity Establishment) para establecer nuevos RELOAD o conexiones del protocolo de aplicación.
Los peers participan en la petición de las rutas en la red P2P pidiendo en nombre de otros peers. Esto implica carga en los peers. Por ello, la cabecera de reenvío se ha hecho ligera para minimizarla.
RELOAD está diseñado para facilitar la implementación de algoritmos Overlay tanto estructurados como desestructurados. Para permitirlo se ha diseñado una interfaz en la capa Overlay.
Diferencia entre clientes y peers lo que permite usos distintos de este protocolo.
Una instancia Overlay consiste en un conjunto de nodos parcialmente conectados. A cada uno de estos nodos se le asigna un ID numérico que determina su posición dentro de la instancia y el conjunto de nodos a los que está conectado.
Al estar parcialmente conectado, no puede hablar con todos los nodos de forma directa. En estos casos, se comunicará primero a un nodos directo para obtener instrucciones de cómo llegar al nodo deseado. Estas conexiones dependerán del algoritmo utilizado.
Además de lo anterior, también es una red de almacenamiento. Los registros se almacenan en direcciones numéricas, los ID de los recursos, que ocupan el mismo espacio que los identificadores de los nodos. Los peers son los encargados de almacenar los datos asociados al conjunto de direcciones determinadas por su ID de nodo.
Aparte de los peers también soporta clientes.
Llamamos peer a un nodo que enruta mensajes de otros nodos a los que está directamente conectado. Aparte de esto, también tiene funciones de almacenamiento. Los clientes al contrario, son nodos que no hacen esa función de enrutamiento ni tienen responsabilidades de almacenamiento.
RELOAD es fundamentalmente una red Overlay. Tiene una arquitectura en capas equiparable al modelo de internet en Overlay:
Por tanto, sus capas o componentes son los siguientes:
Cada aplicación define un conjunto de tipos de datos y comportamientos que describen cómo usar los servicios proporcionados por RELOAD. La comunicación RELOAD entre estos es realizada a través del servicio Message Transport común a todos ellos. Tiene usos de aplicación tales como el ‘SIP Registration Usage’ (I-D ietf-p2psip-sip[2]).
El objetivo de esta capa es implementar los usos de la aplicación específica de los servicios Overlay genéricos provistos por RELOAD. Es decir, define como una aplicación específica mapea sus datos en algo que puede ser almacenado en el Overlay, dónde almacenar los datos, cómo ofrecer seguridad a estos y como las aplicaciones pueden recuperar y usar los datos.
Provee un servicio de enrutamiento de mensajes genérico para el Overlay. Es responsable de las transacciones end-to-end. Cada peer es identificado por su localización en el Overlay, con su ID de nodo.
Un componente que sea cliente del ‘Message Transport’ puede realizar dos funciones básicas:
Esta capa no provee control de congestión puesto que está basado en pregunta-respuesta lo que no permite su control. En la realidad, se suele usar un temporizador para la retransmisión end-to-end.
Procesa mensajes relacionados con el almacenamiento y la recuperación de datos en el Overlay. Se comunica con el ‘Topology plugin’ para manejar la duplicidad y migración de los datos, y con el componente ‘Message Transport’ para enviar y recibir mensajes.
El ID del nodo determina el conjunto de recursos del que es responsable de almacenar. Esto dependerá en parte del algoritmo utilizado. Cuando el ID de un recurso cambia, esto es notificado al ‘Topology plugin’ y el componente ‘Storage’ se ha de encargar entonces de migrar el recurso a otros peers.
Sirve para implementar el algoritmo Overlay usado. Tiene dos funciones: la construcción de las instrucciones de envío locales, y la selección de la topología de funcionamiento, como, por ejemplo, la creación de enlaces para enviar mensajes de gestión Overlay. La razón de ser implementados mediante un plugin es permitir trabajar con distintas topologías.
Se encarga de la tabla de enrutamiento, de crear nuevas conexiones y de proporcionar datos redundantes para evitar la pérdida de información en el caso de que un nodo falle.
Proporciona servicios de reenvío de paquetes entre nodos. También maneja el establecimiento de nuevos enlaces entre nodos y establece y mantiene conexiones de red según el Topology plugin.
Algo importante a mencionar es que permite configurar conexiones entre peers a través de firewalls y NATs mediante ICE (Interactive Connectivity Establishment).
Se encarga de transportar directamente el tráfico entre nodos. Para la comunicación salto a salto utiliza TLS [RFC5246] y DTLS [RFC637]. También es posible definir nuevos protocolos para ello.
Además, los nodos pueden comunicarse con una infraestructura central de almacenamiento para conseguir información de configuración, credenciales de autenticación, y el conjunto de nodos inicial con los que comunicarse para unirse al Overlay.
La seguridad está implementada mediante la posesión por parte de cada nodo de una o más claves públicas certificadas. Estos certificados son proporcionados por un servidor central que también asigna el ID de los nodos. Este ID ha de ser único dentro de una instancia Overlay. Si la red fuese pequeña, se podrían utilizar certificados auto-firmados. Las credenciales son utilizadas para proporcionar seguridad a la comunicación en tres niveles:
De esta forma, es posible verificar el origen y la recepción correcta de los datos. Su ID permite identificar a los nodos y va a permitir dirigirse a sí mismo, determinar su posición en la topología y saber el conjunto de recursos de los que es responsable.
El certificado va a servir para:
Opcionalmente, provee una función de admisión basada en la compartición de secretos. En este modelo, todos los peers comparten un clave única que es usada para la autenticación entre peers mediante conexiones a través de TLS-PSK[3] (RFC 4279) o TLS-SRP[4] (RFC 5054).
El enrutamiento de RELOAD proporciona capacidades tales como:
Para realizar el enrutamiento utiliza tres mecanismos básicos que permite realizar acciones como especificar rutas específicas o responder a un mensaje por la misma ruta que la petición. Estos mecanismos son:
Para el enrutamiento utiliza principalmente Symmetric Recursive. Esto es, cada nodo reenvía a otro nodo más cercano al destino hasta llegar al deseado. La respuesta sigue el mismo camino por el que se ha recibido el mensaje. Es el algoritmo usado por defecto en los nodos para enrutar mensajes a través del Overlay.
Para proveer un enrutamiento eficiente, los peers necesitan mantener un conjunto de conexiones directas a otros nodos. En el caso de que haya NATs entre estos, usamos ICE para establecer la conexión.
En general, un peer necesita mantener conexiones con todos los peers cercanos en la instancia Overlay. Uno de los parámetros del algoritmo ‘Topology plugin’ indica un número determinado de conexiones directas que el peer ha de tener establecidas. Si no se tiene este número, puede seguir funcionando, pero en cuanto sea posible establecer esas conexiones con peers cercanos deberán establecerse.
RELOAD es un protocolo orientado a mensajes de tipo pregunta-respuesta. Los mensajes son codificados usando campos binarios.
El principal planteamiento de los campos es utilizar el modelo TLV, es decir, tipo, longitud y valor. De esta forma, permiten que el mensaje sea extensible.
Por otro lado, los campos que sean siempre obligatorios, se están definidos con una posición fija no siendo necesario el tipo y la longitud. Los mensajes están estructurados en tres partes.
Es una cabecera general para permitir el reenvío entre peers hasta llegar al destino. Es la única parte del mensaje que se examina en los nodos intermedios. La estructura de esta cabecera es como sigue:
Campos:
Es el mensaje, la información que desea transmitirse entre peers. No es analizada por los nodos intermedios, pero sí por capas superiores.
Campos:
Contiene certificados y la firma digital de la parte del contenido del mensaje. Han de estar obligatoriamente firmados por el peer origen del mensaje.
Para buscar uno o más elementos almacenados en un determinado ID de recurso, se utiliza la petición Fetch.
|url=
incorrecta con autorreferencia (ayuda) (en inglés).
|url=
incorrecta con autorreferencia (ayuda) (en inglés).