Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư

72 309 0
Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư

Đ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

Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư Cải tiến và đánh giá hiệu năng giao thức định tuyến đi vòng dựa trên phân loại nút theo góc phần tư

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN QUỐC DŨNG CẢI TIẾN VÀ ĐÁNH GIÁ HIỆU NĂNG GIAO THỨC ĐỊNH TUYẾN ĐI VÕNG DỰA TRÊN PHÂN LOẠI NÖT THEO GÓC PHẦN TƢ LUẬN VĂN THẠC SĨ Hà Nội - 2014 Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN QUỐC DŨNG CẢI TIẾN VÀ ĐÁNH GIÁ HIỆU NĂNG GIAO THỨC ĐỊNH TUYẾN ĐI VÕNG DỰA TRÊN PHÂN LOẠI NÖT THEO GÓC PHẦN TƢ Ngành: Công nghệ thông tin Chuyên ngành: Truyền liệu Mạng máy tính Mã số: LUẬN VĂN THẠC SĨ NGƢỜI HƢỚNG DẪN KHOA HỌC: TS HOÀNG XUÂN TÙNG Hà Nội – 2014 LỜI CAM ĐOAN Tôi xin cam đoan luận văn tốt nghiệp đề tài nghiên cứu thực Các số liệu kết nghiên cứu trình bày luận văn đo đạc thực nghiệm trung thực chưa công bố công trình khoa học khác Tất tài liệu tham khảo có nguồn gốc rõ ràng trích dẫn hợp pháp Tôi xin hoàn toàn chịu trách nhiệm chịu hình thức kỷ luật theo quy định cho lời cam đoan Học viên Nguyễn Quốc Dũng Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi LỜI CẢM ƠN Em xin gửi lời cảm ơn chân thành tri ân sâu sắc thầy cô trường Đại học Công Nghệ, Đại học Quốc Gia Hà Nội, đặc biệt thầy cô khoa Công nghệ thông tin trường truyền dạy kiến thức, kinh nghiệm quý báu giúp em hoàn thành khóa học trường Con xin gửi lời cảm ơn tới gia đình, cảm ơn bạn bè tạo điều kiện thuận lợi trình học tập thực luận văn tốt nghiệp Đặc biệt em xin chân thành cảm ơn TS Hoàng Xuân Tùng, giảng viên khoa Công nghệ thông tin Thầy nhiệt tình hướng dẫn em hoàn thành tốt nghiệp Trong trình học tập, trình thực luận văn, sai sót khó tránh khỏi Tuy nhiên em cố gắng tối đa để đảm bảo chất lượng tiêu chí nghiên cứu khoa học Kính mong quí thầy cô góp ý để luận văn em hoàn thiện Em xin chân thành cảm ơn! Học viên Nguyễn Quốc Dũng NHẬN XÉT CỦA GV HƢỚNG DẪN, GV PHẢN BIỆN Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi MỤC LỤC BẢNG KÝ HIỆU CÁC CHỬ VIẾT TẮT DANH MỤC CÁC BẢNG BIỂU 10 DANH MỤC HÌNH ẢNH 11 LỜI MỞ ĐẦU 12 Chƣơng GIAO THỨC ĐỊNH TUYẾN THEO THÔNG TIN VỊ TRÍ ĐỊA LÝ 15 1.1 Tổng quan giao thức định tuyến theo thông tin vị trí địa lý 15 1.2 Các chiến lược định tuyến định tuyến địa lý 17 1.2.1 Chiến lược định tuyến tham lam 17 1.2.2 Chiến lược định tuyến vòng 18 1.2.3 Chiến lược định tuyến phát tràn 19 1.3 Giao thức định tuyến “Greedy Perimeter Stateless Routing” 21 1.3.1 Tổng quan 21 1.3.2 Thuật toán định tuyến GPSR 22 Chƣơng GIAO THỨC ĐỊNH TUYẾN “DETOUR ROUTING BASED ON QUADRANT CLASSIFICATION” 25 2.1 Tổng quan 25 2.2 Chuyển tiếp tham lam vấn đề vùng trống DRQC 26 2.2.1 Chiến lược chuyển tiếp tham lam 26 2.2.2 Vấn đề vùng trống giao thức DRQC 27 2.3 Thuật toán định tuyến giao thức DRQC 28 2.3.1 Khái niệm, định nghĩa 28 2.3.2 Trạng thái nút 28 2.3.3 Định dạng thông điệp gửi 29 2.3.4 Cấu trúc liệu 30 2.3.5 Thuật toán xử lý định tuyến DRQC 31 Chƣơng GIAO THỨC “DETOUR ROUTING BASED ON COORDINATES ROTATION” 34 3.1 Hạn chế giao thức định tuyến DRQC 34 3.1.1 Nút tối ưu không thuộc góc với nút đích 34 3.1.2 Ví dụ định tuyến không tối ưu theo DRQC 36 3.2 Đề xuất giải pháp cải tiến giao thức DRQC 37 3.2.1 Giải pháp quay trục tọa độ 37 3.2.2 Phương pháp quay trục áp dụng DRQC 40 3.2.3 Ví dụ 41 Chƣơng ĐÁNH GIÁ HIỆU NĂNG 44 4.1 Môi trường cài đặt chương trình mô 44 4.2 Đánh giá tỷ lệ chuyển gói tin thành công mạng 44 4.2.1 Kịch mô 44 4.2.2 Kết thực đánh giá 45 4.3 Thông lượng trung bình giao thức định tuyến địa lý 47 4.3.1 Kịch mô 47 4.3.2 Kết thực nghiệm phân tích 48 KẾT LUẬN 49 TÀI LIỆU THAM KHẢO 51 PHỤC LỤC 52 I CÔNG CỤ MÔ PHỎNG SỰ KIỆN MẠNG NS-3 52 1.1 Tổng quan NS-3 52 1.2 Các thành phần NS-3 53 i Node 54 ii Application 54 iii Channel 54 iv Net Device 54 Cài đặt NS-3 55 i Các phần mềm cần thiết 55 a) Mercurial 55 Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi b) Waf 55 ii Cài đặt kiểm tra thực mô 56 a) Cài đặt NS-3 56 iii Kiểm tra cài đặt chạy thử chƣơng trình 61 Thêm module, cài đặt giao thức định tuyến GPSR DRQC 63 i Thêm module vào dự án NS-3 63 ii Cài đặt giao thức định tuyến DRQC, GPSR 64 iii Cài đặt giao thức DRQC 64 iv Cài đặt giao thức GPSR 70 PHỤ LỤC 71 BẢNG KÝ HIỆU CÁC CHỬ VIẾT TẮT STT Chử viết tắt AODV DR-CR DRQC DSR GOAFR GPS GPSR GRP NS3 Ý nghĩa Ad-Hoc On-Demad Distance Vector Routing Detour Routing based on Coordinates Rotation Detour Routing Quadrant Classification Protocol Dynamic Source Routing (DSR) [6] Greedy Other Adaptive Face Routing Global Positioning System Geographic Perimeter Stateless Routing Protocol Geographics Routing Protocol Network Simulator Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi 10 DANH MỤC CÁC BẢNG BIỂU Bảng 2-1: Định dạng thông điệp quảng bá 27 Bảng 2-2: Định dạng thông điệp liệu 28 Bảng 2-3: Định dạng thông điệp phản hồi 28 Bảng 2-4: Định dạng cấu trúc bảng định tuyến 29 Bảng 2-5: Định dạng cấu trúc bảng hàng xóm 30 Bảng 3-1: Danh sách nút hàng xóm DR-CR 39 Bảng 3-2: Danh sách nút hàng xóm DR-CR 40 Bảng 4-1: Bảng thông số kịch mô mạng ngẫu nhiên 42 Bảng 4-2: Kết tỷ lệ chuyển gói tin thành công 43 Bảng 4-3: Thông số mô mạng cố định 45 Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi 58 Kết thị Checking for program /usr/bin/g++ Checking for program /usr/bin/cpp Checking for program /usr/bin/ar Checking for program /usr/bin/ranlib Checking for g++ Checking for program /usr/bin/pkg-config g++ : ok cpp : ok ar : ok ranlib : ok pkg-config : ok : ok Checking for -Wno-error=deprecated-declarations support : yes Checking for -Wl, soname=foo support : yes Checking for header stdlib.h : ok Checking for header signal.h : ok Checking for header pthread.h : ok Checking for high precision time implementation : 128-bit integer Checking for header stdint.h : ok Checking for header inttypes.h : ok Checking for header sys/inttypes.h : not found Checking for library rt : ok Checking for header netpacket/packet.h : ok 59 Checking for pkg-config flags for GSL : ok Checking for header linux/if_tun.h : ok Checking for pkg-config flags for GTK_CONFIG_STORE : ok Checking for pkg-config flags for LIBXML2 : ok Checking for library sqlite3 : ok Checking for NSC location : ok /nsc (guessed) Checking for library dl : ok Checking for NSC supported architecture x86_64 : ok Checking for program python : ok /usr/bin/python Checking for Python version >= 2.3 : ok 2.5.2 Checking for library python2.5 : ok Checking for program python2.5-config : ok /usr/bin/python2.5-config Checking for header Python.h : ok Checking for -fvisibility=hidden support : yes Checking for pybindgen location : ok /pybindgen (guessed) Checking for Python module pybindgen : ok Checking for pybindgen version : ok 0.10.0.640 Checking for Python module pygccxml : ok Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi 60 Checking for pygccxml version : ok 0.9.5 Checking for program gccxml : ok /usr/local/bin/gccxml Checking for gccxml version : ok 0.9.0 Checking for program sudo : ok /usr/bin/sudo Checking for program hg : ok /usr/bin/hg Checking for program valgrind : ok /usr/bin/valgrind Summary of optional NS-3 features: Threading Primitives : enabled Real Time Simulator : enabled Emulated Net Device : enabled GNU Scientific Library (GSL) : enabled Tap Bridge : enabled GtkConfigStore : enabled XmlIo : enabled SQlite stats data output : enabled Network Simulation Cradle : enabled Python Bindings : enabled Python API Scanning Support : enabled Use sudo to set suid bit : not enabled (option enable-sudo not selected) Build tests : enabled Build examples : enabled Static build : not enabled (option enable-static not selected) 'configure' finished successfully (2.870s Cài đặt tảng hệ điều hành Windows Để thực cài đặt hệ điều hành Windows cài đặt chương trình mô tảng Linux như: Cygwin MinGW Tải giải nén tập tin ns-3-allinone sử dụng chương trình Cygwin cấu hình build ns-3-allinone tương tự cài đặt với Linux giới thiệu phần 61 iii Kiểm tra cài đặt chạy thử chƣơng trình Sau cài đặt hoàn thành, kiểm tra (unit tests) cho NS-3 sau: Mở chương trình terminal vào thư mục ns-3-dev, gõ lệnh: “./test.py -c core” để chạy test.py script Trên hình terminal thị thông tin cài đặt chương trình số lượng module cài đặt thành công, số lượng module cài đặt không thành công Hình PL.2 Cài đặt thành công Chạy chƣơng trình (Run a script) Để biên dịch chương trình mô sử dụng lệnh /waf Chương trình cho phép biên dịch hệ thống đảm bảo chia đường dẫn thư viện phải thiết lập xác thư viện sẵn sàng để thực thi Để chạy chương trình, đơn giản gõ “./waf run scriptName” terminal application,ví dụ: /waf run hello-simulator” Trong /waf run lệnh thực thi mô phỏng, hello-simulator tên tập tin chứa hàm (Main) mô Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi 62 Cấu trúc viết kịch mô Trong NS-3, chương trình mô viết ngôn ngữ C++ python Trong ví dụ hướng dẫn sau trình bày ví dụ đơn giản viết C++ Đầu tiên Script luôn thêm vào (include) thông tin quyền GNU, thông tin dự án quyền script Chúng ta cần thêm thông tin vào muốn phát hành mã cài đặt cộng đồng sử dụng / * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version as * published by the Free Software Foundation; * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE See the * GNU General Public License for more details * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * / Tiếp theo include module cần thiết để tực mô #include "ns3/core-module.h" #include "ns3/network-module.h" #include "ns3/internet-module.h" 63 #include "ns3/point-to-point-module.h" #include "ns3/applications-module.h" Script cần thực namespace NS-3 using namespace ns3; Main function (Chương trình chính) Main function { //Khai báo node mạng /Khai báo kênh truyền liệu (Data rate/ time delay)/Các thành phần //khác phụ thuộc vào kiện mạng cần mô //Thực thi Simulator Simulator::Run (); //Runs the simulation and the function only returns after the sim is finished Simulator::Destroy (); //Clean up the objects created for the sim } Thêm module, cài đặt giao thức định tuyến GPSR DRQC i Thêm module vào dự án NS-3 Khi có mô phỏng, nghiên cứu mới, hay cần thêm tính cho NS-3, phải biên dịch nhúng module vào NS-3 Trong phần giới thiệu hướng dẫn cách để thêm module cho NS-3  Thư mục chứa module NS-3 /ns-3-allinone/ns-3-dev/src Mỗi thư mục tìm thấy tên với module có NS3 ví dụ module aodv có thư mục “aodv”  Tạo module với mẫu quy định sẵn NS-3 Trong công cụ mô NS-3, đoạn mã python hỗ trợ để tạo module nằm thư mục /ns3-dev/src, tên tập tin createmodule.py Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi 64 Ví dụ muốn tạo module tên “new-module”, gõ lệnh sau lên giao diện terminal di chuyển vào thư mục src ./create-module.py new-module Sau tạo xong module tên “new-module” di chuyển vào thư mục “new-module” nằm thư mục src thấy thư mục tập tin với mẫu có sẵn NS-3 sau: examples wscript helper model test thư mục chứa  examples: chứa mẫu tập tin để mô module  helper: chứa tập tin dùng để liên kết với module khác NS-3  mode: chứa tập tin, thư mục liên quan tới mã nguồn cài đặt module  test: chứa tập tin thực kiểm tra module  wscript: tập tin dùng để biên dịch làm việc với công cụ waf ii Cài đặt giao thức định tuyến DRQC, GPSR Các giao thức định tuyến cài đặt thêm vào công cụ mô NS-3 tạo theo mẫu có sẵn NS-3 cấu trúc thư mục file cấu hình không nhắc đến phần trình bày Thay vào phần trình bày chủ yếu nêu số phần code chương trình miêu tả giải thuật giao thức đinh tuyến Ngoài giao thức DRQC GPSR thừa kế từ giao thức định tuyến không dây cài đặt sẵn NS-3 hàm xử lý gửi, nhận thông tin socket, … tham khảo thêm source code NS-3 iii Cài đặt giao thức DRQC Hàm xử lý tìm kiếm nút nút nhận gói tin Hàm xử lý thực tìm kiếm nút nhận gói tin gửi tới Kết trả địa IP nút Phần code phía viết ngôn ngữ C++ nằm tập tin drqc.cc Ipv4Address RoutingProtocol::SearchNextHop(Vector sender, 65 Vector destination, Vector vprober, Vector &vfor, int needUpdate) { Ipv4Address nextHop = Ipv4Address::GetZero(); Vector vf; Vector v; std::list candidates; std::list ltwoNeig; Ptr MM = m_ipv4>GetObject (); v.x = MM->GetPosition ().x; v.y = MM->GetPosition ().y; Vector vNextHop; if((vprober.x != -1 && vprober.y != -1) && (sender.x != -1 && sender.y != -1) && needUpdate ==1) { updateRoutingTable(sender,vprober,ltwoNeig); //nqdung } if(DestinationExistN1N2(destination,m_neighbors GetNeighborTable(), vNextHop)) { vfor = destination; nextHop = m_routingTables.GetIPv4(vNextHop); return nextHop; } if(DestinationInRoutingTable(destination, m_routingTables.GetTable1(), vf)) { vNextHop = FindFirstVector(m_neighbors.GetNeighborTable(),v f); vfor = vf; Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi 66 nextHop = m_routingTables.GetIPv4(vNextHop); return nextHop; } candidates= GetCandidatesRed(m_neighbors.GetNeighborTable(), v, vprober, destination); if(candidates.size() > 0) { Vector vMin = MinPosition(candidates, destination); //count of node ltwoNeig= GetCandidatesNoRed(m_neighbors.GetNeighborTable( ) , vMin); if((destination.x != -1 && destination.y != -1) && (sender.x != -1 && sender.y != -1)&& needUpdate ==1) { updateRoutingTable(destination,vMin,ltwoNeig); //nqdung } vNextHop = FindFirstVector(m_neighbors.GetNeighborTable(),v Min); vfor = vMin; nextHop = m_routingTables.GetIPv4(vNextHop); return nextHop; } candidates = GetCandidatesWhite(m_neighbors.GetNeighborTable( ),v, vprober, destination); if (candidates.size() > 0) { Vector vMin = MinPosition(candidates, destination); //count of node 67 ltwoNeig = GetCandidatesNoRed(m_neighbors.GetNeighborTable( ),vMin); if((destination.x != -1 && destination.y != -1) && (sender.x != -1 && sender.y != -1)&& needUpdate ==1) { updateRoutingTable(destination,vMin,ltwoNeig); //nqdung } vNextHop = FindFirstVector(m_neighbors.GetNeighborTable(), vMin); nextHop = m_routingTables.GetIPv4(vNextHop); vfor = vMin; return nextHop; } std::list ltempN2 = GetCandidatesNoRed(m_neighbors.GetNeighborTable( ),v); if(ltempN2.size()>0) { Vector vMin = MinPosition(ltempN2, destination); //count of node ltwoNeig = GetCandidatesNoRed(m_neighbors.GetNeighborTable( ),vMin); if((destination.x != -1 && destination.y != -1) && (sender.x != -1 && sender.y != -1)&& needUpdate ==1) } Hàm xử lý xoay trục thuật toán DRQC cải tiến Ket-noi.com Ket-noi.com kho kho tai tai lieu lieu mien mien phi phi 68 //////////////////////////////////////////////// /////// //Function Name: DefineCoordinate //Description: Use for calculations some factor of straight-line equation //Example: ax + by +c =0; return a, b, c //Input: tan of angle Destination with ox //Output: a,b,c of ox' and oy' straight-line equation //dungnq06@gmail.com //////////////////////////////////////////////// //////// void drqcneigtable::DefineCoordinate(Vector vSr, float tanDes, Vector &vOY, Vector &vOX) { /*ta co: voi hai diem bat ky, phuong trinh duong thang la: * x(y2-y1) - x1(y2-y1) = y(x2-x1) - y1(x2-x1) * x(y2-y1) -y(x2-x1) - x1(y2-y1) + y1(x2x1) = (y2-y1)x + (-x2 + x1)y + (-x1(y2 y1) + y1(x2 - x1)) = 0; * => a = y2 - y1 * b = -x2 + x1 * c = (-x1(y2 - y1) + y1(x2 - x1)); * thay cac tham so vao ta co: * */ //goi diem B bat ky: float x2 = vSr.x + 10; //diem B luon lon hon diem A (ban dau) //if tanDes > => Destination thuoc goc hoac (quay theo kim dong ho) //if tanDes Destination thuoc goc 2,4 (quay theo kim dong ho) 69 float y2,y3 = 0; float tanAnpha = 0; if(tanDes >= 1) { tanAnpha = (tanDes - 1)/(tanDes + 1); // tan 45 = 1; y2 = ((-1)* ((x2-vSr.x) / tanAnpha)) + vSr.y; // costan = y/x; y3 = (x2-vSr.x) * tanAnpha + vSr.y; // tan = x/y => y = x/tan {tanDes > => tanAnpha

Ngày đăng: 28/03/2017, 09:26

Từ khóa liên quan

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

Tài liệu liên quan