Mô phỏng và đánh giá hiệu năng

Một phần của tài liệu Đề xuất các thuật toán định tuyến đem lại hiệu quả năng lượng trong mạng cảm biến không dây (Trang 79)

4.3.1. Mô hình nguồn năng lƣợng

Mô hình nguồn được xây dựng trên cơ chế khấu trừ năng lượng. Một nút Sensor có ba thành phần tiêu thụ năng lượng chính là thiết bị cảm biến, thiết bị thu phát vô tuyến và bộ xử lý với các cơ chế tiêu thụ năng lượng khác nhau. Các thành phần này lại có thể hoạt động ở các trạng thái khác nhau với tốc độ tiêu thụ năng lượng khác nhau. Mô hình nguồn năng lượng cung cấp khả năng mô phỏng trạng thái nguồn năng lượng của nút. Ban đầu, mỗi nút Sensor được định cấu hình với một khối năng lượng xác định. Mỗi khi nút Sensor thực hiện một hành động như nhận một tín hiệu cảm biến, thu hoặc phát các gói tin vô tuyến, xử lý tín hiệu, nguồn năng lượng dự trữ của nút đó sẽ bị khấu trừ theo công suất được định nghĩa trước cho từng thành phần. Khi nút Sensor không có hành động nào, năng lượng sẽ được khấu trừ theo công suất rỗi (Idle power).

Đúng

Không phải

Nhận RREQ hoặc RREP

Định tuyến mới? Xét B mới < B cũ Cập nhật định tuyến Kết thúc Thêm mới Đúng Sai

80

Với các mạng Sensor hiện nay, nhất là với các mạng không có khả năng tìm nguồn năng lượng bên ngoài, ví dụ như sử dụng các tấm pin mặt trời thì tuổi thọ của nguồn năng lượng là yếu tố quyết định thời gian tồn tại của mạng. Do đó, các thuật toán và giao thức được sử dụng cho mạng Sensor đều phải chú ý đến hiệu quả sử dụng nguồn năng lượng. Với việc mô hình hoá nguồn năng lượng cho nút Sensor, môi trường mô phỏng cung cấp khả năng khảo sát hiệu quả sử dụng nguồn năng lượng của các thuật toán, các giao thức và các cách tổ chức, triển khai nút khác nhau được áp dụng cho mạng Sensor. Mô hình này còn cung cấp một số cơ chế khấu trừ nguồn trong thực tế đã được kiểm chứng bằng thực nghiệm.

4.3.2. Thiết kế phần mềm mô phỏng mạng Wireless Sensor

Trong thiết kế phần mềm (còn được gọi là chuyển đổi mô hình), mô hình mô phỏng được phát triển bằng một ngôn ngữ lập trình nào đó. Trong luận văn này, việc mô phỏng mạng Sensor được thực hiện trên phần mềm mô phỏng mạng NS2 đã mở rộng cho môi trường mạng Sensor.

4.3.2.1 Phần mềm NS2

NS2 (Network Simulator phiên bản 2) là chương trình mô phỏng mạng theo phương pháp mô phỏng các sự kiện rời rạc. NS2 hỗ trợ mô phỏng mạng có dây và không dây, TCP, UDP , các giao thức truyền thông điểm- đa điểm và định tuyến khác, … NS2 được viết bằng C++ và ngôn ngữ hướng đối tượng Tcl (Otcl: object-oriented tool command language).

NS2 có một lịch sử khá dài, bắt nguồn từ các phần mềm REAL của UCB (1989) và NEST của Colombia (1992). Đến năm 1995, NS2 được phát triển trong dự án VINT (Virtual InterNet Testbed hay nền kiểm thử Internet ảo). VINT là dự án hợp tác giữa AT&T Reseach, Lawrence Berkeley National Laboratory, ETH TIK, Xerox PARC, UCB-Berkeley và USC/ISI. Hiện nay, Ns đang tiếp tục được phát triển trong các dự án SAMAN và CONSER, cùng với sự hợp tác của nhiều nhà nghiên cứu và ACIRI. Những tổ chức đã đóng góp đáng kể vào NS2 là UCB Daeledus, UMU Monarch và Sun Micro Systems.

So với các phần mềm mô phỏng mạng khác, NS2 có những ưu thế sau: + NS2 có mã nguồn mở miễn phí.

+ NS2 có kiến trúc mở, tạo điều kiện thuận lợi cho việc mở rộng

