Posso parlare solo per Kademlia, forse qualcun altro può fornire una risposta più generale. Nel frattempo ...
- d (x, x) = 0
- d (x, y)> 0, se x! = Y
Questi due punti insieme significano effettivamente che il punto più vicino a x
è x
stesso; ogni altro punto è più lontano. (Questo può sembrare intuitivo, ma altri aspetti della metrica XOR non lo sono.)
Nel contesto di Kademlia, questo è importante poiché una ricerca per nodo con ID x
produrrà quel nodo come il più vicino. Sarebbe imbarazzante se non fosse il caso, dal momento che una ricerca convergente verso x
potrebbe non trovare il nodo x
.
- forall x, y: d (x, y) = d (y, x)
La struttura della tabella di routing Kademlia è tale che i nodi mantengono conoscenza dettagliata della spazio di indirizzo più vicino a loro e conoscenza esponenzialmente decrescente di uno spazio di indirizzi più distante. In breve, un nodo cerca di mantenere tutti i i contatti più vicini di cui si sente parlare.
La simmetria è utile poiché significa che ciascuno di questi contatti più intimi manterrà una conoscenza dettagliata di una parte simile dello spazio degli indirizzi, piuttosto che una parte remota.
Se non avessimo questa proprietà, potrebbe essere utile pensare alla ricerca più come le lancette di un orologio che si muovono in una direzione attorno a un quadrante. Il nodo a ore 1 (Nodo1) è vicino a Nodo2 a ore 2 (30 °), ma il Nodo2 è lontano dal Nodo1 (330 °). Quindi immagina che stiamo cercando i due più vicini alle 3 (cioè Nodo1 e Nodo2). Se la ricerca raggiunge Nodo2, non conoscerà Nodo1 poiché è lontano. L'intera ricerca e la topologia dovrebbero cambiare.
- d (x, z) < = d (x, y) + d (y, z)
Se questo non fosse il caso, sarebbe impossibile un nodo per sapere quali contatti della sua tabella di routing devono essere restituiti durante una ricerca. Saprebbe lo più vicino all'obiettivo, ma non ci sarebbe alcuna garanzia che uno degli altri contatti più distanti non produca un percorso complessivo più corto.
A causa di questa proprietà e di unidirezionalità, ricerche diverse a partire da punti ampiamente separati tenderanno a convergere lungo lo stesso percorso.
L'unidirezionalità indica che non è possibile che due nodi abbiano la stessa distanza da un determinato punto. Se così non fosse, allora il punto bersaglio potrebbe essere circondato da un gruppo di nodi alla stessa distanza da esso. Quindi varie ricerche potrebbero essere scelte liberamente tra quelle da passare. Tuttavia, l'unidirezionalità garantisce che esattamente uno di questi gruppi sia il più vicino e qualsiasi ricerca che sceglie tra questo gruppo selezionerà sempre la stessa.
Quindi è veramente alla ricerca di nodi che hanno il più grande prefisso comune? – amirouche