Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
2,66 MB
Nội dung
Đồ án tốt nghiệp đại học Mục lục MỤC LỤC LỜI CẢM ƠN…………………………………………………………………………… i MỤC LỤC………………………………………………………………………….…… ii THUẬT NGỮ VIẾT TẮT……………………………………………………………….iv DANH MỤC HÌNH VẼ VÀ BẢNG BIỂU………….………………………………….vii LỜI NĨI ĐẦU……………………………………………………………………… … CHƯƠNG I: TỔNG QUAN VỀ MẠNGCẢMBIẾNKHÔNGDÂYWSN 1.1 Giới thiệu chung 1.2 Phân loại mạngcảmbiếnkhôngdây 1.3 Cấu trúc mạngcảmbiếnkhôngdây 1.3.1 Cấu trúc mạng 1.3.2 Cấu trúc nhiệm vụ node mạng 1.4 Kiến trúc giaothứcWSN 1.5 Chuẩn Zigbee/IEEE 802.15.4 12 1.6 Ứng dụng mạngcảmbiếnkhôngdây 13 1.6.1 Các ứng dụng cụ thể mạngWSN loại 1(C1WSN) 14 1.6.2 Các ứng dụng cụ thể mạngWSN loại (C2WSNs) 15 1.7 Kết luận chương 17 CHƯƠNG II: ĐỊNHTUYẾNTRONGMẠNGCẢMBIẾNKHÔNGDÂYVÀ VẤN ĐỀ QOS 23 2.1 Những thách thức kỹ thuật địnhtuyếnWSN 23 2.1.1 Kích thước mạng đặc tính thay đổi theo thời gian 24 2.1.2 Tài nguyên hạn chế 24 2.1.3 Mơ hình liệu mạngcảmbiến 24 2.1.4 Cách thức liên lạc node 24 2.2 Các loại giaothứcđịnhtuyếnWSN 25 2.2.1 2.3 Giaothứcđịnhtuyến cổ điển 27 GiaothứcđịnhtuyếnmạngWSN 28 Nguyễn Quốc Hữu – B13DCVT027 ii Đồ án tốt nghiệp đại học Mục lục 2.3.1 Giaothứcđịnhtuyến AODV (Ad Hoc On-Demand Distance Vector Routing) ………………………………………………………………………………28 2.3.2 GiaothứcđịnhtuyếnDYMO (Dynamic MANET On-Demand) 33 2.4 Vấn đề Qos mạngcảmbiếnkhôngdây 34 2.5 Kết luận chương 36 CHƯƠNG III: PHÂN TÍCH VÀĐÁNHGIÁHIỆUNĂNGCỦAGIAOTHỨCDYMO 42 3.1 GiaothứcđịnhtuyếnDYMOmạngcảmbiếnkhôngdâyWSN 42 3.1.1 Giới thiệu 42 3.1.2 Cấu trúc liệu 43 3.1.3 Hoạt động DYMO 45 3.2 Qos giaothứcđịnhtuyến DYMO, giaothức DYMO_MQ 48 3.2.1 Giaothứcđịnhtuyến DYMO_MQ(DYMO Multipath with Qos) 48 3.3 Mô đánhgiáhiệugiaothứcDYMO 53 3.3.1 Các tham số hiệugiaothứcđịnhtuyến 53 3.3.2 NS-2 55 3.3.3 Mô giaothức DYMO_MQ sử dụng chương trình DYMOUM (NS2)………………………………………………………………………………… 55 3.3.4 3.4 Xây dựng hệ thống mô kết mô 58 Kết luận chương 66 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 66 TÀI LIỆU THAM KHẢO………………… ………………………………………….67 PHỤ LỤC……… ………………………………………………………………………69 Nguyễn Quốc Hữu – B13DCVT027 iii Đồ án tốt nghiệp đại học Thuật ngữ viết tắt THUẬT NGỮ VIẾT TẮT WSN Wireless sensor network Mạngcảmbiếnkhôngdây IEEE Institute of Electrical and Electronics Engineer Viện kỹ nghệ Điện Điện tử FTP File Tranfer Protocol Giaothức truyền tải tệp WLAN Wireless Local Area Network Mạng LAN khôngdây WPAN Wireless Personal Area Network Mạng cá nhân khôngdây WMAN Wireless Metropolitan Area Network Mạng đô thị khôngdây GSM Global System for Mobile Communications Hệ thống định vị toàn cầu GPRS General Packet Radio Service Dịch vụ vơ tuyến gói tổng hợp EDGE Enhanced Data Rates for GSM Evolution Nâng cao tốc độ liệu cho tiến hóa GSM UTMS Universal Mobile Telecommunications System Hệ thống viễn thông di động toàn cầu HSDPA High-Speed Downlink Packet Access hay truy nhập gói đường xuống tốc độ cao C1WSNs Category WSNs Mạngcảmbiếnkhôngdây loại C2WSNs Category WSNs Mạngcảmbiếnkhôngdây loại RFID Radio Frequency Identification cơng nghệ nhận dạng đối tượng sóng vô tuyến ADC Analog to Digital Convert Chuyển đổi tương tự sang số OS Operation system Hệ điều hành Nguyễn Quốc Hữu – B13DCVT027 iv Đồ án tốt nghiệp đại học Thuật ngữ viết tắt OSI Open Systems Interconnection Reference Model Mơ hình tham chiếu kết nối hệ thống mở MAC Medium Access Control Điều khiển truy cập môi trường ID identify Địnhdanh TCP Transmission Control Protocol Giaothức điều khiển truyền vận MANET mobile ad hoc network Mạng tùy biến di động IP Internet Protocol Giaothức Internet OLSR Optimized Link State Routing Protocol Giaothứcđịnhtuyến trạng thái liên kết tối ưu DSDV Destination Sequence Distance Vecto giaothứcđịnhtuyến theo bảng, dựa vector khoảng cách ZRP Zone Routing Protocol giaothứcđịnhtuyến theo vùng RREQ Route request Bản tin yêu cầu tuyến đường RREP Routing Reply Bản tin phản hồi tuyến đường RERR Route error Bản tin lỗi tuyến đường IETF Internet Engineering Task Force Lực lượng Chuyên trách Kỹ thuật Liên mạng IPv4 Internet Protocol version Gói tin IPv4 IPv6 Internet Protocol version Gói tin IPv6 RM Routing request Bản tin địnhtuyến DYMO_MQ Dynamic MANET Ondemand multipath with qos Giaothứcđịnhtuyến động theo yêu cầu cho mạng Nguyễn Quốc Hữu – B13DCVT027 v Đồ án tốt nghiệp đại học Thuật ngữ viết tắt MANET kết hợp kỹ thuật đa đường qos Qos Quality of service Chất lượng dịch vụ AODV_MQ Ad hoc On-Demand Distance Vector Routing multipath with qos Giaothứcđịnhtuyến vector khoảng cách theo yêu cầu kết hợp kỹ thuật đa đường qos NS-2 Network Simulation Phần mềm mô mạng TTL Time to live Thời gian sống TLV Type length value Loại giá trị chiều dài UDP User Datagram Protocol Giaothức liệu người dùng DYMO_M Dynamic MANET Ondemand multipath Giaothứcđịnhtuyến động theo yêu cầu cho mạng MANET hỗ trợ kỹ thuật địnhtuyến đa đường DYMO Dynamic MANET Ondemand Giaothứcđịnhtuyến động theo yêu cầu cho mạng MANET AODV Ad hoc On-Demand Distance Vector Routing Giaothứcđịnhtuyến vector khoảng cách theo yêu cầu Nguyễn Quốc Hữu – B13DCVT027 vi Đồ án tốt nghiệp đại học Danh mục hình vẽ bảng biểu DANH MỤC HÌNH VẼ VÀ BẢNG BIỂU Hình 1.1 Các chuẩn khơngdây số đặc tính Hình 1.2: Mơ hình mạngWSN loại (C1WSNs) Hình 1.3: Mơ hình mạngWSN loại (C2WSNs) Hình 1.4: Mơ hình mạngWSN chia theo kiểu hợp tác bất hợp tác Hình 1.5 : Cấu trúc mạngcảmbiếnkhôngdây Hình 1.6: Sự phát triển phần cứng node cảmbiến Hình 1.7: Cấu trúc phần cứng node cảmbiến Hình 1.8: Cấu trúc phần mềm node cảmbiến Hình 1.9: Kiến trúc giaothứcmạngcảmbiếnWSN theo mơ hình OSI mặt phẳng quản lý 10 Hình 1.10: Kiến trúc theo lớp cơng nghệ Zigbee 13 Hình 1.11: Các ứng dụng WSN vào quân 14 Hình 1.12: Ứng dụng WSN vào giao thông 15 Hình 1.13: Ứng dụng WSN vào thiết bị nhà 16 Hình 1.14: Ứng dụng WSN vào công nghiệp 16 Hình 1.15: Ứng dụng WSN vào y tế 17 Hình 2.1: Mơ hình chung mạngcảmbiếnkhôngdây 24 Hình 2.2: Phân loại giaothứcđịnhtuyếnWSN 26 Hình 2.3: Các giaothứcđịnhtuyến phân loại theo tiến trình xử lý thơng tin địnhtuyến 26 Hình 2.4: Thiết lập tuyến đường thuận 31 Hình 2.5: Quản lý cập nhật bảng địnhtuyến 32 Hình 2.6: Sự khác trình khám phá tuyến AODV DYMO 34 Hình 3.1: Cấu trúc tin RM 44 Hình 3.2: Cấu trúc tin RERR 45 Hình 3.3: Quá trình khám phá tuyếngiaothứcDYMO 47 Bảng 3.1: Các thông số mặc địnhgiaothứcDYMO 48 Hình 3.4: Định dạng cấu trúc tin địnhtuyếnDYMO 49 Bảng 3.2: Mô tả module DYMOUM 56 Nguyễn Quốc Hữu – B13DCVT027 vii Đồ án tốt nghiệp đại học Danh mục hình vẽ bảng biểu Bảng 3.3: Các tham số mô đánhgiáhiệugiaothứcDYMOmạngcảmbiếnkhôngdâyWSN 59 Hình 3.5: Sự phụ thuộc độ trễ tổng vào số node 60 Hình 3.6: Sự phụ thuộc lượng tiêu thụ vào số node mạng 60 Hình 3.7: Sự phụ thuộc độ trễ vào số node mạng với giaothức AODV_MQ DYMO_MQ 61 Hình 3.8: Sự phụ thuộc lượng tiêu thụ vào số node mạng với giaothức AODV_MQ DYMO_MQ 62 Hình 3.9: Sự phụ thuộc độ trễ trung bình đầu cuối vào tốc độ di chuyển node 63 Hình 3.10: Sự phụ thuộc lượng tiêu thụ node vào tốc độ di chuyển node 64 Hình 3.11: Ảnh hưởng độ trễ trung bình đầu cuối vào tốc độ di chuyển node 65 Hình 3.12: Ảnh hưởng mức tiêu thụ lượng node vào tốc độ di chuyển node 65 Nguyễn Quốc Hữu – B13DCVT027 viii Đồ án tốt nghiệp đại học Lời nói đầu LỜI NĨI ĐẦU Trong năm gần đây, mạng truyền thông khôngdây có bước tiến dài, tảng tiền đề cho hàng loạt công nghệ tương lai, đặc biệt mạngcảmbiếnkhôngdâyWSN Với cấu trúc linh động, WSN thể vai trò then chốt đại diện cho mạngkhơngdây hệ với tính ứng dụng cao số đặc tính ưu việt như: dễ dàng triển khai, hoạt động nhiều địa hình phức tạp, ứng dụng khám phá mơi trường, Bên cạnh đó, thách thức đặt hiệu sử dụng cho WSN vấn đề yêu cầu cấp thiết Đồ án nghiêncứu đề tài: “Nghiên cứuđánhgiáhiệugiaothứcđịnhtuyếnDYMOmạngcảmbiếnkhông dây” Gồm chương sau: Chương 1: “Tổng quan mạngcảmbiếnkhơngdây WSN” trình bày khái quát mạngcảmbiếnkhông dây, thách thức, ứng dụng mạngcảmbiếnkhôngdây Chương 2: “Định tuyếnmạngcảmbiếnkhôngdây vấn đề Qos” trình bày thách thứcđịnhtuyếnmạngcảmbiếnkhơng dây, phân loại trình bày giaothứcđịnhtuyến theo yêu cầu sửa dụng phổ biến AODV DYMO Nêu thách thức khó khăn việc hỗ trợ Qos giaothứcđịnhtuyếnmạngcảmbiếnkhôngdây Chương 3: “Phân tích đánhgiáhiệugiaothức DYMO” trình bày giaothứcDYMOmạngcảmbiếnkhôngdây kết hợp với kỹ thuật đa đường hỗ trợ Qos Mô đánhgiáhiệugiaothứcDYMOmangcảmbiếnkhông dây, chương đưa kết cho thấy giaothứcDYMO kết hơp với Qos cho hiệu tốt nhiều so với giaothứcDYMO truyền thống giaothức AODV Nội dung cụ thể đồ án trình bày Nguyễn Quốc Hữu – B13DCVT027 Đồ án tốt nghiệp đại học Chương I: Tổng quan mạngcảmbiếnkhôngdâyWSN CHƯƠNG I: TỔNG QUAN VỀ MẠNGCẢMBIẾNKHÔNGDÂYWSN 1.1 Giới thiệu chung Một mạngcảmbiếnkhôngdây (Wireless Sensor Network – WSN) mạng bao gồm nhiều node cảmbiến nhỏ liên kết với song vô tuyến Các node thiết bị đơn giản, nhỏ gọn , có giá thành thấp tiêu thụ lượng, giao tiếp thơng qua kết nối khơng dây, có nhiệm vụ cảm nhận, đo đạc, tính tốn nhàm mục đích thu thập, tập trung liệu để đưa định toàn cục môi trường tự nhiên Mạngcảmbiếnkhôngdây gồm thành phần cấu thành nên mạng: - Phân bố theo mơ hình tập trung hay phân tán Liên lạc node mạngcảmbiến Điểm trung tâm tập hợp liệu (Clustering) Bộ phận xử lý liệu trung tâm Các ứng dụng mạngcảmbiếnkhôngdây gồm thu thập liệt, giám sát, theo dõi ứng dụng y học Tuy nhiên ứng dụng mạngcảmbiếnkhôngdây tùy theo yêu cầu thực tế sử dụng đa dạng không bị giới hạn Với tiến công nghệ gần hội tụ hệ thống công nghệ kỹ thuật vi điện tử, cơng nghệ mạch tích hợp, vi mạch phần cảm biến, xử lý tính tốn tín hiệu tạo cảmbiến có kích thước nhỏ, đa chức năng, giá thành thấp, công suất tiêu thụ thấp, làm tăng khả ứng dụng rộng rãi giải toán khả cung cấp lượng bị giới hạn node mạngcảmbiếnkhôngdâyHiệu sử dụng công suất mạngcảmbiếnkhôngdây tổng quát dựa tiêu chí: - Chu kỳ hoạt động ngắn Xử lý liệt nội node để giảm chiều dài liệu thời gian truyền Mơ hình mạng multihop làm giảm chiều dài đường truyền, qua làm giảm suy hao tổng cộng giảm công suất cho hệ thống Các tiêu chuẩn tần số áp dụng cho WSNs IEEE 802.15.4 Hoạt động tần số 2.4GHz công nghiệp, khoa hoạc y học, cung cấp đường truyền liệt với tốc độ lên đến 250kbps khoảng cácnh 30-200feet Zigbee/IEEE 802.15.3, hệ thống thiết kế để bổ sung cho công nghệ khôngdây Bluetooth, wifi, sử dụng cho ứng dụng thương mại Nguyễn Quốc Hữu – B13DCVT027 Đồ án tốt nghiệp đại học Chương I: Tổng quan mạngcảmbiếnkhôngdâyWSN Với đời Zigbee/IEE802.15.3, hệ thống dần phát triển theo hướng tiêu chuẩn, cho phép cảmbiếnkhôngdây truyền thông qua kênh truyền tiêu chuẩn dùng mục đích quân thương mại Hình 1.1 Các chuẩn khơngdây số đặc tính 1.2 Phân loại mạngcảmbiếnkhơngdây Dựa theo mơ hình kết nối địnhtuyến mà nodes sử dụng, mạngcảmbiếnkhôngdây chia làm loại: Loại 1(C1WSNs): - Sử dụng giaothứcđịnhtuyến động Các node tìm đường tốt đến đích.Vai trò node sensor với node trạm lặp (repeater) Khoảng cách lớn (hàng ngàn mét) Khả xử lý liệt node chuyển tiếp Mạngthức tạp Nguyễn Quốc Hữu – B13DCVT027 Đồ án tốt nghiệp đại học Kết luận hướng phát triển KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Qua thời gian tìm hiểu, tiếp cận nghiêncứu vấn đề kỹ thuật mạngWSN nói chung hiệumạngWSN nói riêng, đồ án tốt nghiệp hồn thành đạt mục tiêu nghiêncứu đề thực vấn đề liên quan đến “Nghiên cứuđánhgiáhiệugiaothứcđịnhtuyến DYMO” Các vấn đề trình bày bao gồm: - Tổng quan mạngcảmbiếnkhơngdây trình bày cách khái qt đặc tính, khó khắn, ưu điểm ứng dụng mạngcảmbiếnkhơngdâyWSN - Trình bày số loại giaothứcđịnhtuyến áp dụng cho mạngcảmbiếnkhôngdây Cụ thể giaothức AODV giaothứcDYMOmạngcảmbiếnkhôngdâygiaothức sử dụng phổ biếngiaothứcđịnhtuyến theo yêu cầu Đưa thách thức khó khăn việc hỗ trợ Qos vào giaothứcđịnhtuyếnmạngcảmbiếnkhôngdây - Đi sâu vào giaothứcDYMO ứng dụng mạngcảmbiếnkhôngdây gồm tin, cách tìm kiếm tuyến đường giaothứcDYMO Đồng thời áp dụng công nghệ đa tuyến đường cho giaothứccảmbiếnkhôngdây hỗ trợ Qos - Mô đánhgiáhiệugiaothứcDYMO áp dụng kỹ thuật địnhtuyến đa đường hỗ trợ Qos với giaothứcđịnhtuyếnDYMO truyền thống giaothứcđịnhtuyến AODV Qua kết mô cho thấy hiệugiaothứcDYMO kết hợp với Qos tốt, so sánh với giaothức AODV vượt trội hẳn GiaothứcDYMO kết hợp với Qos phát triển tương lai ưu điểm phù hợp với mạngcảmbiếnkhôngdây Trên số kết luận hướng nghiêncứu đồ án Em xin chân thành cảm ơn quý thầy, cô hướng dẫn khoa học phản biện để giúp em hồn thiện thiếu sót đồ án tốt nghiệp định hướng cho việc phát triển đề tài tương lai Nguyễn Quốc Hữu – B13DCVT027 66 Đồ án tốt nghiệp đại học Tài liệu tham khảo TÀI LIỆU THAM KHẢO [1] Kazem Sohraby,Daniel Minoli,Taieb Znati (2006), “Wireless Sensor Networks: Technology, Protocols, and Applications” [2] Vipul Maheshwari & Shrikant S Jadhav (2013), “Multipath Dynamic MANET On-demand Protocol with QoS Implementation” International Journal of Computer Applications (0975 – 8887) Volume 61– No.16 [3] A S Raghuvanshi & S Tiwari (2010), “DYMO as routing protocol for IEEE802.15.4 Enabled Wireless Sensor Networks” Wireless Communication and Sensor Networks (WCSN), 2010 Sixth International Conference [4] YANG, S.-H and CAO, Y., (2008) “Networked control systems and wireless sensor networks: theories and applications.” International Journal of Systems Science, 39, pp.1041-1044 [5] Akyildiz, I.F., Su, W., Sankarasubramaniam, Y., Cyirci E (2002), “A survey on sensor networks.” IEEE Commun Mag 40(8), 102–114 [6] Yick, J., Mukherjee, B., Ghosal, D (2008), “Wireless sensor network survey.” Comput Netw 52(12), 2292–2330 [7] S.-H Yang (2014), “Wireless Sensor Networks: Principles, Design and Applications.” London: Springer-verlag, 2014 [8] Gutierrez, J.A., Callaway, E.H., Barrett, R.L (2011) “Low-Rate Wireless Personal Area Networks Enabling Wireless Sensors with IEEE 802.15.4.” Standards Information Network; edition (March 8, 2011) [9] K Kim, Ed, G Montenegro (2007): “Dynamic MANET On-demand for 6LoWPAN (DYMO-low)” Internet Engineering Task Force [10] C Perkins, S Ratliff, J Dowdell (2013), “Dynamic MANET On-demand (AODVv2)” Mobile Ad hoc Networks Working Group, Internet Engineering Task Force [11] Nawel BENDIMERAD1, Bouabdellah KECHAR2 (2011), “Performance evaluation of QoS aware Multipath extensions For the Dynamic MANET On-demand protocol in Wireless Sensor Networks” IEEE 2011 10th International Symposium on Programming and Systems (ISPS) - Algiers, Algeria (2011.04.25-2011.04.27) [12] M M Chandane, S G Bhirud and S.V Bonde (2012), “Analysis of AODV, DSR and DYMO Protocols for Wireless Sensor Network” JOURNAL OF COMPUTING, VOLUME 4, ISSUE 1, JANUARY 2012, ISSN 2151-9617 Nguyễn Quốc Hữu – B13DCVT027 67 Đồ án tốt nghiệp đại học Tài liệu tham khảo [13] Dazhi Chen and Pramod K Varshney: “QoS Support in Wireless Sensor Networks: A Survey” Syracuse, NY, U.S.A 13244 [14] G R K Sai Teja, Dr P Samundiswary (2014) “Performance analysis of DYMO protocol for IEEE 802.15.4 based WSNs with mobile nodes,” 2014 International Conference on Computer Communication and Informatics (ICCCI -2014), Jan 03 – 05, 2014, Coimbatore, INDIA [15] ZIGBEE ALLIANCE http://www.zigbee.org/ [16] https://en.wikipedia.org/wiki/Zigbee [17] GNU General Public License version 2.0 (GPLv2) (2013), “DYMOUM program file” File code download tại: https://sourceforge.net/projects/dymoum/ Nguyễn Quốc Hữu – B13DCVT027 68 Đồ án tốt nghiệp đại học Phụ Lục PHỤ LỤC Hàm main.c #include "defs.h" #include "debug.h" #include "rtable.h" #include "timer_queue.h" #include "dymo_socket.h" #include "icmp_socket.h" #include "dymo_netlink.h" #include "dymo_hello.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAX_CALLBACKS static struct callback { int fd; callback_func_t func; } callbacks[MAX_CALLBACKS]; static int num_callbacks = 0; Nguyễn Quốc Hữu – B13DCVT027 69 Đồ án tốt nghiệp đại học Phụ Lục char *progname = NULL; int debug = 0; int daemonize = 0; int no_path_acc = 0; int reissue_rreq = 0; int s_bit = 0; int hello_ival = 0; struct option longopts[] = { {"interface", required_argument, NULL, 'i'}, {"debug", no_argument, NULL, 'v'}, {"daemon", no_argument, NULL, 'd'}, {"no_path_acc", no_argument, NULL, 'n'}, {"reissue_rreq", no_argument, NULL, 'r'}, {"s_bit", no_argument, NULL, 's'}, {"hello", required_argument, NULL, 'm'}, {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'V'}, {0} }; void usage() { fprintf(stdout, "\nUsage: %s [-vdnrshV] [-m ] -i \n\n" "-v, debug Verbose output (for debugging purposes).\n" "-d, daemon Daemon mode.\n" "-n, no_path_acc "-r, reissue_rreq "-s, s_bit Do not perform path accumulation.\n" Retry a route discovery when a previous one did not success.\n" Set S-bit on RREPs to avoid unidirectional links.\n" "-m, hello Monitor link status with periodic HELLO messages every sec.\n" "-h, help Show this help and exit.\n" "-V, version Show version.\n\n" "Francisco J Ros, \n\n", progname); } Nguyễn Quốc Hữu – B13DCVT027 70 Đồ án tốt nghiệp đại học Phụ Lục int set_kernel_options() { int i, fd; char command[64]; char on = '1'; char off = '0'; // Enable IP forwarding if ((fd = open("/proc/sys/net/ipv4/ip_forward", O_WRONLY)) < 0) return -1; if (write(fd, &on, sizeof(char)) < 0) return -1; close(fd); // Deactivate route cache if ((fd = open("/proc/sys/net/ipv4/route/max_delay", O_WRONLY)) < 0) return -1; if (write(fd, &off, sizeof(char)) < 0) return -1; close(fd); // Deactivate route cache if ((fd = open("/proc/sys/net/ipv4/route/min_delay", O_WRONLY)) < 0) return -1; if (write(fd, &off, sizeof(char)) < 0) return -1; close(fd); // AODVUU disables ICMP redirects on all interfaces I guess that this // may be also useful for DYMOUM in some scenarios, but I haven't // thought very much about this I leave this code here for (i = 0; i < DYMO_MAX_NR_INTERFACES; i++) { if (!DEV_NR(i).enabled) continue; memset(command, '\0', 64); Nguyễn Quốc Hữu – B13DCVT027 71 Đồ án tốt nghiệp đại học Phụ Lục sprintf(command, "/proc/sys/net/ipv4/conf/%s/send_redirects", DEV_NR(i).ifname); if ((fd = open(command, O_WRONLY)) < 0) return -1; if (write(fd, &off, sizeof(char)) < 0) return -1; close(fd); memset(command, '\0', 64); sprintf(command, "/proc/sys/net/ipv4/conf/%s/accept_redirects", DEV_NR(i).ifname); if ((fd = open(command, O_WRONLY)) < 0) return -1; if (write(fd, &off, sizeof(char)) < 0) return -1; close(fd); } memset(command, '\0', 64); sprintf(command, "/proc/sys/net/ipv4/conf/all/send_redirects"); if ((fd = open(command, O_WRONLY)) < 0) return -1; if (write(fd, &off, sizeof(char)) < 0) return -1; close(fd); return 0; } int attach_callback_func(int fd, callback_func_t func) { if (num_callbacks >= MAX_CALLBACKS) return -1; callbacks[num_callbacks].fd = fd; callbacks[num_callbacks].func = func; num_callbacks++; return 0; Nguyễn Quốc Hữu – B13DCVT027 72 Đồ án tốt nghiệp đại học Phụ Lục } void signal_handler(int type) { switch (type) { case SIGSEGV: dlog(LOG_ERR, 0, FUNCTION , "segmentation fault signal received"); exit(EXIT_FAILURE); break; default: exit(EXIT_SUCCESS); } } void get_if_info(struct ifreq *ifreq, char *ifname, int type) { int sock; if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { dlog(LOG_ERR, errno, FUNCTION , "could not open a socket to obtain interfaces information"); exit(EXIT_FAILURE); } memset(ifreq, 0, sizeof(struct ifreq)); strncpy(ifreq->ifr_name, ifname, IFNAMSIZ * sizeof(char)); if (ioctl(sock, type, ifreq) < 0) { dlog(LOG_ERR, errno, FUNCTION , "could not get interface information for %s", ifname); close(sock); exit(EXIT_FAILURE); } Nguyễn Quốc Hữu – B13DCVT027 73 Đồ án tốt nghiệp đại học Phụ Lục close(sock); } void load_modules(char *ifnames) { struct stat st; char buf[1024], *l = NULL; int found = 0; FILE *m; memset(buf, '\0', 64); if (stat("./kdymo.ko", &st) == 0) sprintf(buf, "/sbin/insmod kdymo.ko ifnames=%s &>/dev/null", ifnames); else if (stat("./kdymo.o", &st) == 0) sprintf(buf, "/sbin/insmod kdymo.o ifnames=%s &>/dev/null", ifnames); else sprintf(buf, "/sbin/modprobe kdymo ifnames=%s &>/dev/null", ifnames); system(buf); usleep(100000); /* Check result */ m = fopen("/proc/modules", "r"); while (fgets(buf, sizeof(buf), m)) { l = strtok(buf, " \t"); if (!strcmp(l, "kdymo")) found++; } fclose(m); if (found < 1) { fprintf(stderr, "A kernel module could not be loaded, " "check your installation %d\n", found); exit(EXIT_FAILURE); } } Nguyễn Quốc Hữu – B13DCVT027 74 Đồ án tốt nghiệp đại học Phụ Lục void remove_modules(void) { system("/sbin/rmmod kdymo &>/dev/null"); } void host_init(char *ifnames) { char *ifname, ifnames_aux[(IFNAMSIZ + 1) * DYMO_MAX_NR_INTERFACES]; struct ifreq ifreq; if (!ifnames) { usage(); exit(EXIT_SUCCESS); } memset(&this_host, 0, sizeof(struct host_info)); memset(dev_indices, 0, DYMO_MAX_NR_INTERFACES * sizeof(u_int32_t)); // Initialize this_host this_host.nif = 0; this_host.seqnum = 1; this_host.prefix = 0; this_host.is_gw = 0; // Get interfaces information strncpy(ifnames_aux, ifnames, sizeof(ifnames_aux)); ifname = strtok(ifnames_aux, ","); { u_int32_t ifindex; // Get interface index get_if_info(&ifreq, ifname, SIOCGIFINDEX); ifindex = ifreq.ifr_ifindex; this_host.devs[this_host.nif].ifindex dev_indices[this_host.nif] = ifindex; = ifindex; this_host.nif++; // Copy interface name Nguyễn Quốc Hữu – B13DCVT027 75 Đồ án tốt nghiệp đại học Phụ Lục strncpy(DEV_IFINDEX(ifindex).ifname, ifname, IFNAMSIZ * sizeof(char)); // Get IP address get_if_info(&ifreq, ifname, SIOCGIFADDR); DEV_IFINDEX(ifindex).ipaddr.s_addr = ((struct sockaddr_in *) &ifreq.ifr_addr)->sin_addr.s_addr; // Get broadcast address get_if_info(&ifreq, ifname, SIOCGIFBRDADDR); DEV_IFINDEX(ifindex).bcast.s_addr = ((struct sockaddr_in *) &ifreq.ifr_broadaddr)->sin_addr.s_addr; // Enable interface DEV_IFINDEX(ifindex).enabled = 1; if (this_host.nif >= DYMO_MAX_NR_INTERFACES) break; } while ((ifname = strtok(NULL, ",")) != NULL); // Load kernel modules load_modules(ifnames_aux); // Set appropriate kernel options if (set_kernel_options() < 0) { dlog(LOG_ERR, errno, FUNCTION , "could not set kernel options"); exit(EXIT_FAILURE); } } void host_fini(void) { remove_modules(); rtable_destroy(); netlink_fini(); dymo_socket_fini(); icmp_socket_fini(); hello_fini(); dlog_fini(); Nguyễn Quốc Hữu – B13DCVT027 76 Đồ án tốt nghiệp đại học Phụ Lục } /* Main loop */ int main(int argc, char *argv[]) { struct timeval *timeout; char *ifnames = NULL; fd_set readers, rfds; int i, n, nfds = 0; progname = argv[0]; // Get command line options while (1) { int opt; opt = getopt_long(argc, argv, "i:vdnrm:shV", longopts, 0); if (opt == -1) break; switch (opt) { case 'i': ifnames = optarg; break; case 'v': debug = 1; break; case 'd': daemonize = 1; break; case 'n': no_path_acc = 1; break; case 'r': reissue_rreq = 1; break; Nguyễn Quốc Hữu – B13DCVT027 77 Đồ án tốt nghiệp đại học Phụ Lục case 's': s_bit = 1; break; case 'm': hello_ival = atoi(optarg); break; case 'h': usage(); exit(EXIT_SUCCESS); break; case 'V': fprintf(stdout, "\nDYMOUM v%s, %s - University of Murcia (Spain)\n" "Francisco J Ros \n\n", DYMO_UM_VERSION, DYMO_DRAFT_VERSION); exit(EXIT_SUCCESS); break; case '?': case ':': default: usage(); exit(EXIT_SUCCESS); break; } } // Check we are root if (geteuid() != 0) { fprintf(stderr, "You must be root\n"); exit(EXIT_FAILURE); } // Daemonize if (daemonize) Nguyễn Quốc Hữu – B13DCVT027 78 Đồ án tốt nghiệp đại học Phụ Lục { // Create a child process, parent dies if (fork() != 0) exit(EXIT_SUCCESS); // Close stdin, stdout and stderr close(0); close(1); close(2); // Process is a group leader setsid(); } // Make a clean exit atexit(host_fini); // Initialize data structures and services rtable_init(); dlog_init(); host_init(ifnames); netlink_init(); dymo_socket_init(); icmp_socket_init(); hello_init(); // Catch signals signal(SIGHUP, signal_handler); signal(SIGINT, signal_handler); signal(SIGTERM, signal_handler); //signal(SIGSEGV, signal_handler); FD_ZERO(&readers); for (i = 0; i < num_callbacks; i++) { FD_SET(callbacks[i].fd, &readers); if (callbacks[i].fd >= nfds) nfds = callbacks[i].fd + 1; } Nguyễn Quốc Hữu – B13DCVT027 79 Đồ án tốt nghiệp đại học Phụ Lục // Main loop while (1) { memcpy((char *) &rfds, (char *) &readers, sizeof(rfds)); timeout = timer_age_queue(); if ((n = select(nfds, &rfds, NULL, NULL, timeout)) < 0) { if (errno != EINTR) dlog(LOG_WARNING, errno, FUNCTION , "failed select() in main loop"); continue; } if (n > 0) { for (i = 0; i < num_callbacks; i++) if (FD_ISSET(callbacks[i].fd, &rfds)) callbacks[i].func(callbacks[i].fd); } } return 0; } Nguyễn Quốc Hữu – B13DCVT027 80 ... Chương 1: “Tổng quan mạng cảm biến khơng dây WSN trình bày khái qt mạng cảm biến không dây, thách thức, ứng dụng mạng cảm biến không dây Chương 2: Định tuyến mạng cảm biến khơng dây vấn đề Qos”... cảm biến khơng dây Chương 3: “Phân tích đánh giá hiệu giao thức DYMO trình bày giao thức DYMO mạng cảm biến không dây kết hợp với kỹ thuật đa đường hỗ trợ Qos Mô đánh giá hiệu giao thức DYMO. .. quan mạng cảm biến không dây WSN CHƯƠNG I: TỔNG QUAN VỀ MẠNG CẢM BIẾN KHÔNG DÂY WSN 1.1 Giới thiệu chung Một mạng cảm biến không dây (Wireless Sensor Network – WSN) mạng bao gồm nhiều node cảm biến