Share via


Acerca de las tablas de enrutamiento distribuido

Existe una tabla de enrutamiento distribuido (DRT) como una malla de nodos de cooperación, donde cada nodo es una instancia de una aplicación mediante la API de DRT. Los nodos que publican claves son responsables de ayudar a otros nodos a publicar y resolver claves. Los nodos también pueden participar de forma "resolver solo", lo que no los requiere para ayudar a los elementos del mismo nivel. El protocolo DRT se ejecuta a través de un transporte UDP/IPv6.

Un nodo que publica una clave compila y mantiene una tabla de enrutamiento local de otros nodos de la malla. Esta tabla de enrutamiento está optimizada para que el nodo pueda localizar rápidamente una clave específica en la malla buscando la clave directamente en la tabla de enrutamiento local o pidiendo a otros nodos que publiquen claves numéricamente cerca del destino. Esta acción se repite hasta que se encuentra la clave necesaria o el nodo determina que no existe dicha clave.

Las claves DRT son enteros de 256 bits sin signo. La proximidad entre claves se define mediante la diferencia numérica entre ellas. El espacio de claves DRT se considera circular. Por ejemplo, el primer valor de clave posible y el último valor de clave posible se consideran vecinos.

En un DRT seguro, los nodos son necesarios para autenticar las claves que publican. El mecanismo por el que se deben establecer las claves de autenticación de nodos mediante la API de DRT cuando se inicializa el DRT. Para ello, elija un proveedor de seguridad para drt. Un proveedor de seguridad es un módulo que puede generar tokens usados para autenticar claves y comprobar los tokens generados por otros nodos. Debe implementar la interfaz del proveedor de seguridad que se define en esta documentación. El DRT de Windows 7 se incluye con dos proveedores de seguridad totalmente implementados que se pueden usar para compilar aplicaciones de Windows.

Durante la inicialización, una aplicación también debe proporcionar el DRT con un proveedor de arranque. El proveedor de arranque es un módulo que puede recuperar los puntos de conexión de red de los nodos que ya están presentes en la malla DRT y que el DRT llama cuando se establece un nuevo nodo. Al igual que el módulo de proveedor de seguridad, el proveedor de arranque debe implementar una interfaz bien definida. El DRT de Windows 7 se distribuye con dos proveedores de arranque totalmente implementados.

El DRT considera los vecinos inmediatos de una clave especial. Las cinco claves más cercanas numéricamente más pequeñas y las cinco claves más cercanas numéricamente mayores que un formulario de clave publicado, lo que se denomina conjunto hoja. DrT notifica los cambios en el conjunto hoja de una clave a través de la API de DRT.

Ciclo de vida y transiciones de estado de DRT

Una aplicación puede inicializar una instancia de DRT local mediante la función DrtOpen . Esta función desencadena el proceso de arranque, donde la API de DRT llama al proveedor de arranque para conocer las claves y los puntos de conexión de red de otros nodos que ya participan en el DRT. Si el proveedor de arranque localiza correctamente al menos otro nodo, el DRT entra en el estado de DRT_ACTIVE. En este estado, la aplicación puede buscar claves publicadas por otros nodos y puede publicar claves que se pueden resolver. Si el proveedor de arranque no encuentra correctamente otros nodos, drT entra en el estado de DRT_ALONE. El DRT permanecerá en el estado DRT_ALONE e intentará arrancar periódicamente para localizar elementos del mismo nivel y pasar al estado DRT_ACTIVE.

Un nodo puede realizar la transición a estos estados desde DRT_ACTIVE.

Estado del ciclo de vida Condiciones
DRT_ALONE El nodo local no ha detectado otros nodos en el DRT. Mientras está en este estado, el nodo sigue escuchando otros nodos dentro del DRT.
Si otro nodo se une al DRT, el nodo local pasará al estado DRT_ACTIVE. Si la red está inactiva, pasará a DRT_NO_NETWORK. En caso de un error grave con el DRT, el nodo pasará al estado DRT_FAULTED.
DRT_NO_NETWORK Cuando un nodo pierde la conectividad de red, pasa al estado DRT_NO_NETWORK. En este momento, la aplicación puede esperar a que se restaure la conectividad de red y puede cerrar el DRT.
DRT_FAULTED Se ha producido un error grave en el nodo local. Por ejemplo, si la máquina local se queda sin memoria física.
Mientras un nodo entra en este estado, la aplicación debe llamar a drtClose API, corregir el problema e inicializar el DRT con DrtOpen.

Uso de Distributed Routing Table API

Referencia de La API de tabla de enrutamiento distribuido