nghiên cứu và đánh giá hiệu năng của giao thức định tuyến dymo trong mạng cảm biến không dây wsn

78 234 0
nghiên cứu và đánh giá hiệu năng của giao thức định tuyến dymo trong mạng cảm biến không dây wsn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đồ á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Ẽ BẢNG BIỂU………….………………………………….vii LỜI NĨI ĐẦU……………………………………………………………………… … 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 1.2 Phân loại mạng cảm biến không dây 1.3 Cấu trúc mạng cảm biến không dâ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 giao thức WSN 1.5 Chuẩn Zigbee/IEEE 802.15.4 12 1.6 Ứng dụng mạng cảm biến không dây 13 1.6.1 Các ứng dụng cụ thể mạng WSN loại 1(C1WSN) 14 1.6.2 Các ứng dụng cụ thể mạng WSN loại (C2WSNs) 15 1.7 Kết luận chương 17 CHƯƠNG II: ĐỊNH TUYẾN TRONG MẠNG CẢM BIẾN KHÔNG DÂY VẤN ĐỀ QOS 23 2.1 Những thách thức kỹ thuật định tuyến WSN 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ạng cảm biến 24 2.1.4 Cách thức liên lạc node 24 2.2 Các loại giao thức định tuyến WSN 25 2.2.1 2.3 Giao thức định tuyến cổ điển 27 Giao thức định tuyến mạng WSN 28 Nguyễn Quốc Hữu – B13DCVT027 ii Đồ án tốt nghiệp đại học Mục lục 2.3.1 Giao thức định tuyến AODV (Ad Hoc On-Demand Distance Vector Routing) ………………………………………………………………………………28 2.3.2 Giao thức định tuyến DYMO (Dynamic MANET On-Demand) 33 2.4 Vấn đề Qos mạng cảm biến không dây 34 2.5 Kết luận chương 36 CHƯƠNG III: PHÂN TÍCH ĐÁNH GIÁ HIỆU NĂNG CỦA GIAO THỨC DYMO 42 3.1 Giao thức định tuyến DYMO mạng cảm biến không dây WSN 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 giao thức định tuyến DYMO, giao thức DYMO_MQ 48 3.2.1 Giao thức định tuyến DYMO_MQ(DYMO Multipath with Qos) 48 3.3 Mô đánh giá hiệu giao thức DYMO 53 3.3.1 Các tham số hiệu giao thức định tuyến 53 3.3.2 NS-2 55 3.3.3 Mô giao thứ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 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ạng cảm biến không dây IEEE Institute of Electrical and Electronics Engineer Viện kỹ nghệ Điện Điện tử FTP File Tranfer Protocol Giao thức truyền tải tệp WLAN Wireless Local Area Network Mạng LAN không dây WPAN Wireless Personal Area Network Mạng cá nhân không dây WMAN Wireless Metropolitan Area Network Mạng đô thị không dâ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ạng cảm biến không dây loại C2WSNs Category WSNs Mạng cảm biến không dâ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 Định danh TCP Transmission Control Protocol Giao thứ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 Giao thức Internet OLSR Optimized Link State Routing Protocol Giao thức định tuyến trạng thái liên kết tối ưu DSDV Destination Sequence Distance Vecto giao thức định tuyến theo bảng, dựa vector khoảng cách ZRP Zone Routing Protocol giao thức định tuyế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 định tuyến DYMO_MQ Dynamic MANET Ondemand multipath with qos Giao thức định tuyế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 Giao thức định tuyế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 Giao thức liệu người dùng DYMO_M Dynamic MANET Ondemand multipath Giao thức định tuyến động theo yêu cầu cho mạng MANET hỗ trợ kỹ thuật định tuyến đa đường DYMO Dynamic MANET Ondemand Giao thức định tuyến động theo yêu cầu cho mạng MANET AODV Ad hoc On-Demand Distance Vector Routing Giao thức định tuyế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Ẽ BẢNG BIỂU Hình 1.1 Các chuẩn khơng dây số đặc tính Hình 1.2: Mơ hình mạng WSN loại (C1WSNs) Hình 1.3: Mơ hình mạng WSN loại (C2WSNs) Hình 1.4: Mơ hình mạng WSN chia theo kiểu hợp tác bất hợp tác Hình 1.5 : Cấu trúc mạng cảm biến không dây Hình 1.6: Sự phát triển phần cứng node cảm biến Hình 1.7: Cấu trúc phần cứng node cảm biến Hình 1.8: Cấu trúc phần mềm node cảm biến Hình 1.9: Kiến trúc giao thức mạng cảm biến WSN 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ạng cảm biến không dây 24 Hình 2.2: Phân loại giao thức định tuyến WSN 26 Hình 2.3: Các giao thức định tuyến phân loại theo tiến trình xử lý thơng tin định tuyế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 định tuyế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ến giao thức DYMO 47 Bảng 3.1: Các thông số mặc định giao thức DYMO 48 Hình 3.4: Định dạng cấu trúc tin định tuyến DYMO 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ô đánh giá hiệu giao thức DYMO mạng cảm biến không dây WSN 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 giao thứ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 giao thứ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ông dâ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ạng cảm biến không dây WSN Với cấu trúc linh động, WSN thể vai trò then chốt đại diện cho mạng khơng dâ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ên cứu đề tài: “Nghiên cứu đánh giá hiệu giao thức định tuyến DYMO mạng cảm biến không dây” Gồm chương sau: Chương 1: “Tổng quan mạng cảm biến khơng dây WSN” trình bày khái quát 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” trình bày thách thức định tuyến mạng cảm biến khơng dây, phân loại trình bày giao thức định tuyế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 giao thức định tuyến mạng 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 mang cảm biến không dây, chương đưa kết cho thấy giao thức DYMO kết hơp với Qos cho hiệu tốt nhiều so với giao thức DYMO truyền thống giao thứ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ạ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 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ạng cảm biến không dâ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ạng cảm biế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ạng cảm biến không dâ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ạng cảm biến không dâ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ảm biế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ạng cảm biến không dây Hiệu sử dụng công suất mạng cảm biến không dâ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ông dâ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ạng cảm biến không dây WSN 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ảm biến không dâ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ơng dây số đặc tính 1.2 Phân loại mạng cảm biến khơng dây Dựa theo mơ hình kết nối định tuyến mà nodes sử dụng, mạng cảm biến không dây chia làm loại: Loại 1(C1WSNs): - Sử dụng giao thức định tuyế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ạng thứ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 HƯỚNG PHÁT TRIỂN Qua thời gian tìm hiểu, tiếp cận nghiên cứu vấn đề kỹ thuật mạng WSN nói chung hiệu mạng WSN nói riêng, đồ án tốt nghiệp hồn thành đạt mục tiêu nghiên cứu đề thực vấn đề liên quan đến “Nghiên cứu đánh giá hiệu giao thức định tuyến DYMO” Các vấn đề trình bày bao gồm: - Tổng quan mạng cảm biến khơng dây trình bày cách khái qt đặc tính, khó khắn, ưu điểm ứng dụng mạng cảm biến khơng dây WSN - Trình bày số loại giao thức định tuyến áp dụng cho mạng cảm biến không dây Cụ thể giao thức AODV giao thức DYMO mạng cảm biến không dây giao thức sử dụng phổ biến giao thức định tuyến theo yêu cầu Đưa thách thức khó khăn việc hỗ trợ Qos vào giao thức định tuyến mạng cảm biến không dây - Đi sâu vào giao thức DYMO ứng dụng mạng cảm biến không dây gồm tin, cách tìm kiếm tuyến đường giao thức DYMO Đồng thời áp dụng công nghệ đa tuyến đường cho giao thức cảm biến không dây hỗ trợ Qos - Mô đánh giá hiệu giao thức DYMO áp dụng kỹ thuật định tuyến đa đường hỗ trợ Qos với giao thức định tuyến DYMO truyền thống giao thức định tuyến AODV Qua kết mô cho thấy hiệu giao thức DYMO kết hợp với Qos tốt, so sánh với giao thức AODV vượt trội hẳn Giao thức DYMO kết hợp với Qos phát triển tương lai ưu điểm phù hợp với mạng cảm biến không dây Trên số kết luận hướng nghiên cứ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

Ngày đăng: 17/03/2018, 18:17

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan