Tối ưu giao thức AODVEERS trong mạng AdhocTối ưu giao thức AODVEERS trong mạng AdhocTối ưu giao thức AODVEERS trong mạng AdhocTối ưu giao thức AODVEERS trong mạng AdhocTối ưu giao thức AODVEERS trong mạng AdhocTối ưu giao thức AODVEERS trong mạng AdhocTối ưu giao thức AODVEERS trong mạng Adhoc
LỜI NĨI ĐẦU Ngày nay, với phát triển khơng ngừng công nghệ, thiết bị di động máy tính xách tay, smartphone, tablet…ngày có bước tiến dài phần cứng tốc độ CPU, nhớ lớn, khả tryền tải nội dung đa phương tiện trở nên phổ biến đời sống hàng ngày công việc Do nhu cầu kết nối lúc, nơi nên với phát triển thiết bị đầu cuối cơng nghệ mạng không dây phát triển mạnh mẽ có nhiều ứng dụng thiết thực đời sống Với khả động cao, thuận tiện sử dụng, công nghệ thay cơng nghệ mạng có dây truyền thống Song di chuyển thiết bị di động mạng làm cho topo mạng thay đổi, với tỷ lệ lỗi cao giới hạn băng thơng, lượng so với mạng có dây, nên giao thức định tuyến mạng không dây trở nên phức tạp Mạng Ad hoc mạng không dây mềm dẻo với khả tự tổ chức, hoạt động mà khơng cần có sở hạ tầng hỗ trợ thu hút nhiều quan tâm vài năm trở lại Đồ án thực tìm hiểu mạng Ad hoc, cách thức hoạt động giao thức định tuyến mạng, sâu vào giao thức AODV phát triển AODV-ERS AODV-EERS Phần trọng tâm chúng em tiến hành chỉnh sửa giao thức AODV-EERS giúp cải thiện mốt số thông số làm việc môi trường mạng Ad hoc Mặc dù nhiều nỗ lực đồ án chắn không tránh khỏi thiếu sót, nên mong đóng góp thẳng thắn từ thầy, giáo bạn Trong trình thực đồ án, chúng em gặp khơng khó khăn Tuy nhiên giúp đỡ tận tình thầy giáo Nguyễn Trung Dũng, nhóm nghiên cứu Ad hoc, chúng em hồn thành đồ án Phạm Trọng Hiếu- Nguyễn Minh Đức Chúng em xin gửi lời cảm ơn chân thành tới: Thầy giáo Nguyễn Trung Dũng Nhóm nghiên cứu Ad hoc K52 thầy Nguyễn Trung Dũng Viện Điện tử - Viễn thông, Trường Đại học Bách Khoa Hà Nội Cùng tồn thể gia đình bạn bè hỗ trợ Hà Nội, tháng năm 2012 Nhóm sinh viên thực Phạm Trọng Hiếu Nguyễn Minh Đức Phạm Trọng Hiếu- Nguyễn Minh Đức TÓM TẮT ĐỒ ÁN Tối ưu giao thức AODV-EERS mạng Ad-hoc Công nghệ mạng không dây Ad hoc ngày phát triển có nhiều ứng dụng thực tiễn Đồ án tổng hợp kiến thức mạng khơng dây nói chung, mạng Ad hoc nói riêng đặc điểm, ứng dụng giao thức định tuyến Trong đó, đồ án sâu vào nghiên cứu phương thức hoạt động, định dạng tin giao thức định tuyến AODV- giao thức sử dụng phổ biến mạng Ad hoc ngày đồng thời tìm hiểu hai giao thức cải tiến từ giao thức AODV gốc AODV-ERS AODV-EERS Và cuối chúng em thực ý tưởng chỉnh sửa giao thức AODV-EERS Ý tưởng thực việc đưa yếu tố lượng vào trình định tuyến giao thức AODV-EERS nhằm cải thiện thông số thời gian sống mạng tỷ lệ phân phát gói tin thành công Kết chỉnh sửa kiểm tra cơng cụ mơ mạng Network Simulator 2(NS2) Q trình mô thực với nhiều kịch để đánh giá giao thức sau chỉnh sửa Phạm Trọng Hiếu- Nguyễn Minh Đức ABSTRACT Optimize AODV-EERS protocol in Ad hoc network Adhoc wireless technology has been developing strongly in the last decade and playing an important role in our lives In this paper, we summarize the basic knowledge of wireless network in general, and Adhoc network specifically in term of its characteristics, application and routing protocols Particularly, we study process method and packet format of routing protocol AODV- which is used widely today Also we study two other revised AODV protocols, which are AODV-ERS and AODV-EERS Furthermore, we acctuate the idea of revising the AODV-EERS protocol This idea aims to take energy into consideration of routing in AODVEERS protocol in order to improve time-to-live component of netowrk and packet delevery ratio The simulation process is run on NS2 with many different scenarios Phạm Trọng Hiếu- Nguyễn Minh Đức MỤC LỤC LỜI NÓI ĐẦU TÓM TẮT ĐỒ ÁN ABSTRACT MỤC LỤC DANH SÁCH HÌNH VẼ DANH SÁCH BẢNG BIỂU 11 DANH SÁCH CÁC TỪ VIẾT TẮT 12 MỞ ĐẦU 13 CHƯƠNG 1: TỔNG QUAN VỀ MẠNG AD HOC 14 1.1 Giới thiệu chung mạng Ad hoc 14 1.2 Đặc điểm mạng Ad hoc 15 1.3 Phân loại mạng Ad hoc 16 1.4 Ứng dụng thực tế mạng Ad hoc 23 CHƯƠNG 2: CÁC GIAO THỨC ĐỊNH TUYẾN TRONG MẠNG AD HOC 25 2.1 Các vấn đề định tuyến mạng Ad hoc 25 2.2 Phân loại giao thức định tuyến mạng Ad hoc 26 2.3 Các thông số quan trọng giao thức hoạt động 30 CHƯƠNG 3: GIAO THỨC ĐỊNH TUYẾN AODV 32 Phạm Trọng Hiếu- Nguyễn Minh Đức 3.1 Định dạng tin sử dụng giao thức AODV 32 3.2 Nguyên lý hoạt động giao thức 36 CHƯƠNG 4: GIAO THỨC ĐỊNH TUYẾN AODV-ERS, AODV-EERS 54 4.1 Giao thức định tuyến AODV-ERS 54 4.2 Giao thức định tuyến AODV-EERS 58 CHƯƠNG 5: ĐỊNH TUYẾN CÓ DỰA TRÊN NĂNG LƯỢNG 64 5.1 Khái quát 64 5.2 Giải pháp 64 5.3 Xây dựng thuật toán 66 5.4 Sửa code 68 CHƯƠNG 6: PHẦN MỀM MÔ PHỎNGNS2 70 6.1 Giới thiệu công cụ mô mạng NS2 70 6.2 Tạo kịch mô 75 6.3 Phân tích kết mơ 77 6.4 Build lại giao thức sau sữa chữa 82 CHƯƠNG 7: MÔ PHỎNG 83 7.1 Danh sách ý nghĩa file mô 83 7.2 Các tham số mô 83 7.3 Kết mô 84 7.4 Nhận xét 86 Phạm Trọng Hiếu- Nguyễn Minh Đức CHƯƠNG 8: KẾT LUẬN 87 8.1 Các vấn đề tồn 87 8.2 Hướng giải 87 LỜI KẾT 88 DANH SÁCH TÀI LIỆU THAM KHẢO 89 Phạm Trọng Hiếu- Nguyễn Minh Đức DANH SÁCH HÌNH VẼ Hình 1.1 Một mạng ad-hoc điển hình 15 Hình 1.2: Phân loại mạng Ad hoc 17 Hình 1.3: Mối quan hệ mạng BAN (hình a) PAN (hình b) 18 Hình 1.4: Mơ hình WLAN : (a) mạng ad hoc, (b) mạng sở hạ tầng 19 Hình 1.5: Mơ hình mạng theo giao thức single hop 20 Hình 1.6: Mơ hình mạng theo định tuyến multihop 21 Hình 1.7: Mơ hình mạng MANET phân cấp 22 Hình 1.8: Ứng dụng ad-hoc lĩnh vực quân 24 Hình 2.1: Các giao thức định tuyến mạng ad-hoc 27 Hình 3.1: Ví dụ tin RREQ phần 41 Hình 3.2: Ví dụ tin RREQ phần 42 Hình 3.3: Ví dụ tin RREQ phần 42 Hình 3.4: Ví dụ tin RREQ phần 43 Hình 3.5: Ví dụ tin RREQ phần 43 Hình 3.6: Ví dụ tin RREQ phần 44 Hình 3.7: Ví dụ tin RREQ phần 44 Hình 3.8: Ví dụ tin RERR phần 47 Phạm Trọng Hiếu- Nguyễn Minh Đức Hình 3.9: Ví dụ tin RERR phần 48 Hình 3.10: Ví dụ tin RERR phần 48 Hình 3.11: Ví dụ tin RERR phần 49 Hình 3.12: Ví dụ tin RERR phần 49 Hình 3.13: Ví dụ q trình sửa cục phần 50 Hình 3.14: Ví dụ trình sửa cục phần 51 Hình 3.15: Ví dụ q trình sửa cục phần 51 Hình 3.15: Ví dụ q trình sửa cục phần 52 Hình 3.16: Ví dụ q trình sửa cục phần 52 Hình 3.17: Ví dụ q trình sửa cục phần 53 Hình 4.1: Quá trình tìm đường AODV-ERS 55 Hình 4.2: Q trình xử lý thơng tin node nguồn 56 Hình 4.3: Q trình xử lý thơng tin node trung gian 57 Hình 4.4: Giá trị Predecessor 59 Hình 4.5: Node A quảng bá tin RREQ 60 Hình 4.6: Node B chuyển tiếp tin 60 Hình 4.8: Node C D quảng bá tin RREQ 61 Hình 4.9: Trạng thái node sau tìm đường 61 Phạm Trọng Hiếu- Nguyễn Minh Đức Hình 5.1: Node Trung Gian 67 Hình 5.2: Node Đích 67 Hình 5.3: Minh Họa Thuật Tốn 67 Hình 6.1: Tổng quan NS góc độ người dùng 70 Hình 6.2: Luồng kiện cho file Tcl chạy NS 72 Hình 6.3: C++ Otcl : Sự đối ngẫu 73 Hình 6.4: TclCL hoạt động liên kết A B 73 Hình 6.5: Kiến trúc NS-2 NAM môi trường Linux 75 Phạm Trọng Hiếu- Nguyễn Minh Đức 10 Phần Mềm Mô Phỏng NS2 Hầu hết định tuyến viết OTcl (dù thuật tốn Dijkstra lõi viết C++) Mơ HTTP có luồng bắt đầu OTcl việc xử lý gói lại viết C++ Phương pháp chạy tốt có đến 100 luồng bắt đầu thời gian mô giây Nói chung, phải triệu gọi Tcl nhiều lần giây có lẽ nên chuyển sang C++ Về phương diện mã nguồn, NS-2 viết với 100k dòng mã lệnh C++, 70k dòng mã Tcl 20k dòng tài liệu Sử dụng NS2 mơi trường Linux: Hình sau biểu diễn kiến trúc thư mục NS-2 NAM môi trường Linux NS-2 NAM thư mục ns-allinone-2.34 NS-2 bao gồm thực thi mô (bằng mã C++ mã OTcl), kịch Otcl kiểm tra tính hiệu lực kịch OTcl minh họa Hình 6.5: Kiến trúc NS-2 NAM môi trường Linux 6.2 Tạo kịch mô Kịch mô viết ngôn ngữ tcl lưu file có tcl viết ngơn ngữ tcl Kịch mô bao gồm định nghĩa vị trí, dịch chuyển, đặc điểm node; kết nối node Kịch kết hợp với giao thức thư viện NS2 tạo thành liệu mô Sau chúng em trình bày cách tạo kịch với topo lớn số lượng node nhiều Phạm Trọng Hiếu- Nguyễn Minh Đức 75 Phần Mềm Mô Phỏng NS2 Kịch với topo lớn, số node kết nối nhiều Với topo lớn kịch mơ thường gồm file, ngồi file tcl gồm file Một file lưu luồng kết nối, file lưu ví trí di chuyển node NS2 có cơng cụ để tạo file - Tạo kịch random kết nối Các kết nối ngẫu nhiên TCP CBR khởi tạo node cách sử dụng file cbrgen.tcl File có sẵn thư mục NS2 theo đường dẫn ~ns/indep-utils/cmu-scen-gen Nó sử dụng để tạo luồng CBR TCP node di động Để thực hiện, cần định nghĩa kiểu luồng kết nối (CBR hay TCP), số node số kết lượng kết nối lớn node, seed rate kết nối Theo mẫu: ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc connections] [-rate rate] - Tạo vị trí di chuyển cho node kịch File tạo vị trí di chuyển node có sẵn NS2 theo đường dẫn ~ns/indep-utils/cmu-scen-gen/setdest viết C gồm file cc, h makefile Để tạo file kịch ta thực lệnh có dạng sau: /setdest [-n num_of_nodes] [-p pausetime] [-s maxspeed] [-t simtime] \ [-x maxx] [-y maxy] > [outdir/movement-file] Sau tạo file trên, ta nên đặt chúng chung vào thư mục file tcl Trong file tcl ta tạo biến đường dẫn: opt(cp) opt(sc), hai biến lưu đường dẫn file kịch vừa tạo Và import hai file vào set opt(cp) "/home/hieupzo/cbr50" set opt(sc) "/home/hieupzo/sc50" … puts "Loading scenario file " ;# Lệnh ghi hình run bỏ source $opt(sc) puts "Loading connection pattern " Phạm Trọng Hiếu- Nguyễn Minh Đức 76 Phần Mềm Mơ Phỏng NS2 source $opt(cp) 6.3 Phân tích kết mơ 6.3.1 Cấu trúc file trace Một ví dụ đường dấu vết đầu r 40.649943289 _1_ AGT - 1569 tcp 1032 [a2 800] - [0:0 1:0 32 1] [35 0] • Tham số chữ giá trị r, s, f , D thay cho “received”, “sent”, “forward” “dropped” Nó M để ám địa điểm di chuyển, miêu tả sau • Tham số thứ hai thời gian • Thứ ba số thứ tự nút mạng • Thứ tư MAC để biểu thị gói tin có liên quan đến lớp MAC, AGT thể gói tin lớp Transport (chẳng hạn TCP), RTR gói tin đính tuyến Giá trị IFQ để kiện liên quan đến hàng đợi ưu tiên (như gói tin bị rớt chẳng hạn) • Ở phía sau dấu gạch ngang số thứ tự gói tin (là global sequence number khơng phải tcp sequence number) • Tại trường thông tin bổ sung gói tin (chẳng hạn tcp, ack udp) • Tiếp đến kích cỡ gói tin (tính theo bytes) • Trong ngoặc vng thơng tin lớp MAC Số thập lục phân a2 (tương đương với 162 hệ thập phân) miêu tả số thời gian tính theo giây mong đợi gửi xong gói tin qua kênh vơ tuyến Số thứ hai có giá trị để thay cho MAC-id node gửi gói tin, số thứ ba có giá trị – MAC-id nút mạng nhận gói tin Trường cuối cùng, 800, để loại MAC ETHERTYPE_IP • Trong ngoặc vng thứ địa chỉa IP nguồn đích, ttl (Time To Live) gói tin (trong trường hợp 32) Phạm Trọng Hiếu- Nguyễn Minh Đức 77 Phần Mềm Mơ Phỏng NS2 • Ngoặc vuông thứ ba đề cập đến thông tin tcp: số thứ tự số chứng thực (acknowledgement number) Có nhiều kiểu định dạng khác liên quan đến kỹ thuật định tuyến khác loại gói tin khác Một câu lệnh di chuyển có dạng sau: M 10.00000 (5.00, 5.00, 0.00), (250.00, 250.00), 3.00 Con số thời gian, thứ hai số node, sau vị trí nguồn đích, cuối tốc độ Khi mơ giao thức định tuyến AODV, DSDV, tin định tuyến giao thức thường có thêm loại tin dùng trình định tuyến REQUEST, REPLY, ERROR, v v , File trace kết mơ nên ghi lại thơng tin tất tin gửi nhận node mạng, thông tin cần thiết nghiên cứu vấn đề cụ thể phần nhỏ nên q trình trích xuất liệu cần thiết từ file trace cần thiết Sau cơng cụ thực việc trích xuất liệu từ file trace 6.3.2 Sử dụng grep Lệnh grep unix cho phép “lọc” file Chúng ta tạo file chứa số dòng chứa chuỗi ký tự định lấy từ file gốc Ví dụ: ta muốn lấy dịng ghi thơng tin node ta thực hiên lệnh: grep _1_ adhoc2.tr > node1 Muốn lấy cách dòng send thực lệnh: grep "^s" adhoc2.tr > send 6.3.3 Sử dụng awk AWK ngơn ngữ lập trình nhằm mục đích xử lý file chữ (text file) theo nguyên lý khớp mẫu (pattern matching); đồng thời tên gọi chương trình hệ điều hành UNIX Dạng cú pháp Awk là: mẫu_1 { câu lệnh_1 }; mẫu_2 { câu lệnh_2 }; Phạm Trọng Hiếu- Nguyễn Minh Đức 78 Phần Mềm Mô Phỏng NS2 Theo máy tính dị dịng file chữ so sánh với mẫu Nếu khớp, câu lệnh thực Tiếp theo máy tính so sánh dịng chữ với mẫu Nếu khớp, câu lệnh thực hiện; Câu lệnh Các câu lệnh thường gặp awk: + In cột 1: {print $1} + Lệnh điều kiện: if ($4 == "AGT" && $1 == "s" && $8 >= 512) { if (time < startTime) { startTime = time } } File awk hay dùng xử lý kết NS2 getColumn.awk Đây awk dùng để tách cột cần thiết từ file trace, getColumn đơn giản sau: BEGIN {FS=" "} {n1++} {print $2 " " $14} END {} Chúng ta thêm cột khác vào, lấy cột $2 $4 cột thời gian cột lượng file trace Ngồi tham khảo awk script mạng, trình làm đồ án em sử dụng số awk script tham khảo mạng giữ nguyên hay có sửa chữa 6.3.4 Sử dụng Shell Script: Trong trình xử lý kết có tập lệnh lặp lại nhiều lần giống với topo khác hay giao thức khác Việc sử dụng Shell Script tiết kiệm thời gian tránh sai sót Shell Script file có sh lưu trữ lệnh cần chạy theo thứ tự Ví dụ sau tạo file sh lấy lượng node 1,2,3 từ file trace adhoc2.tr : Tạo file tên energy.sh (Chuột phải Create Document → Empty File) Các lệnh cần: Phạm Trọng Hiếu- Nguyễn Minh Đức 79 Phần Mềm Mô Phỏng NS2 grep _1_ adhoc2.tr > grep _2_ adhoc2.tr > grep _3_ adhoc2.tr > grep energy node1 > grep energy node2 > grep energy node3 > awk -f getColumn.awk awk -f getColumn.awk awk -f getColumn.awk node1 node2 node3 energy1 energy2 energy3 energy1 > out.1 energy2 > out.2 energy3 > out.3 Ghi lệnh vào file energy.sh lưu lại Nhấp chuột phải vào file energy.sh vừa tạo chọn Properties, chọn thẻ permissions, tích vào Allow executing file as program File awk getColumn.awk lấy cột 14 file adhoc2.tr, getColumn.awk energy.sh phải đặt thư mục Bây thay gõ lệnh ta nhấp đúp vào file energy.sh chọn run có file out1, out2, out3 lưu lượng node 1,2,3 Khi có yêu cầu tương tự với topo hay giao thức khác ta không cần gõ lại lệnh mà dùng lại file energy.sh 6.3.5 Lấy số kết mô trực tiếp không qua file trace Một số kết mơ có kết thúc mô mà không qua file trace out.tr cách cho in giá trị file C++ aodv.cc, energy_model.cc, v v Các kết thường biến có sẵn file C++ latency, current_time, v v Phương pháp giúp có số kết mô mong muốn mà thông qua file trace khơng có hay q phức tạp; hay dùng để theo dõi giá trị biến mong muốn trình mơ - Current_time: Ta có thời điểm mà hàm giao thức gọi tới sendRequest, sendReply, sendError, recvReply, v v , đồ án em có thời điểm mà node hết lượng, từ có Lifetime Phạm Trọng Hiếu- Nguyễn Minh Đức 80 Phần Mềm Mô Phỏng NS2 file energy-model.cc: #include void EnergyModel::DecrRcvEnergy(double rcvtime, double P_rcv) { double dEng = P_rcv * rcvtime; if (energy_