THỰC HIỆN MÔ PHỎNG 1. Viết mã và chạy mô phỏng

Một phần của tài liệu NGHIÊN CỨU CÁC THÔNG SỐ MẠNG CẢM BIẾN KHÔNG DÂY VÀ SỬ DỤNG PHẦN MỀM MÔ PHỎNG ĐỂ ĐÁNH GIÁ CHẤT LƯỢNG DỊCH VỤ (Trang 93 - 102)

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

Một phần của tài liệu NGHIÊN CỨU CÁC THÔNG SỐ MẠNG CẢM BIẾN KHÔNG DÂY VÀ SỬ DỤNG PHẦN MỀM MÔ PHỎNG ĐỂ ĐÁNH GIÁ CHẤT LƯỢNG DỊCH VỤ (Trang 93 - 102)

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

(106 trang)
w