+ NS2 được phát triển từ các phần mềm nổi tiếng trên thế giới như REAL, NEST nên nó có những điểm mạnh và đã khắc phục được những yếu điểm của các phần mềm này.

+ NS2 hỗ trợ các tính năng cơ bản của mạng IP, từ đó có thể phát triển thêm các phần tử mạng.

+ NS2 có cấu trúc Modul, rất thuận tiện cho việc nghiên cứu tìm hiểu và phát triển. Nhìn từ phía người sử dụng, NS2 là chương trình biên dịch mã Otcl

81

được liên kết tới thư viện C++. Các đối tượng cơ sở như tcp, CBR,…được xây dựng trong C++. Đầu vào NS2 là tập mã lệnh Otcl, đầu ra là các tập tin mô phỏng tiến trình theo yêu cầu được thể hiện trong tập lệnh Otcl.

Hình 4.4. Cấu trúc chương trình NS2

Kết quả mô phỏng có thể quan sát bằng hình ảnh mô tả trực quan với ứng dụng Nam ( the Network Animator ), bằng đồ thị (sử dụng XGraph) hoặc có thể được xử lý bằng các tập lệnh tuỳ chọn. Với cấu trúc này, việc sử dụng NS2 trở lên đơn giản hơn nhiều so với sử dụng trực tiếp C++ nhưng vẫn có được những tính năng của C++.

Với những đặc điểm trên, NS2 thực sự là một công cụ phần mềm hữu ích cho việc học tập, nghiên cứu mạng thông tin, giúp cho việc thực hành mạng trở lên hiệu quả hơn.

4.3.2.2. Cơ chế hoạt động của phần mềm NS-2

Hoạt động của NS2 được chia thành hai phần là phần dữ liệu (được xây dựng trong C++) và phần điều khiển (được xây dựng trong Otcl). Để giảm thời gian xử lý gói và sự kiện, thời biểu sự kiện và các đối tượng thành phần mạng cơ bản trong phần số liệu được viết và biên dịch bằng C++. Các đối tượng được biên dịch này được tạo sẵn và được liên kết tới Otcl qua bộ thông dịch Otcl. Mỗi đối tượng C++ này được điều khiển và được thiết lập các tham số thông qua một đối tượng điều khiển tương ứng trong Otcl. Các đối tượng C++ không cần điều khiển hoặc chỉ hoạt động nội tại trong phần C++ thì không cần liên kết đến Otcl. Tương tự, cũng có một số đối tượng (không nằm trong phần dữ liệu) có thể hoạt động hoàn toàn chỉ trong Otcl. Các đối tượng điều khiển trong Otcl được ánh xạ 1-1 tới các đối tượng cần điều khiển trong C++. Như vậy, cấu trúc phân cấp các đối tượng này trong hai phần C++ và Otcl là tương tự nhau. Quan hệ giữa C++ và Otcl được minh họa trên hình 4.5.

Tập lệnh Otcl (mã nguồn) Chương trình biên dịch Otcl Các thư viện C++ Kết quả Mô phỏng

82

Hình 4.5. Tính đối ngẫu giữa C++ và Otcl

Hình 4.6 chỉ ra kiến trúc NS2. Trong kiến trúc này, người sử dụng (không phải người phát triển NS2) ở vị trí góc dưới bên trái. Dữ liệu đầu vào là tập lệnh Otcl được phân tích bởi lớp Tcl. Việc thiết lập và chạy mô phỏng trong Tcl sử dụng các đối tượng trong thư viện Otcl. Thời biểu các sự kiện và hầu hết các thành phần mạng hoạt động trong C++ và được liên kết tới Otcl. Việc này được thực hiện bởi lớp Tclcl.

Thời biểu các sự kiện NS-2

Hình 4.6. Kiến trúc tổng quan của NS2 (adsbygoogle = window.adsbygoogle || []).push({});

Môi trường NS2 là công cụ hết sức linh hoạt trong việc nghiên cứu các đặc tính của mạng cảm biến không dây (Wireless Sensor Network) vì nó có sẵn các mô hình cho mạng Ad-hoc không dây, có ràng buộc về năng lượng. Trong NS2, một mạng Sensor có thể được xác định với nhiều tổ hợp các đặc tính như thực tế. Môi trường mạng di động trong NS2 , cung cấp sự hỗ trợ lẫn nhau giữa các giao thức như hình 4.7. Tclcl Otcl Tcl 8.0 Các thành phần mạng

