Đối với quá trình chia sẻ thông tin giữa các nút ở các nhóm khác nhau, do xác suât để các nút ở các nhóm khác nhau là hàng xóm trực tiếp của nhau là thấp nên quá trình chia sẻ thông tin đƣợc thực hiện qua một số các hàng xóm trung gian. Với tính chất đƣờng kính trung bình của mạng thế giới nhỏ là nhỏ, thì số lƣợng hàng xóm trung gian yêu tham gia truyền tin cũng nhỏ vì vậy có thể hi vọng độ trễ truyền tin giữa các nút ở các nhóm khác nhau là không quá cao.
Chƣơng 3. GIẢI PHÁP XÂY DỰNG MẠNG THẾ GIỚI NHỎ NHỎ
3.1. Xây dựng mô hình lý thuyết
a) Giải thuật
Bước 1: Xây dựng mạng dạng lưới - xây dựng mạng, với các nút mạng được sắp xếp trên một vòng tròn, các nút mạng liên kết với K nút mạng kề nó theo chiều kim đồng hồ.
Bước 2: Ngẫu nhiên hóa tạo mạng thế giới nhỏ - duyệt các đỉnh của mạng dạng lưới theo chiều kim đồng hồ, thay thế một số cạnh đang có của đồ thị bằng các cạnh ngẫu nhiên mới, với xác suất để tạo các cặp cạnh ngẫu nhiên là p (p thuộc khoảng [0,1])
Việc thay đổi ngẫu nhiên hóa ở bƣớc 2, tạo ra các liên kết dài trong mạng. Số liên kết dài đƣợc tính theo công thức p * n *K.
p: là xác suất để tạo cạnh mới
n: là số đỉnh của đồ thị
K: là hàng xóm trong mạng dạng lƣới đã đƣa ra
Nếu ta thay mạng dạng lƣới với các nút mạng đƣợc sắp xếp trên vòng tròn thành mạng dạng lƣới với nút mạng sắp xếp trong không gian, 2 chiều, 3 chiều… thì mạng thu đƣợc sẽ là mạng thế giới nhỏ theo mô hình Kleinberg. Tức là giải thuật trên có thể sử dụng để xây dựng cả hai mô hình mạng thế giới nhỏ đã đƣợc đƣa ra chƣơng 2.
b) Đánh giá
Tính khả thi trong cài đặt thuật toán: Đây là phƣơng pháp đơn giản và cơ bản để xây dựng mô hình lý thuyết cho mạng thế giới nhỏ theo định nghĩa. Tuy nhiên, mô hình này còn nhiều hạn chế khi triển khai cài đặt thực tế. Việc thiết lập mạng dạng lƣới ở bƣớc 1 là khó khăn và có thể là không thiết lập đƣợc khi triển khai ứng dụng.
Tính đầy đủ của giải thuật: Mạng đƣợc xây dựng trên mô hình trên, tuy đã xây dựng đƣợc mạng thế giới nhỏ, nhƣng chƣa giải quyết đƣợc những vấn đề khi nút mạng tham gia, và rời bỏ mạng.
3.2. Giải thuật xây dựng mô hình thế giới nhỏ dựa vào xây dựng nhóm
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:
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
/*
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
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
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() {
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.
3.3. Giải thuật xây dựng mạng thế giới nhỏ dựa trên độ trễ liên kết của các nút mạng. các nút mạng.
a) Giải thuật
Nhằm xây dựng cấu trúc mạng có tính mở rộng, phân tán, và vẫn đảm bảo ổn định trƣớc các thay đổi của các nút tham gia vào mạng, [2],[3] đã đƣa ra giải pháp xây dựng lớp phủ mạng thế giới nhỏ theo phƣơng pháp bản thân các nút tham gia, tự đánh giá thông tin cục bộ mình có để thực hiện theo các thuật toán tham lam có tính ngẫu nhiên nhằm xây dựng mạng.
Với nhận xét về số lƣợng tƣơng quan các liên kết gần, và liên kết xa. Tác giả đề xuất giải pháp xây dựng mạng thế giới nhỏ, dựa trên tỉ lệ các hàng xóm gần các hàng xóm xa của mạng. Với hàng xóm gần là hàng xóm có khoảng cách (độ trễ truyền tin) nhỏ, và ngƣợc lại hàng xóm xa là hàng xóm có khoảng cách lớn.
Hình 19. Tương quan liên kết gần, liên kết xa
Dựa trên nhận định nếu mạng có nhiều hoặc chỉ có những liên kết xa thì mạng sẽ mang tính chất của mạng ngẫu nhiên. Trong trƣờng mạng chỉ có liên kết gần, thì mạng sẽ có tính chất của mạng dạng lƣới đơn giản. Trƣờng hợp số lƣợng liên kết xa chiếm tỉ lệ thấp so với tổng các kết nối của các đỉnh, thì mạng sẽ có tính chất của mạng thế giới nhỏ.
Với nhận định này, giải thuật đƣa ra phƣơng án: các nút sẽ tự xây dựng danh sách hàng xóm của mình theo tiêu chí có nhiều hàng xóm gần nhƣng vẫn đảm bảo có một tỷ lệ hàng xóm xa nhất định.
Để đảm bảo duy trì cấu trúc mạng thế giới nhỏ, thủ tục xây dựng hàng xóm đƣợc gọi khi máy tham gia vào mạng, và sau đó đƣợc lặp lại định kỳ sau từng khoảng thời gian nhỏ. Theo đó danh sách các hàng xóm đƣợc tự động cập nhật định kỳ, hay nói cách khác là tự bản thân các nút, luôn tự động hoàn thiện cấu trúc mạng thế giới nhỏ.
luaChonHangXomTot(n, s, l){n: nút mạng, s: liên kết ngắn, l: liên kết dài
N n.danhSachHangXom; //lấy danh sách hàng xóm
C N U {U v.danhSachHangXom};//lấy danh sách hàng xóm tiềm năng For each node v in C{
D[v] distance(n,v);//lấy khoảng cách giữa n và v }
Sort(D);//sắp xếp
N closest(D, s) U random(D,l) n.danhSachHangXom N; }
Chi tiết giải thuật:
Với cách xây dựng lớp mạng phủ nhƣ trên, các nút mạng ƣu tiên tạo nhiều hàng xóm gần theo tiêu chí độ trễ truyền tin thấp, do đó mật độ các nút có khoảng cách truyền tin thấp có liên kết lẫn nhau là cao. Tóm lại, phƣơng pháp trên sẽ giúp các nút mạng phân nhóm theo độ trễ truyền tin.
b) Đánh giá Ƣu điểm:
Dựa trên đặc điểm về tƣơng quan số lƣợng hàng xóm gần và hàng xóm xa, giải thuật đã xây dựng đƣợc mạng thế giới nhỏ hoàn toàn dựa trên thông tin cục bộ ở các nút mạng. Do danh sách hàng xóm đƣợc các nút mạng chủ động tham cập nhật nên tính ổn định của mạng cao, ngay cả khi có những nút mạng tham gia và rời bỏ mạng.
Toàn bộ thông tin về mạng đều đƣợc phân bổ đều cho các nút tham gia, nên mạng thực sự không có nút điều khiển trung tâm. Ngoài ra, do tính chất của mạng ngẫu nhiên, khi số cạnh đủ lớn thì mạng là liên thông nên thực chất toàn bộ các nút mạng đƣợc kết nối đến nhau.
Nhƣợc điểm:
Tuy có những ƣu điểm trên, nhƣng mạng thế giới nhỏ xây dựng theo tiêu chí ở trên cũng có những hạn chế nhất định.
Để chọn hàng xóm gần, cần thực hiện đo đạc đến một danh sách các nút đang ở trong mạng, do đó chi phí cho bƣớc đo đạc này là cao ảnh hƣởng đến tổng thể số lƣợng các gói tin dùng cho việc duy trì mạng.
Việc kết nạp hàng xóm hoàn toàn dựa trên thông tin một phía của nút tiến hành xây dựng hàng xóm, do vậy kết quả xây dựng hàng xóm của nút này có thể làm ảnh hƣởng đến danh sách hàng xóm của nút kia.
Ta hãy xét ví dụ sau:
Hình 20. Ví dụ về độ trễ truyền tin
Giả sử nút mạng A là nút mạng có hiệu năng cao. Có tốc độ truyền tin đến các hàng xóm là thấp nhƣ hình trên (nét đứt mô tả liên kết có độ trễ cao, nét liên mô tả liên
Dễ thấy, nêu theo thuật toán ở trên, thì nút B, C, D, E, F tất cả sẽ chọn A làm hàng xóm gần, tuy nhiên ở lƣợt chọn hàng xóm của mình nút A loại bỏ bớt một số liên kết chỉ giữ lại những liên kết tốt nhât cho nó chẳng hạn loại bỏ D, E, F, giữ lại B, C.
Quá trình lựa chọn hàng xóm thực hiện định kỳ liên tục, do đó dẫn đến những vòng lặp vô tận ở nút D, E, F thực hiện việc kết nạp A thành hàng xóm gần. Do vậy trong trƣờng hợp này việc xây dựng hàng xóm gần là không hiệu quả vừa làm tăng số lƣợng thông điệp tạo xóa kết nối vừa không hoàn thiện đƣợc cấu trúc của mạng.
Do tính phức tạp không đồng nhất của các nút tham gia vào mạng, nên xác suất để xuất hiện những nút có hiệu năng cao nhƣ A là cao do vậy cần thêm một cơ chế để khắc phục vấn đề này.
3.4. Đề xuất giải thuật cải tiến.
3.4.1. Giải thuật GoCast:
Gocast là phƣơng thức giao tiếp nhóm [6], nó hƣớng tới việc xây dựng các kết nối có độ trễ thấp, đồng thời đảm bảo bậc của các nút trong mạng là nhƣ nhau.
Gocast đƣợc xây dựng bằng cách duy trì cả kết nối gần và kết nối ngẫu nhiên trong mạng. Việc xây dựng kết nối dựa vào một dịch vụ gọi là dịch vụ lấy mẫu nút chọn ra các nút đang tồn tại trong mạng. Mỗi một nút mạng lựa chọn D hàng xóm trong đó bao gồm Crand hàng xóm ngẫu nhiên và Cnear hàng xóm gần. (D, Crand, Cnear là các tham số đầu vào của mạng). Sử dụng phƣơng thức TCP để duy trì danh sách hàng xóm và thực hiện truyền tin giữa các hàng xóm với nhau, sử dụng UDP cho việc truyền tin tới các nút còn lại.
Sau mỗi khoảng thời gian định kỳ, tất cả các nút mạng thực hiện cập nhật danh sách hàng xóm của mình. Đầu tiên là danh sách hàng xóm ngẫu nhiên, sau đó đến danh sách hàng xóm gần theo các bƣớc dƣới đây:
Duy trì danh sách hàng xóm ngẫu nhiên: Mỗi nút mạng p, thực hiện so sánh số
hàng xóm ngẫu nhiên hiện tại với Crand. Nếu giá trị này bằng Crand, thì không cần thực hiện thêm thao tác gì. Nếu số lƣợng hàng xóm ngẫu nhiên nhỏ hơn Crand, thì thực hiện chọn ngẫu nhiên một nút mạng chƣa là hàng xóm để thêm vào danh sách
hàng xóm của mình. Và cuối cùng nếu số lƣợng nút vƣợt quá Crand thì nút p sẽ lựa chọn một trong những hành động sau để điều chỉnh danh sách hàng xóm:
Nếu số hàng xóm ngẫu nhiên vƣợt quá Crand + 2, thì nút p sẽ chọn ngẫu nhiên hai hàng xóm q và r, và yêu cầu q và r thay thế kết nối với p thành kết nối với