CHƯƠNG 4. ĐÁNH GIÁ MỘT SỐ THAM SỐ CHẤT LƯỢNG DỊCH VỤ CỦA MẠNG CẢM BIẾN KHÔNG DÂY
4.3. THỰC HIỆN MÔ PHỎNG 1. Viết mã và chạy mô phỏng
Các tuỳ chọn về môi trường mạng được khai báo như sau:
set val(prop) Propagation/TwoRayGround; #Kiểu phát vô tuyến set val(netif) Phy/WirelessPhy ;#Kiểu giao tiếp mạng set val(mac) Mac/802_11 ;#Kiểu MAC set val(PHENOMmac) Mac ;#Kiểu hiện tượng MAC set val(ifq) Queue/DropTail/PriQueue ;#Kiểu hàng đợi set val(ll) LL ;#Kiểu lớp liên kết số liệu set val(ant) Antenna/OmniAntenna ;#Kiểu antent
set val(ifqlen) 50 ;#Số gói max trong hàng đợi set val(nn) ", $totalnodes-1," ;#Tổng số node cảm biến, set val(rp) AODV ;#Giao thức định tuyến set val(x) 1000 ;#Chiều dài bản đồ (m) set val(y) 1000 ;#Chiều rộng bản đồ (m) Trong phần chương trình chính (Main Program) sẽ định nghĩa tên File số liệu đầu ra (Trace, NAM) và thực hiện các thiết lập kênh, nút, giao thức, tác nhân, ứng dụng, mô hình Phenomenon [7], [9], [11], [12], [13], [14], [15], [16]
Các công việc cần thiết khác cần thực hiện trong chương trình chính là thiết lập tọa độ cho các nút và các khai báo thời gian mô phỏng các sự kiện xảy ra trong thời gian mô phỏng. Ví dụ:
a) Các lệnh sau thiết lập tọa độ (m) cho các nút node_1 là (x,y) = (1,1) và node_2 là (x,y) = (101,1):
$node_(1) set X_ 1
$node_(1) set Y_ 1
$node_(2) set X_ 101
$node_(2) set Y_ 1
b) Lệnh sau khai báo một sự kiện tại thời điểm 0,01 giây, nút node_0 (Phenomenon) di chuyển đến tọa độ (x,y) = (470.316697379992, 107.25415624008) với tốc độ 200,0 (đơn vị tốc độ được định nghĩa trong NS-2):
$ns_ at 0.01 "$node_(0) setdest 470.316697379992 107.25415624008 200.0"
c) Tính toán khoảng các giữa các node:
$cols = floor(sqrt($totalnodes));
$rows = ceil($totalnodes / $cols);
$colinterval = floor($width / ($cols-1)) - 1;# Khoảng cách giữa hai node trên cột.
$rowinterval = floor($height / ($rows-1)) - 1;# Khoảng cách giữa hai node trên dòng.
Ngoài ra, còn có các định nghĩa màu nút, các thông báo ra màn hình công tác, v.v.
Sau khi đã có tập mã đầu vào lưu trong file wsnet.tcl , có thể bắt đầu chạy mô phỏng bằng lệnh: ns wsnet.tcl trong cửa sổ công tác. Chương trình có thể chạy trong vài phút đến nhiều giờ tuỳ theo số nút mạng. Sau khi chạy xong, ta có thể quan sát hình ảnh triển khai mạng bằng ứng dụng NAM trong NS-2 [7], [9], [11], [12], [13], [14], [15], [16]
Hình 4.1 là cửa sổ quan sát mô phỏng bằng ứng dụng NAM với số nút Sensor được triển khai là 100 trong phạm vi 1000ì1000m, 1 node hiện tượng, thời gian mụ phỏng 20s với giao thức định tuyến AODV.
Hình 4.1: Quan sát mô phỏng bằng ứng dụng NAM 4.3.2. Tính toán kết quả
Sau khi chạy xong mô phỏng trong NS-2, việc tiếp theo là phân tích file Trace. Mô phỏng này sử dụng loại Trace với định dạng 7 trường đầu tiên như sau:
[sự kiện] [thời gian] [số thứ tự nút] [mức Trace] ---- [số thứ tự gói] [kiểu gói]
[kích thước gói].
Trong đó, các sự kiện trong trường sự kiện gồm r (nhận gói), s (gửi gói), D (mất gói), f (chuyển tiếp gói); trường thời gian chỉ ra thời điểm xảy ra sự kiện;
trường mức Trace chỉ ra sự kiện này thuộc phạm vi (mức độ) mô phỏng nào (tác nhân (như udp), lớp liên kết số liệu (MAC) hay mức vật lý, ....).
Với yêu cầu tính toán trong trường hợp này, ta chỉ cần quan tâm tới 7 trường đầu tiên này, các trường sau có định dạng tuỳ theo mức Trace và kiểu gói. Ví dụ với mức Trace MAC và kiểu gói PHENOM (tín hiệu hiện tượng) thì các trường tiếp theo là [thời gian chuyển] [địa chỉ MAC] [Kiểu hiện tượng].
Ví dụ về một đoạn file Trace của mạng 40 node cảm biến như sau:
s 3.340224734 _21_ MAC --- 0 RTS 44 [7de 1b 15 0]
r 3.340577284 _27_ MAC --- 0 RTS 44 [7de 1b 15 0]
s 3.340587284 _27_ MAC --- 0 CTS 38 [6a4 15 0 0]
r 3.340891834 _21_ MAC --- 0 CTS 38 [6a4 15 0 0]
s 3.340901834 _21_ MAC --- 24 udp 172 [13a 1b 15 800]
--- [9:1 41:0 26 27]
r 3.342278384 _27_ MAC --- 24 udp 120 [13a 1b 15 800]
--- [9:1 41:0 26 27]
s 3.342288384 _27_ MAC --- 0 ACK 38 [0 15 0 0]
r 3.342303384 _27_ RTR --- 24 udp 120 [13a 1b 15 800]
--- [9:1 41:0 26 27]
f 3.342303384 _27_ RTR --- 24 udp 120 [13a 1b 15 800]
--- [9:1 41:0 25 33]
Công việc phân tích file Trace được thực hiện qua hai bước:
- Tách file Trace: Mục đích của việc tách file Trace là lấy ra các loại gói và trường cần thiết cho việc tính toán kết quả.
- Tính toán kết quả: thực hiện tính toán kết quả trên các phần đã tách ra ở trên 4.3.3. Tính tỷ lệ mất gói udp tại lớp giao
- Công thức tính tỷ lệ mất gói udp:
Tỷ lệ mất gói udp = 1 – (Số gói udp nhận/số gói udp gửi)
- Tách số liệu nhận và gửi tại điểm thu Sink: Sử dụng lệnh sau trong cygwin/X để tách lấy các sự kiện nhận gói udp của điểm thu Sink (trong file Trace wsnet.tr) để tính số gói udp nhận được.
$ cat wsnet.tr | grep "AGT" | grep "udp" | grep ^r | awk ' { printf ("%c\t%f\t%s\t%s\t%d\t%s\t%d\n",
$1,$2,$3,$4,$6,$7,$8)} ' > nhanudp.txt
$ cat wsnet.tr | grep "AGT" | grep "udp" | grep ^s | awk ' { printf("%c\t%f\t%s\t
%s\t%d\t%s\t%d\n",$1,$2,$3,$4,$6,$7,$8)} ' > guiudp.txt
Bảng 4.1: Tỷ lệ mất gói udp theo số lượng node cảm biến Số lượng
node cảm biến
Số gói udp gửi từ các node cảm
biến
Số gói nhận bởi điểm thu
Sink
Tỷ lệ mất gói udp
40 184 184 0
60 289 288 0.003460
80 441 441 0
100 572 567 0.008741
120 626 621 0.007987
140 754 742 0.015915
160 915 869 0.050273
180 967 904 0.065150
200 1139 503 0.558385
220 1174 646 0.449744
240 1403 384 0.726301
260 1555 114 0.926688
280 1620 26 0.983951
300 1805 73 0.959557
320 1845 4 0.997832
340 2041 14 0.993141
360 2214 47 0.978771
380 2043 139 0.931963
400 2486 11 0.995575
Hình 4.2: Đồ thị tỷ lệ mất gói tại lớp giao vận.
4.3.4. Tính độ trễ gói (s)
- Công thức độ trễ gói udp: Độ trễ gói = Thời điểm nhận – Thời điểm gửi.
Bảng 4.2: Độ trễ gói cực đại, cực tiểu và trung bình Số lượng node
cảm biến Độ trễ cực đại Độ trễ cực tiểu Độ trễ trung bình
40 2.118961 0.004831 0.063042
60 2.267924 0.002173 0.067624
80 1.176684 0.002174 0.052597
100 2.257699 0.004896 0.074790
120 1.489998 0.002154 0.044339
140 4.539861 0.007049 0.281901
160 7.988922 0.002154 0.755690
180 10.018941 0.002154 1.127731
200 16.319756 0.002889 3.948794
220 18.401416 0.003889 4.308794
240 18.377152 0.006547 4.930560
260 18.137422 0.039260 7.096495
280 7.069353 0.008996 1.158788
300 18.396197 0.008495 5.775821
320 6.056735 0.284054 3.999372
340 12.326229 0.021033 6.567604
360 17.322686 0.539750 8.373938
380 16.414597 0.009300 7.007174
400 10.592491 0.102936 2.758421
Hình 4.3: Đồ thị độ trễ gói udp cực đại, cực tiểu và trung bình
Hình 4.4: Đồ thị độ trễ gói udp trung bình theo số lượng node cảm biến
4.3.5. Tính tốc độ gói udp trung bình (kbps)
- Sử dụng lệnh sau trong cygwin/X để tính tốc độ số liệu tức thời và ghi vào file datarate.txt.
$ cat nhanudp.txt | awk ' { dif= $2 - old2; if(dif>0) printf("%f\t%f\n",$2,0.960/dif);old2=$2; }' >
datarate.txt
Bảng 4.3: Tốc độ cực đại, tốc độ cực tiểu và tốc độ trung bình Số lượng
node cảm biến
Tốc độ thu số liệu cực đại
Tốc độ thu số liệu cực tiểu
Tốc độ thu số liệu trung bình
40 345.448003 1.244946 26.608275
60 396.858206 1.276056 47.110937
80 378.250591 0.950297 54.519053
100 393.603936 1.092742 60.582764
120 393.926959 1.377011 89.892454
140 397.186595 0.743840 89.086452
160 397.186595 0.406493 137.254866
180 397.022333 0.352261 127.033017
200 397.022333 0.564392 111.799155
220 397.022333 0.237893 130.268487
240 397.186595 0.475326 155.153009
260 397.022333 0.156104 119.839600
280 225.457961 0.069972 20.238568
300 390.720391 0.257825 45.452702
320 6.973855 0.068026 2.059487
340 34.531132 0.129143 4.443977
360 397.186595 0.150505 113.371593
380 397.186595 0.361451 114.313422
400 58.443930 0.101691 14.407393
Hình 4.5: Đồ thị tốc độ số liệu được nhận bởi điểm thu Sink
Hình 4.6: Đồ thị tốc độ số liệu trung bình được nhận bởi điểm thu Sink