Thuật toán cập nhật đường

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu phương pháp cải tiến giao thức định tuyến AOMDV nhằm đảm bảo chất lượng dịch vụ cho mạng manet​ (Trang 26 - 28)

Xét một nút đích d và một nút i. Bất cứ khi nào nút i cập nhật số thứ tự đích cho d, số chặng được quảng bá tương ứng sẽ được khởi tạo. Cho trước một số thứ tự đích, đặt ℎ𝑜𝑝_𝑐𝑜𝑢𝑛𝑡𝑖𝑘𝑑 là số chặng của con đường thứ k trong entry bảng định tuyến cho đích d tại nút i. Như vậy là

(𝑛𝑒𝑥𝑡_ℎ𝑜𝑝𝑖𝑘𝑑, 𝑙𝑎𝑠𝑡_ℎ𝑜𝑝𝑖𝑘𝑑, ℎ𝑜𝑝_𝑐𝑜𝑢𝑛𝑡𝑖𝑘𝑑) ∈ 𝑟𝑜𝑢𝑡𝑒_𝑙𝑖𝑠𝑡𝑖𝑑. Khi nút i chuẩn bị gửi

quảng bá đường cho đích d, nó sẽ cập nhật số chặng được quảng bá như sau:

𝑎𝑑𝑣𝑒𝑟𝑡𝑖𝑠𝑒𝑑_ℎ𝑜𝑝_𝑐𝑜𝑢𝑛𝑡𝑖𝑘 = {max⁡{ℎ𝑜𝑝_𝑐𝑜𝑢𝑛𝑡𝑖𝑘𝑑}, 𝑖 ≠ 𝑑

0, i = d

Bất cứ khi nào một nút nhận được một quảng bá đường, nó sẽ áp dụng các quy tắc cập nhật đường của giao thức AOMDV được liệt kê trong Thuật toán 1. Trong thuật toán này, nút i gọi áp dụng các quy tắc này mỗi khi nó nhận được một quảng bá đường cho nút đích d từ một nút láng giềng j. Các biến

𝑠𝑒q_num𝑖𝑑, 𝑎𝑑𝑣𝑒𝑟𝑡𝑖𝑠𝑒𝑑_ℎ𝑜𝑝_𝑐𝑜𝑢𝑛𝑡𝑖𝑑, và 𝑟𝑜𝑢𝑡𝑒_𝑙𝑖𝑠𝑡𝑖𝑑 tương ứng là chặng kế

tiếp, số chặng được quảng bá và danh sách đường cho đích d tại nút i (i # d). Các biến 𝑛𝑒𝑥𝑡_ℎ𝑜𝑝𝑖𝑘𝑑 và 𝑙𝑎𝑠𝑡_ℎ𝑜𝑝𝑖𝑘𝑑 biểu diễn giá trị tương ứng của chặng kế tiếp và chặng cuối cùng của con đường thứ k trong entry bảng định tuyến cho

destination sequence number hop count next hop timeout

(a) AODV

destination sequence number advertised hop count route list

next_hop1 last_hop1 hop_count1 timeout1

next_hop2 last_hop2 hop_count2 timeout2

. . . . . . . . (b) AOMDV

đích d tại nút i. Các dòng (1) và (10) trong Thuật toán 1 đảm bảo tính không lặp vòng, trong khi các dòng (12) và (15) kiểm tra tính tách biệt theo liên kết.

1: if (𝑠𝑒𝑞_𝑛𝑢𝑚𝑖𝑑 < 𝑠𝑒𝑞_𝑛𝑢𝑚𝑖𝑑) then /* áp dụng quy tắc số thứ tự */ 2: 𝑠𝑒𝑞_𝑛𝑢𝑚𝑖𝑑 ∶= 𝑠𝑒𝑞_𝑛𝑢𝑚𝑖𝑑; 3: 𝑎𝑑𝑣𝑒𝑟𝑡𝑖𝑠𝑒𝑑_ℎ𝑜𝑝_𝑐𝑜𝑢𝑛𝑡𝑖𝑑 ∶=; 4: 𝑟𝑜𝑢𝑡𝑒_𝑙𝑖𝑠𝑡𝑖𝑑 ∶= 𝑁𝑈𝐿𝐿; 5: if (𝑗 = 𝑑) then /*nút láng giềng⁡là⁡đích*/ 6: insert (𝑗, 𝑖, 1) into 𝑟𝑜𝑢𝑡𝑒_𝑙𝑖𝑠𝑡𝑖𝑑; 7: else 8: insert (𝑗, 𝑙𝑎𝑠𝑡_ℎ𝑜𝑝𝑗𝑘𝑑, 𝑎𝑑𝑣𝑒𝑟𝑡𝑖𝑠𝑒𝑑_ℎ𝑜𝑝_𝑐𝑜𝑢𝑛𝑡𝑗𝑑+ 1) into 𝑟𝑜𝑢𝑡𝑒_𝑙𝑖𝑠𝑡𝑖𝑑; 9: end if

10: else if (𝑠𝑒q_num𝑖𝑑 = 𝑠𝑒𝑞_𝑛𝑢𝑚𝑗𝑑) and (𝑎𝑑𝑣𝑒𝑟𝑡𝑖𝑠𝑒𝑑_ℎ𝑜𝑝_𝑐𝑜𝑢𝑛𝑡𝑖𝑑 > 𝑎𝑑𝑣𝑒𝑟𝑡𝑖𝑠𝑒𝑑_ℎ𝑜𝑝_𝑐𝑜𝑢𝑛𝑡𝑗𝑑)⁡ then /* áp dụng quy tắc số thứ tự */

11: if (𝑗 = 𝑑) then /*nút láng giềng⁡là⁡đích*/

12: if ((∄𝑘1 ∶ (𝑛𝑒𝑥𝑡_ℎ𝑜𝑝𝑖𝑘𝑑1 = 𝑗))⁡and (∄𝑘2 ∶ (𝑙𝑎𝑠𝑡_ℎ𝑜𝑝𝑖𝑘𝑑2 = 𝑖))) then /*⁡đảm bảo tính duy nhất của chặng kế tiếp và chặng cuối cùng */

13 insert (𝑗, 𝑖, 1) into 𝑟𝑜𝑢𝑡𝑒_𝑙𝑖𝑠𝑡𝑖𝑑; 14: end if

15: else if ((∄𝑘3 ∶ (𝑛𝑒𝑥𝑡_ℎ𝑜𝑝𝑖𝑘𝑑3 = 𝑗))⁡and (∄𝑘4 ∶ (𝑙𝑎𝑠𝑡_ℎ𝑜𝑝𝑖𝑘𝑑4 = 𝑙𝑎𝑠𝑡_ℎ𝑜𝑝𝑗𝑘𝑑 ))) then /*⁡đảm bảo tính duy nhất của chặng kế tiếp và chặng cuối cùng */

16: insert (𝑗, 𝑙𝑎𝑠𝑡_ℎ𝑜𝑝𝑗𝑘𝑑, 𝑎𝑑𝑣𝑒𝑟𝑡𝑖𝑠𝑒𝑑_ℎ𝑜𝑝_𝑐𝑜𝑢𝑛𝑡𝑗𝑑) into 𝑟𝑜𝑢𝑡𝑒_𝑙𝑖𝑠𝑡𝑖𝑑; 17: end if

18: end if

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu phương pháp cải tiến giao thức định tuyến AOMDV nhằm đảm bảo chất lượng dịch vụ cho mạng manet​ (Trang 26 - 28)

Tải bản đầy đủ (PDF)

(71 trang)