1. Trang chủ
  2. » Luận Văn - Báo Cáo

ĐỊNH TUYẾN và mô PHỎNG TRÊN OMNET++

19 367 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 0,99 MB

Nội dung

Trường Đại Học Bách Khoa Hà Nội Khoa Điện Tử Viễn Thông ======o0o====== Ketnooi.com ĐỒ ÁN MÔN HỌC CƠ SỞ TRUYỀN SỐ LIỆU Đề tài: Định tuyến mô Omnet++ Nhóm thực : Nguyễn Thị Hương Đt 11-K54 20091397 Nguyễn Sơn Lâm Đt 11-K54 20091552 Trần Văn Đô Đt 11-K54 20090751 Nguyễn Văn Bình Đt 11-K54 20090243 Nguyễn Duy Lâm Đt 11-K54 20091550 Hà Nội, 11/2012 BÁO CÁO BÀI TẬP LỚN CƠ SỞ TRUYỀN SỐ LIỆU Đề tài: Định tuyến mô Omnet Báo cáo đồ án Con tents I- Lời nói đầu II- Phân tích chức lập kế hoạch 2.1 Phân chia chức 2.2 Lập kế hoạch III- Cơ sở lí thuyết phân tích yêu cầu 3.1 Thuật toán Dijtra 3.2 Mô hình mạng dùng để mô IV- Triển khai 4.1 Tạo file.ned xây dựng mạng cho trình mô 4.2 Áp dụng thuật toán Dijktra vào định tuyến đường ngắn 11 4.3 Áp dụng thuật toán định tuyến cưỡng bức: 14 4.4 Kết mô 16 V- Kết luận 18 Báo cáo đồ án I- Lời nói đầu Chúng ta sống kỉ 21, kỉ nguyên khoa học kĩ thuật công nghệ đại Vào thời điểm này, ngành công nghiệp công nghệ thông tin máy vi tính nắm giữ vai trò thiếu lĩnh vực hoạt động người Một máy tính để bàn hoạt động độc lập không đủ, người muốn liên kết máy tính lại với thành mạng máy tính để tận dụng sức mạnh xử lí, trao đổi thông tin chia sẻ tài nguyên Khi mạng máy tính tăng lên quy mô số lượng, người lại muốn liên kết mạng máy tính lại với Làm để liên kết máy tính lại với ? Làm để thông tin trao đổi mạng máy tính cách hàng trăm cấy số ? Một toán cần giải để trả lời câu hỏi trên, toán định tuyến “Định tuyến” hiểu đơn giản “tìm đường đi” Trong thông tin liên lạc, định tuyến nghĩa đường để thông tin di chuyển từ nguồn đến đích theo cách tốt Không thể phủ nhận tầm quan trọng định tuyến truyền thông thông tin Không có định tuyến, máy tính thiết bị thông tin khác trao đổi thông tin với mạng khác Báo cáo đồ án II- Phân tích chức lập kế hoạch 2.1 Phân chia chức Dựa theo yêu cầu tập lớn, chúng em chia toán thành yêu cầu chức nhỏ: - Xây dựng mô thuật toán định tuyến đường ngắn Omnet - Xây dựng mô thuật toán định tuyến cưỡng - Áp dụng thuật toán vào mô hình mạng so sánh, rút nhận xét kết đạt 2.2 Lập kế hoạch Công việc Tìm hiểu tổng hợp kiến thức thuật toán đường ngắn Dijktra Xây dựng mạng theo yêu cầu toán Omnet++ Viết code áp dụng thuật toán Dijktra vào mạng vừa lập Thực mô kiểm tra Code xây dựng thuật toán cưỡng thực yêu cầu Báo cáo đồ án Người thực Trần Văn Đô,Nguyễn Sơn Lâm, Nguyễn Văn Bình Nguyễn Văn Bình, Nguyễn Thị Hương Nguyễn Sơn Lâm Nguyễn Duy Lâm Nguyễn Văn Bình ,Trần Văn Đô III- Cơ sở lí thuyết phân tích yêu cầu 3.1 Thuật toán Dijtra Thuật toán Dijkstra thuật toán định tuyến đơn giản để tìm đường ngắn điểm Không tính tổng quát, ta coi điểm (nút mạng ) đỉnh đồ thị , ta dùng thuật toán Dijkstra để giải toán tìm đường ngắn điểm sau : Bài toán: Cho đồ thị G với tập đỉnh V tập cạnh E (đồ thị có hướng vô cùng) Mỗi cạnh đồ thị gán nhãn (giá trị không âm), nhãn gọi giá trị cạnh Cho trước đỉnh xác định v , gọi đỉnh nguồn Tìm đường ngắn từ đỉnh v đến đỉnh lại G ( Tức tìm đường từ v đến đỉnh lại với tổng giá cạnh đường nhỏ nhất) Nếu đồ thị có hướng đường đường có hướng Giải thuật : Ta giải toán cách xác định tập hợp S chứa đỉnh mà khoảng cách ngắn từ đến đỉnh nguồn v biết Khởi đầu S={V} Sau bước ta thêm vào S đỉnh mà khoảng cách từ đến v ngắn Với giả thiết cung có giá trị không âm ta luôn tìm đường ngắn mà qua đỉnh tồn S Để dễ dàng chi tiết hóa giải thuật , giả sử G có n đỉnh nhãn cung lưu mảng A,tức A[i,j]=G Ta dùng mảng D có n phần tử để lưu độ dài đường ngắn từ v đến đỉnh đồ thị Khởi đầu giá trị độ dài cạnh(v,i) , tức D[i]=A[v,i] Tại bước giải thuật D[i] lưu độ dài đường ngắn từ đỉnh v đến đỉnh i đường qua đỉnh có S Để cài đặt giải thuật dễ dàng , ta giả sử đỉnh đồ thị đánh số từ đến đỉnh nguồn đỉnh Ví Dụ: Báo cáo đồ án Chọn nút gốc C: Q={} d (C) = => ∏(C) = C d (V) = ∞ với V ≠ C Nút C : Q ={C} d(C) + W(B,C) = < ∞ → d(B) = , ∏(B) = C d(C) + W(D,C) =7< ∞ → d(D) = , ∏(D) = C d(C) + W(G,C) =5< ∞ → d(G) = , ∏(G) = C Xét nút B : Q ={C,B} d(B) + W(A,B) = 13 < ∞ → d(A) = 13 , ∏(A) = B Xét nút G : Q ={C,B,G} d(G) + W(A,G) = 14 >13 d(G) + W(F,G) = 15< ∞ → d(F) = 15 , ∏(F) = G d(G) + W(H,G) = 9< ∞ → d(H) = , ∏(H) = G Xét nút D: Q={C,B,G,D} d(D) + W(H,D) = 13 >9 d(D) + W(K,D) = 10 < ∞ → d(K) = 10 , ∏(K) = D d(D) + W(E,D) = < ∞ → d(E) = , ∏(E) = D Xét nút E: Q={C,B,G,D,E} d(E) + W(I,E) = 18 < ∞ → d(I) = 18 , ∏(I) = E Xét nút H: Q={C,B,G,D,E,H} d(H) + W(K,H) = 17>10 Xét nút K: Q={C,B,G,D,E,H,K} d(K) + W(I,K) = 13 < 18 → d(I) = 13 , ∏(I) = K Xét nút I: Q={C,B,G,D,E,H,K,I} d(I) + W(K,I) = 16 > 10 d(I) + W(E,I) = 22 > Xét nút A: Q={C,B,G,D,E,H,K,I,A} d(A) + W(F,A) = 16 >15 Xét nút F: Q={C,B,G,D,E,H,K,I,A,F} Kết thúc : Báo cáo đồ án Hình : đường ngắn từ nút nguồn C 3.2 Mô hình mạng dùng để mô giềng Bậc nút sốlượng liên kết tới nút số lượng nút láng Yêu cầu toán: Xây dựng cấu hình mạng gồm 10 nút có bậc trung bình 2.8 Mỗi liên kết có dung lượng 600Mbps giả sử có khoảng cách chọn ngẫu nhiên khoảng từ đến 10 Từ yêu cầu đặt ta xây dựng 10 nút mạng dùng (2.8*10)/2 =14 liên kết để kết nối nút mạng với Dung lượng khoảng cách tham số kênh truyền (datarate, length) Báo cáo đồ án IV- Triển khai 4.1 Tạo file.ned xây dựng mạng cho trình mô - Cấu trúc nút mạng: simple Nod // node mạng { parameters: @display("i=block/routing"); gates: inout gate[]; // cổng vào có tên gate } - Từ node mạng lập xây dựng mạng theo yêu cầu: import ned.DatarateChannel; import Nod; network Network //ten mạng { types: channel C0 extends ned.DatarateChannel { //khai báo kênh truyền @i;@j; double i=0; // i,j số module Node đầu kênh double j=1; //truyền @length; //độ dài kênh double length @unit() = 10; //double length @unit(km)=10 km; delay = 100ms; datarate = 600 Mbps; //dung lượng kênh //@backbone; //double cost = default(1); //double length = default(1); } channel C1 extends ned.DatarateChannel // tiếp tục khai báo 13 { @i;@j; //kênh lại double i=1; double j=2; @length; double length @unit() = 4; delay = 100ms; datarate = 600 Mbps; } channel C2 extends ned.DatarateChannel { @i;@j; double i=2; double j=3; @length; double length @unit() = 7; delay = 100ms; datarate = 600 Mbps; } channel C3 extends ned.DatarateChannel { @i;@j; double i=3; double j=4; Báo cáo đồ án @length; double length @unit() = 2; delay = 100ms; datarate = 600 Mbps; } channel C4 extends ned.DatarateChannel { @i;@j; double i=4; double j=9; @length; double length @unit() = 9; delay = 100ms; datarate = 600 Mbps; } channel C5 extends ned.DatarateChannel { @i;@j; double i=8; double j=9; @length; double length @unit() = 3; delay = 100ms; datarate = 600 Mbps; } channel C6 extends ned.DatarateChannel { @i;@j; double i=7; double j=8; @length; double length @unit() = 8; delay = 100ms; datarate = 600 Mbps; }channel C7 extends ned.DatarateChannel { @i;@j; double i=6; double j=7; @length; double length @unit() = 4; delay = 100ms; datarate = 600 Mbps; } channel C8 extends ned.DatarateChannel { @i;@j; double i=6; double j=5; @length; double length @unit() = 10; delay = 100ms; datarate = 600 Mbps; } channel C9 extends ned.DatarateChannel { @i;@j; double i=0; double j=5; @length; double length @unit() = 3; delay = 100ms; datarate = 600 Mbps; } channel C10 extends ned.DatarateChannel { @i;@j; double i=0; Báo cáo đồ án double j=6; @length; double length @unit() = 9; delay = 100ms; datarate = 600 Mbps; } channel C11 extends ned.DatarateChannel { @i;@j; double i=2; double j=6; @length; double length @unit() = 5; delay = 100ms; datarate = 600 Mbps; } channel C12 extends ned.DatarateChannel { @i;@j; double i=3; double j=7; @length; double length @unit() = 6; delay = 100ms; datarate = 600 Mbps; } channel C13 extends ned.DatarateChannel { @i;@j; double i=8; double j=3; @length; double length @unit() = 3; delay = 100ms; datarate = 600 Mbps; } submodules: node[10] : Nod; connections: node[0].gate++ node[1].gate++ node[2].gate++ node[3].gate++ node[4].gate++ node[9].gate++ node[8].gate++ node[7].gate++ node[6].gate++ node[5].gate++ node[6].gate++ node[6].gate++ node[7].gate++ node[8].gate++ // sử dụng 10 Node có kiểu Nod < > < > < > < > < > < > < > < > < > < > < > < > < > < > C0 < > node[1].gate++;// kết nối Node C1 < > node[2].gate++; // qua kênh C2 < > node[3].gate++; // truyền vừa lập C3 < > node[4].gate++; C4 < > node[9].gate++; C5 < > node[8].gate++; C6 < > node[7].gate++; C7 < > node[6].gate++; C8 < > node[5].gate++; C9 < > node[0].gate++; C10 < > node[0].gate++; C11 < > node[2].gate++; C12 < > node[3].gate++; C13 < > node[3].gate++; } Báo cáo đồ án 10 Mô hình mạng : - Muốn mô trịnh định tuyến ta phải tạo gói tin “message” : message { int int int tin } Packet //tên message source; // địa nguồn destination; // địa đích hopCount = 0; // số bước nhảy( số lần chuyển tiếp gói 4.2 Áp dụng thuật toán Dijktra vào định tuyến đường ngắn Ta xây dựng file.cc phục vụ cho trình mô thuật toán Omnet++ Để áp dụng thuật toán Dijktra, yêu cầu phải cung cấp cho thuật toán thông tin cấu hình mạng như: số nút mạng, số kênh truyền, khoảng nút Toàn thông tin đọc từ file “input.txt” Ý tưởng : Dùng thuật toán Dijktra để xây dựng đường ngắn hàm tiền bối nút Đường ngắn từ nút gốc đến nút đích đường theo hàm tiền bối của nút qua hàm tiền bối nút trung gian đến nút đích Báo cáo đồ án 11 File Dijktra.cc #include #include #include #include "packet_m.h" #define max 100 // số nút lớn mạng using namespace std; class Nod : public cSimpleModule // tạo xác định class Nod file { // ned protected: Packet *Nod::generateMessage(); // hàm khởi tạo gói tin virtual void initialize(); // hàm khởi tạo virtual void handleMessage(cMessage *msg); public : int A[max][max], n; //A lưu khoảng cách nút,n: số nút int D[max], P[max];//D lưu khoảng cách ngắn nút tương ứng // P lưu hàm tiền bối nút có số tương ứng int S[max]; // tập nút xét int src; // số nút gốc thuật toán Dijktra }; Define_Module(Nod); void Nod::initialize() { src=1; //giả sử nút gốc có số int m,x,y; //phục vụ việc đọc tệp input.txt FILE *t1; int temp; t1 = fopen("input.txt","rt"); fscanf(t1,"%d",&n); fscanf(t1,"%d",&m); //for (int i=0;i[...]... án 10 Mô hình mạng : - Muốn mô phỏng được quá trịnh định tuyến ta phải tạo ra một gói tin “message” : message { int int int tin } Packet //tên của message source; // địa chỉ nguồn destination; // địa chỉ đích hopCount = 0; // số bước nhảy( số lần chuyển tiếp của gói 4.2 Áp dụng thuật toán Dijktra vào định tuyến đường ngắn nhất Ta xây dựng 1 file.cc phục vụ cho quá trình mô phỏng thuật toán trên Omnet++. .. TicTocMsg13(msgname); return msg; } 4.4 Kết quả mô phỏng Thuật toán dijkstra : Gửi tin nhắn từ nút 4 đến nút 5, sau khi chạy chương trình ta tìm được đường đi ngắn nhất là : 4 -> 3 -> 2 -> 6-> 5 Gửi gói tin từ 9->0: 9 -> 8 -> 7 ->6 -> 8 Các kết quả mô phỏng đều phù hợp với lí thuyết của thuật toán Báo cáo đồ án 16 Hình : hàm tiền bối P của các nút và đường đi theo mô phỏng Thuật toán định tuyến cưỡng bức : Báo cáo đồ... em có hạn nên mới chỉ xây dựng được mô hình mạng 10 nút và thực hiện được thuật toán tìm đường ngắn nhất Dijkstra, và thực hiện mô phỏng Chúng em chân thành cảm ơn cô đã giúp đỡ chúng em rất nhiều , cũng như những nhận xét , gợi ý của cô trong thời gian qua để chúng em thực hiện bài tập lớn này Một lần nữa chúng em chân thành cảm ơn cô, chúc cô luôn luôn mạnh khỏe và công tác tốt Tài liệu tham khảo:... tệp và lưu khoảng cách if (i==j) A[i][j]=0; // vào mảng A else A[i][j]=200; //2 nút ko nối trực tiếp for (int j=0;jsetDestination(dest); return msg; } 4.3 Áp dụng thuật toán định tuyến cưỡng bức: File bt4.cc /* * * dich */ thuat toan dinh tuyen cuong buc 1 yeu cau tu 1 nut nguon toi 1 nut #include #include #include #include "bt4_m.h" class Node... Dijktra.cc #include #include #include #include "packet_m.h" #define max 100 // số nút lớn nhất của mạng using namespace std; class Nod : public cSimpleModule // tạo và xác định class Nod trong file { // ned protected: Packet *Nod::generateMessage(); // hàm khởi tạo gói tin virtual void initialize(); // hàm khởi tạo virtual void handleMessage(cMessage *msg); public : int... !=n-1) // Bước 3:chon dinh tiếp theo có D nhỏ { // nhất int min = 1000; Báo cáo đồ án 12 int x; for (int i=1; i

Ngày đăng: 01/06/2016, 10:54

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w