83

Hình 4.7. Các giao thức được hỗ trợ trong NS2 mô phỏng mạng không dây

4.3.3. Thiết lập mã lập trình mô phỏng 4.3.3.1. Thiết lập các nút 4.3.3.1. Thiết lập các nút

MobileNode là đối tượng cơ bản của NS2, đối tượng Node cùng với các chức năng thêm vào như sự di chuyển, khả năng truyền và nhận trên một kênh cho phép tạo môi các truờng di động (mobile), môi trường mô phỏng mạng vô tuyến. Lớp MobileNode có xuất phát từ lớp cơ sở Node. MobileNode là một đối tượng tách biệt. Các tính năng mobile gồm có di chuyển node, cập nhập vị trí định kỳ, duy trì đường biên của đồ hình mạng,… được thực thi trong C++ trong khi tìm kiếm các thành phần của mạng bên trong của MobileNode (như các phân lớp, dmux, LL, Mac, Channel,…) đã được thực thi trong Otcl.

Trước hết chúng ta cần định nghĩa các kiểu của những thành phần mạng này nhờ sử dụng một mảng opt() trong ngôn ngữ Tcl:

set opt(chan) Channel/WirelessChannel ;# Chọn kiểu kênh truyền thông set opt(prop) Propagation/TwoRayGround ;# Mô hình truyền thông set opt(netif) Phy/WirelessPhy ;# Kiểu giao diện mạng tầng vật lý set opt(mac) Mac/802_11 ;# Kiểu MAC

set opt(ifq) Queue/DropTail/PriQueue ;# Kiểu của giao diện hàng đợi set opt(ll) LL ;# Kiểu tầng liên kết dữ liệu

set opt(ant) Antenna/OmniAntenna ;# Mô hình anten

set opt(ifqlen) 50 ;# Số gói tin lớn nhất có trong hàng đợi giao diện set opt(nn) 50 ;# Thiết lập số mobile node mạng trong cần mô phỏng set opt(rp) AODV ;# Chn giao thc đnh tuyến đã sa đi mã ngun

set opt(x) 500 ; #Mảng X, Y chứa diện tích địa hình mô phỏng set opt(y) 500

Một số thay đổi quan trọng trong AODV:

- Thay đổi file: aodv_packet.h Struct hdr_aodv_request {

u_int8_t rq_type; // Packet Type u_int8_t reserved[2];

u_int8_t rq_hop_count; // Hop Count u_int32_t rq_bcast_id; // Broadcast ID

nsaddr_t predecessor; // predecessor address nsaddr_t rq_dst; // Destination IP Address

Lớp ứng dụng CBR FTP Telnet Lớp giao vận TCP UDP Lớp ứng dụng DSDV DSR TORA AODV OLSR AODV Lớp liên kết kiểu số liệu 802.11 TDMA SMAC Lớp vật lý Các kiểu phát vô tuyến với suy giảm bậc 4

84

u_int32_t rq_dst_seqno; // Destination Sequence Number nsaddr_t rq_src; // Source IP Address

u_int32_t rq_src_seqno; // Source Sequence Number double rq_timestamp; // when REQUEST sent;

double rq_min_energy; // Nang luong cua node

…..

}

- Thay đổi file: aodv_rtable.h

….

protected:

LIST_ENTRY(aodv_rt_entry) rt_link; nsaddr_t rt_dst;

u_int32_t rt_seqno;

u_int16_t rt_hops; // hop count

int rt_last_hop_count; // last valid hop count (adsbygoogle = window.adsbygoogle || []).push({});

double rt_energy; // Bien nang luong cua tuyen

nsaddr_t rt_nexthop; // next hop IP address /* list of precursors */

aodv_precursors rt_pclist;

double rt_expire; // when entry expires u_int8_t rt_flags;

….

- Thay đổi file: aodv_rtable.cc

