Một thuật toán flooding nữa cũng dựa vào thông tin 2-chặng, đó là thuật toán FWDP. Ưu điểm của thuật toán này như sau:
Thuật toán dựa vào bên gửi.
FWDP dùng thông tin 2-chặng nên giảm đáng kể số nút truyền lại ở chặng tiếp theo.
Thuật toán đơn giản, hiệu quả và dễ thực thi.
Theo thuật toán FWDP, nút gửi chọn ra các nút kề sẽ chuyển tiếp gói tin để hoàn thành vấn đề flooding trong mạng. Định danh của các nút kề đã chọn được ghi vào trong gói tin như là danh sách chuyển tiếp (forward list). Khi đó,
một nút kề được yêu cầu chuyển tiếp lại gói tin, nó sẽ xác định danh sách chuyển tiếp của mình. Quá trình này được lặp lại cho đến khi vấn đề flooding được hoàn thành.
Việc xác định danh sách chuyển tiếp được thực hiện như sau. Giả sử, nút vj nhận được gói tin từ nút vi và vj nằm trong danh sách chuyển tiếp. Nút vj phải xác định danh sách chuyển tiếp của mình sao cho tất cả các nút mạng nằm trong khoảng cách 2-chặng nút từ vj nhận được gói tin. Danh sách chuyển tiếp phải
34
được tối thiểu để giảm số nút truyền lại. Tập các nút mạng với khoảng cách tối đa 2-chặng từ vj là N(N(vj)). Các nút mạng vi, vj, N(vi) đã nhận được gói tin từ vi và N(vj) sẽ nhận được gói tin khi vj chuyển tiếp. Do đó, nút vj xác định danh sách chuyển tiếp của mình sao cho tất cả các nút mạng nằm trong tập hợp U = N(N(vj)) – N(vi) – N(vj) nhận được gói tin. Hình 3.6 biểu diễn tập U như thế. Đặt B(vi, vj) = N(vj) – N(vi), khi đó chọn một tập nút F = {f1, f2, …, fm} B(vi, vj) sao cho: ∪ fi∈F(N fi ∩ U)) = U
Hình 3.6: Phương pháp Dominant pruning.
Tìm ra một tập F nhỏ nhất như thế là một bài toán phủ tập hợp và nó là bài toán NP-đầy đủ [8]. Vì vậy, sử dụng thuật toán xấp xỉ để xác định tập chuyển tiếp.
Trong thuật toán FWDP, vấn đề quan trọng nhất là chọn danh sách các nút mạng chuyển tiếp F = {f1, f2, …, fm} B(vi, vj) cho chặng tiếp theo. Khi đó, cần phải có thuật toán chọn tập chuyển tiếp F. Ở đây, chúng tôi dùng thuật toán xấp xỉ greedy set cover [20] để chọn tập F. Thuật toán như sau:
Bước 1: Khởi tạo F = , Z = , K = {S1, S2, …, Sn} Trong đó, Sk = N(vk) U , với (1 ≤ k ≤ n); Bước 2: Chọn tập Sk K sao cho |Sk| là lớn nhất;
Bước 3: F = F {vk}, Z = Z Sk, K = K \ {Sk}, Sl = Sl \ Sk, với Sl K; Bước 4: Nếu Z = U thì dừng thuật toán;
Bước 5: Lặp lại bước 2.
Kết thúc thuật toán trên ta sẽ có được tập chuyển tiếp F. Tỷ lệ xấp xỉ của thuật toán này là ln|U| + 1. Trong đó, tập U được mô tả như trên.
35
Vấn đề quan trọng ở đây là cài đặt thuật toán FWDP để thử nghiệm. Chúng tôi đã tìm hiểu và cài đặt thuật toán này (chi tiết về cài đặt thuật toán này có thể xem ở phần phụ lục).
3.4 Tổng kết chương
Ở chương này, đầu tiên chúng tôi đã trình bày về thuật toán flooding thô cho mạng di động ad-hoc và chỉ ra rằng tại sao cần phải quan tâm đến các thuật toán flooding. Sau đó, chúng tôi trình bày bốn thuật toán flooding có cải tiến. Self-pruning là thuật toán đơn giản nhất, dựa vào bên nhận và dùng thông tin hàng xóm một chặng. Tiếp theo, trình bày thuật toán 1HI, là thuật toán flooding dựa vào bên gửi và cũng chỉ dùng thông tin hàng xóm 1-chặng. Một nút mạng trong thuật toán 1HI muốn chuyển tiếp thông báo thì cần phải chọn và tối ưu danh sách chuyển tiếp của mình bằng cách loại bỏ các nút mạng bị phủ sóng bởi bên gửi và các nút truyền lại là hàng xóm có định danh ID nhỏ hơn mình. Ưu điểm của thuật toán này là dễ thực thi và chi phí nhỏ.
Tiếp theo nữa, chúng tôi trình bày về thuật toán 2HBI. Đây là thuật toán flooding dựa vào bên gửi và dùng thông tin lùi 2-chặng nút. Tương tự như thuật toán 1HI, trong thuật toán 2HBI, một nút mạng chịu tránh nhiệm chuyển tiếp thông báo cũng thực hiện việc chọn và tối ưu danh sách chuyển tiếp. Vấn đề tối ưu danh sách chuyển tiếp trong thuật toán này dựa vào ba qui tắc tối ưu đã được đề cập. Ưu điểm chính của thuật toán này so với thuật toán 1HI là: Thứ nhất, thuật toán không đòi hỏi bất kỳ chi phí truyền thông phụ nào so với việc trao đổi các thông báo hello 1-chặng. Thứ hai, thuật toán có độ phức tạp thời gian nhỏ,
O(nlogn), với n là số nút mạng hàng xóm.
Phần cuối cùng của chương này, chúng tôi trình bày một cách chi tiết thuật toán FWDP. Đây cũng là thuật toán flooding dựa vào bên gửi và dùng thông tin 2-chặng nút. Chúng tôi đã nghiên cứu và cài đặt thuật toán này trên bộ mô phỏng mạng ns2, từ đó góp phần vào việc tìm ra hướng mới của định tuyến mạng ad-hoc, một trong những vấn đề quan trọng nhất của loại mạng này.
36
CHƢƠNG 4
MÔ PHỎNG VÀ ĐÁNH GIÁ
Bộ mô phỏng mạng nổi tiếng thường dùng để mô phỏng các giao thức định tuyến ad-hoc là network simulator 2 (phiên bản hiện nay là ns-2.34). Để mô phỏng môi trường vô tuyến không dây di động, chúng tôi đã dùng phần mở rộng về tính di động của ns được phát triển bởi dự án CMU Monarch tại trường đại học Carnegie Mellon.