Thực hiện mô phỏng [7]-[14]-[15]

Một phần của tài liệu Mạng không dây địa hình xấu Thuật toán định tuyến và ứng dụng (Trang 57)

Trước tiên, ta thấy mỗi giao thức định tuyến nằm trong các thư mục có cùng tên trong $<ROOT>/ns-2.34/, chẳng hạn aodv, aomdv, dsdv, … Có thể sử dụng một trong số

các giao thức trên để tạo một giao thức cho phép định tuyến trong trường hợp xuất hiện hố mạng (network hole). Đối với mạng WSN thì giao thức cần sử dụng để mô phỏng và đánh giá là DSDV (bởi đặc điểm của các nút trong mạng WSN là ít di chuyển, nếu có di chuyển thì di chuyển với khoảng cách không đáng kể).

Một hố mạng được mô phỏng có thể xem như các nút mạng hoặc tập các nút mạng hư hỏng lân cận nhau,

Hình 18: Các hố mạng là các nút mạng “chết”

cũng có thể xem như các vùng địa hình chướng ngại vật như hồ, ao, …

Các hố mạng có đặc điểm là sẽ “nuốt” gói tin khi có gói tin gửi tới nó (hồ nước, chướng ngại vật thông thường) hoặc gửi trả lại gói tin sai lệch (nút mạng bị hư hỏng).

Hồ nước

Hồ nước

Việc đánh giá hiệu năng giao thức DSDV chủ yếu là đánh giá trên tỉ lệ mất gói tin trong việc truyền thông giữa nút nguồn và nút đích.

Để tạo ra hố mạng (trong trường hợp này là nút mạng hư hỏng, nó sẽ nuốt gói tin khi nhận được và không gửi bảng định tuyến của nó cũng như chuyển tiếp gói tin) tôi tạo ra 1 bản sao của DSDV trong $NSROOT/ns-2.34/ và đặt tên là hdsdv (Hole DSDV). Xóa các tệp rtable.h, rtable.cc, rtable.o và đổi tên các tệp

dsdv.* thành hdsdv.*. Tôi sửa lại trong hàm recv(…) của tệp hdsdv.cc để nó chỉ nhận gói tin mà không chuyển tiếp cũng như gửi bảng định tuyến của nó tới các nút khác. Sau đó tôi sửa đổi trong tệp $NSROOT/ns-2.34/tcl/lib/ns-

lib.tcl bằng cách thêm vào dòng:

HDSDV{

set ragent [$self create-hdsdv-agent $node] }

Và ở phía dưới thêm vào:

Simulator instproc create-hdsdv-agent { node } { # Create a dsdv routing agent for this node set ragent [new Agent/HDSDV]

# Setup address (supports hier-addr) for hdsdv agent # and mobile node

Set addr [$node node-addr] $ragent addr $addr

$ragent node $node

if (Simulator set mobile_ip_] {

$ragent port-dmux [$node demux] }

$node addr $addr

$node set ragent_ $ragent

$self at 0.0 “$ragent start-hdsdv” ; # start updates return $ragent

}

Như vậy là 1 nút nếu là hố mạng thì vẫn sẽ sử dụng khuôn dạng gói tin và bảng định tuyến như DSDV.

Sau đó trong tệp $NSROOT/ns-2.34/Makefile tôi thêm vào dòng:

hdsdv/hdsdv.o \

ở sau dòng

dsdv/dsdv.o dsdv/rtable.o queue/rtqueue.o \

Tôi xây dựng 2 kịch bản mô phỏng dsdv trong trường hợp mạng không có hố mạng và trong trường hợp mạng có xuất hiện hố mạng. Các nút cảm biến gồm 500 nút được phân bố ngẫu nhiên trong một vùng 1000m x 500m với vùng phủ sóng của mỗi nút là 40m. Các nút sử dụng CBR dựa trên UDP để truyền thông với tốc độ phát là 0.1Mbps, kích thước gói tin là 50 bytes. (adsbygoogle = window.adsbygoogle || []).push({});

Tiến hành mô phỏng 5 lần với mỗi kịch bản để lấy trung bình các kết quả (ở đây tôi tạo ra 5 file dsdv_1.tcl -> dsdv_5.tcl và 5 file hdsdv_1.tcl -> hdsdv_5.tcl). Kết quả của việc mô phỏng được lưu ra các file vết (trace file) để phục vụ cho việc đánh giá.

Hình 20: Mô phỏng 500 nút mạng WSN

Sau đó sử dụng 1 script Perl có tên là analyze.pl để đánh giá tỉ lệ phân phối gói tin.

Một phần của tài liệu Mạng không dây địa hình xấu Thuật toán định tuyến và ứng dụng (Trang 57)