/*

The Routing Table

*/ aodv_rt_entry::aodv_rt_entry() { int i; rt_req_timeout = 0.0; rt_req_cnt = 0; rt_dst = 0; rt_seqno = 0;

rt_hops = rt_last_hop_count = INFINITY2;

rt_energy = 0; // Truong nang luong

rt_nexthop = 0;

LIST_INIT(&rt_pclist); rt_expire = 0.0;

rt_flags = RTF_DOWN;

85 - Thay đổi file: aodv.cc

if ( (rq->rq_src_seqno > rt0->rt_seqno ) || ((rq->rq_src_seqno == rt0->rt_seqno) && (rq->rq_hop_count/rq->rq_min_energy < rt0->rt_hops/rt0->rt_energy)) ) {

// Kiem tra duong theo tieu chi moi

rt_update(rt0, rq->rq_src_seqno, rq->rq_hop_count, ih->saddr(),

max(rt0->rt_expire, (CURRENT_TIME + REV_ROUTE_LIFE)), rq->rq_min_energy);

Ngoài ra, còn một số thay đổi khác nữa trong file aodv.cc.

Sau đó chúng ta cần phải thiết lập một đối tượng tô pô mạng để ghi lại sự di động của mobile node trong một vùng giới hạn. Trong ví dụ sau, ta thiết lập các mobile node di chuyển trong một vùng 500m x 500m:

set topo [new Topography] $topo load_flatgrid $opt(x) $opt(y)

Cuối cùng ta thực hiện cấu hình các thành phần mạng với đối tượng bộ mô phỏng. Việc cấu hình này sử dụng các hàm API như sau:

$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 \ wiredRouting ON \ agentTrace ON \ routerTrace ON \ macTrace ON \ movementTrace OFF \

# Khởi tạo các mức năng lượng.

energyModel $opt(energymodel) \ idlePower 1.0 \ rxPower 1.0 \ txPower 3.0 \ sleepPower 0.001 \ transitionPower 0.2 \ transitionTime 0.005 \

86

Tiếp theo là phương pháp tạo ra các MobileNode: (adsbygoogle = window.adsbygoogle || []).push({});

set rng [new RNG]

for {set i 0} {$i < $opt(nn) } {incr i} { set energy [$rng uniform 80 120] $ns_ node-config -initialEnergy $energy set node_($i) [$ns_ node]

$node_($i) random-motion 1; }

4.3.3.2 Gắn kết các tác nhân Sensor:

Lệnh này tạo ra một tác nhân Sensor cho mỗi nút Sensor và gắn kết tác nhân này với nút tường ứng.

set Sensor ($i) [new \ Agent/SensorAgent] $ns attach-agent $node ($i) \

$Sensor ($i)

[$node ($i) set ll (1)] \ up-target $Sensor ($i)

4.3.3.3 Gắn kết một tác nhân UDP và ứng dụng Sensor cho mỗi nút

Thí dụ sau minh hoạ việc thiết lập ứng dụng Sensor: set src ($i) [new Agent/UDP]

$ns attach-agent $node ($i) \ $src ($i)

$ns connect $src ($i) $sink

set app ($i) [new \ Application/SensorApp] $app ($i) attach-agent $src ($i)

4.3.4. Kết quả mô phỏng

Để đánh giá hiệu năng của phương pháp cải tiến, tác giả tạo ra 5 tô pô từ 20 đến 50 nút cảm biến trong phạm vi 500m x 500m. Chi tiết các tham số cụ thể như sau:

Simulation time: 500 second Transmit power: 0.2818 w

Initial energy: randomly from 80 to 120 joules Idle power consumption: 1 w

Transmission power: 3w Receive power: 1 w Packet size: 512 bytes

Kết quả cụ thể như sau:

87

Hình 4.8. Thời gian hoạt động của mạng

Thời gian hoạt động được định nghĩa là thời gian hoạt động cho đến khi node thứ nhất có mức năng lượng về 0. Hình 4.8 thể hiện kết quả mô phỏng sử dụng phương pháp cải tiến và phương pháp EERS với 5 tô pô mạng khác nhau. Kết quả cho thấy, phương pháp cải tiến cho thời gian hoạt động cao hơn so với phương pháp định tuyến EERS trung bình khoảng 11%.

- Thông lƣợng trung bình và tỉ lệ phân phát gói tin (PDR)

Thông lượng trung bình của toàn mạng được tính bằng tổng thông lương trung bình của từng kết nối. Thông lượng trung bình của từng kết nối bằng tổng kích thước các gói tin nhận được chia cho thời gian truyền lưu lượng qua kết nối.

Script để tính thông lƣợng trung bình trong NS2 :

BEGIN { recvdSize = 0 startTime = 400 stopTime = 0 } { event = $1 time = $2 node_id = $3 pkt_size = $8 level = $4 # Store start time

88 if (time < startTime) {

startTime = time }

}

# Update total received packets' size and store packets arrival time if (level == "AGT" && event == "r" && pkt_size >= 512) { (adsbygoogle = window.adsbygoogle || []).push({});

if (time > stopTime) { stopTime = time }

# Rip off the header hdr_size = pkt_size % 512 pkt_size -= hdr_size

# Store received packet's size recvdSize += pkt_size

} } END {

printf("Thông lượng trung bình [kbps] = %.2f\t\t

StartTime=%.2f\tStopTime=%.2f\n",(recvdSize/(stopTime- startTime))*(8/1000),startTime,stopTime)

printf("Tong du lieu: %.2f",recvdSize) }

Kết quả:

89

Tỉ lệ phân phát gói tin (PDR) là: Tỉ lệ giữa số gói tin được phân phát thành công tới đích so với số gói tin được gửi đi nguồn phát.

Script để tính PDR và độ trễ trung bình trong NS2: BEGIN { seqno = -1; droppedPackets = 0; receivedPackets = 0; count = 0; }{

#packet delivery ratio

if($4 == "AGT" && $1 == "s" && seqno < $6) { seqno = $6;

} else if(($4 == "AGT") && ($1 == "r")) { receivedPackets++;

} else if ($1 == "D" && $7 == "tcp" && $8 > 512){ droppedPackets++;

}

#end-to-end delay

if($4 == "AGT" && $1 == "s") { start_time[$6] = $2;

} else if(($7 == "tcp") && ($1 == "r")) { end_time[$6] = $2;

} else if($1 == "D" && $7 == "tcp") { end_time[$6] = -1;

}} END {

for(i=0; i<=seqno; i++) { if(end_time[i] > 0) {

delay[i] = end_time[i] - start_time[i]; count++;

}else

{ delay[i] = -1; }}

for(i=0; i<count; i++) { if(delay[i] > 0) {

n_to_n_delay = n_to_n_delay + delay[i]; }}

n_to_n_delay = n_to_n_delay/count; print "\n"; print "Gói tin sinh ra = " seqno+1;

print "Gói tin nhân được = " receivedPackets;

print "Tỉ lệ PDR = " receivedPackets/(seqno+1)*100"%"; print "\n"; (adsbygoogle = window.adsbygoogle || []).push({});

90

Kết quả PDR:

Hình 4.10. Tỉ lệ phân phát gói tin PDR

Qua kết quả hình 4.9 và 4.10, cho thấy thông lượng trung bình và PDR đối với phương pháp cải tiến cho kết quả cao hơn phương pháp EERS, tuy nhiên không có sự khác biệt nhau nhiều.

4.4. Kết luận chƣơng 4

Trong chương này, tác giả đã đề xuất phương pháp định tuyến cải tiến với mục đích cân bằng năng lượng giữa các node và thay đổi phương pháp định tuyến trong mạng cảm biến. Do đó, phương pháp sẽ kéo dài thời gian hoạt động của mạng và nâng cao chất lượng kết nối.

Thông qua kết quả mô phỏng trong NS2, thời gian hoạt động của mạng cảm biến cao hơn so với phương pháp EERS, tuy nhiên PDR và thông lượng trung bình không khác nhau nhiều.

91

KẾT LUẬN

Đề tài luận văn “Đề xuất các thuật toán định tuyến đem lại hiệu quả năng lượng trong mạng cảm biến không dây” đề cập đến vấn đề thuật toán định tuyến cho mạng cảm biến không dây, đây là vấn đề quan trọng cấp thiết trong mạng cảm biến. Sau một thời gian 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ề mạng cảm biến, các giao thức định tuyến được sử dụng phổ biến hiện nay cùng với việc đánh giá những ưu điểm, nhược điểm của các phương pháp đó. Với mục đích kéo dài thời gian hoạt động của mạng cảm biến không dây, tác giả đã đề xuất hai phương pháp định tuyến cải tiến. Cụ thể, trong chương 3 tác giả đã xây dựng mô hình toán tối ưu cho vấn đề định tuyến trong mạng cảm biến không dây. Đồng thời, đề xuất phương pháp Heuristic cho vấn đề định tuyến trong mạng cảm biến không dây và so sánh kết

Một phần của tài liệu Đề xuất các thuật toán định tuyến đem lại hiệu quả năng lượng trong mạng cảm biến không dây (Trang 79)