Pregunta

Recientemente, he leído un documento del Protocolo Kademlia, traté de entender el protocolo, pero todavía tengo algunas dudas:¿Por qué un nodo debe encontrar otro nodo, cuando sabe su ID, pero la ip o el puerto?Por qué él tiene el IDENTIFICADOR mientras que él no sabe la dirección ip o el puerto, donde consiguió el ID?Creo que la "distancia" entre dos nodos diferentes no es un enrutamiento de distancia o distancia real, es sólo una distancia virtual que se puede utilizar el algoritmo para encontrar el nodo rápidamente, es que la derecha?

Tal vez mi inglés no es muy clara debido a que el inglés no es mi lengua madre, pero voy a tratar de expresarme claro si usted necesita.Muchas gracias!

¿Fue útil?

Solución

Como cHao dijo, la naturaleza distribuida de la red significa que los nodos de la necesidad de publicar sus documentos de identidad y sus datos de contacto a otros nodos que hablar.No hay un lugar central donde IDs se asignan a la información de contacto, por lo que cada nodo debe mantener esta asignación para un subconjunto de los nodos en la red en su propia tabla de enrutamiento.

Kademlia tablas de enrutamiento están estructurados de manera que los nodos tienen un conocimiento detallado de la red cerca de ellos, y de manera exponencial decreciente conocimiento más lejos.

El uso de la operación XOR bit a bit como una medida de valor nocional de la distancia entre el IDs tiene la ventaja de que para un determinado ID de objetivo, no hay dos Identificadores pueden tener la misma distancia hasta el objetivo.

Imagina un ejemplo simple donde el IDs en el rango de 00 a 63.Si Kademlia utilizarse, por ejemplo,pura diferencia matemática como una medida de la distancia, de 15 y 35 estaría a la misma distancia de 25 - tanto habría una distancia de 10.Usando XOR, la distancia entre 15 y 25 años es de 22, y entre el 25 y el 35 es 58.

De esta manera, el grupo de k más cercano IDs a un ID de objetivo puede ser calculado de forma inequívoca.

La constante k tiene un par de usos en Kademlia, pero es principalmente el factor de replicación.En otras palabras, un pedazo de datos almacenados en el k nodos más cercanos a los datos de IDENTIFICACIÓN.

El proceso de búsqueda está diseñado para devolver un grupo de k nodos (antes de almacenar los datos en cada uno de ellos) o la devolución de una sola pieza de datos (desde el primer nodo de la celebración durante la búsqueda de iteraciones).

Debido a esto, pura Kademlia no se adapta mejor a la búsqueda de un solo nodo, por lo que no estoy seguro de que parte de tu pregunta es muy pertinente.Si va a utilizar Kademlia encontrar un solo nodo, es probablemente vale la pena modificar el proceso de búsqueda de terminar temprano, tan pronto como cualquier nodo devuelve el nodo de destino con los datos de contacto (de la misma manera que la búsqueda termina temprano si un valor de destino es encontrado durante el proceso).

Otros consejos

Dado que la red se distribuye, por definición, no hay una tabla maestra de asignaciones de direcciones ID->. Los nodos no tienen que (y generalmente no) saber sobre todos los demás nodos. El proceso de "encontrar" un nodo es básicamente pedir nodos conocidos "más cercanos" al objetivo no tanto sobre el nodo de destino, sino directamente sobre Qué nodos están más cerca al objetivo. El resultado de esa consulta le brinda el siguiente grupo de nodos a la consulta, y el proceso se repite, y debido a que un nodo devolvería los resultados que están más cerca de lo que está, cada iteración tiende a encontrar nodos cada vez más cercanos al objetivo hasta que finalmente usted finalmente Llegue a un nodo que pueda decir "Oh, nodo X? Está justo allí".

Al menos eso es lo que estoy entendiendo de él.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top