Ngoài ra, luận văn cũng xem xét bài toán định tuyến trong
mạng MANET và các giải pháp có thể sử dụng để giải quyếtbài toán định tuyến cũng
như giới thiệu một số giao thức định tuyến điển hình trong mạng MANET. Đi cùng
với lý thuyết là phần thực nghiệm mô phỏng, tôi đã tích hợp một số giao thức định
tuyến mạng MANET vào bộ chương trình mô phỏng NS2 như OLSR, TORA.
87 trang |
Chia sẻ: lylyngoc | Lượt xem: 4023 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Đánh giá chi phí tìm đường của một số giao thức định tuyến trong mạng manet, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ls/cmu-scene-gen/setdest của bộ mô phỏng
NS2.
Phương pháp thứ hai thực thi sự di chuyển ngẫu nhiên của nút như sau:
$mobilenode start
Với phương pháp này ban đầu nút di động có vị trí ngẫu nhiên và sau đó có các
cập nhật để thay đổi hướng và tốc độ của nút. Các giá trị đích đến và tốc độ được tạo
theo cách ngẫu nhiên. Các di chuyển của nút di động được thực thi trong C++.
Bất luận việc sử dụng phương pháp nào để tạo ra sự di chuyển cho nút thì hình
trạng của các nút di động cần phải được định nghĩa. Nó nên được định nghĩa trước khi
tạo ra các nút di động. Thông thường hình trạng phẳng được tạo ra bằng cách xác định
độ dài và rộng của hình trạng mạng như sau:
set topo [new Topography]
$topo load_flatgrid $opt(x) $opt(y)
Trong đó $opt(x) và $opt(y) là các biên trong mô phỏng.
4.3.2. Quá trình mô phỏng mạng MANET với NS2 [1]
Quá trình mô phỏng mạng MANET với bộ mô phỏng NS2 thông thường trải
qua các bước như sau trong việc xây dựng tệp kịch bản:
4.3.2.1. Tạo bộ lập lịch các sự kiện
+ Tạo bộ lập lịch
set ns [new Simulator]
+ Lập lịch sự kiện
$ns at
+ Khởi động bộ lập lịch
$ns run
4.3.2.2. Ghi lại vết các sự kiện của mạng mô phỏng
+ Dò vết các gói tin trên tất cả các liên kết, xuất ra tệp test.out
$ns trace-all [open test.out w]
+ Dò vết các gói tin trên tất cả các liên kết, xuất ra định dạng nam
53
$ns namtrace-all [open test.nam w]
+ Cũng có thể chỉ “dò vết” một số tham số, thí dụ:
$ns trace-queue $n0 $n1
$ns namtrace-queue $n0 $n1
4.3.2.3. Thiết lập mạng mô phỏng
+ Thiết lập topo mạng
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
set god_ [create-god $val(nn)]
4.3.2.4. Cấu hình nút di động
+ Cấu hình nút di động
$ns_ node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channelType [$val(chan)] \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace OFF
+ Khởi tạo vị trí ban đầu cho các nút
$node_(0) set X_ 5.0
$node_(0) set Y_ 2.0
$node_(0) set Z_ 0.0
$node_(1) set X_ 390.0
$node_(1) set Y_ 385.0
$node_(1) set Z_ 0.0
+ Thiết lập sự di chuyển cho nút di động
$ns_ at 50.0 "$node_(1) setdest 25.0 20.0 15.0”
4.3.2.5. Tạo ra các nguồn sinh lưu lượng
+ Tạo lưu lượng
set tcp [new Agent/TCP]
$tcp set class_ 2
set sink [new Agent/TCPSink]
$ns_ attach-agent $node_(0) $tcp
$ns_ attach-agent $node_(1) $sink
54
$ns_ connect $tcp $sink
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ns_ at 10.0 "$ftp start"
+ Việc tạo lưu lượng có thể lấy từ tệp sinh lưu lượng của công cụ có sẵn trong bộ mô
phỏng NS2
4.3.2.6. Xác định thời điểm dừng
for {set i 0} {$i < $val(nn) } {incr i} {
$ns_ at 150.0 "$node_($i) reset";
}
$ns_ at 150.0001 "stop"
$ns_ at 150.0002 "puts \"NS EXITING...\" ; $ns_ halt"
proc stop {} {
global ns_ tracefd nf
$ns_ flush-trace
close $tracefd
close $nf
}
Việc xác định thời gian dừng (hay thời gian mô phỏng cần thiết) là quan trọng
bởi vì nếu như có kéo dài thời gian mô phỏng thêm thì độ chính xác của kết quả cũng
không tăng thêm mà chi phí phải trả lại tăng tỉ lệ thuận với thời gian mô phỏng. Lý do
là bởi quá trình mô phỏng sinh ra các tệp vết chiếm nhiều dung lượng ổ đĩa cứng.
Người ta khuyến cáo rằng với mô phỏng mạng MANET thời gian mô phỏng thường
khoảng vài trăm giây trở nên.
4.3.3. Tích hợp giao thức TORA và OLSR vào bộ mô phỏng NS2
Bản thân bộ mô phỏng NS2, phiên bản 2.34 đã hỗ trợ các giao thức định tuyến
MANET sau: AODV, DSDV, DSR và TORA. Tuy nhiên trong bốn giao thức trên thì
với giao thức định tuyến TORA, phần mềm NS2 khi chạy trong môi trường Linux, ở
một số phiên bản (như version 2.34 được cài trên máy của tôi), thường gặp một số lỗi
trong các tệp tora.h và tora.cc và khi gặp lời gọi hàm của lệnh command tora. Qua tìm
kiếm các ý kiến trao đổi trên các diễn đàn trên Internet về NS2, tôi đã thử sửa đổi các
tệp theo nhiều cách để khắc phục lỗi trên. Đến khi đọc tài liệu [21], tôi đã sửa được lỗi
này bằng cách thay đổi các tệp này theo cách sau:
+ Với tệp tora.h: Ta thêm các dòng sau trong phần khai báo biến protected
protected:
/* for passing packets up to agents */
PortClassifier *dmux_;
};
+ Với tệp tora.cc: Ta thêm đoạn mã sau vào lệnh else cuối cùng của định nghĩa hàm
toraAgent::command
55
else if (strcmp(argv[1], "port-dmux") == 0) {
dmux_ = (PortClassifier
*)TclObject::lookup(argv[2]);
if (dmux_ == 0) {
fprintf (stderr, "%s: %s lookup of %s
failed\n", __FILE__,
argv[1], argv[2]);
return TCL_ERROR;
}
return TCL_OK;
}
Sau đó chúng ta tiến hành biên dịch lại chương trình NS2 (trên máy của tôi là
bộ Ns-allinone phiên bản 2.34), cụ thể bằng các thao tác sau đây:
ü Đầu tiên cần kiểm tra các gói phần mềm cần thiết cho việc biên dịch lại NS2 đã
được cài đặt sẵn hay chưa, ví dụ như: gcc, glib-header, zlib... Để cài đặt gói gcc
chẳng hạn, chạy lệnh như sau (trên Ubuntu 9.04 và có kết nối mạng Internet):
sudo apt-get install gcc
ü Tiếp theo vào thư mục gốc của bộ mô phỏng ns-2.34 chạy lệnh như sau
sudo ./install
ü Trong quá trình cài đặt nếu có thông báo lỗi thiếu gói dữ liệu nào thì có thể cài
thêm tương tự như cài đặt ở trên hoặc có thể tham khảo một số lỗi tại
ü Nếu không có vấn đề gì thì khoảng 10-15 phút (trên máy của tôi) quá trình biên
dịch lại bộ mô phỏng NS2 sẽ hoàn thành.
ü Để kiểm tra việc cài đặt có thành công không, chúng ta có thể sử dụng công cụ
validate như sau trong thư mục ns-2.34:
sudo ./validate
Tuy nhiên, một lỗi nghiêm trọng khác xảy ra khi chạy mô phỏng với giao thức
TORA là chương trình dường như rơi vào chu kỳ chết và không có phản hồi nào cho
kết quả mô phỏng. Qua quá trình tìm hiểu trên Internet, tôi phát hiện ra vấn đề nằm ở
tệp imep/imep.cc trong bộ mô phỏng NS2 [19]. Tiến hành sửa đổi tệp này bằng cách ở
dòng 504 ta thay dòng lệnh
rexmitTimer.start(rexat - CURRENT_TIME);
bằng đoạn mã
if (rexat-CURRENT_TIME<0.000001) // Preventing eternal
loop.
rexmitTimer.start(0.000001);
else
rexmitTimer.start(rexat - CURRENT_TIME);
Sau đó tiến hành biên dịch lại bộ mô phỏng NS2, theo cách tương tự như mô tả
ở trên. Với việc sửa đổi như vậy, tôi đã chạy được giao thức TORA với số nút tham
gia là 3 và thời gian mô phỏng ngắn khoảng 100s. Với số nút và thời gian mô phỏng
56
lớn hơn, việc rơi vào chu kỳ chết lại xảy ra. Do thời gian thực hiện luận văn cao học có
thời hạn, mà việc sửa đổi để giao thức TORA chạy đúng cần rất nhiều thời gian, nên
tôi quyết định để lại việc mô phỏng với giao thức định tuyến TORA cho các nghiên
cứu sau. Tôi tin rằng mình có thể làm được hoặc trong cộng đồng nghiên cứu cũng đã
có người giải quyết được vấn đề này.
Với giao thức định tuyến OLSR, để tích hợp vào bộ mô phỏng NS2 chúng ta
cần tải mã nguồn tại sau đó copy tệp um-olsr-
0.8.8.tgz vào thư mục ns-allinone-2.34/ns-2.34 và chạy các câu lệnh như sau:
$ cd ns-allinone-2.34/ns-2.34/
$ tar -zxvf um-olsr-0.8.8.tgz
$ ln -s ./um-olsr-0.8.8 ./olsr
$ patch -p1 < olsr/um-olsr-2.34_v0.8.8.patch
Tệp sửa lỗi patch tải tại
2.34_v0.8.8.patch. Tiến hành biên dịch lại bộ mô phỏng NS2 để tích hợp giao thức
OLSR vào bộ mô phỏng NS2. Quá trình biên dịch lại NS2 theo cách tương tự như đã
trình bày ở mục trên.
4.4. Đánh giá bằng mô phỏng chi phí tìm đường một số giao thức
định tuyến chủ yếu trong mạng MANET
Trong mục này tôi sẽ trình bày việc đánh giá chi phí tìm đường của một số giao
thức định tuyến mạng MANET dựa trên công cụ mô phỏng NS2 với các giao thức điển
hình là AODV, DSDV, DSR và OLSR trong các ngữ cảnh khác nhau. Để tiếp cận một
cách có hệ thống bài toán đánh giá chi phí tìm đường của một số giao thức định tuyến
mạng MANET trước tiên ta phải xác định được các tham số của môi trường (hệ thống)
trong quá trình mô phỏng, các độ đo hiệu năng được chọn làm tiêu chuẩn so sánh. Sau
đó tôi sẽ thực hiện một dãy các thí nghiệm với các ngữ cảnh khác nhau nhằm đưa ra
được lượng thông tin lớn nhất về chi phí tìm đường với nỗ lực nhỏ nhất. Cuối cùng là
việc phân tích và đánh giá các kết quả thu được từ quá trình mô phỏng dưới dạng biểu
đồ để từ đó đưa ra các kết luận, nhận xét.
4.4.1. Các độ đo hiệu năng được đánh giá [1]
Với một hệ thống mạng thì các độ đo hiệu năng có thể chia thành hai loại chính
đó là các độ đo hướng tới người sử dụng như thời gian đáp ứng, thời gian phản ứng
của hệ thống và các độ đo hướng tới hệ thống như thông lượng, thời gian trễ, hệ số sử
dụng đường truyền. Để đánh giá chi phí tìm đường của một số giao thức định tuyến
mạng MANET tôi sử dụng các độ đo sau:
ü Số gói tin định tuyến trung bình cần phát theo từng giây: Là số các gói tin định
tuyến cần phát từ nút cần gửi dữ liệu cộng với số lần các gói tin này được
chuyển tiếp (forward) bởi các nút trung gian chia cho thời gian mô phỏng để có
thể tìm được đường tới nút đích.
57
ü Chi phí định tuyến chuẩn hóa theo tải: Chi phí định tuyến chuẩn hóa theo tải ở
đây tôi sử dụng để đánh giá chi phí tìm đường là tỉ lệ giữa tổng số gói tin định
tuyến cần phát (cả gửi và chuyển tiếp) so với tổng số gói tin định tuyến cần phát
(cả gửi và chuyển tiếp) cộng với tổng số gói tin dữ liệu được gửi và chuyển
tiếp. Chi phí định tuyến chuẩn hóa theo tải được chuẩn hóa về 1.
ü Thời gian phát hiện tuyến trung bình: Thời gian phát hiện tuyến trung bình
được định nghĩa là thời gian trung bình từ lúc nút nguồn bắt đầu gửi gói tin
Route Request cho tới thời điểm bắt đầu gửi gói tin dữ liệu đầu tiên. Thời gian
phát hiện tuyến trung bình được đánh giá và so sánh với hai giao thức định
tuyến khởi tạo phía nguồn là AODV và DSR.
4.4.2. Thiết lập các lựa chọn, tham số mô phỏng [17]
Như đã trình bày ở trên, do đặc thù của mạng MANET là mạng động với băng
thông thấp, năng lượng của nút hạn chế cho nên khi nghiên cứu về chi phí tìm đường
của các giao thức định tuyến mạng MANET ta cần chú ý đến một số lựa chọn, tham số
mô phỏng như:
ü Kích thước mạng (độ lớn của mạng): Số lượng nút trong mạng
ü Mật độ nút: Tính theo số hàng xóm trung bình hoặc theo số nút trung bình trong
diện tích phủ sóng (radio range) của một nút.
ü Độ linh động của mạng: Được đo bằng tốc độ chuyển động trung bình của các
nút mạng.
ü Tỉ lệ các liên kết đơn hướng: Khi hệ thống vận hành với sự tồn tại của các liên
kết đơn hướng thì ảnh hưởng như thế nào
ü Các mẫu lưu lượng: Hệ thống với các mẫu lưu lượng như CBR hoặc TCP
chẳng hạn.
4.4.3. Các ngữ cảnh mô phỏng
Ngữ cảnh mô phỏng mạng MANET được cấu thành bởi các yếu tố như tô-pô
mạng, mô hình chuyển động, mô hình sinh lưu lượng, diện tích và hình dạng vùng mô
phỏng, thời gian hoạt động của các nguồn sinh lưu lượng, thời gian mô phỏng. Bằng
cách thay đổi các yếu tố kể trên sẽ cho chúng ta những ngữ cảnh mạng khác nhau.
Trong luận văn cao học này, kịch bản mô phỏng tôi xây dựng gồm 50 nút có vị
trí khởi tạo ngẫu nhiên trong một vùng địa lý có kích thước 1500x300m với phạm vi
truyền sóng vô tuyến của mỗi nút là 250m (bán kính). Tọa độ của mỗi nút tại một vị trí
trong vùng mô phỏng có dạng (x,y,z) trong đó z có giá trị bằng 0. Nút di chuyển theo
hai mô hình di chuyển là Random Waypoint và Random Walk. Theo mô hình Random
Waypoint, đầu tiên nút có một vị trí ngẫu nhiên trong khu vực mô phỏng và ở tại đó
một khoảng thời gian gọi là thời gian tạm dừng. Khi quãng thời gian này hết hạn, nút
chọn ngẫu nhiên một đích trong khu vực mô phỏng và một tốc độ được phân bố đồng
đều giữa [Speedmin, Speedmax]. Sau đó, nút di chuyển tới vị trí mới với tốc độ đã chọn.
Khi tới vị trí mới, nút dừng một khoảng thời gian được chọn theo phân bố đồng đều
58
giữa [Pmin, Pmax] và sau đó tiếp tục lại quá trình. Mô hình Random Walk mô phỏng
chuyển động ngẫu nhiên của các thực thể trong tự nhiên. Nút di động di chuyển từ vị
trí hiện tại tới vị trí mới bằng việc chọn ngẫu nhiên hướng nằm trong khoảng [0,180o],
tốc độ nằm trong khoảng [Speedmin, Speedmax]. Mỗi chuyển động diễn ra trong khoảng
thời gian travel_time hoặc khoảng cách hằng số, không có khoảng thời gian tạm dừng
trước khi nút thay đổi hướng và tốc độ. Các thí nghiệm tôi tiến hành có thời gian mô
phỏng là 15 phút (tương ứng với 900s). Thực thể truyền thông CBR được gắn trên nút
có tốc độ phát gói tin không đổi là 4 gói tin/giây và các gói tin có kích thước 512 byte.
Số lượng nguồn phát CBR cho mỗi mô hình di chuyển là 1, 3 và 5 nguồn phát.
Để đánh giá chi phí tìm đường của một số giao thức định tuyến mạng MANET,
trong mô hình Random Waypoint tôi tiến hành mô phỏng với 7 mẫu thời gian tạm
dừng (0, 150, 300, 450, 600, 750 và 900s). Tiến hành mô phỏng với mô hình Random
Walk, tôi sử dụng thời gian di chuyển (travel time) là 10s. Như vậy tổng số thí nghiệm
mô phỏng mạng MANET tôi thực hiện sẽ là 96 thí nghiệm bao gồm:
ü Mô hình Random Waypoint: 7 mẫu thời gian tạm dừng x 3 mẫu nguồn phát
CBR x 4 mẫu giao thức định tuyến mạng MANET = 84 thí nghiệm.
ü Mô hình Random Walk: 1 mẫu thời gian di chuyển x 3 mẫu nguồn phát CBR x
4 mẫu giao thức định tuyến mạng MANET = 12 thí nghiệm.
Trong mỗi thí nghiệm mô phỏng, các tham số mô phỏng giống nhau được cho
bởi bảng 5:
Tham số mô phỏng Giá trị
Phạm vi truyền sóng vô tuyến của nút di động 250m
Băng thông 2Mbps
Số nút tham gia mô phỏng 50
Vùng mô phỏng 1500x300m
Thời gian mô phỏng 900s
Tốc độ di chuyển cực tiểu 0m/s
Dạng truyền thông CBR
Số nguồn phát 1, 3, 5
Tốc độ gửi gói tin 4 gói tin/ giây
Kích thước gói tin 512 bytes
Bảng 5. Các đặc điểm ngữ cảnh giống nhau của thí nghiệm mô phỏng
Các giao thức định tuyến mạng MANET như AODV, DSDV, DSR và OLSR
phải được thực hiện trong cùng điều kiện tải và giống nhau về các tham số mô phỏng
để đảm bảo việc so sánh, đánh giá giữa các giao thức là chuẩn xác. Do đó, với tệp tạo
ngữ cảnh (lvch-dcthanh.tcl) với mỗi giao thức sẽ có các tham số và tải giống nhau, chỉ
khác nhau ở phương thức định tuyến được sử dụng, thời gian tạm dừng/thời gian di
chuyển và số nguồn phát CBR. Sau khi chạy xong các kịch bản ngữ cảnh thì bộ mô
phỏng sẽ sinh ra các tệp vết ghi lại các sự kiện xảy ra trong quá trình mô phỏng. Tôi sẽ
59
dùng các đoạn mã bằng ngôn ngữ perl do tôi tự viết để tính toán, đánh giá cho các độ
đo hiệu năng mong muốn.
Để tạo các tệp di chuyển theo mô hình Random WayPoint cho nút di động tôi
dùng công cụ setdest trong thư mục ~ns/indep-utils/cmu-scen-gen/setdest nằm trong
bộ mô phỏng NS2. Chạy setdest với các tham số sau để tạo hình trạng mạng với các
thời gian tạm dừng khác nhau:
./setdest –v -n -p -s
-t -x -y >
/
./setdest –v 1 –n 50 –p 0 –s 20 -t 900 –x 1440 –y 900 > rwp_0
./setdest –v 1 –n 50 –p 150 –s 20 -t 900 –x 1500 –y 300 >
rwp_150
./setdest –v 1 –n 50 –p 300 –s 20 -t 900 –x 1500 –y 300 >
rwp_300
./setdest –v 1 –n 50 –p 450 –s 20 -t 900 –x 1500 –y 300 >
rwp_450
./setdest –v 1 –n 50 –p 600 –s 20 -t 900 –x 1500 –y 300 >
rwp_600
./setdest –v 1 –n 50 –p 750 –s 20 -t 900 –x 1500 –y 300 >
rwp_750
./setdest –v 1 –n 50 –p 900 –s 20 -t 900 –x 1500 –y 300 >
rwp_900
Để tạo các tệp di chuyển nút di động với mô hình Random Walk tôi dùng công
cụ rwalk được mô tả chi tiết tại [18]. Tiến hành tải mã của chương trình tại
rồi giải nén ra ta sẽ
thấy ba thư mục là palm-general, palm-graph và palm-rw. Tiếp đến ta chuyển vào thư
mục palm-rw rồi tiến hành gõ lệnh make, chương trình rwalk sẽ được cài đặt. Để tạo
tệp di chuyển chạy dòng lệnh như sau:
./rwalk 3 50 1500 300 900 10 0 0 0 10 0 > rwalk
Để tạo các tệp mẫu lưu lượng CBR, tôi sử dụng bộ tạo lưu lượng nằm trong thư
mục ~ns/indep-utils/cmu-scene-gen của bộ mô phỏng NS2 có tên là cbrgen.tcl với số
nguồn phát khác nhau :
ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc
connections] [-rate rate]
ns cbrgen.tcl –type cbr –nn 50 –seed 1.0 –mc 1 –rate 4.0 >
cbr_1
ns cbrgen.tcl –type cbr –nn 50 –seed 1.0 –mc 3 –rate 4.0 >
cbr_3
ns cbrgen.tcl –type cbr –nn 50 –seed 1.0 –mc 5 –rate 4.0 >
cbr_5
Sau khi xây dựng kịch bản mô phỏng bằng ngôn ngữ tcl (tệp lvch-dcthanh.tcl),
tôi tiến hành thực hiện mô phỏng từ dòng lệnh. Cú pháp cho kịch bản mô phỏng như
sau:
60
ns lvch-dcthanh.tcl [-nn nodes] [-x MAXX] [-y MAXY] [-rp
Routing protocol] [-cp conn pattern] [-sc scenario] [-stop
sec] [-ifq interface queue] [-nout namout] [-tout traceout]
Trong đó:
-nn : Số nút tham gia mô phỏng (mặc định là 50)
-x : Bề rộng của vùng mô phỏng (mặc định là 1500m)
-y : Bề dài của vùng mô phỏng (mặc định là 300m)
-rp : Giao thức định tuyến mạng MANET sử dụng trong mô phỏng (mặc định là
DSDV)
-cp : Tệp mẫu lưu lượng đưa vào (mặc định là tệp ‘connection_pattern’)
-sc : Tệp ngữ cảnh của mô phỏng (mặc định là tệp ‘scenario_file’)
-stop : Thời gian kết thúc mô phỏng (mặc định là 900s)
-ifq : Kiểu giao diện hàng đợi (mặc định là kiểu Queue/DropTail/PriQueue)
-nout, -tout : Là các tệp vết ghi lại các sự kiện xảy ra trong mô phỏng
4.4.3.1. Ngữ cảnh 1 (Mô hình Random Waypoint) [19]
Với ngữ cảnh 1, tôi sử dụng mô hình di chuyển Random Waypoint được tạo bởi
công cụ setdest nằm trong bộ mô phỏng NS2. Kịch bản mô phỏng tôi xây dựng gồm
các đặc điểm ngữ cảnh chung được mô tả ở mục trên. Các đặc điểm ngữ cảnh riêng
bao gồm tốc độ di chuyển cực đại của nút di động là 20m/s. Các giá trị thời gian tạm
dừng tôi chọn lần lượt là 0, 150, 300, 450, 600, 750 và 900s. Thời gian tạm dừng bằng
0s ứng với việc các nút di chuyển liên tục trong suốt thời gian mô phỏng, còn thời gian
tạm dừng bằng 900s tương ứng với các nút đứng yên trong suốt thời gian mô phỏng.
Như vậy ta có bảng 6 tổng kết các tham số mô phỏng với mô hình Random
Waypoint bao gồm tốc độ di chuyển cực đại và các khoảng thời gian tạm dừng (các
tham số khác được cho bởi bảng 5):
Tham số mô phỏng Giá trị
Tốc độ di chuyển cực đại 20m/s
Thời gian tạm dừng 0, 150, 300, 450,
600, 750, 900 s
Bảng 6. Hình trạng mô phỏng với mô hình Random Waypoint
Các dòng lệnh mô phỏng áp dụng cho mô hình di chuyển Random Waypoint
lần lượt với các giao thức định tuyến mạng MANET và các thời gian tạm dừng mô
phỏng khác nhau và số nguồn phát CBR khác nhau. Trong các dòng lệnh dưới đây giá
trị [i] lần lượt là thời gian tạm dừng của mô hình di chuyển Random Waypoint ứng với
0, 150, 300, 450, 600, 750 và 900. Giá trị [j] lần lượt là số nguồn phát CBR ứng với 1,
3 và 5.
Giao thức DSDV
ns lvch-dcthanh.tcl –sc rwp_[i] –cp cbr_[j] –nout
dsdv[j]_[i].nam –tout dsdv[j]_[i].tr
Giao thức AODV
61
ns lvch-dcthanh.tcl –rp AODV –sc rwp_[i] –cp cbr_[j] –
nout aodv[j]_[i].nam –tout aodv[j]_[i].tr
Giao thức DSR
ns lvch-dcthanh.tcl –rp DSR –ifq CMUPriQueue –sc rwp_[i]
–cp cbr_[j] –nout dsr[j]_[i].nam –tout dsr[j]_[i].tr
Giao thức OLSR
ns lvch-dcthanh.tcl –rp OLSR –sc rwp_[i] –cp cbr_[j] –
nout olsr[j]_[i].nam –tout olsr[j]_[i].tr
Các sự kiện xảy ra trong mô phỏng với việc chạy với 4 giao thức định tuyến
AODV, DSDV, DSR và OLSR được xuất ra các tệp vết như trên. Hình ảnh mạng mô
phỏng với 50 nút mạng có thể thấy như sau (tại thời điểm t = 24.746015s như trên
hình):
Hình 18. Hình ảnh 50 nút di động, giao thức DSDV, thời gian tạm dừng 0, 1
nguồn phát
* Phân tích tệp vết để tính các tham số hiệu năng
Sau khi thu được các tệp vết tôi sử dụng các kịch bản viết bằng ngôn ngữ perl
(xem phụ lục 2,3,4 và 5) chạy với tệp vết để thu được các kết quả về chi phí tìm đường
của 4 giao thức định tuyến mạng MANET.
Các kết quả được so sánh dưới đây bao gồm: Số gói tin định tuyến trung bình
cần phát theo từng giây, chi phí định tuyến chuẩn hóa theo tải và thời gian phát hiện
tuyến trung bình.
Hình 19 thể hiện số gói tin định tuyến trung bình cần phát theo từng giây của 4
giao thức định tuyến AODV, DSDV, DSR và OLSR trong trường hợp sử dụng 1, 3 và
5 nguồn phát CBR. Có thể nhận thấy rằng khi số nguồn phát CBR tăng thì số lượng
gói tin định tuyến trung bình cần phát cũng tăng. Điều này cũng dễ hiểu bởi khi có
càng nhiều nguồn phát thì thông tin định tuyến trao đổi trong mạng mô phỏng càng
nhiều để bảo đảm nút nguồn có thể tìm được đường đi tới nút đích. Ngoài ra chúng ta
cũng có thể thấy khi thời gian tạm dừng tăng lên từ 0 đến 900s thì số lượng gói tin
định tuyến trung bình cần phát cũng giảm bởi các nút từ chỗ di chuyển liên tục đến
tạm dừng hầu như không di chuyển làm cho các cập nhật thông tin định tuyến ít dần
62
đi. Nhờ đó việc trao đổi thông tin định tuyến giảm đi bởi sự thay đổi vị trí của nút là
thưa dần. Khi thời gian tạm dừng tăng đến 900s (nút không di chuyển), với 2 giao thức
định tuyến AODV và DSR, 2 đường tiệm cận trục hoành; còn với 2 giao thức định
tuyến DSDV và OLSR, 2 đường đi xuống nhưng không sát trục hoành. Nguyên nhân
là hai giao thức định tuyến bảng DSDV và OLSR đều duy trì bảng định tuyến của
mình bằng cách truyền các gói tin cập nhật định tuyến thường xuyên để bảo đảm tuyến
đường lúc nào cũng có sẵn, do đó 2 đường không thể tiệm cận trục hoành. Hình 19d có
vài điểm bất thường, có thể giải thích rằng đây là những điểm bùng phát do lỗi hoặc do
cấu hình di chuyển ban đầu gây tắc nghẽn mạng nghiêm trọng làm cho số gói tin định
tuyến trung bình cần phát tăng lên một cách đột ngột.
Hình 20 hiển thị chi tiết về số gói tin định tuyến trung bình cần phát khi so sánh
giữa 4 giao thức định tuyến mạng MANET với cùng số nguồn phát CBR lần lượt là 1,
3 và 5. Trong cả ba trường hợp với số nguồn phát khác nhau, ta thấy số lượng gói tin
định tuyến trung bình cần phát sử dụng bởi giao thức định tuyến DSR là ít nhất. Kế
cận ngay đó là giao thức định tuyến AODV. Số gói tin định tuyến trung bình cần phát
nhiều hơn DSR và AODV xảy ra đối với giao thức định tuyến DSDV. Giao thức định
tuyến bảng OLSR sử dụng số gói tin định tuyến trung bình cần phát nhiều nhất để phát
hiện đường đi từ nút nguồn đến nút đích. Điều này có thể giải thích là do hai giao thức
định tuyến AODV và DSR là hai giao thức định tuyến khởi tạo phía nguồn, nó chỉ gửi
truy vấn tìm đường mỗi khi có yêu cầu. Hai giao thức định tuyến bảng DSDV và
OLSR đều duy trì bảng định tuyến của mình bằng cách truyền các gói tin cập nhật
định tuyến thường xuyên để bảo đảm tuyến đường lúc nào cũng có sẵn. Việc duy trì
tuyến đường được thực hiện nhờ các quảng bá định tuyến làm cho số lượng gói tin
định tuyến trung bình cần phát cao hơn so với hai giao thức định tuyến khởi tạo phía
nguồn. Ngoài ra OLSR là giao thức định tuyến đa đường chứa nhiều đường đi từ nút
nguồn đến nút đích còn DSDV chỉ có một tuyến đường từ nút nguồn đến nút đích, nên
OLSR tốn nhiều gói tin cập nhật tuyến hơn so với DSDV.
63
Hình 19. Số gói tin định tuyến trung bình cần phát với 1, 3 và 5 nguồn phát
(a) DSDV (b) AODV
(c) DSR (d) OLSR
64
Hình 20. Số gói tin định tuyến trung bình cần phát với 4 giao thức định tuyến MANET
(a) 1 nguồn phát (b) 3 nguồn phát
(c) 5 nguồn phát
65
Một độ đo đánh giá chi phí tìm đường khác được đưa ra so sánh giữa các giao
thức định tuyến mạng MANET là chi phí định tuyến chuẩn hóa theo tải. Hình 21 là thể
hiện chi phí định tuyến chuẩn hóa theo tải với các trường hợp 1, 3 và 5 nguồn phát của
4 giao thức định tuyến mạng MANET. Có thể thấy rằng khi số nguồn phát CBR tăng
lên thì chi phí định tuyến chuẩn hóa theo tải giảm dần. Ngoài ra khi mà thời gian tạm
dừng tăng lên thì chi phí định tuyến chuẩn hóa theo tải cũng giảm dần. Chi phí định
tuyến chuẩn hóa theo tải cao nhất trong trường hợp sử dụng giao thức định tuyến
OLSR với thời gian tạm dừng là 0s và thấp nhất trong trường hợp sử dụng giao thức
định tuyến nguồn AODV và DSR với thời gian tạm dừng là 900s.
So sánh giữa các giao thức định tuyến mạng MANET với cùng số nguồn phát
về chi phí định tuyến chuẩn hóa theo tải được minh họa trong hình 22, ta thấy trong cả
ba trường hợp sử dụng 1, 3 và 5 nguồn phát, chi phí định tuyến chuẩn hóa theo tải của
DSR và AODV đều thấp hơn so với DSDV và OLSR.
Trong cùng số nguồn phát CBR, với mỗi giao thức định tuyến MANET, có thể
thấy rằng khi thời gian tạm dừng tăng lên thì chi phí định tuyến chuẩn hóa theo tải
giảm dần. Nguyên nhân có thể giải thích như sau, nếu coi A là tổng số gói tin định
tuyến, B là tổng số gói tin dữ liệu thì chi phí định tuyến chuẩn hóa theo tải cho bởi
công thức
BA
A
Cost
+
=
Biến đổi công thức trên như sau:
BA
B
BA
BBA
BA
A
Cost
+
-=
+
-+
=
+
= 1
Như biện luận ở mục trên, khi thời gian tạm dừng tăng lên thì tổng số gói tin
định tuyến giảm dần (A giảm), nguồn CBR phát dữ liệu không đổi (B không đổi). Do
đó ta có:
A+B ¯ => •
+ BA
B
=> ¯
+
-
BA
B
1
Ngoài ra giao thức định tuyến OLSR chiếm chi phí định tuyến chuẩn hóa theo
tải cao nhất. Giao thức DSDV chịu chi phí định tuyến chuẩn hóa theo tải thấp hơn so
với OLSR.
66
Hình 21. Chi phí định tuyến chuẩn hóa theo tải với 1, 3 và 5 nguồn phát
(a) DSDV (b) AODV
(c) DSR (d) OLSR
67
Hình 22. Chi phí định tuyến chuẩn hóa theo tải với 4 giao thức định tuyến MANET
(b) 3 nguồn phát
(c) 5 nguồn phát
68
Chi phí tìm đường cuối cùng tôi sử dụng để so sánh giữa các giao thức định
tuyến mạng MANET là thời gian phát hiện tuyến trung bình. Độ đo này tôi tiến hành
đánh giá giữa hai giao thức định tuyến khởi tạo phía nguồn là AODV và DSR. Hình 23
mô tả thời gian phát hiện tuyến trung bình với số nguồn phát là 1, 3 và 5 của hai giao
thức định tuyến AODV và DSR. Từ hình vẽ ta thấy khi mà số nguồn phát CBR tăng
thì thời gian phát hiện tuyến trung bình cũng tăng lên. Điều này có thể giải thích là do
có nhiều nguồn cùng phát nên để tìm được đường từ nút nguồn đến lúc đích thì phải
tốn thời gian hơn. Ngoài ra khi thời gian tạm dừng tăng lên thì thời gian phát hiện
tuyến cũng tăng theo.
Hình 24 minh họa thời gian phát hiện tuyến trung bình của AODV và DSR với
cùng số nguồn phát CBR. Từ hình vẽ có thể thấy thời gian phát hiện tuyến trung bình
đối với giao thức định tuyến AODV nhiều hơn so với giao thức định tuyến DSR.
Nguyên nhân có thể giải thích là giao thức định tuyến DSR lưu trữ nhiều tuyến đường
từ nút nguồn tới nút đích. Khi xảy ra lỗi liên kết, DSR có thể sử dụng các tuyến còn
lại mà không cần mất thời gian cho việc phát hiện lại tuyến do đó giảm được thời gian
phát hiện tuyến trung bình. Tuy nhiên sự chênh lệch về thời gian phát hiện tuyến trung
bình giữa AODV và DSR không phải là quá cách xa nhau.
69
Hình 23. Thời gian phát hiện tuyến trung bình với 1, 3 và 5 nguồn phát
(b) AODV (c) DSR
70
Hình 24. Thời gian phát hiện tuyến trung bình với 2 giao thức định tuyến MANET
(a) 1 nguồn phát (b) 3 nguồn phát
(c) 5 nguồn phát
71
4.4.3.2. Ngữ cảnh 2 (Mô hình Random Walk)
Với ngữ cảnh 2, ta sử dụng mô hình di chuyển Random Walk. Tương tự mô
hình Random Waypoint các đặc điểm ngữ cảnh chung cũng được sử dụng trong thí
nghiệm mô phỏng của tôi. Với mô hình Random Walk tôi sử dụng tốc độ di chuyển
cực đại của nút di động là 10m/s. Quãng thời gian di chuyển (travel time) tôi chọn là
10s để đánh giá chi phí tìm đường của một số giao thức định tuyến mạng MANET.
Như vậy ta có bảng 7 tổng kết các tham số mô phỏng với mô hình Random
Walk bao gồm tốc độ di chuyển cực đại và thời gian di chuyển (các tham số khác được
cho bởi bảng 5):
Bảng 7. Hình trạng mô phỏng với mô hình Random Walk
Sau khi tạo ra đầy đủ các tệp ngữ cảnh và mẫu lưu lượng, ta tiến hành chạy tệp
kịch bản lvch-dcthanh.tcl với cú pháp như sau cho 4 giao thức định tuyến mạng
MANET
Giao thức DSDV
ns lvch-dcthanh.tcl –sc rwalk –cp cbr_[j] –nout
dsdv_rwalk_[j].nam –tout dsdv_rwalk_[j].tr
Giao thức AODV
ns lvch-dcthanh.tcl –rp AODV –sc rwalk –cp cbr_[j] –nout
aodv_rwalk_[j].nam –tout aodv_rwalk_[j].tr
Giao thức DSR
ns lvch-dcthanh.tcl –rp DSR –ifq CMUPriQueue –sc rwalk –
cp cbr_[j] –nout dsr_rwalk_[j].nam –tout dsr_rwalk_[j].tr
Giao thức OLSR
ns lvch-dcthanh.tcl –rp OLSR –sc rwalk –cp cbr_[j] –nout
olsr_rwalk_[j].nam –tout olsr_rwalk_[j].tr
trong đó j là số nguồn phát: 1, 3 và 5.
* Phân tích tệp vết để tính các tham số hiệu năng
Sau khi thu được các tệp vết ta sử dụng các kịch bản viết bằng ngôn ngữ perl
chạy với tệp vết để thu được các kết quả về chi phí tìm đường với mô hình Random
Walk của 4 giao thức định tuyến mạng MANET.
Hình 25 cho thấy với mô hình di chuyển Random Walk thì số gói tin định tuyến
trung bình cần phát của OLSR vẫn luôn cao hơn so với các giao thức định tuyến còn
lại. Hai giao thức định tuyến AODV và DSR có số gói tin định tuyến trung bình cần
phát gần như nhau và thấp hơn so với giao thức định tuyến DSDV. Ngoài ra khi số
nguồn phát CBR tăng thì số gói tin định tuyến trung bình cần phát cũng tăng lên.
Tham số mô phỏng Giá trị
Tốc độ di chuyển cực đại 10m/s
Thời gian di chuyển 10s
72
Hình 25. Số gói tin định tuyến trung bình cần phát trong mô hình Random Walk
Chi phí định tuyến chuẩn hóa theo tải thì lại giảm dần khi mà số nguồn phát
CBR tăng lên và OLSR vẫn chiếm chi phí định tuyến chuẩn hóa theo tải cao nhất (gần
bằng 1 với trường hợp sử dụng 1 nguồn phát CBR).
Hình 26. Chi phí định tuyến chuẩn hóa theo tải trong mô hình Random Walk
Thời gian phát hiện tuyến trung bình trong mô hình Random Walk cũng tăng
khi mà số lượng nguồn phát CBR tăng. Ngoài ra có thể thấy giao thức định tuyến
AODV tốn thời gian tìm đường hơn so với giao thức định tuyến nguồn khác là DSR.
73
Hình 27. Thời gian phát hiện tuyến trung bình trong mô hình Random Walk
4.4.4. Đánh giá, nhận xét chi phí tìm đường của một số giao thức định
tuyến mạng MANET
Với mục đích đánh giá chi phí tìm đường của một số giao thức định tuyến trong
mạng MANET, tôi đã xây dựng thí nghiệm mô phỏng với hai mô hình di chuyển là
Random Waypoint và Random Walk, tiến hành đánh giá, so sánh giữa bốn giao thức
định tuyến mạng MANET bao gồm AODV, DSDV, DSR và OLSR. Thông qua quá
trình mô phỏng, mỗi giao thức định tuyến thể hiện chi phí tìm đường khác nhau. Sau
đây là những kết luận chung về chi phí tìm đường của từng giao thức định tuyến và
giữa các giao thức định tuyến với nhau.
DSDV là giao thức định tuyến dựa trên bảng cung cấp một đường đi tới một
đích bất kỳ. Giao thức định tuyến này hoạt động hiệu quả khi số nguồn sinh lưu lượng
đưa vào mạng thấp và mức độ di chuyển của các nút mạng là ít. Khi số nguồn sinh lưu
lượng đưa vào mạng hoặc mức độ di chuyển của các nút di động tăng thì việc cập nhật
định tuyến diễn ra với tần suất lớn. Cụ thể trong thí nghiệm mô phỏng, khi tôi tăng
thời gian tạm dừng từ 0s đến 900s và giảm số nguồn sinh lưu lượng đưa vào mạng từ 5
về 1 nguồn thì số gói tin định tuyến trung bình cần phát giảm đi đáng kể.
Cũng là giao thức định tuyến dựa trên bảng, OLSR có số lượng gói tin định
tuyến trung bình cần phát và chi phí định tuyến chuẩn hóa theo tải cao hơn nhiều so
với các giao thức định tuyến AODV và DSR. Điều này cũng dễ hiểu vì OLSR phải
thực hiện nhiệm vụ định tuyến trước. Giao thức này hoạt động hiệu quả khi có tập lớn
các nút truyền thông với nhau và các cặp [nguồn, đích] thay đổi nhanh theo thời gian
nhờ sử dụng một tập các chuyển phát đa điểm MRP. Một cách chi tiết, khi tôi tăng số
nguồn sinh lưu lượng đưa vào mạng từ 1 tới 3, rồi từ 3 tới 5, số gói tin định tuyến
trung bình cần phát giữa ba mức không chênh lệch nhau quá nhiều, cụ thể với thời
gian tạm dừng bằng 150s thì các giá trị số gói tin định tuyến trung bình cần phát lần
74
lượt là 61.42, 61.64 và 61.73. Từ đó có thể cho thấy khi mà số nguồn sinh lưu lượng
đưa vào càng nhiều thì giao thức hoạt động càng trở lên hiệu quả.
Với hai giao thức định tuyến bảng DSDV và OLSR, số lượng gói tin định tuyến
trung bình cần phát và chi phí định tuyến chuẩn hóa theo tải tuy là cao hơn so với
AODV và DSR nhưng bù lại chúng không cần phải mất thời gian để phát hiện các
tuyến từ nút nguồn tới nút đích bởi tuyến đường tới đích đã có sẵn trong bảng định
tuyến của chúng. Nhờ đó mà không phải tốn bất kỳ chi phí về thời gian nào cho việc
phát hiện tuyến nữa.
Hai giao thức đạt kết quả khá tốt về chi phí tìm đường có thể thấy rõ là AODV
và DSR về khả năng tiết kiệm số gói tin định tuyến trung bình cần phát và chi phí định
tuyến chuẩn hóa theo tải. Là hai giao thức có yêu cầu khởi tạo phía nguồn nên khi có
yêu cầu truyền dữ liệu từ nút nguồn tới nút đích chúng mới thi hành việc kiểm tra có
tồn tại tuyến hay không do đó để tìm được đường đi từ nút nguồn tới nút đích chúng
phải chịu một độ trễ thời gian nhất định cho việc phát hiện tuyến. Cụ thể trong các
trường hợp tôi tiến hành thí nghiệm về thời gian tạm dừng và số nguồn sinh lưu lượng
thay đổi, số gói tin định tuyến trung bình cần phát và chi phí định tuyến chuẩn hóa
theo tải của hai giao thức yêu cầu khởi tạo phía nguồn đều thấp hơn rõ rệt so với hai
giao thức định tuyến dựa trên bảng, Khi thời gian tạm dừng lên tới 900s (các nút
không di chuyển) thì hai độ đo này đều có xu hướng tiến về 0.
Giao thức AODV hoạt động hiệu quả khi có các liên kết đối xứng giữa các nút
di động và có thời gian phát hiện tuyến thấp khi các nút di chuyển liên tục. Cụ thể
trong thí nghiệm mô phỏng của tôi, khi thời gian tạm dừng là 0 (các nút di chuyển
trong suốt quá trình mô phỏng) với số nguồn sinh lưu lượng tăng từ 1 tới 5 thì thời
gian phát hiện tuyến trung bình chỉ dao động từ 0.035 tới 0.046s.
Giao thức định tuyến nguồn còn lại là DSR có thời gian phát hiện tuyến trung
bình tốt hơn so với giao thức định tuyến AODV. Điều này được giải thích bởi DSR có
nhiều tuyến tới đích hơn, khi việc lỗi tuyến hay mất tuyến xảy ra, nó có thể sử dụng
một trong những tuyến còn lại thay vì khởi tạo một quá trình tìm tuyến mới. Giao thức
DSR hoạt động đặc biệt hiệu quả trong trường hợp các nút di động di chuyển với mức
độ trung bình. Cụ thể, trong thí nghiệm mô phỏng của tôi, với thời gian tạm dừng dao
động từ 300-600s, thời gian phát hiện tuyến tăng rất chậm và thay đổi không đáng kể.
Khi mà thời gian tạm dừng quá thấp hoặc quá cao thì thời gian phát hiện tuyến không
đạt kết quả tối ưu, cụ thể khi thời gian tạm dừng là 900s, sự biến đổi thời gian phát
hiện tuyến tăng vọt lên, trong trường hợp với số nguồn phát là 3 thì thời gian phát hiện
tuyến tốn gần 0.07s.
75
KẾT LUẬN
Đề tài luận văn ‘Đánh giá chi phí tìm đường của một số giao thức định tuyến
trong mạng MANET’ đề cập đến vấn đề đi tìm chi phí tìm đường của một số giao thức
định tuyến điển hình trong mạng MANET, một vấn đề quan trọng trong lĩnh vực mạng
không dây. Sau quá trình nghiên cứu, luận văn đã đạt được một số kết quả nhất định cả
về lý thuyết và thực nghiệm.
Luận văn đã trình bày tổng quan về khái niệm và các đặc điểm của mạng
WLAN và mạng MANET. Ngoài ra, luận văn cũng xem xét bài toán định tuyến trong
mạng MANET và các giải pháp có thể sử dụng để giải quyết bài toán định tuyến cũng
như giới thiệu một số giao thức định tuyến điển hình trong mạng MANET. Đi cùng
với lý thuyết là phần thực nghiệm mô phỏng, tôi đã tích hợp một số giao thức định
tuyến mạng MANET vào bộ chương trình mô phỏng NS2 như OLSR, TORA. Quá
trình tích hợp các giao thức này được trình bày chi tiết trong luận văn. Sau đó, luận
văn cũng mô tả việc xây dựng 96 thí nghiệm mô phỏng từ 4 giao thức định tuyến
mạng MANET là AODV, DSDV, DSR và OLSR và việc thay đổi các ngữ cảnh mạng
bao gồm việc thay đổi số nguồn sinh lưu lượng (1, 3, 5 nguồn), thay đổi mô hình
chuyển động (mô hình Random Waypoint, mô hình Random Walk). Bằng việc sử
dụng các tệp mã được tôi viết bằng ngôn ngữ perl, tôi đã đưa ra được các đồ thị so
sánh về chi phí tìm đường của một số giao thức định tuyến mạng MANET khảo sát và
từ đó đánh giá các độ đo chi phí tìm đường bao gồm số gói tin định tuyến trung bình
cần phát, chi phí định tuyến chuẩn hóa theo tải và thời gian phát hiện tuyến trung bình.
Mặc dù vậy, do điều kiện và thời gian hạn chế nên luận văn không tránh khỏi
những thiếu sót. Trong tương lai gần, tôi sẽ tiếp tục đánh giá chi phí tìm đường với
một số giao thức định tuyến khác như TORA, ZRP… bằng cách tích hợp thêm các
giao thức mới vào bộ chương trình mô phỏng NS2 theo hai hướng là tìm kiếm các mô
đun sửa lỗi cho các giao thức định tuyến mạng MANET cần tích hợp hoặc trực tiếp
phát triển các thư viện để có thể tích hợp vào bộ chương trình mô phỏng NS2. Sau
bước đó, tôi sẽ tiến hành các thí nghiệm mô phỏng, viết thêm các tệp kịch bản phân
tích các kết quả để đưa ra được các nhận xét sâu sắc và chính xác hơn về sự hiệu quả
của các giao thức định tuyến mạng MANET trong những điều kiện mạng cụ thể.
Ngoài ra, còn có một số vấn đề khác liên quan đến mạng MANET khá thú vị và cần
nghiên cứu, khảo sát như:
ü Vấn đề bảo mật trong mạng MANET
ü Vấn đề bảo đảm chất lượng dịch vụ trong mạng MANET
ü Vấn đề đánh giá dung lượng của mạng MANET…
76
TÀI LIỆU THAM KHẢO
Tài liệu Tiếng Việt
1. PGS.TS. Nguyễn Đình Việt, Bài giảng đánh giá hiệu năng mạng máy tính,
2008.
Tài liệu Tiếng Anh
2. Chai-Kong Toh, A Novel Distributed Routing Protocol To Support AdHoc
Mobile Computing, Proc IEEE 15th, Mar. 1996.
3. Charles E. Perkins, Elizabeth M.Royer, Ad-hoc On-Demand Distance Vector
Routing, Proc 2nd IEEE Wksp. Mobile Comps. Sys and App, Feb 1999.
4. Charles E. Perkins, Pravin Bhagwat, Highly Dynamic Destination-Sequenced
Distance Vector Routing (DSDV) for Mobile Computers, Comp Commun Rev,
Oct. 1994.
5. Ching-Chuan Chiang, Hsiao-Kuang Wu, Winston Liu, Mario Gerla, Routing in
Clustered Multihop, Mobile Wireless Networks with Fading Channel, PROC
IEEE SICON 97, Apr. 1997.
6. David B. Johnson, David A. Maltz, Josh Broch, DSR: The Dynamic Source
Routing Protocol for Multi-hop Wireless Ad Hoc Networks, t. Imielinski and
H.Korth , Eds Kluwer, 1996.
7. Eitan Altman, Tania Jimenez, NS Simulator for beginners, Lecture notes, 2003-
2004.
8. Elizabeth M.Royer, Chai-Keong Toh, A Review of Current Routing Protocols
for Ad Hoc Mobile Wireless Networks, IEEE Personal Communications, Apr.
1999.
9. Kevin Fall, Kannan Varadhan, The NS Manual, The VINT Project, A
Collaboration between researchers at UC Berkeley, LBL, USC/ISI, and Xerox
PARC, May. 2010.
10. Mr. Ankur Khetrapal, Routing techniques for Mobile Ad Hoc Networks
Classification and Qualitative/Quantitative Analysis, Internet Conference on
Wireless Networks, 2006.
11. M. S. Corson, A. Ephremides, A Distributed Routing Algorithm for Mobile
Wireless Networks, Feb. 1995.
12. Mathew Gast, 802.11 Wireless Networks: The Definitive Guide, O’Reilly
Publisher, 2002.
13. Rohit Dube, Cynthia D. Rais, Kuang-Yeh Wang, Satish K. Tripathi, Signal
Stability-Based Adaptive Routing (SSA) for Adhoc Mobile Networks, IEEE
Pers. Commun, Feb. 1997.
14. Shree Murthy, J.J. Garia-Luna-Aceves, An Efficient Routing Protocol for
Wireless Networks, ACM Mobile Networks and Apps, Oct. 1996.
77
15. Stefano Basagni, Marco Conti, Silvia Giordano, Ivan Stojmenovic, Mobile ad
hoc networking, John Wiley & Sons, Inc., Publication, 2004.
16. T.Clausen, P.Jacquet, P.Muhlethaler, A.Laouiti, A.Qayyum, L.Viennot,
Optimized Link State Routing Protocol for Adhoc Networks, Multi Topic
Conference, 2001.
17.
18.
19.
04/
20.
21.
22.
78
PHỤ LỤC
1. lvch-dcthanh.tcl
# Written by Doan Cao Thanh (15/08/2010)
# Mobile nodes : 50
# Area : 1500x300m
# Time : 900s
# Default Script Options
set opt(chan) Channel/WirelessChannel ;# Channel type
set opt(prop) Propagation/TwoRayGround ;# Radio propagation model
set opt(netif) Phy/WirelessPhy ;# Network interface type
set opt(mac) Mac/802_11 ;# Mac type
set opt(ifq) Queue/DropTail/PriQueue ;# Interace queue type
set opt(ll) LL ;# Link layer type
set opt(ant) Antenna/OmniAntenna ;# Antenna model
set opt(x) 1500 ;# X dimension
set opt(y) 300 ;# Ydimension
set opt(cp) "connection_pattern" ;# Connection pattern
set opt(sc) "scenario_file" ;# Scenario of simulation
set opt(ifqlen)50 ;# Max packet in ifq
set opt(nn) 50 ;# Number of mobilenodes
set opt(stop) 900 ;# Time of simulation end
set opt(rp) DSDV ;# Routing protocol
set opt(nout) "nam_out.nam" ;# Nam out
set opt(tout) "trace_out.tr" ;# Trace out
# Trace Options
set opt(AgentTrace) ON
set opt(RouterTrace) ON
set opt(MacTrace) OFF
set opt(MovementTrace) ON
# Procedure
proc usage { argv0 } {
puts "Usage: $argv0"
puts "\tOptional arguments: \[-nn nodes\] \[-x MAXX\] \[-
y MAXY\] \[-rp Routing protocol\] \[-cp conn pattern\] \[-sc
scenario\] \[-stop sec\] \[-ifq interface queue\] \[-nout
namout\] \[-tout traceout\]\n"
}
proc getopt {argc argv} {
global opt
lappend optlist nn x y rp cp sc stop ifq nout tout
for {set i 0} {$i < $argc} {incr i} {
set arg [lindex $argv $i]
if {[string range $arg 0 0] != "-"} continue
79
set name [string range $arg 1 end]
set opt($name) [lindex $argv [expr $i+1]]
}
}
proc create-god { nodes } {
global ns_ god_
set god_ [new God]
$god_ num_nodes $nodes
}
proc stop {} {
global ns_ f nf
$ns_ flush-trace
close $f
close $nf
}
# Main Program
# Get parameter from command
getopt $argc $argv
usage $argv0
puts "Topo: x=$opt(x), y = $opt(y)"
puts "Routing Protocol: $opt(rp)"
puts "Number nodes: $opt(nn)"
puts "Stop at: $opt(stop)"
puts "Scenario: $opt(sc)"
puts "Connection pattern: $opt(cp)"
puts "Nam out: $opt(nout)"
puts "Trace out: $opt(tout)"
puts "Interace queue type: $opt(ifq)"
# Initialize Global Variables
set ns_ [new Simulator]
set topo [new Topography]
# Use the new wireless trace file format
$ns_ use-newtrace
# Trace
set f [open $opt(tout) w]
set nf [open $opt(nout) w]
$ns_ trace-all $f
$ns_ namtrace-all-wireless $nf $opt(x) $opt(y)
# Setup topography
80
$topo load_flatgrid $opt(x) $opt(y)
puts "Loading topography..."
# Create nn mobilenodes and attach them to the channel
create-god $opt(nn)
puts "Creating gods..."
# Configure the nodes
$ns_ node-config -adhocRouting $opt(rp) \
-llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-propType $opt(prop) \
-phyType $opt(netif) \
-channelType $opt(chan) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace ON \
for {set i 0} {$i < $opt(nn)} {incr i} {
set node_($i) [$ns_ node]
}
# Define node initial position in nam
for {set j 0} {$j < $opt(nn)} { incr j } {
$node_($j) namattach $nf
# 30 defines the node size for nam
$ns_ initial_node_pos $node_($j) 30
}
# Source the Connection and Movement scripts
puts "Loading connection pattern..."
source $opt(cp)
# Tell all the nodes when the simulation ends
for {set k 0} {$k < $opt(nn) } { incr k } {
$ns_ at $opt(stop) "puts \"stop node $k ...\";$node_($k)
reset";
}
81
# Loading sccenario file
puts "Loading scenario file begin..."
source $opt(sc)
puts "Loading scenario file complete..."
# Ending nam and the simulation
$ns_ at $opt(stop) "puts \"Nam end wireless...\";$ns_ nam-end-
wireless $opt(stop)"
$ns_ at $opt(stop) "puts \"Stop simulation...\";stop"
$ns_ at $opt(stop).1 "puts \"end simulation\" ; $ns_ halt"
# Run simulation
puts "Starting Simulation..."
$ns_ run
2. average_routing_packets.tpl
# File: average_routing_packets.pl
# Author: Doan Cao Thanh
# Purpose: Calculate average routing packets for finding path
(arp)
# Type: perl average_routing_packets.pl
# Get paratmeter
$infile = $ARGV[0];
$pause_time = $ARGV[1];
# Constructor for variable
$count = 0;
$average_rp = 0;
# Process input file
open (DATA,"<$infile") || die "Can't open $infile $!";
@x = split(' ');
while() {
@x = split(' ');
if (($x[0] eq "s" || $x[0] eq "f") && $x[18] eq "RTR" &&
($x[34] eq "AODV" || $x[34] eq "DSR" || $x[34] eq "DSDV" ||
$x[34] eq "undefined" || $x[34] eq "message")){ #Check send
or forward || undefined=olsr
$count++;
}
}
if($count == 0){
$average_rp = 0;
}else{
82
$average_rp = $count/900;
}
print STDOUT "$pause_time\t $average_rp\n";
close DATA;
exit(0);
3. normalized_routing_overhead.pl
# File: normalized_routing_overhead.pl
# Author: Doan Cao Thanh
# Purpose: Calculate normalized routing overhead (nro)
# Type: perl normalized_routing_overhead.pl
# Get paratmeter
$infile = $ARGV[0];
$pause_time = $ARGV[1];
# Constructor for variable
$count_pkt_routing = 0;
$count_pkt_data = 0;
# Process input file
open (DATA,"<$infile") || die "Can't open $infile $!";
@x = split(' ');
while() {
@x = split(' ');
if (($x[0] eq "s" || $x[0] eq "f") && $x[18] eq "RTR" &&
($x[34] eq "AODV" || $x[34] eq "DSR" || $x[34] eq "DSDV" ||
$x[34] eq "undefined" || $x[34] eq "message")){ #Check send
or forward || undefined=olsr
$count_pkt_routing++;
}
if (($x[0] eq "s" || $x[0] eq "f") && $x[18] eq "AGT" &&
$x[34] eq "cbr"){ #Check send or forward
$count_pkt_data++;
}
}
$normalized_routing_overhead =
$count_pkt_routing/($count_pkt_data+$count_pkt_routing);
print STDOUT "$pause_time\t $normalized_routing_overhead\n";
close DATA;
exit(0);
4. route_discovery_aodv.pl
# File: route_discovery_aodv.pl
# Author: Doan Cao Thanh
83
# Purpose: Calculate average time for determine route
discovery in AODV protocol (rdt)
# Type: perl route_discovery_aodv.pl
# For AODV
# -P aodv -Pt 0x2 -Ph 4 -Pb 28 -Pd 2 -Pds 73 -Ps 1 -Pss 72 -Pc
REQUEST
# 43,44 : -P aodv
# 45,46: -Pt 0x2 Type
# 47,48: -Ph 4 Hop Count
# 49,50: -Pb 28 Broadcast ID
# 51, 52: -Pd 2 Destination
# 53, 54: -Pds 73 Destination Sequence Number
# 55, 56: -Ps 1 Source
# 57, 58: -Pss 73 Source Sequence Number
# 59,60: -Pc REQUEST Operation
# -P aodv -Pt 0x4 -Ph 1 -Pd 2 -Pds 42 -Pl 10.000000 -Pc REPLY
: Khong có Pb, Pss + co them Pl
# -P aodv -Pt 0x8 -Ph 1 -Pd 2 -Pds 0 -Pl 0.000000 -Pc ERROR:
Khong co Pb, Pss + co them Pl
# 49, 50: -Pd 2 Destination
# 51, 52: -Pds 73 Destination Sequence Number
# 53,54: Pl 10.000000 Lifetime
# 55,56 : -Pc REPLY|ERROR Operation
# Get paratmeter
$infile = $ARGV[0];
$pause_time = $ARGV[1];
# Constructor for variable
@send = (0..0);
@source = (0..0);
@recv = (0..0);
$num = 0;
# Process input file
open (DATA,"<$infile") || die "Can't open $infile $!";
@x = split(' ');
$max_broadcastID = 0;
while() {
@x = split(' ');
$event_ = $x[0];
$time_ = $x[2];
$type_ = $x[49];
if($type_ eq "-Pb"){ #BroadcastID and RouteRequest
84
$broadcastID_ = $x[50];
$max_broadcastID = $broadcastID_ if
($max_broadcastID < $broadcastID_);
if($event_ == "s" && $x[18] eq "RTR" && $x[34] eq
"AODV" && !$send[$max_broadcastID]){
$source_ = $x[56]; #Ps 1
$send[$max_broadcastID] = $time_;
$source[$max_broadcastID] = $source_;
}
}elsif($type_ eq "-Pd"){
#Determine Hs and Hd
$hs_ = $x[4];
$hd_ = $x[6];
if($hs_ eq $hd_ && $hs_ eq
$source[$max_broadcastID]){
if($event_ == "r" && $x[18] eq "RTR" && $x[34]
eq "AODV" && !$recv[$max_broadcastID]){
$recv[$max_broadcastID] = $time_;
}
}
}else{
#Do nothing
}
}
close DATA;
$delay = 0;
for($count=0;$count<=$max_broadcastID;$count++){
if($send[$count] && $recv[$count]){
$send_ = $send[$count];
$recv_ = $recv[$count];
$interval_ = $recv_ - $send_;
$delay += $interval_;
$num++;
}
}
if($num == 0){
$avg_delay = 0;
}else{
$avg_delay = $delay / $num;
}
print STDOUT "$pause_time\t $avg_delay\n";
exit(0);
5. route_discovery_dsr.pl
85
# File: route_discovery_dsr.pl
# Author: Doan Cao Thanh
# Purpose: Calculate average time for determine route
discovery in dsr (rdt)
# Type: perl route_discovery_dsr.pl
# For DSR
# -P dsr -Ph 5 -Pq 0 -Ps 2 -Pp 01-Pn 2 -Pl 5 -Pe 1->2 -Pw 0 -
Pm 0 -Pc 0 -Pb 0->0
# 43,44: Type -P dsr
# 45,46: -Ph 5 Number Of Nodes Traversed
# 47,48: -Pq 0 Routing Request Flag
# 49,50: -Ps 2 Route Request Sequence Number
# 51,52: -Pp 1 Routing Reply Flag
# 53,54: -Pn 2 Route Request Sequence Number
# 55,56: -Pl 5 Reply Length
# 57,58: -Pe 1->2 Source->Destination Of Source Routing
# 59,60: -Pw 0 Error Report Flag (?)
# 61,62: -Pm 0 Number Of Errors
# 63,64: -Pc 0 Report To Whom
# 65,66: -Pb 0->0 Link Error From Link A to Link B
# Get paratmeter
$infile = $ARGV[0];
$pause_time = $ARGV[1];
# Constructor for variable
@send = (0..0);
@source = (0..0);
@recv = (0..0);
$num = 0;
$max_sequence_number = 0;
# Process input file
open (DATA,"<$infile") || die "Can't open $infile $!";
@x = split(' ');
while() {
@x = split(' ');
$event_ = $x[0];
$time_ = $x[2];
if($x[18] eq "RTR" && $x[34] eq "DSR") {
$sn_ = $x[50];
$max_sequence_number = $sn_ if ($max_sequence_number
< $sn_);
86
if($event_ eq "s" && $x[56] eq 0 && $x[48] eq 1 &&
$x[52] eq 0 && !$send[$sn_]){
$send[$sn_] = $time_;
$source[$sn_] = $x[4]; #Hs
}
if($event_ eq "r" && $x[56] ne 0 && $x[48] eq 0 &&
$x[52] eq 1 && !$recv[$sn_] && $max_sequence_number eq $sn_){
$hs_ = $x[4];
$hd_ = $x[6];
if($hs_ eq $hd_ && $hs_ eq $source[$sn_]){
$recv[$sn_] = $time_;
}
}
}
}
close DATA;
$delay = 0;
for($count=0;$count<=$max_sequence_number;$count++){
if($send[$count] && $recv[$count]){
$send_ = $send[$count];
$recv_ = $recv[$count];
$interval_ = $recv_ - $send_;
$delay += $interval_;
$num++;
}
}
if($num == 0){
$avg_delay = 0;
}else{
$avg_delay = $delay / $num;
}
print STDOUT "$pause_time\t $avg_delay\n";
exit(0);
Các file đính kèm theo tài liệu này:
- LUẬN VĂN-ĐÁNH GIÁ CHI PHÍ TÌM ĐƯỜNG CỦA MỘT SỐ GIAO THỨC ĐỊNH TUYẾN TRONG MẠNG MANET.pdf