Chƣơng trình mô phỏng đƣợc tác giả giải pháp D-AVTree xây dựng đƣợc viết bằng ngôn ngữ C++, sử dụng công cụ CodeBlock để lập trình. Chƣơng trình đƣợc viết để thực hiện các bƣớc tạo tài nguyên, tạo nút, tạo truy vấn, tạo mạng dựa trên các tài nguyên và nút ban đầu. Chƣơng trình sẽ thực hiện các giải pháp tìm kiếm thông tin trên mạng ngang hàng có cấu trúc CDS, INS/Twine, D-AVTree và các giải pháp cải tiến của CDS (truy vấn tối ƣu), của D-AVTree là D-AVTree+ với cơ chế câng bằng tải Load balance.
Chƣơng trình mô phỏng cho phép thay đổi các tham số đầu vào trong hàm constant.h để có thể mô phỏng các trƣờng hợp của các giải pháp: số tài nguyên, số nút, số truy vấn, tải của các nút, giá trị ngƣỡng, tham số của phân bố zipf, tham số của giải pháp D-AVTree (h, 1/alpha), …
Kết quả chạy của từng giải pháp trong các trƣờng hợp sẽ cho ra các kết quả lƣu trong logfile nhƣ: độ trễ truy vấn trung bình (hop count), tỷ lệ truy vấn thành công (query hit ratio), số bản sao tài nguyên trung bình của mỗi tài nguyên (number repliactions resources per name) và các file input với phân bố zipf, các file lƣu kết quả về số tài nguyên đƣợc lƣu trữ trên từng nút, số truy vấn từng nút phải thực hiện, số tài nguyên không đƣợc lƣu trữ,… phân biệt theo từng giải pháp, theo ngày tháng, theo các tham số đã đặt, phục vụ tốt cho việc tổng hợp, đánh giá kết quả cuả các giải pháp.
Cách thức mô phỏng
Để đánh giá các giải thuật, hệ thống sử dụng Chord nhƣ 1 thuật toán định tuyến DHT để tạo mạng ngang hàng có cấu trúc và thực hiện định tuyến thông điệp. Trong chƣơng trình mô phỏng của mỗi giải pháp, các nút đƣợc tạo ra và tham gia vào mạng ngang hàng dựa trên giao thức Chord. Định danh của mỗi nút đƣợc tạo ngẫu nhiên bằng hàm băm SHA-1, trừ giải pháp D-AVtree + sử dụng hàm ánh xạ 1 nhánh riêng.
Sau khi tạo đƣợc 1 tên tài nguyên, một nút đƣợc lựa chọn ngẫu nhiên để tạo khóa từ tên tài nguyên và gửi thông điệp đăng ký tới các nút phụ trách để lƣu trữ tên tài nguyên dựa trên thuật toán phân bổ ứng với mỗi giải pháp tìm kiếm. Sau khi phân bổ tất cả các tên tài nguyên lên mạng, các nút truy vấn đƣợc lựa chọn ngẫu nhiên để thực hiện truy vấn đa thuộc tính của tên tài nguyên dựa trên thuật toán truy vấn tƣơng ứng với từng giải pháp tìm kiếm.
Thuật toán phân bố tài nguyên trong giải pháp CSD đƣợc thay đổi để cải tiến tỷ lệ truy vấn thành công của CDS. Theo CSD ban đầu, nếu 1 tài nguyên mới đến mạng, nút phân bổ sẽ lựa chọn 1 nút từ vùng đã có hoặc vùng mở rộng (chẳng hạn tập nút đƣợc thêm vào sau) của ma trận LBM để lƣu trữ tên tài nguyên. Tuy nhiên, lƣợng tên tài nguyên lƣu trữ trong 1 nút trong vùng đã có của ma trận LBM có thể đạt đến giá trị ngƣỡng. Trong trƣờng hợp này, thông tin về tài nguyên mới phân bổ trên nút bị loại bỏ (do vƣợt ngƣỡng). Do đó, ta cải tiến giải pháp để nút phân bổ chỉ lựa chọn nút trong khoảng mở rộng của ma trận LBM để lƣu trữ thông tin tài nguyên. Khi đó, ta mô phỏng thuật toán truy vấn đơn giản (tức là lựa chọn ngẫu nhiên partition của ma trận LBM để truy vấn) và thuật toán truy vấn two - pass (ví dụ lựa chọn ma trận LBM có kích thƣớc của partition là nhỏ nhất để truy vấn). Trong giải pháp truy vấn two-pass, một nút truy vấn phải truy vấn thông tin về ma trận LBM đáp ứng tất cả các cặp AV trong tên truy vấn để lựa cọn partition nhỏ nhất. Ta sẽ giảm đƣợc số nút bị truy vấn bởi thông tin truy vấn về ma trận LBM mà không đáp ứng tất cả các cặp AV, nhƣng chỉ đáp ứng cặp AV trên nút lá của cây truy vấn AV. Đây là lý do mà khả năng cặp AV ở tầng thấp xuất hiện trong tên tài nguyên thấp hơn các cặp AV ở tầng cao hơn.
Hiệu năng của các giải pháp đƣợc đánh giá dựa trên 3 tiêu chí: Hiệu quả của hệ thống, Khả năng cân bằng tải và Tỷ lệ truy vấn thành công. Trong phạm vi luận văn, học viên sẽ thiết lập lại tham số luật phân bổ zipf thể hiện sử phân bổ của các cặp AV trong các tên tài nguyên để mô phỏng, đánh giá hiệu năng của 4 giải pháp tìm kiếm thông tin đã tìm hiểu ở trên với 3 tiêu chí đánh giá đã đƣa ra.