a) Giải thuật
Thay vì giải thuật thiết lập mạng thế giới nhỏ dựa trên mô hình lý thuyết nhƣ đã trình bày ở trên, một số nghiên cứu [7] đề xuất giải thuật xây dựng mạng dựa theo tính chất phân nhóm của mạng. Với các ƣu điểm nhƣ đề xuất đƣợc giải thuật chi tiết về việc tham gia, và rời bỏ mạng của các nút, dễ dàng mở rộng với số lƣợng nút mạng lớn, giải thuật đã xây dựng đƣợc phƣơng pháp cài đặt mạng thế giới nhỏ hiệu quả.
Đầu tiên, tác giả trình bày một số tham số liên quan đến tính phân nhóm. Sau đó, mô tả chi tiết thuật toán xây dựng mạng dựa trên các tính chất phân nhóm đó.
Các điều kiện về nhóm:
Kích thƣớc nhóm- G: Số lƣợng tối đa các nút mạng trong nhóm.
Đƣờng kính nhóm - D: Khoảng cách tối đa giữa các nút trong nhóm
Số lƣợng liên kết xa - k: Số lƣợng các liên kết đến các hàng xóm xa.
Tiến hành chia các nút mạng thành hai loại, các nút thành viên của nhóm (inner node) và các nút trƣởng nhóm (head node). Mỗi một nhóm có một nút trƣởng nhóm. Chia các liên kết thành hai loại, liên kết gần và liên kết xa. Các liên kết xa là liên kết của các nút mạng trong các nhóm khác nhau, các liên kết gần, là liên kết giữa các nút mạng trong một nhóm.
Nếu gọi m là số lƣợng trung bình các nhóm trong mạng, và n là số lƣợng nút trong mạng thì số lƣợng cạnh mong đợi để thiết lập cho các nút là: (m*k + G *n) / n
Để duy xây dựng và duy trì mạng, các nút mạng thực hiện theo các phƣơng thức bên dƣới:
39
Nếu một nút, muốn tham gia mạng nó sử dụng một hàm băm để lấy khóa h(i)
sau đó liên kết với nút ngay trƣớc nó - nút a, và nút ngay sau nó - nút b trong mạng. Nút ngay trƣớc nút i là nút có khóa h(a) lớn nhất thỏa mãn h(a)<h(i). Nút ngay sau nút
i là nút có khóa h(b) nhỏ nhất thỏa mãn h(b)>h(i). Xác định khoảng cách d1, d2 đến các nhóm:
d1= h(i) – h(a)
d2= h(b) – h(i)
Để tham gia đƣợc vào nhóm chứa nút a hoặc nút b thì điều kiện là khoảng cách d1, d2 tƣơng ứng phải nhỏ hơn kích thƣớc nhóm D, và nhóm cần tham gia có số lƣợng nút nhỏ hơn G.
Nếu nút i không thể tham gia vào hai nhóm chứa a, hoặc chứa b, thì nút i sẽ tạo nhóm mới đồng thời làm trƣởng nhóm nhóm đó.
Nếu i có thể giam gia vào nhóm, Trong trƣờng hợp có thể tham gia cả hai nhóm, thì tùy theo độ dài d1, d2, i sẽ tham gia vào nhóm có khoảng cách nhỏ hơn.
Nếu nút i tham gia vào mạng, chỉ là nút thành viên, nó sẽ tạo liên kết đến các nút trong nhóm nó. Trong trƣờng hợp nút là trƣởng nhóm, nó cũng sẽ tạo liên kết đến nhóm nó đồng thời tạo thêm k liên kết đến các nhóm khác.
Cài đặt chi tiết
$.join cluster{ /* For each node */ int predId; // predecessor Id int succId; // successor Id
double d1; // distance for predecessor double d2; // distance for successor
int g1; // group size of predecessor cluster int g2; // group size of successor cluster
40
/*
Retrieve underlying topology information */
Join underlying DHT network;
/*
Prepare for choosing the right cluster to join */
Retrieve predecessor Id and successor Id; Computer the distances d1 and d2;
Retrieve cluster group size from predecessor and successor clusters;
/*
Decision making
- to choose a cluster to join */
If (d1 > D and d2 > D) i forms a new group else if (d1 < D and d2 > D) i joins pred group as a member
if g1 < G otherwise forms a new one; else if (d1 > D and d2 < D)
i joins succ group as head if g2 <Gotherwise forms a new one; else
41
i chooses a smaller one to join /* Cluster information exchange */ If (i to be a head)
i contact the old head of retrieved Id; Retrieve the whole membership list; Regenerate long links if it is necessary; else if (i to be a member) {
i sends a message to the target cluster head; i retrieve part of the membership list;
} }
Rời khỏi mạng
Khi một nút rời khỏi mạng, nó thông báo đến các hàng xóm xung quanh. Các hàng xóm, sau khi nhận đƣợc thông tin, sẽ thực hiện các thay đổi liên kết tùy theo vai trò của nút rời khỏi mạng.
Nếu nhận đƣợc thông báo từ hàng xóm kết nối bởi một liên kết xa, nút mạng sẽ đóng kết nối, hủy hàng xóm thông báo đồng thời thiết lập một liên kết xa mới đến một nhóm khác.
Nếu nhận đƣợc thông báo từ hàng xóm gần giữ vai trò thành viên nhóm, thì nút mạng sẽ đóng kết nối, và giảm kích thƣớc nhóm của nhóm nó xuống 1.
Nếu nhận đƣợc thông báo từ hàng xóm gần giữ vai trò là nút trƣởng nhóm, thì nút mạng sẽ đóng kết nối, nút mạng sẽ trở thành trƣởng nhóm, nếu nó là nút gần trƣởng nhóm cũ nhất. Trƣởng nhóm mới sẽ tạo danh sách k các liên kết xa để đóng vai trò quản lý kết nối của nhóm.
Cài đặt chi tiết
42
n.leave cluster() {/* For each node */
Prepare the close connection message (n.nodeId, n.headId);
Send the close connection message to all its neighbors;
/* For cluster head */
n.close connection receive() { while(true) {
Wait until a close connection message sent by node $’; If ($and $’ are in the same cluster) {
Remove the cluster link; Group size reduces by 1;
Update information for all members; else if (a node in a different cluster) {
Remove the long link; Regenerate one long link; }
} }
/* For cluster member */ n.close connection receive() {
43
Wait until a close connection message;
Close the connection if the node in the same cluster; }
}
b) Đánh giá
Cách xây dựng mạng dựa trên đặc tính về nhóm cục bộ đã đƣa đƣợc phƣơng pháp xây dựng, và duy trì mô hình mạng thế giới nhỏ với tính phân nhóm cao.
Để duy trì cấu trúc của mạng thế giới nhỏ, khi một nút rời khỏi mạng, nó cần thông báo với các nút khác để các nút khác tái tạo lại trạng thái mạng. Vấn đề trên là chƣa phù hợp vì thực tế, do tính phức tạp của các nút tham gia, một nút hoàn toàn có thể dừng liên kết, mất kết nối với các nút khác. Trong các trƣờng hợp đó, thì cấu trúc của mạng bị ảnh hƣởng nghiêm trọng.
Để tăng tính ổn định của mạng, đã có các phƣơng pháp xây dựng nhằm giúp các nút mạng thƣờng xuyên tự động cập nhật duy trì danh sách hàng xóm của mình.