Kết quả hiển thị ở hình 3.12
Hình 3.12. Số nút còn sống trong LEACH, LEACH-C, STAT-CLUSTER, PEGASIS
Nhận xét:
Theo Hình 3.12, tuổi thọ của mạng khi sử dụng giao thức PEGASIS kéo dài hơn rất nhiều so với các giao thức còn lại. Cụ thể:
- Giao thức STAT-CLUSTER có số nút còn sống duy trì trong khoảng 50s đầu và sau đó chết rất nhanh hoặc không hoạt động nữa. Nguyên nhân là do cố định số cụm hình thành và trưởng cụm được cố định từ lúc bắt đầu hoạt động đến hết quá trình hoạt động nên khicác trưởng cụm hết năng lượng thì các nút còn lại cũng không liên kết được thành cụm và không thể truyền thông tin về BS được.
- Tuổi thọ của mạng được cải thiện khi sử dụng giao thức LEACH hoặc LEACH- C. Sự cải thiện này là do LEACH và LEACH-C thực hiện cơ chế nút chủ linh động. Tuy nhiên LEACH-C làm cho mạng có tuổi thọ tốt hơn so với khi dùng LEACH (do LEACH- C ban đầu lựa chọn trưởng cụm là những nút có năng lượng cao hơn mức năng lượng
trung bình của mạng và thiết lập các cụm một cách tối ưu).
- Khi sử dụng giao thức PEGASIS làm tuổi thọ mạng hơn nhiều lần so với sử dụng giao thức khác cho WSNs. Có được điều này là do việc truyền tin được thực hiện giữa các nút liền kề nhau trong cùng chuổi làm cho năng lượng của các nút được cân bằng hơn. PEGASIS khắc phục được nhược điểm của LEACH bỏ tính chất cụm động, tối thiểu khoảng cách truyền, các nút thực hiện sử dụng một lần tập hợp và hợp nhất dữ liệu trước khi truyền về BS. Điều đó làm tăng cần bằng tiêu hao năng lượng.
3.4.7.2.Đánh giá sự thăng giáng của thông lượng đến BS
Kết quảthể hiệnở hình 3.13
Hình 3.13. Sự thăng giáng của thông lượng tại BS trong LEACH, LEACH-C, STAT- CLUSTER, PEGASIS
Nhận xét:
- Nhìn vào hình 3.13 cho thấy: Giao thức PEGASIS gửi dữ liệu về BS ổn định nhất về so với các giao thức còn lại. Xét theo chiều thời gian thì ở giai đoạn đầu, tuy PEGASIS gửi dữ liệu không nhiều hơn so với LEACH-C. Điều này cho thấy PEGASIS có độ trễgửi nhận dữ liệu lớn hơn so với LEACH-C, do số chặng gửi dữ liệu về BS trong LEACH-C là 2, trong khi số chặng gửi dữ liệu về BS trong PEGASIS có thể nhiều hơn 2. Đặc biệt khi kích thước mạng càng lớn thì đỗ trể càng lớn. Trong quá trình hình thành các nhóm trong
LEACH-C thì BS biết được vị và mức năng lượng của các nút trong mạng, từ đó mới hình thành các nhóm trong mạng tốt hơn LEACH (truyền dữ liệu về BSổn định hơn).LEACH truyền dữ liệu về BS không ổn định lắm, mặc dù có lúc rất nhiều nhưng có lúc lại rất ít. Điều này là do có những giai đoạn LEACH phải hình thành cụm và chuyển giao trưởng cụm, còn LEACH-C chỉ cần chuyển giao trưởng cụm theo chu kỳ.
- Cũng trong hình 3.13 thì giao thức STAT-CLUSTER có thời gian hoạt động ít nhất bởi do hạn chế năng lượng của các trưởng cụm, sự áp đặt cố định số cụm hình thành và trưởng cụm của các cụm.
3.4.7.3.Đánh giá sự tiêu hao năng lượng của mạng
Kết quả được hiển thị ở hình 3.14
Hình 3.14. So sánh tiêu tốn năng lượng trong LEACH, LEACH-C, STAT-CLUSTER, PEGASIS
Nhận xét: Từ hình 3.14 ta rút ra kết luận:
- Cả 3 giao thức LEACH, LEACH-C, PEGASISđều sử dụng tối đa năng lượng vốn có (2J/nút = 200J). Riêng giao thức STAT-CLUSTER sử dụng được khoảng hơn 50J (25%). Sự lãng phí này do các trưởng cụm (nút đúng đầu cụm) chết nhanh nên các nút trong các cụm không liên được với nhau nữa.
- Giao thức LEACH-C và LEACH tiêu tốn năng lượng nhanh, còn giao thức PEGASIS tiêu tốnít và đều.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN TIẾP THEO
Trong luận văn này, tôi đã tiến hành nghiên cứu vấn đề định tuyến trong mạng cảm biến không dây và đãđạt được các kết quả cụ thể như sau:
Về lý thuyết: Tìm hiểu khái quát về mạng cảm biến không dây, kiến trúc mạng cảm biến không dây, các yêu cầu và các thách thức trong vấn đề định tuyến, cũng như các ứng dụng của mạng cảm biến không dây trong nhiều lĩnh vực của cuộc sống. Khảo sát các giao thức và trình bày phân loại các cách tiếp cận định tuyến khác nhau cho mạng cảm biến không dây gồm 3 loại chính: trung tâm dữ liệu, phân cấp và dựa vào vị trí. Và một số giao thức theo đuổi theo mô hình QoS.
- Các giao thức trung tâm dữ liệu giảm được chi phí hình thành cụm, sử dụng một số nút đặc biệt. Tuy nhiên, các giao thức này sử dụng kế hoạch đặt tên dùng cặp thuộc tính giá trị có thể không đủ phục vụ các truy vấn phức tạp và yêu cầu của ứng dụng.
- Các giao thức phân cấp thực hiện hiệu quả việc chuyển tiếp dữ liệu về đích. Sử dụng trưởng cụm để tập hợp và tổng hợpdữ liệu để hạn chế số lần truyền và tiêu hao năng lượng toàn cục.
- Các giao thức dựa vào vị trí sử dụng thông tin vị trí của nút cảm biến để định tuyến hiệu quả năng lượng.
Về mô phỏng và đánh giá hiệu năng của một số giao thức cụ thể: Tiến hành nghiêu cứu, tìm hiểu, cài đặt một số công cụ mô phỏng, lựa chọn công cụ mô phỏng NS-2 (version 2.34) để mô phỏng một số giao thức cho mạng cảm biến không dây. Tìm hiểu code của MIT, tích hợp code của MIT vào NS2.34 để mô phỏng giao thức LEACH, LEACH-C, STAT-CLUSTER, PEGASIS, và tiến hành chạy mô phỏng để lấy kết quả và đánh giá các hiệu năng của từng giao thức. Kết quả đánh giá cho thấy, trong các giao thức được đánh giá thì PEGASIS duy trì tuổi thọ tốt hơn, tiêu tốn năng lượng ít, dữ liệu truyền về BS ổn định, còn LEACH-C là giao thức có hiệu năng tốt hơn về tiêu hao năng lượng, truyền dữ liệu về BS ở giai đoạn đầu. Các giao thức còn lại có hiệu năng kém hơn là LEACH và STAT-CLUSTER.
Hướng phát triển tiếp theo:
- Xây dựng được thêm nhiều module hỗ trợ cho NS2 để mô phỏng các giao thức định tuyến trong mạng cảm biến không dây.
- Nghiên cứu, triển khai định tuyến trên mạng thực để lấy kết quả hiệu năng so sánh với kết quả hiệu năng có được khi sử dụng công cụ mô phỏng.
- Nghiên cứu thêm các giao thức lai của nhiều loại giao thức khác nhau nhằm mục đích tăng hiệu năng mạng cả về hiệu quả năng lượng và cũng như thu thập thông tin, ví dụ: giao thức HP-LEACH-C được kết hợp giữa giao thức H-PEGASIS và LEACH-C
- Nghiên cứu giao thức tích hợp giữa mạng cảm biến không dây và mạng có dây. - Nghiên cứu vấn đề triển khai mạng sao cho định tuyến hiệu quả và giảm chi phí.
TÀI LIỆU THAM KHẢO Tiếng Anh:
[1] Kemal Akkaya and Mohamed Younis (2003), A survey on routing protocols for wireless sensor networks, University of Maryland, USA, pp 1-9, 11-23.
[2] Qiangfeng Jiang, D. Manivannan, Routing Protocols for Sensor Networks, Department of Computer Science, University of Kentucky.
[3] Wairagu G. Richard (2006), Extending leach routing algorithm for wireless sensor networks, pp 6-11, 23-25, 29-31.
[4] Raihan Ahmed (2010), A servey on the routing protocols for sensor networks, BRAC University, Dhaka, Bangladesh, pp 9-15, 24-26.
[5] Luna-Vazquez (2006), Implementation and simulation of routing protocols for wireless sensor network, University of Siegen, pp 10-16, 32-44.
[6] Jason A. Pamplin,www.forum.wsnlab.ir, NS2 leach implementation [7] Term Project 2 - Using NS2 to implement LEACH
[8] MIT µAMPS project ns2 code extensions. http://www-
mtl.mit.edu/research/icsystems/uamps/research/leach/leach_code.shtml
[9] Udit Sajjanhar and Pabitra Mitra, Distributive Energy Efficient Adaptive Clustering Protocol for Wireless Sensor Networks, pp 1-3
[10] Jae Chung And Mark Claypool, ns_by_example, WPI Computer Science
[11] http://2bytes4u.blogspot.com/2012/11/installing-wsn-leach-protocol-on-ns-234.html
Tiếng Việt:
[12] Nguyễn Đình Việt (2010), Bài giảng đánh giá hiệu năng mạng. Trường Đại học Công nghệ- Đại học Quốc gia Hà Nội.
[13] Vũ Chiến Thắng, Nguyễn Chấn Hùng, Tạp chí khoa học và công nghệ, Đánh giá mức tiêu thụ năng lượng của giao thức LEACH cho mạngWSNs, pp 1-3.
[14] Đỗ Thị Tuyết (2008), Nghiên cứu và mô phỏng giao thức định tuyến PEGASIS trong mạng cảm biến, ĐH Bách khoa Hà Nội, pp 16-33, 53-74.
[15] Nguyễn Duy Thanh (2009), Mô phỏng giao thức LEACH cho WSNs, ĐH Công nghệ, pp 3- 39.
[16] Phạm Bảo Sơn (2006), Mạng cảm biến vô tuyến và đánh giá chỉ tiêu của giao thức chọn đườngLEACH, pp 1-8.
[17] Trần Đình Hóa (2010),Đánh giá hiệu năng của các giao th ức định tuyến trong mạng Adhoc, Học viện công nghệ Bưu chính viễn thông, pp 4-9.
[18] Phạm Văn Tứ (2010), Khảo sát ảnh hưởng của sự chuyển động các nút mạng đến hiệu suất của một số giao thức định tuyến trong mạng MANETs, ĐH Công nghệ, pp 9-21
[19] Nguyễn Đình Việt và nhóm sinh viên (2010), Hướng dẫn cài đặt NS2, Đại học công nghệ, Đại học Quốc gia Hà Nội
[20] Giáo trình thực hành ns2.pdf [21] ns simulator for beginners.pdf
PHỤ LỤC 1[6], [11]
Các bước cài đặt giao thức LEACH vào ns2.34 (hệ điều hành Ubun tu 10.04): Giả sử hệ điều hành đã cài trước bộ mô phỏng mạng NS2.34 và trình dịch gcc-4.3
Bước 1.Đầu tiên vào thư mục gốc là “/HOME/CHINH/NS-ALLINONE-2.34/” chứa thư mục NS-2.34
Bước 2.Tiến hành Download gói "ns-234-leach.tar.gz" vào trong thư mục “/HOME/CHINH/NS- ALLINONE-2.34/NS-2.34” tại địa chỉ :
https://docs.google.com/uc?id=0BzLWxPfb8EKhMzMwNjE4MTItZWFkMi00ZTk1LTk5MTAt ZGRmZDBiZDE5ZGYw&export=download&authkey=CNWG1NQK&hl=en
và Download tệp tệp "leach-setup.sh" vào trong thư mực “/HOME/CHINH/NS-ALLINONE- 2.34/NS-2.34” tại địa chỉ:
https://docs.google.com/uc?id=0BzLWxPfb8EKhM2RmNjJjMzItN2M5NC00MmViLWI4NDctY mVjMDgyYWQ0YWVk&export=download&authkey=CJSU5ZYG&hl=en
Bước 3.Tiến hành thay đổi đường dẫn của thư mục "ns-2.34" có trong tệp "leach-setup.sh" bằng đường dẫn “/HOME/CHINH/NS-ALLINONE-2.34/NS-2.34”
(mục đích: để thực hiện bước 4)
Bước 4.Di chuyển vào thư mục “/HOME/CHINH/NS-ALLINONE-2.34/NS-2.34”, thực hiện tệp "leach-setup.sh" bằng lệnh:
cd /home/chinh/ns-allinone-2.34/ns-2.34/ bash leach-setup.sh
Thực chất là copy các tệp được chỉ định trong tệp leach-setup.sh đến những nơi tệp cần thay thế.
Bước 5.Nếu thư mục gốc “ns-2.34” của bạn có đường dẫn khác so với đường dẫn khai báo trong các tập tin “Makefile” và “Makefile.in” thì mở các tệp này, tìmđường dẫn và thay thế trong cả 2 tệp “Makefile” , “Makefile.in” bằng đường dẫn hiện thời là “/HOME/CHINH/NS-ALLINONE- 2.34/NS-2.34”
- "Makefile" nằm trong thư mục “/HOME/CHINH/NS-ALLINONE-2.34/NS-2.34” - "Makefile.in" : nằm trong thư mục “/HOME/CHINH/NS-ALLINONE-2.34/NS-2.34”
Bước 6.Tiến hành sửa cả 2 dòng lệnh có trong 2 tệp “Makefile” , “Makefile.in” lần lượt: CC = gcc-4.3
CPP = g++-4.3 Ghi và đóng các tệp trên.
Bước 7. Sau khi thực hiện xong các bước trên, tiến hành mởTerminal: chuyển đến thư mục: HOME/CHINH/NS-ALLINONE-2.34/NS-2.34 và lần lượt các lệnh sau:
+ Lệnh kiểm tra các tệp thành phần: ./configure
+ Lệnh xóa bản kết quả đã dịch trước đó: make clean
+ Lệnh thiết lập các ràng buộc: make depend
make
Bước 8. Sau khi sử dụng một số lệnh trên sẽ xuất hiện một số lỗi sau: Code:
*****************************************************************trace/cmu- trace.cc: In member function ‘void CMUTrace::format(Packet*, const char*)’:
trace/cmu-trace.cc:1327: error: ‘format_rca’ was not declared in this scope trace/cmu-trace.cc: At global scope:
trace/cmu-trace.cc:1523: error: no ‘void CMUTrace::format_rca(Packet*, int)’ member function declared in class ‘CMUTrace’
make: *** [trace/cmu-trace.o] Error 1
********************************************************************
Để cố định những lỗi này ta cần thêm vào sau dòng 165 của tệp “cmu-trace.h” đoạn mã sauđây:
#ifdef MIT_uAMPS
void format_rca(Packet *p, int offset); #define ADV_CHAR 'A'
#define REQ_CHAR 'R' #define DATA_CHAR 'D' #endif
và thêm sau dòng 765 của tệp “ns-default.tcl” đoạn mã sau:
#——————————————————
Phy/WirelessPhy set alive_ 1
Phy/WirelessPhy set Efriss_amp_ 100e-12 Phy/WirelessPhy set Etwo_ray_amp_ 0.013e-12 Phy/WirelessPhy set EXcvr_ 50e-9
Phy/WirelessPhy set sleep_ 0 Phy/WirelessPhy set ss_ 1 Phy/WirelessPhy set dist_ 0
#——————————————————
********************************************************************
Bước 9.Bây giờ tiến hành chạy lệnh dịch lại ns trong Terminal:
make clean make depend make
Bước 10.Nếu thực hiện các lệnhở bước 9 thành công thì sẵn sàng chạy giao thức LEACH bằng lệnh
./test_leach
Bước 11.Tiến hành kiểm tra tệp “leach.err” nằm trong thư mục: /home/chinh/ns-allinone-2.34/ns- 2.34/mit/leach_sims” có thể thấy một số lỗi trong tệp “leach.err” như sau:
********************************************************************
can't read "env(RCA_LIBRARY)": no such variable while executing
"source $env(RCA_LIBRARY)/ns-ranode.tcl" (file "mit/uAMPS/sims/uamps.tcl" line 9)
... ...Code Omitted... ...
(procedure "source" line 8) invoked from within
"source tcl/mobility/$opt(rp).tcl" (file "tcl/ex/wireless.tcl" line 187)
********************************************************************
Cách sửa lỗi: do sai đường dẫn. Ta tiến sửa các đường dẫn trong tệp “ns-allinone-2.34/ns- 2.34/mit/uAMPS/sims/uamps.tcl” như sau:
global opt bs #source $env(RCA_LIBRARY)/ns-ranode.tcl source /home/chinh/ns-allinone-2.34/ns-2.34/mit/rca/ns-ranode.tcl #source $env(uAMPS_LIBRARY)/ns-bsapp.tcl source /home/chinh/ns-allinone-2.34/ns-2.34/mit/uAMPS/ns-bsapp.tcl #source $env(uAMPS_LIBRARY)/extras.tcl source /home/chinh/ns-allinone-2.34/ns-2.34/mit/uAMPS/extras.tcl #source $env(uAMPS_LIBRARY)/stats.tcl source /home/chinh/ns-allinone-2.34/ns-2.34/mit/uAMPS/stats.tcl #Uncomment these lines to use gdb to debug the c code
#source mit/uAMPS/ns-bsapp.tcl #source mit/uAMPS/extras.tcl #source mit/uAMPS/stats.tcl #source $env(RCA_LIBRARY)/resources/ns-resource-manager.tcl source /home/chinh/ns-allinone-2.34/ns-2.34/mit/rca/resources/ns-resource-manager.tcl #source $env(RCA_LIBRARY)/resources/ns-energy-resource.tcl source /home/chinh/ns-allinone-2.34/ns-2.34/mit/rca/resources/ns-energy-resource.tcl #source $env(RCA_LIBRARY)/resources/ns-neighbor-resource.tcl source /home/chinh/ns-allinone-2.34/ns-2.34/mit/rca/resources/ns-neighbor-resource.tcl ********************************************************************
Bước 12.Bây giờ tiến hành chạy dịch lại bằng dùng các lệnh trên Terminal:
make clean make depend make
và thực hiện chạy giao thức LEACH một lần nữa bằng lệnh:
./test_leach
Bước 13.Kiểm tra xem tệp "leach.err", nếu không có báo cáo lỗi thì mở tệp "leach.out" để xem và lấy các kết quả.
PHỤ LỤC 2
Trích một phần code tệp chạy giao thứcLEACH: leach_test
alg=leach #Giao thức cần mô phỏng dirname="mit/leach_sims" #Thư mục chứa file ghi đầu ra filename=$alg # tên tệp code giao thức cần chạy topology_file="mit/uAMPS/sims/100nodes.txt" #File chứa cấu hình mạng: num_clusters=5 #Số phân cụm (clusters) dự kiến
eq_energy=1 #khởi tạo các nút đều có năng lượng bằng nhau, # và không bằng nhau (eq_energy=0) */
init_energy=2 #Mỗi nútđềuđược khởi tạo năng lượng ban đầu là 2j stop=3600 # Thời gian mô phỏng 3600s
x=1000 #Kích thước của môi trường cần mô phỏng: 1000m x 1000 m y=1000
bs_x=50 #Tọa độ trạm nhận dữ liệu (BS, Sink) bs_y=175
nn=101 #Tổng số nút: (kể cả BS)
ns tcl/ex/wireless.tcl \ #Lệnh chạy giao thức -sc mit/uAMPS/sims/nodescen \ #file nguồn
-rp $alg \ -x $x \ -y $y \ -nn $nn \ -stop $stop \ -eq_energy $eq_energy \ -init_energy $init_energy \
-filename $filename \ //file đầu ra
-dirname $dirname \ //thư mục chứa các tệp truy vết -topo $topology_file \ //file chứa topo mạng ban đầu -num_clusters $num_clusters \ //số cụm dự tính sẽ hình thành
-bs_x $bs_x \ //tọa độ vị trí của trạm BS trong môi trường -bs_y $bs_y 2>$dirname/$filename.err 1>$dirname/$filename.out &
PHỤ LỤC3
Trích nộidung thực hiện mô phỏng giao thức LEACH và các mã lệnh thực hiện trích rút số liệu để thực hiện đánh giá, so sánh hiệu năng của giao thức:
Thực hiện chạy mô phỏng giao thức LEACH và trích rút số liệu với 21 lần lần lượt số cụm là: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,13,14,15,17,20,25,30,35,40,50
a. Chạy giao thức LEACH khi thay đổi num_clusters=2 trong tệp leach_test (Thực hiện các Bước 12 và 13ở phụ lục 1)
- Lệnh trích rút lấy kết quả như sau:
cat leach2.out|grep "At"|perl column 0 1 2 3 4 > "l2.sta"
- Lệnh lấy các thông số tổng năng lượng tiêu hao theo thời gian từ tệp "l2.sta" như sau: cat l2.sta|grep "At"|perl column 1 2 > "l2e.sta"
- Lệnh lấy các thông số tổng số gói tin truyền về BS theo thời gian từ tệp "leach_5clusters.sta" như sau:
cat l2.sta|grep "At"|perl column 1 2 > "l2d.sta"
- Lệnh lấy các thông số tổng số nút cảm biến còn sống theo thời gian từ tệp "leach_5clusters.sta" như sau:
cat l2.sta|grep "At"|perl column 1 2 > "l2l.sta"
Tương tự đối với số clusters còn lại
b.Sự thăng giáng quá trình nhận gói tin ở BS
Để trích rút được số gói tin nhận được tại BS theo chu kỳ 10s, ta dùng lệnh: