70
Đoạn chương trình mô tả cấu trúc của tác tử BA viết trên C++, thực thi trong OMNeT++ như sau:
3.3 Đề xuất các thuật toán cải tiến giao thức định tuyến DSR, AODV 3.3.1 Thuật toán MAR-DSR 3.3.1 Thuật toán MAR-DSR
3.3.1.1 Ý tƣởng của thuật toán
Như đã phân tích ở mục 3.2, quá trình định tuyến của thuật toán DSR được chia thành hai giai đoạn: khám phá lộ trình định tuyến và duy trì lộ trình. Cơ sở để khám phá và lựa chọn lộ trình là dựa vào thông tin về tình trạng kết nối của các nút. Để nâng cao hiệu quả của giao thức định tuyến DSR, chúng ta có thể sử dụng thêm thông tin trạng thái nút mạng như mật độ lưu lượng đi qua nút đó, trạng thái tắc nghẽn của nút.
Trong phần này tác giả tập trung nghiên cứu tích hợp tác tử vào điều khiển định tuyến thuật toán DSR. Thuật toán cải tiến có tên là MAR-DSR sử dụng tác tử và được thực hiện theo nguyên l như trình bày ở mục 3.2.2, với mô hình tác tử hoạt động theo Hình 3.8.
Những thay đổi, cải tiến này đều thực hiện dựa trên nguyên tắc giữ các ưu điểm của DSR và điều chỉnh theo hướng cải tiến tăng khả năng chọn lựa, phán đoán để đảm bảo
71
chọn được các đường đi phù hợp; giảm xác suất tắc nghẽn để cân bằng băng thông của toàn mạng.
3.3.1.2 Mô tả thuật toán
Thuật toán MAR-DSR cũng được thực hiện qua 2 giai đoạn là khám phá lộ trình và duy trì lộ trình như các thuật toán DSR. Tuy nhiên, mỗi giai đoạn đều được điều khiển bởi tác tử chứa thông tin trạng thái mỗi nút mạng để chọn đường đi theo giá trị của hàm trọng số.
Khi nút nguồn muốn gửi dữ liệu đến một nút đích nào đó, đầu tiên nó phải xem trong bộ nhớ đệm định tuyến đã có lộ trình cần tìm hay chưa. Nếu không tìm thấy đường đi đến nút đích, nó bắt đầu thực hiện khám phá lộ trình. Nếu lộ trình đã tìm thấy trong bộ nhớ đệm nhưng mức độ tắc nghẽn tại các nút trung gian vượt quá ngưỡng cho phép thì cũng thì cũng phải thực hiện khám phá lại lộ trình.
Giai đoạn đầu của khám phá định tuyến được bắt đầu bằng cách gửi một số gói yêu cầu RREQ đến các nút láng giềng, công việc này đồng thời cũng thực hiện bằng việc phát quảng bá các tác tử FA.
Cơ chế lựa chọn lộ trình: Để lựa chọn lộ trình phù hợp, tác giả thiết lập một hàm trọng số cho các kết nối dựa trên 2 tham số xác suất tắc nghẽn tại mỗi nút và khoảng cách giới hạn về công suất thu (theo mức độ của tín hiệu hay còn gọi là “khoảng cách” giữ các nút) hàm trọng số được thiết lập theo (3.6). Trong đó, Lsd là khoảng cách giới hạn về công suất thu, nghĩa là khoảng cách giới hạn để nút nguồn s nhận được tín hiệu của nút đích d. CPd là xác suất nghẽn tại nút d được xác định như sau:
(3.7)
Trong đó là tổng số gói nghẽn tại nút d, là tổng số gói đi qua nút d.
Thuật toán MAR-DSR sẽ lựa chọn lộ trình phù hợp sao cho trọng số Wsd nhỏ nhất. Ta thấy rằng, với trọng số xác suất tắc nghẽn CPd được thiết lập như hàm (3.7), trong đó CPd được tính bằng tổng số gói tin nghẽn tại nút trên tổng số gói đi qua nút đó, khi mức độ tắc nghẽn của nút lớn thì trọng số của kết nối tăng theo hàm (3.6), do vậy xác suất lựa chọn lộ trình đi qua nút đó giảm, như vậy thuật toán sẽ lựa chọn lộ trình phù hợp hơn với mức độ tắc nghẽn nhỏ hơn.
Với mục tiêu sử dụng hàm (3.6) để thay đổi trọng số Wsd từ nút s đến mút d theo
khoảng cách Lsd và mức độ tắc nghẽn CPd của nút d. Trong đó, CPd được tính toán bởi tác tử BA. Giả thiết ta thiết lập giá trị của Lsd=150, kết quả thay đổi của giá trị trọng số Wsd theo Lsd và CPd như ở Hình 3.11.
72
Hình 3.11 Sự thay đổi của Wsd theo mức độ tắc nghẽn CPd của nút
Từ kết quả trên Hình 3.11 ta thấy rằng, khi mức độ tắc nghẽn của nút (CPd) nhỏ hơn 0,75 thì trọng số giữa các nút phụ thuộc chủ yếu vào khoảng cách giữa các nút đó. Còn khi CPd lớn hơn 0,75 thì trọng số Wsd sẽ tăng lên rất lớn, do vậy nút sẽ bị loại bỏ ra khỏi lộ trình để truyền dữ liệu. Vì vậy, trong mô hình đề xuất này, ngưỡng CPd được thiết lập là 0,75, điều này cũng phù hợp với việc chọn giá trị ngưỡng của CPd ở mục 3.2.1.
Chi tiết về các bước của thuật toán khám phá lộ trình được mô tả như sau:
Bƣớc 1: Phân tích trường Request ID, kiểm tra xem đã nhận gói RREQ hay chưa?
Nếu gói đã được nhận thì nó sẽ loại bỏ gói đó và dừng. Ngược lại thì qua bước 2; Bƣớc 2: Kiểm tra trong Route Cache của nó có đường đi đến nút đích mà còn hiệu
lực hay không? Nếu có đường đi đến đích thì nó sẽ phản hồi lại cho nút nguồn bằng gói RREP (đồng thời gửi tác tử BA kèm theo để thực hiện lấy thông tin trạng thái) chứa thông tin về đường đi đến đích và kết thúc tiến trình khám phá lộ trình. Ngược lại thì qua bước 3;
Bƣớc 3: Kiểm tra giá trị CP tại vị trí láng giềng kế tiếp; tính toán giá trị CP tại nút
kế tiếp theo các đường đi được cập nhật (BA thực hiện tính toán); Nếu gặp tình trạng không kết nối; trở lại bước 1; ngược lại thì qua bước 4;
Bƣớc 4: Kiểm tra địa chỉ đích cần tìm có trùng với địa chỉ của nó hay không? Nếu
trùng thì nó gửi lại cho nút nguồn gói RREP bằng cách thực hiện bởi gói BA kèm theo chứa thông tin về đường đi (vào Route Cache) đến đích và kết thúc tiến trình. Ngược lại thì nó sẽ phát quảng bá gói RREQ đến các nút láng giềng của nó. Các nút láng giềng sau khi nhận gói RREQ sẽ thực hiện việc kiểm tra thông tin. Xác
73
định giá trị của CP tại nút đang xử lý, cập nhật CP mới và lưu trong bộ đệm Route cache.
Như vậy, việc chọn lựa lộ trình dựa vào xác suất tắc nghẽn và khoảng cách giới hạn (bước 2) thông qua giá trị kết quả của trọng số Wsd. Đối với thuật toán cải tiến MAR-DSR, các gói RREP và RREQ được giữ nguyên như trong thuật toán DSR.
Để thấy rõ việc cập nhật trọng số của các kết nối theo hàm (3.6) được thực hiện bởi tác tử FA và BA. Tác giả xét một ví dụ như ở Hình 3.12, giả sử có một yêu cầu khám phá lộ trình để truyền dữ liệu từ nút 1 đến nút 6, và đây là yêu cầu thứ 50. Tình trạng tắc nghẽn của các nút ở thời điểm hiện tại là các giá trị được ghi tại các nút mạng. Cơ chế cập nhật thông tin trạng thái của các nút mạng bằng tác tử được thực hiện như sau:
- Đầu tiên, nút nguồn (nút 1) gửi các tác tử FA đến các nút láng giềng của nó với cấu trúc FA(50, 1, 6), nghĩa là khám phá lộ trình cho yêu cầu thứ 50 từ nút 1 đến nút 6;
- Các nút láng giềng sau khi nhận được tác tử FA sẽ phân tích thông tin để xem có phải là nút đích hay không, nếu không, tiếp tục gửi FA đến các nút láng giềng tiếp theo. Việc này lặp lại cho đến khi gửi đến nút đích (Hình 3.12a);
- Sau khi tác tử FA được gửi đến đích, nút đích sẽ thực hiện gửi về nút nguồn các tác tử BA theo các lộ trình đã chọn để cập nhật thông tin về tình trạng tắc nghẽn tại mỗi nút thông qua trọng số CP tại thời điểm hiện tại (Hình 3.12b);
- Dựa trên kết quả tính toán các trọng số CP của tác tử BA, thuật toán MAR-DSR sẽ thực hiện tính toán lại trọng số của các kết nối theo hàm (3.6), sau đó lựa chọn lộ trình có trọng số Wsd nhỏ nhất.
74
(b) Gửi tác tử BA kèm theo gói RREP
Hình 3.12. Minh họa nguyên lý hoạt động của thuật toán MAR-DSR
Trong trường hợp như ở Hình 3.12, trọng số của các kết nối sẽ được cập nhật lại sau khi nút nguồn nhận được tác tử BA như sau:
Bảng 3.2. Giá trị trọng số của các kết nối được cập nhật theo tác tử BA
Lộ trình Trọng số các kết nối theo hàm (3.6) Tổng trọng số 1 2 6 1 2 2 6 823,62 315,62 508,00 1 2 3 6 1 2 2 3 3 6 1873,62 315,62 1400,00 158,00 1 5 3 6 1 5 5 3 3 6 1609,95 251,95 1200,00 158,00 1 4 7 6 1 4 4 7 7 6 1015,55 354,63 402,92 258,00
Từ kết quả trên, lộ trình được chọn là 1 2 6.
Ta thấy rằng, nếu không sử dụng tác tử BA để tính toán trọng số Wsd để cập nhật thông tin về trạng thái tắc nghẽn tại các nút thì lộ trình được chọn sẽ là 1 5 3 6 (vì khoảng cách nhỏ nhất). Nếu chọn lộ trình này thì khả năng nghẽn tại nút 3 là rất lớn. Với
75
thuật toán MAR-DSR, chọn lộ trình phù hợp là 1 2 6 sẽ hạn chế được xác suất gói tin rơi.
Trong thuật toán MAR-DSR ở trên, cơ chế duy trì đường đi được thực hiện tương tự như DSR và dựa trên thông tin xác suất tắc nghẽn (CP) của mỗi nút. Nếu CP vượt quá giới hạn cho phép thì thực hiện lại quá trình khám phá lộ trình, như trình bày ở phần trên ngưỡng CP trong trường hợp này được chọn là 0,75.
3.3.1.3 Mô phỏng và đánh giá kết quả Kịch bản mô phỏng Kịch bản mô phỏng
Để đánh giá hiệu quả thực thi của các thuật toán MAR-DSR tác giả đã thực hiện mô phỏng trên OMNeT++ [8], so sánh với các thuật toán DSR. Mô phỏng được phát triển từ mô đun adHocSim [65] đã được triển khai cho việc mô phỏng giao thức định tuyến cho mạng MANET. Các tham số mô phỏng được thiết lập như mục 3.1.4.1. Giao diện chính của chương trình mô phỏng như phụ lục 1, tác giả mô phỏng trên tô pô có 50 nút.
Cấu trúc nút mạng được thiết kế như Hình 3.13 với chức năng của các khối được mô tả như sau:
- Khối App: Phát sinh các ứng dụng, tức là các yêu cầu định tuyến lưu lượng qua mạng; - Khối Router: Thực thi thuật toán định tuyến MAR-DSR;
- Khối Mac: Thực hiện đóng gói, truyền lưu lượng qua các lộ trình tìm được; - Khối Physic: Xác định tô pô mạng, các kết nối vật lý giữa các nút láng giềng; - Khối Mobility: Điều khiển quá trình di chuyển của các nút;
- Khối MobileAgent: Phát sinh các tác tử, cập nhật thông tin trạng thái mạng và điều khiển quá trình truyền/nhận tác tử trong mạng. Khối này thực hiện các tác tử FA, BA trong thuật toán đề xuất.
76
Kết quả mô phỏng và đánh giá
Trong Hình 3.14, tác giả so sánh kết quả mô phỏng thuật toán MAR-DSR với thuật toán DSR. Ta thấy rằng, khi mật độ lưu lượng nhỏ, thuật toán MAR-DSR chưa có hiệu quả. Nguyên nhân là do trong trường hợp này xác suất tắc nghẽn (CP) tại các nút nhỏ, nên trọng số của các kết nối như đã thiết lập ở hàm (3.6) không thay đổi nhiều. Khi mật độ lưu lượng trong khoảng từ 35% đến 70% thì thuật toán MAR-DSR thực thi hiệu quả hơn thuật toán DSR về mặt xác suất gói tin rơi. Trong trường hợp mật độ lưu lượng lớn (> 75%) thì xác suất gói tin rơi bắt đầu tăng lên do đó hiệu quả của thuật toán MAR-DSR cũng giảm đi do CP vượt giá trị ngưỡng. Tuy nhiên, MAR-DSR vẫn có hiệu quả so với DSR nếu xét trên tổng gói tin thành công như kết quả được mô tả ở Hình 3.15.
Hình 3.14. Xác suất gói tin rơi của thuật toán DSR và MAR-DSR theo mật độ lưu lượng
Hình 3.15. Tỷ lệ phát gói tin thành công theo sự thay đổi của mật độ lưu lượng
Bảng 3.3. Tỷ lệ phát gói tin thành công trung bình trên mạng công trung bình trên mạng Lưu lượng
trung bình (%)
Tỷ lệ phát gói tin thành công (%) DSR MAR-DSR 10 100,00000000 100,00000000 15 100,00000000 100,00000000 20 99,97492748 99,88049275 25 99,82099240 99,87809924 30 99,76077149 99,56077149 35 99,84031070 99,84031070 40 98,54446011 99,15444601 45 98,17345771 98,97345771 50 97,95481013 98,55481013 55 96,08087997 97,08087997 60 94,89549986 95,89549986 65 93,45425202 93,25425202 70 92,67874296 92,92787430 75 92,24787430 92,27874296 80 92,10878743 92,27874296 85 91,90878743 92,07874296 90 91,62208787 91,77874296 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 0.14 10 20 30 40 50 60 70 80 90 Mật độ lưu lượng (%) X ác su ất g ói ti n rơ i DSR MAR_DSR
77
Trên Hình 3.15 tác giả đánh giá hiệu quả thực thi của thuật toán MAR-DSR bằng tham số tỷ lệ phát gói tin thành công. Ta thấy rằng, khi mật độ lưu lượng trung bình trên mạng từ khoảng 35% đến 75% thì thuật toán MAR-DSR cho ta tỷ lệ phát gói tin thành công cao hơn, giá trị này cho ta thấy chi tiết hơn theo tỷ lệ gói tin thành công được mô tả trong Bảng 3.3.
Hình 3.16. Trễ truyền gói tin trung bình
Kết quả mô phỏng trên Hình 3.16 là độ trễ truyền gói tin của thuật toán MAR-DSR so với DSR. Ta thấy rằng, khi tích hợp tác tử vào điều khiển định tuyến thì làm tăng thì làm tăng độ trễ truyền tải do thời gian xử lý tại mỗi nút tăng. Tuy nhiên, độ trễ tăng lên không đáng kể, chúng ta có thể cải tiến để tiệm cận độ trễ tương đương giao thức DSR.
78
Hình 3.17. Đánh giá hiệu quả của thuật toán khi thay đổi tốc độ di chuyển trung bình của nút
Để đánh giá về hiệu quả khi di chuyển các nút mạng đối với thuật toán DSR, khi ta thay đổi tốc độ di chuyển trung bình của các nút mạng theo Hình 3.17 thì thuật toán MAR- DSR cũng chỉ có hiệu quả khi tốc độ di chuyển của các nút ở mức trung bình, cụ thể là nhỏ hơn 13 m/s trong trường hợp này. Còn trường hợp các nút di chuyển với tốc độ thì thuật toán MAR-DSR chưa có cải thiện hơn so với thuật toán DSR.
Theo kết quả mô phỏng các kết quả của thuật toán MAR-DSR với DSR, các kết quả trung bình đều tốt hơn thuật toán DSR và có hiệu quả khi mật độ mạng trung bình và cao (dưới 75%), điều này thể hiện trong các kết quả mô phỏng của thuật toán cải tiến.
Hình 3.18. Phổ của kết quả mô phỏng thuật toán DSR và MAR-DSR khi mật độ lưu lượng 40%
79
Hình 3.19. Phổ của kết quả mô phỏng thuật toán DSR và MAR-DSR khi mật độ lưu lượng 60%
Kết quả mô phỏng trên Hình 3.18 là phổ của kết quả mô phỏng khi thực hiện 10 lần với mật độ lưu lượng 40%. Trong hầu hết các lần chạy mô phỏng, thuật toán MAR-DSR cho xác suất gói tin rơi thấp hơn thuật toán DSR, nhưng cũng có trường hợp xác suất gói tin rơi của thuật toán MAR-DSR cao hơn. Ví dụ, như lần chạy thứ 6 thì xác suất gói tin rơi của MAR-DSR là 0,014, còn của thuật toán DSR là 0,013. Tuy nhiên, giá trị trung bình của tất cả các lần chạy thì thuật toán MAR-DSR cho giá trị thấp hơn. Kết quả thu được cũng hoàn toàn tương tự khi mô phỏng 10 lần với mật độ lưu lượng 60% (kết quả trên Hình 3.19). Xác suất gói tin rơi trung bình của 10 lần chạy mô phỏng của thuật toán MAR-DSR thấp hơn so với thuật toán DSR.
3.3.2 Thuật toán MAR-AODV 3.3.2.1 Ý tƣởng của thuật toán 3.3.2.1 Ý tƣởng của thuật toán
Một trong những vấn đề gây ra tình trạng nghẽn lưu lượng trong mạng MANET là do mật độ lưu lượng phân phối đến các nút trung gian không đồng đều. Nguyên nhân là do cơ chế khám phá lộ trình của thuật toán định tuyến, có nhiều nút chứa nhiều lộ trình đi qua nó. Để khắc phục điều này, tác giả tích hợp tác tử vào các thuật toán điều khiển định tuyến để tính toán trọng số của nút mạng để cập nhật thông tin về mật độ lưu lượng tại nút đó.