Koorde
W sieciach peer-to-peer Koorde jest systemem rozproszonej tablicy skrótów (DHT) opartym na Chord DHT i grafie De Bruijn ( sekwencja De Bruijn ). Dziedzicząc prostotę Chorda, Koorde spełnia O (log n ) przeskoków na węzeł (gdzie n to liczba węzłów w DHT) i przeskoków na żądanie wyszukiwania z O (log n ) sąsiadami na węzeł.
Koncepcja Chord opiera się na szerokim zakresie identyfikatorów (np. 2 160 ) w strukturze pierścienia , gdzie identyfikator może oznaczać zarówno węzeł, jak i dane. Node-successor odpowiada za cały zakres identyfikatorów między sobą a swoim poprzednikiem.
Grafy De Bruijna
Koorde opiera się na akordzie, ale także na grafie De Bruijn ( sekwencja De Bruijn ). W d -wymiarowym grafie de Bruijna są 2 d węzłów , z których każdy ma unikalny identyfikator z d bitami . Węzeł o ID i jest połączony z węzłami 2 i mod 2 d oraz 2 i + 1 mod 2 d . Dzięki tej właściwości algorytm routingu może wyznaczać trasy do dowolnego miejsca docelowego w d przeskakuje sukcesywnie „przesuwając” bity identyfikatora celu, ale tylko wtedy, gdy wymiary odległości między mod 1 d i 3 d są równe.
Trasowanie wiadomości z węzła m do węzła k odbywa się poprzez wzięcie liczby m i przesuwanie bitów k jeden po drugim, aż liczba zostanie zastąpiona przez k . Każde przesunięcie odpowiada przeskokowi trasy do następnego adresu pośredniego; przeskok jest ważny, ponieważ sąsiedzi każdego węzła to dwa możliwe wyniki przesunięcia 0 lub 1 na jego własny adres. Ze względu na strukturę grafów de Bruijna, gdy ostatni bit k zostanie przesunięty, zapytanie będzie w węźle k . Węzeł k odpowiada, czy klucz k istnieje.
Przykład routingu
Na przykład, gdy wiadomość musi zostać przekierowana z węzła 2 (czyli 010
) do 6 (czyli 110
), należy wykonać następujące kroki:
- Węzeł 2 kieruje wiadomość do węzła 5 (używając swojego połączenia z 2 i + 1 mod 8 ), przesuwa bity w lewo i umieszcza
1
jako najmłodszy bit (po prawej stronie). - Węzeł 5 kieruje wiadomość do węzła 3 (korzystając z połączenia z 2 i + 1 mod 8 ), przesuwa bity w lewo i umieszcza
1
jako najmłodszy bit (po prawej stronie). -
0
Węzeł 3 kieruje wiadomość do Węzła 6 (wykorzystując swoje połączenie do 2 i mod 8 ), przesuwa bity w lewo i umieszcza jako najmłodszy bit (prawa strona).
Niestały stopień Koorde
D - wymiarowy de Bruijn można uogólnić na podstawę k , w którym to przypadku węzeł i jest połączony z węzłami k • i + j mod kd , 0 ≤ j < k . Średnica Θ ( log kn jest zredukowana do ) . Węzeł Koorde i utrzymuje wskaźniki do k kolejnych węzłów, zaczynając od poprzednika k • i mod kd . Każdy krok routingu de Bruijna może być emulowany z oczekiwaną stałą liczbą komunikatów, więc routing wykorzystuje O (log k n ) oczekiwanych przeskoków - Dla k = Θ(log n ) , otrzymujemy Θ (log n ) stopień i średnica.
Algorytm wyszukiwania
funkcja n . wyszukiwanie ( k , przesunięcie , i ) { jeśli k ∈ ( n , s ] powrót ( s ) inaczej jeśli i ∈ ( n , s ] powrót p . wyszukiwanie ( k , przesunięcie << 1 , i ∘ topBit ( _
zmiana )) ; w przeciwnym razie zwróć s . wyszukiwanie ( k , przesunięcie , i ) ; }
Pseudokod dla algorytmu wyszukiwania Koorde w węźle n
:
-
k
jest kluczem -
I
jest wyimaginowanym węzłem De Bruijna -
p
jest odniesieniem do poprzednika2n
-
s
jest odniesieniem do następcyn