Đăng ký Đăng nhập
Trang chủ Thể loại khác Chưa phân loại Cài đặt và mô phỏng kịch bản trên NS-2...

Tài liệu Cài đặt và mô phỏng kịch bản trên NS-2

.DOCX
21
15
144

Mô tả:

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA ĐIỆN TỬ VIỄN THÔNG B ÁO CÁO MÔ HÌNH HÓA VÀ MÔ PHỎNG Đ Ề T À I THỰC HÀNH MÔ PHỎNG VÀ PHÂN TÍCH MÔ HÌNH MẠNG 1 TRÊN NS-2 GVHD: TS.LÊ ANH NGỌC Lớp: Đ8-ĐTVT1 Sinh viên thực hiện: Trương Quốc Đạt MSV: 1381510009 2 MỤC LỤC LỜI MỞ ĐẦU.....................................................................................3 I. CHUẨN BỊ VÀ CÀI ĐẶT PHẦN MỀM ................................4 II. TẠO KỊCH BẢN VÀ CHẠY MÔ PHỎNG.............................7 III. PHÂN TÍCH..............................................................................12 1. Delay......................................................................................................13 2. 3. Throughput.............................................................................................17 Nhận xét.................................................................................................19 IV. ĐÁNH GIÁ KẾT QUẢ..........................................................20 3 LỜI MỞ ĐẦU Ngày nay, lĩnh vực mạng và di động có sự bùng nổ rất lớn về cả số lượng và chất lượng. Đi kèm với điều đó, chúng ta phải liên tục nâng cấp cơ sở hạ tầng hiện có cũng như xây dựng những mô hình mạng mới. Hiện nay, khi chúng ta nghiên cứu một dự án chúng ta phải thực hiện nó rồi từ kết quả thu được chúng ta mới nhận xét, đánh giá để từ đó đưa ra những chỉnh sửa, cải tiến để tối ưu chúng. Tuy nhiên, không phải dự án nào cũng có thể thực hiện dễ dàng do nhiều yếu tố như chi phí, cơ sở hạ tầng… . Ngoài ra,việc thực hiện đi thực hiện lại các phương án để tìm ra phương án tốt nhất cũng không diễn trong thời gian ngắn, nó có thể mất vài tuần hoặc lâu hơn. Mặt khác, khi chúng ta nghiên cứu, thiết kế một mô hình mạng cũng rất tốn kém và mất nhiều thời gian để có được một mô hình với kết quả như mong muốn. Từ những khó khăn trên, việc xây dựng các các mô hình và mô phỏng chúng là một điều tất yếu. Nó có thể khắc phục những nhược điểm về thời gian, chí phí, thu thập dữ liệu… so với hệ thống thực. Chúng ra có thể dễ dàng thực hiện lại nhiều lần, thay đổi các yếu tố và đánh giá, so sánh những thay đổi đó một cách dễ dàng để từ đó đưa ra các giải pháp hợp lý. Dưới sự hướng dẫn của giảng viên T.s Lê Anh Ngọc, sau đây là những kiến thức em đã tích lũy được sau khi kết thúc môn học: Mô hình hóa và mô phỏng. 4 I. CHUẨN BỊ VÀ CÀI ĐẶT PHẦN MỀM Để thực hiện mô hình hóa và mô phỏng, em sử dụng phần mềm NS-2. NS-2 là phần mềm mô phỏng mạng điều khiển sự kiện riêng rẽ hướng đối tượng, được phát triển tại UC Berkely, viết bằng ngôn ngữ C++ và OTcl. NS rất hữu ích cho việc mô phỏng mạng diện rộng (WAN) và mạng local (LAN). NS-2 là phần mềm mã nguồn mở chạy trên nền tảng *nix. Để NA-2 có thể chạy trên nền tảng Window thì chúng ta phải sử dụng một phần mềm tạo môi trường Linux, ở đây tôi sử dụng phần mềm Cygwin trên hệ điều hành Windown 7. Trước tiên, chúng ta cần cài đặt Cygwin và NS-2. Đây là những file cần thiết để cài đặt. Hình 1.1 Các file cần thiết để cài đặt NS-2 5 Đây là giao diện của môi trường Cygwin Hình 1.2. Giao diện của Cygwin Tiếp theo, chúng ta cài đặt NS-2. Sau khi cài đặt xong, vào thư mục home trong thư mục cài đặt, ta sẽ thấy 2 thư mục, một là Noureddine, đây là thư mục lưu trữ ns-2, hai là thư mục mà em đặt tên là Dat, đây là thư mục mà con trỏ đầu tiên của Cygwin trỏ tới, nơi chúng ta sẽ lưu trữ các kịch bản mô phỏng. Hình 1.3. Cây thư mục chứa NS-2 và kịch bản lưu trữ 6 Khi mở cửa sổ XWin Server như hình vẽ ở trên thì con nhắc của nó là $, nếu cài đặt s-2 thành công thì khi ta gõ ns vào thì con nhắc sẽ chuyển thành % như sau: Hình 1.4. Giao diện cửa sổ Xwin sever Sau khi có được kết quả như vậy là chúng ta đã cài đặt thành công và sẵn sàng thực hiện mô phỏng. Để có thể thiết kế một mô hình thì chúng ta có thể thực hiện ngay trên cửa sổ xterm của Xwin Server, tuy nhiên làm như vậy sẽ rất dễ bị nhần lẫn và khó chỉnh sửa, cho nên tốt hơn chúng ta nên soạn thảo kịch bản đó ra một file có đuôi là .tcl rồi thực hiện chạy trên ns-2 thông qua cau lệnh ns file_name. 7 II. TẠO KỊCH BẢN VÀ CHẠY MÔ PHỎNG Tạo kịch bản theo ví dụ trong chương 4 sách giáo trình. Sử dụng chương trình soạn thảo Notepad và ngôn ngữ Tcl để viết kịch bản mô phỏng. Sau đây là các bước tạo một kịch bản mô phỏng NAM(cụ thể là ví dụ OTcl trong giáo trình: Bước 1: Sử dụng Notepad và ngôn ngữ Tcl để xây dựng kịch bản mô phỏng. nội dung kịch bản như sau: #Create a simulator object set ns [new Simulator] #Define different colors for data flows (for NAM) $ns color 1 Blue $ns color 2 Red #Open the NAM trace file set nf [open quoc_dat.nam w] $ns namtrace-all $nf set nt [open quoc_dat.tr w] $ns trace-all $nt #Define a 'finish' procedure proc finish {} { global ns nf nt $ns flush-trace #Close the NAM trace file close $nf close $nt #Execute NAM on the trace file exec nam quoc_dat.nam & exit 0 } #Create four nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] 8 #Create links between the nodes $ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1.7Mb 20ms DropTail #Set Queue Size of link (n2-n3) to 10 $ns queue-limit $n2 $n3 10 #Give node position (for NAM) $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right #Monitor the queue for link (n2-n3). (for NAM) $ns duplex-link-op $n2 $n3 queuePos 0.5 #Setup a TCP connection set tcp [new Agent/TCP] $tcp set class_ 2 $ns attach-agent $n0 $tcp set sink [new Agent/TCPSink] $ns attach-agent $n3 $sink $ns connect $tcp $sink $tcp set fid_ 1 #Setup a FTP over TCP connection set ftp [new Application/FTP] $ftp attach-agent $tcp $ftp set type_ FTP #Setup a UDP connection set udp [new Agent/UDP] $ns attach-agent $n1 $udp set null [new Agent/Null] $ns attach-agent $n3 $null $ns connect $udp $null $udp set fid_ 2 #Setup a CBR over UDP connection set cbr [new Application/Traffic/CBR] $cbr attach-agent $udp $cbr set type_ CBR 9 $cbr set packet_size_ 1000 $cbr set rate_ 1mb $cbr set random_ false #Schedule events for the CBR and FTP agents $ns at 0.1 "$cbr start" $ns at 1.0 "$ftp start" $ns at 4.0 "$ftp stop" $ns at 4.5 "$cbr stop" #Detach tcp and sink agents (not really necessary) $ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink" #Call the finish procedure after 5 seconds of simulation time $ns at 5.0 "finish" #Print CBR packet size and interval puts "CBR packet size = [$cbr set packet_size_]" puts "CBR interval = [$cbr set interval_]" #Run the simulation $ns run 10 Bước 2: Lưu file dưới tên: quoc_dat.tcl ở thư mục sau: Hình 2.1. File lưu kịch bản Bước 3: Chạy mô phỏng kịch bản, ta được Ta được file mô phỏng , ta thu được quả như hình sau: Hình 2.2. Kết quả mô phỏng 11 Sau khi chạy mô phỏng, ở File home, ta thu được 2 file: quoc_dat.tr và quoc_dat.nam. Đây là kết quả được lưu lại sau khi chạy kịch bản. Hình 2.3. File lưu kết quả sau khi chạy mô phỏng Đó là toàn bộ quá trình để xây dựng, mô phỏng và kết quả thu được khi ta mô phỏng một kịch bản. 12 III. PHÂN TÍCH KẾT QUẢ Sử dụng ngôn ngữ AWK để phân tích hiệu quả trong việc truyền dữ liệu. Hai thông số đáng quan tâm nhất là Delay (độ trễ của các gói tin) và Through put (tốc độ nhận dữ liệu tại nơi gói tin đến) để đánh giá chất lượng đường truyền , ngoài ra còn có Packet loss, fitter.. Khi phân tích chúng ta cần chú ý đến các thông số sau: Độ trễ trung bình (Delay) Là khoảng thời gian trung bình truyền 1 gói tin từ node nguồn đến khi node đích nhận được gói tin đó, đơn vị là s. Chúng ta cần quan tâm đến độ trễ trung bình theo từng luồng Tốc độ nhận tin (Throughput) Là khả năng truyền tin từ nguồn đến đích trong một đơn vị thời gian, đơn bị là bps. Một sự kiện được mô tả trong file trace có cấu trúc như sau: 13 1. DELAY (Độ trễ trung bình) Với việc phân tích độ trễ cho mô hình, do mỗi gói có độ trễ khác nhau nên ta cần tính tổng tích lũy độ trễ của tất cả các gói, với độ trễ trung bình thì ta lấy tổng tích lũy độ trễ chia cho tổng số gói tin. Để lấy được độ trễ từ file trace, ta lấy thời điểm gói tin đến node đích trừ đi thời điểm gói tin đó được gửi đi từ node nguồn. Để tính độ trễ cho từng luồng, chúng ta cần lọc ra các sự kiện với điều kiện về 12 luồng. Ví dụ ta muốn tính độ trễ của một gói tin có id là 1 của luồng 1 đi từ node 0 đến node 3 thì ta cần lấy ra thời gian xảy ra sự kiện gửi và nhận của gói tin có id là 1 với các điều kiện là sự kiện xảy ra là “+” và “r”, luồng là 1, fromnode là 0 và tonode là 3. Để biết được số gói tin bị mất thì tương ứng với sự kiện “d”. Nội dung của chương trình như sau: BEGIN{ for(i in time_sent_1){ time_sent_1[i] = 0 } for(i in time_recv_1){ time_recv_1[i] = 0 } for(i in time_sent_2){ time_sent_2[i] = 0 } for(i in time_recv_2){ time_recv_2[i] = 0 } delay_1 = 0 delay_tb_1 = 0 tong_goi_1 = 0 mat_goi_1 = 0 14 delay_2 = 0 delay_tb_2 = 0 tong_goi_2 = 0 mat_goi_2 = 0 delay = 0 delay_tb = 0 tong_goi = 0 mat_goi = 0 } { event = $1 time = $2 from_node = $3 to_node = $4 fid = $8 id_pkt = $12 if( event == "+" && fid == 1 && from_node == 0){ time_sent_1[id_pkt] = time } if( event == "r" && fid == 1 && to_node == 3){ time_recv_1[id_pkt] = time tong_goi_1 ++ } if( event =="d" && fid == 1){ mat_goi_1 ++ 15 } if( event == "+" && fid == 2 && from_node == 1){ time_sent_2[id_pkt] = time } if( event == "r" && fid == 2 && to_node == 3){ time_recv_2[id_pkt] = time tong_goi_2 ++ } if( event =="d" && fid == 2){ mat_goi_2 ++ } } END{ for(i in time_recv_1){ delay_1 += time_recv_1[i] - time_sent_1[i] } for(i in time_recv_2){ delay_2 += time_recv_2[i] - time_sent_2[i] } delay = delay_1 + delay_2 tong_goi = tong_goi_1 + tong_goi_2 delay_tb = delay / tong_goi mat_goi = mat_goi_1 + mat_goi_2 printf("------------- Toan bo qua trinh mo phong ---------------\n") printf("Tong delay: %g s \n", delay) printf("Tong so goi: %g \n", tong_goi) printf("Delay trung binh: %g ms/goi \n", delay_tb*1000) 16 printf("So goi mat: %g \n", mat_goi) delay_tb_1 = delay_1 / tong_goi_1 printf("------------- Luong 1 ---------------\n") printf("Tong delay: %g s \n", delay_1) printf("Tong so goi: %g \n", tong_goi_1) printf("Delay trung binh: %g ms/goi \n", delay_tb_1*1000) printf("So goi mat: %g \n", mat_goi_1) delay_tb_2 = delay_2 / tong_goi_2 printf("------------- Luong 2 ---------------\n") printf("Tong delay: %g s \n", delay_2) printf("Tong so goi: %g \n", tong_goi_2) printf("Delay trung binh: %g ms/goi \n", delay_tb_2*1000) printf("So goi mat: %g \n", mat_goi_2) } Chạy chương trình trên Xwin Sever, ta thu được bảng kết quả delay như sau: Kết Hình 3.1. quả delay 17 2. THROUGHPUT (Tốc độ nhận tin). Với việc phân tích Throughput, do mỗi gói tin có size khác nhau nên ta cần tính tổng tích lũy khối lượng tin truyền được. Để tính Throughput cho từng luồng, ta cần tính dữ liệu truyền được của luồng 1, sau đó chia cho thời gian hoạt động của luồng 1, tương tự với luồng 2. Nội dung của chương trình như sau: BEGIN{ data = 0 throughput = time = 4.4 data_1 = 0 throughput_1 = 0 time_1 = 3 data_2 = 0 throughput_2 = 0 time_2 = 4.4 }{ event = $1 to_node = $4 fid = $8 size_pkt = $6 if(event == "r" && fid == 1 && to_node == 3){ data_1 += size_pkt } if(event == "r" && fid == 2 && to_node == 3){ data_2 += size_pkt } } 18 END{ data = data_1 + data_2 throughput = data / time printf("____ Toan bo qua trinh mo phong ____\n") printf("Tong du lieu truyen duoc: %g Mb \n", data * 8 /1000000) printf("Throughput = %g Mbps \n", throughput * 8 / 1000000) throughput_1 = data_1 / time_1 printf("______ Luong 1 _____\n") printf("Tong du lieu truyen duoc: %g Mb \n", data_1 * 8 /1000000) printf("Throughput = %g Mbps \n", throughput_1 * 8 / 1000000) throughput_2 = data_2 / time_2 printf("_______ Luong 2 ______\n") printf("Tong du lieu truyen duoc: %g Mb \n", data_2 * 8 /1000000) printf("Throughput = %g Mbps \n", throughput_2 * 8 / 1000000) } 19 Chạy trên Xwin Sever, ta thu được kết quả: Hình 3.2. Kết quả thông số throughput 3. NHẬN XÉT Delay và throughput phụ thuộc vào nhiều yếu tố như băng thông đường truyền, trễ truyền, hàng đợi,… Vậy khi ta thay đổi một trong các thông số này thì chúng sẽ biến đổi như thế nào? Ở đây ta thay đổi băng thông của liên kết 2-3, khi đó ta được sự thay đổi như sau: 20
- Xem thêm -

Tài liệu liên quan