Cả hai kiến trúc SOS và WebSOS đều sử dụng một kĩ thuật đó là định tuyến theo cấu trúc, hay bảng băm phân tán DHT – Distributed Hash Tables, qua việc xây dựng một mạng bao phủ có ứng dụng giao thức Chord, vì vậy trước tiên chúng ta sẽ tìm hiểu về giao thức Chord này.
Giao thức Chord là một giao thức tìm kiếm phân tán được đề xuất bởi Stoica và các đồng nghiệp [14] tại hội nghị ACM Sigcomm diễn ra vào 8/2001 qua bài báo
“Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications”. Chord cung cấp hỗ trợ cho một hoạt động duy nhất: cho một giá trị key, nó sẽ ánh xạ giá trị key đó tới một node trong mạng. Ở đây việc ánh xạ giá trị key đến node trong mạng được thực hiện bởi một hàm băm nhất quán, băm giá trị key để cho ra một giá trị băm, chính giá trị
băm này sẽ tương ứng với node tương ứng trong mạng. Từ đó việc lưu trữ và tìm kiếm dữ liệu trong mạng sẽ dễ dàng được thực hiện thông qua việc liên kết mỗi key với các đơn vị dữ liệu để lưu trữ cặp key/ dữ liệu đó tại node mà key ánh xạ đến.
Trong mạng Chord, mỗi node được cấp phát một định danh ID thông qua một hàm băm nhất quán trong khoảng [0, 2m] với một giá trị m định trước. Các node trong mạng bao phủ được sắp xếp thứ tự theo định danh của chúng, và được tổ chức theo vòng, thuận chiều kim đồng hồ.
Hình 1: Định tuyến theo Chord [14].
Mỗi node sẽ duy trì một bảng gọi là finger table, chứa đựng định danh của m node trong mạng bao phủ. Giá trị ở hàng thứ i trong bảng finger table của node có định danh x, là node có định danh nhỏ nhất mà lớn hơn hoặc bằng x + 2i-1. ( (mod 2m)), như hình. Khi node x nhận được gói tin có đích là node định danh y, nó gửi gói tin đến node trong mạng theo bảng finger table của nó sao cho node này có định danh lớn nhất mà còn nhỏ hơn y. Như ở trên hình, nếu node có định danh 7 nhận được gói tin mà đích đến có định danh là 18, gói tin sẽ được định tuyến từ node 7 đến node 16, sau đó đến node 17. Khi gói tin đến node 17, node tiếp theo trong mạng bao phủ là node 22, vì vậy node 17 biết
rằng node 22 là node chịu trách nhiệm cho định danh 20. Như vậy thuật toán định tuyến của Chord sẽ khiến gói tin được chuyển trong mạng đến với node đích qua khoảng O(m) node.
Chord chính là một giải pháp tốt cho rất nhiều vấn đề: cân bằng tải, phân tán, linh hoạt, có khả năng mở rộng. Nó cũng có thể xử lý tốt khi các node tham gia và rời khỏi mạng một cách thường xuyên.