Kademlia khơng lƣu danh sách các node gần với nó trong khơng gian I nhƣ successor list của hord. Tuy nhiên với mỗi cây con trong không gian I , node lƣu tới k contact thay vì một contact và gọi k contact này là k- bucket. Hình 2-7 minh họa các k-bucket của một node có I =00…0. [23]
2.1.2.2 Ánh xạ dữ liệu
Kademlia định nghĩa khái niệm khoảng cách giữa hai I là kết quả XOR của hai I ( d(x,y)=x+y ). Một item sẽ đƣợc lƣu trên node mà khoảng cách giữa I item và I node là nhỏ nhất.
2.1.2.3 Quá trình tìm kiếm
ể tăng cƣờng hiệu quả tìm kiếm, Kademlia thực hiện các lookup lặp đồng thời. Khi một node tìm kiếm một I , nó sẽ kiểm tra cây con nào chứa I và chuyển yêu cầu lookup đến node ngẫu nhiên đƣợc lựa chọn từ k-
bucket của cây con đó. Mỗi node lại trả về một k-bucket của cây con nhỏ hơn gần hơn với I . Từ số bucket đƣợc trả về, node lại chọn node ngẫu nhiên và lặp lại quá trình tƣơng tự cho đến khi I đƣợc tìm thấy.
Khi một node muốn chèn một item mới vào mạng, nó sẽ tìm kiếm và chèn vào k node có I gần với I của item nhất.
Nhƣ vậy trong điều kiện bình thƣờng độ phức tạp của quá trình tìm kiếm là O(log2(N)).
2.1.2.4 Quá trình ổn định mạng
Một node mới muốn join vào mạng trƣớc tiên nó sẽ tìm node gần nó nhất thơng qua bất kỳ contact ban đầu nào và khởi tạo bảng định tuyến của nó bằng cách u cầu node đó tìm kiếm các node trong các cây con khác nhau. Nếu một k-bucket đƣợc bổ sung quá nhiều node từ một cây con nào đó, quy tắc thay thế least-recently-used sẽ đƣợc áp dụng.
Kademlia cho phép một node có thể tự do rời khỏi mạng mà không cần phải thơng báo đến bất kì node nào khác. Việc duy trì bảng định tuyến sau khi node join/leave đƣợc thực hiện nhờ sử dụng lƣu lƣợng lookup, kỹ thuật này khác với kỹ thuật stabilization của hord. Theo mơ hình XOR metric, mọi node sẽ nhận đƣợc truy vấn từ node nằm trong bảng định tuyến của nó, do đó khi nhận đƣợc một thơng điệp từ một node nào đó trong cây con chính là một cập nhật k-bucket của cây con đó. ách tiếp cận này rõ ràng là tối thiểu hóa chi phí bảo trì.
Một nhiệm vụ bảo trì khác là khi nhận đƣợc truy vấn từ các cây con, Kademlia sẽ cập nhật lại độ trễ RTT của từng node trong các k-bucket của nó rồi sắp xếp chúng theo thứ tự tăng dần. iều này giúp cải thiện hiệu năng của hệ thống nhờ lựa chọn tìm kiếm với các node có độ trễ RTT nhỏ trƣớc trong một k-bucket. [23]
2.1.3 Giao thức Kelips
2.1.3.1 Overlay
Kelips băm khơng gian I vào k nhóm đánh số từ 0 đến k-1 với k=√
(N là số node trong mạng) sử dụng thuật tốn consistent hashing. Vị trí nhóm của một node bằng số dƣ của phép chia I của node cho k.