Bài Tập Lớn Truyền Số Liệu
1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG BÁO CÁO BÀI TẬP LỚN MÔN CƠ SỞ TRUYỀN SỐ LIỆU ĐỀ BÀI SỐ 1 GIẢNG VIÊN HƢỚNG DẪN: TS. PHẠM VĂN TIẾN NHÓM SINH VIÊN THỰC HIỆN: NHÓM SỐ 8 Nguyễn Hữu Quang ĐT12 - K54 20092085 Đặng Văn Quân ĐT2 - K54 20092109 Trần Ngọc Quân ĐT3 - K54 20092150 Bùi Xuân Quyết ĐT9 - K54 20092165 Phạm Hồng Sơn ĐT10 - K54 20092268 Đào Đức Tân ĐT7 - K54 20092325 HÀ NỘI 11/2012 2 MỤC LỤC I. Đề bài và yêu cầu ………………………………………………………………… 3 II. Phân tích yêu cầu………………………………………………………………… 4 1. Phân tích yêu cầu……………………………………………………………… 4 2. Thực hiện yêu cầu……………………………………………………………… 4 III. Lập kế hoạch và phân công công việc……………………………………………. 5 1. Lập kế hoạch…………………………………………………………………… 5 2. Phân công công việc ……………………………………………………………. 5 IV. Quá trình thực hiện…………………………………………………………………6 1. Giao thức truyền dẫn UDP……………………………………………………… 6 2. Các phƣơng thức định tuyến………………………………………………………6 3. Theo dõi sự kiện trên hệ thống và công cụ Xgraph………………………………7 4. Thực hiện các yêu cầu…………………………………………………………….9 a. Tỷ lệ chiếm dụng bộ đệm…………………………………………………… 9 b. Phân bố Poisson…………………………………………………………… 10 c. Giảm gói tin………………………………………………………………….10 d. Băng thông của từng luồng………………………………………………… 12 e. Trễ mỗi luồng……………………………………………………………… 12 5. Thực hiện mô phỏng…………………………………………………………… 13 a. Kịch bản mô phỏng…………………………………………………………13 b. Kết quả mô phỏng………………………………………………………… 14 Kết luận……………………………………………………………………………… 21 Tài liệu tham khảo…………………………………………………………………….22 3 I. Đề bài và yêu cầu Cho mạng thông tin với cấu hình nhƣ Hình 1 dƣới đây. Nút s1 phát ra luồng gói gửi tới đầu cuối d1, trong khi nút s2 tạo ra hai luồng gói gửi tới nút d1 và tới nút d2. Cả 3 luồng thông tin nói trên đều sử dụng giao thức truyền UDP. Kích thƣớc gói do s1 và s2 phát ra tƣơng ứng là 1300 byte và 1000 byte; số lƣợng gói phát ra trên mỗi luồng tuân theo phân bố Poisson, tốc độ lần lƣợt là 1000 gói/s, 1500 gói/s và 2000 gói/s. 1. Dựng kịch bản mô phỏng hệ thống thông tin nói trên với thời gian mô phỏng dài hơn 5 phút. 2. Thu thập số liệu mô phỏng và vẽ đồ thị tỷ lệ chiếm dùng các bộ đệm ở tất cả các bộ định tuyến. 3. Trong một phiên chạy mô phỏng, tốc độ phát sinh gói của mỗi luồng giảm đi 50 gói/s sau mỗi khoảng thời gian 30s, thống kê và vẽ đồ thị hiệu suất sử dụng băng thông của các liên kết trong mỗi khoảng thời gian đó. 4. Thay đổi tham số chiều dài gói và tốc độ phát sinh gói, vẽ đồ thị biểu diễn độ trễ truyền thông của các luồng. Nhận xét kết quả thu đƣợc. 4 II. Phân tích yêu cầu 1. Phân tích yêu cầu Yêu cầu chung : cài đặt ubuntu , cài đặt ns2 , tìm hiểu các thao tác cơ bản trên hệ điều hành mã nguồn mở, các mô phỏng cơ bản của ns2 . Yêu cầu đề bài : - Tạo đƣợc mô hình mạng thông tin trên ns2 - Tìm hiểu về định tuyến - Thiết lập đƣợc số lƣợng gói phát sinh theo phân bố Poisson - Tìm hiểu về các giao thức truyền thông UDP - Các hàm, thủ tục để thay đổi số lƣợng gói phát sinh - Tìm hiểu về công cụ xử lý số liệu và vẽ đồ thị trên ns2 2. Thực hiện yêu cầu a. Tỷ lệ chiếm dụng các bộ đệm đƣợc tính nhƣ sau: Với queueLength là chiều dài hàng đợi tức thời. Chiều dài hàng đợi tức thời bằng số gói đến trừ số gói đi và số gói bị rớt b. Giảm tốc độ gói và hiệu suất sử dụng băng thông - Để giảm tốc độ gói : dùng 1 thủ tục và cứ sau 30s thì thủ tục đó đƣợc gọi lại 1 lần. - Tính hiệu suất sử dụng băng thông : Tính băng thông của từng luồng bằng cách sử dụng Agent LossMonitor lƣu lại những gói đã truyền, sau khi tính đƣợc băng thông trong 1 chu kỳ thì làm sạch Agent và thực hiện lại ở chu kỳ tiếp theo. c. Tính độ trễ truyền thông của các luồng Xây dựng hàm để trích xuất dữ liệu trong trace-file .tr. Độ trễ đƣợc tính bằng thời điểm nhận đƣợc gói tin trừ đi thời điểm phát gói tin. 5 III. Lập kế hoạch và phân công công việc 1. Lập kế hoạch Bài tập lớn thực hiện trong vòng 7 tuần (bắt đầu từ tuần 5 và kết thúc vào tuần 12) - Tuần 1: Cài đặt ubuntu và ns2, tìm hiểu các thao tác làm việc đơn giản trên ubuntu, bầu trƣởng nhóm, tìm hiểu yêu cầu và xây dựng kế hoạch thực hiện bài tập lớn. - Tuần 2: Tìm hiểu giao thức UDP, phát gói tin theo phân bố Poisson. Thực hiện mô phỏng 1 số hệ thống thông tin đơn giản trên ns2 - Tuần 3: Code mô hình mạng thông tin của bài số 1 - Tuần 4: Tìm cách gắn các nguồn dữ liệu vào các node và truyền nhƣ yêu cầu đề bài - Tuần 5, 6: Thu thập và tính toán số liệu về hiệu suất sử dụng hàng đời, băng thông, độ trễ truyền thông của mạng và vẽ đồ thị từ số liệu thu thập đƣợc. - Tuần 7: Hoàn thiện và kiểm tra lại code, viết báo cáo và chuẩn bị bảo vệ. 2. Phân công công việc Công việc chung: tất cả các thành viên trong nhóm đều phải cài đặt ubuntu và ns2, mô phỏng đƣợc các hệ thống mạng đơn giản; tìm hiểu giao thức truyền UDP, báo cáo công việc mình làm đƣợc hàng tuần đối với các bạn còn lại trong nhóm, họp nhóm định kỳ 2lần/tuần vào cuối mỗi buổi học và chiều thứ 7. Công việc từng thành viên STT Họ và Tên Công việc Trạng thái 1 Nguyễn Hữu Quang Đào Đức Tân Tìm hiểu công cụ xgraph và AWK. Tính toán tỉ lệ chiếm dụng bộ đệm và vẽ đồ thị. Hoàn thành 2 Đặng Văn Quân Bùi Xuân Quyết Giảm tốc độ phát sinh gói của mỗi luồng đi 50 gói/s sau mỗi khoảng thời gian 30s, thống kê và vẽ đồ thị hiệu suất sử dụng băng Hoàn thành 6 thông của các liên kết trong mỗi khoảng thời gian đó. 3 Trần Ngọc Quân Phạm Hồng Sơn Xây dựng tiến trình Poisson, vẽ đồ thị biểu diễn độ trễ truyền thông của các luồng. Hoàn thành IV. Quá trình thực hiện 1. Giao thức truyền dẫn UDP Giao thức UDP (User Datagram Protocol) hay còn gọi là giao thức gói ngƣời dùng là một trong hai giao thức cốt lõi của giao thức TCP/IP, cho phép ngƣời dùng có thể gửi những dữ liệu ngắn đƣợc gọi là datagram từ máy tính này đến máy tính khác. UDP không đảm bảo sự tin cậy và thứ tự truyền nhận, các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất mà không có thông báo. Tuy nhiên, UDP nhanh và hiệu quả hơn đối với những mục tiêu nhƣ kích thƣớc nhỏ và yêu cầu khắt khe về thời gian, giao thức này hữu dụng đối với việc trả lời các truy vấn với số lƣợng lớn ngƣời yêu cầu. Những ứng dụng phổ biến sử dụng UDP nhƣ DNS (Domain Name System), ứng dụng streaming media, Voice over IP, Trivial File Transfer Protocol (TFTP), và game trực tuyến. 2. Các phương thức định tuyến NS2 thực thi ba chính sách định tuyến: static routing (định tuyến tĩnh), session routing (định tuyến phiên), DV routing (định tuyến véc tơ khoảng cách) và Link-state (trạng thái liên kết). Dùng phƣơng thức rtproto trong lớp Simulator để xác định chính sách định tuyến đƣợc dùng. o $ns rtproto <type> o type: Static, Session, DV, cost, multicast-path, LS. 7 - Link-state : sử dụng thuật toán SPF (shortest path first) cập nhật các thông tin về cơ chế định tuyến cho các node trên hệ thống mạng. Mỗi node sẽ gửi bảng mô tả trạng thái của các liên kết riêng của mình lên mạng. Chỉ các thay đổi mới đƣợc gửi đi. Ƣu điểm là tốc độ cao, không chiếm dụng băng thông nhiều nhƣ thuật toán DV tuy nhiên thực hiện phức tạp. Đối với mô hình lớn thuật toán này có thể làm tăng độ trễ truyền gói tin. - Distance vector : (còn gọi là thuật toán Bellman-Ford) gửi bảng định tuyến tới các node lân cận theo một chu kỳ nhất định. Ƣu điểm là dễ thực hiện, dễ kiểm tra. Tuy nhiên thời gian cập nhật lâu, chiếm dụng băng thông lớn trên mạng. - Static routing : Phƣơng thức tính toán định tuyến Static là phƣơng thức tính toán đƣờng truyền mặc định trong NS-2. Phƣơng thức này sử dụng thuật toán SPF. Thuật toán tính đƣờng truyền chạy chính xác một lần tại lúc khởi động mô phỏng. Khi cấu trúc mạng thay đổi phải cập nhật lại, do đó chỉ thích hợp trong hệ thống đơn giản, có kết nối đơn và đƣờng truyền dữ liệu đã đƣợc xác định trƣớc. - Session: Sử dụng thuật toán SPF để tính toán tối ƣu đƣờng truyền, bảng định tuyến sẽ đƣợc cập nhật ngay lập tức khi topo mạng có sự thay đổi. 3. Theo dõi sự kiện trên hệ thống và công cụ Xgraph a. Các lệnh cơ bản dùng để theo dõi các sự kiện trên hệ thống - Cân bằng cấp phát bộ đệm cho tất cả các file theo dõi: $ns flush-trace - Tạo một đối tƣợng theo dõi: Cấu trúc: create-trace {type filename scr dst} Ví dụ : $ns create-trace Drop $tf $n0 $n2 - Theo dõi tất cả các sự kiện trên hệ thống: $ns trace-all $trace_file b. Cấu trúc file trace 8 Mỗi một lệnh theo dõi trong các lệnh trên sẽ có các cấu trúc đầu ra khác nhau. Ở đây chúng ta chỉ xét đến cấu trúc file đầu ra của lệnh “trace-all”. Với các công cụ phân tích file dữ liệu có sẵn nhƣ awk, grep, perl,…. Chúng ta có thể có đƣợc tất cả các thông tin mong muốn trong quá trình hệ thống mạng đƣợc mô phỏng bằng cách phân tích file “trace-all”. File trace đƣợc tổ chức trong 12 trƣờng nhƣ trong hình dƣới - Trƣờng đầu tiên mô tả loại sự kiện, đƣợc cho bởi một trong 4 kí tự r, +, -, d tƣơng ứng với các trƣờng hợp đã nhận (ở đầu ra của link), đã xếp vào trong hàng đợi (enqueued), rời khỏi hàng đợi (dequeued), đã bị hủy (dropped) - Trƣờng thứ hai biểu diễn thời gian sự kiện xuất hiện. - Thông báo node input của link nơi sự kiện xảy ra. - Thông báo node ouput của link nơi sự kiện xảy ra. - Loại gói tin ( ví dụ TCP, CBR, tên loại tƣơng ứng với tên của application mà chúng ta đã đặt, ví dụ trong phần trƣớc thì application TCP đƣợc gọi là “tcp”). - Kích cỡ gói tin. - Một vài loại cờ. Chúng ta sẽ xét ở phần sau. - Flow id (fid) của Ipv6 mà ngƣời dùng thiết lập cho mỗi luồng (flow) tại đầu vào OTcl cript. Ta có thể dùng trƣờng này để phân tích kết quả, cũng nhƣ để thiết lập màu sắc cho các luồng trong mô phỏng NAM. - Địa chỉ của nguồn, nơi phát gói tin, đƣợc cho dƣới dạng “node.port”. - Địa chỉ của nguồn đích, nơi nhận gói tin, đƣợc cho với cùng dạng nhƣ trên. - Số chuỗi các gói tin của một lớp giao thức mạng. Mặc dù thành phần UDP trong mạng thực tế không có số các chuỗi nhƣng ns vẫn giữ lại các vết (track) để phân tích kết quả. 9 - Trƣờng cuối cùng ghi chỉ số id của gói tin (unique id of packet). c. Xgraph Xgrap là một công cụ vẽ đồ thị đƣợc cung cấp bởi ns. Xgraph cho phép chúng ta tạo ra các file postcript , ảnh , và 1 số định dạng khác bằng cách ấn vào “Hdcpy”. câu lệnh gọi Xgraph có thể đƣợc khai báo trong kịch bản TCL do đó có thể xuất ra ngay đồ thị khi kết thúc mô phỏng . Đầu vào của Xgraph là 1 hoặc nhiều file chứa mỗi cặp giá trị x-y trên 1 dòng (mỗi dòng sẽ chứa tọa độ của 1 điểm trên đồ thị ) . Ví dụ lệnh : Xgraph f1 f2 sẽ vẽ ra trên cùng 1 đồ thị của file f1,f2 Một số lựa chọn khi sử dụng Xgraph : - Title : -t “ten_do_thi” - Kích thƣớc : -geometry xsize x ysize - Tiêu đề cho các trục : -x “xtitle” –y “ytitle” - Màu của chữ và lƣới –v - Màu nền –bg 4. Thực hiện các yêu cầu a. Tỷ lệ chiếm dụng bộ đệm Tỷ lệ chiếm dụng các bộ đệm đƣợc tính nhƣ sau: Với queueLength là chiều dài hàng đợi tức thời, đƣợc tính bằng số gói đến trừ số gói đi và số gói bị rớt. Code: Với hàng đợi của liên kết giữa node 3 và node 4, tỷ lệ chiếm dụng hàng đợi đƣợc lƣu trong file queuesize.tr set qfile [$ns monitor-queue $node_3 $node_4 [open queue.tr w] 0.5] [$ns link $node_3 $node_4] queue-sample-timeout; proc QueueLength {} { global ns qsize qfile node_3 node_4 10 # thoi gian lay mau la 0.5s set time 0.5 set now [$ns now] $qfile instvar parrivals_ pdepartures_ pdrops_ # ty le chiem dung bo dem: queueLength/50 *100% = queueLength*2 % puts $qsize "$now [expr 2.0*[expr $parrivals_-$pdepartures_- $pdrops_]]" set bdepartures_ 0 $ns at [expr $now + $time] "QueueLength" } Sau khi có file queuesize.tr ta vẽ đƣợc đồ thị tỷ lệ theo câu lệnh: exec xgraph queuesize.tr -geometry 800x400 -t "Queue occupancy rate" - x "secs" -y "percentage(%)" & Hàng đợi của liên kết giữa các node khác đƣợc tính tƣơng tự. b. Phân bố Poisson Ta xây dựng tiến trình Poisson qua một đối tƣợng ExponentialOn/Off với các thành phần tham số: . packetsize_ dung lượng cố định của gói dữ liệu . burst_ time_ thời gian “bật” khởi tạo . idle_ time_ thời gian “tắt” khởi tạo . rate_ tốc độ của gói Để tạo ra tiến trình Poisson ta cho tham số burst_time_ về 0 và idle_time bằng của tiến trình Poisson. c. Giảm gói tin - Nguồn s1 phát các gói tin với tốc độ là 1.3 MBps - Nguồn s2 phát ra 2 luồng với các gói tin tốc độ là 1.5MBps và 2MBps - Cứ sau 30s nguồn s1 và s2 giảm tốc độ gói là 50 gói/s nên ta có lƣợng giảm sau 30s là [...]... Trễ đƣờng truyền Trễ trên luồng 1 Trễ trên luồng 2 19 Trễ trên luồng 3 20 KẾT LUẬN Môn cơ sở truyền số liệu là một môn học chuyên ngành quan trọng và hữu ích Nó cung cấp những kiến thức cơ bản nhất cho sinh viên có định hƣớng theo chuyên ngành Điện tử viễn thông Theo quan điểm học phải đi đôi với hành, em thấy việc nhà trƣờng và các Thầy cô tạo điều kiện để chúng em có cơ hội đƣợc làm bài tập lớn là một... gắng hết sức nhƣng chắc chắn bài làm của chúng em còn nhiều thiếu sót, mong Thầy góp ý cho chúng em những nhận xét quý báu để bài tập lớn này đƣợc hoàn thiện hơn Lời cuối, nhóm chúng em xin kính chúc Thầy sức khỏe, công tác tốt, và gặt hái đƣợc nhiều thành công hơn nữa trong đào tạo cũng nhƣ nghiên cứu! Nhóm chúng em xin chân thành cảm ơn! 21 Tài liệu tham khảo 1 Slide bài giảng Cơ sở mạng thông tin... END {} Để xuất dữ liệu ra file phục vụ việc vẽ đồ thị ta dùng câu lệnh sau exec awk –f > V Thực hiện mô phỏng 1 Kịch bản mô phỏng Thời điểm(s) Mục đích 0.0 Bắt đầu thực hiện: - Tính băng thông - Tính tỷ lệ chiếm dụng hàng đợi - Luồng 1,2,3 truyền dữ liệu 30.0 Bắt đầu giảm tốc độ gói 50 gói/s sau chu kỳ 30s 13 300.0 Luồng 1,2,3 kết thúc truyền dữ liệu 301.0 Đóng... điều kiện để chúng em có cơ hội đƣợc làm bài tập lớn là một việc rất có ý nghĩa Đề bài chúng em đƣợc giao cũng rất phù hợp với trình độ hiện tại của chúng em Sau khi hoàn thành bài tập này chúng em đã học hỏi và tích lũy đƣợc rất nhiều kiến thức Trƣớc tiên phải kể đến đó là kiến thức về mạng thông tin, các giao thức truyền và gửi gói tin, Thứ hai phải kể đến đó là biết cách sử dụng phần mềm mã nguồn... $bw3/$time*8/1000]" $sink1 set bytes_ 0 $sink2 set bytes_ 0 $sink3 set bytes_ 0 $ns at [expr $now+$time] "BandWidth" } e Tính trễ của mỗi luồng - Dựa vào định dạng của file trace ta thu thập đƣợc số liệu để tính trễ xảy ra trên đƣờng truyền - Trễ của các gói tin đƣợc tính nhƣ sau: thời điểm gói tin đến node đích trừ đi thời điểm gói tin ở node gửi - Việc này đƣợc thực hiện bằng hàm viết trong file awk Hàm đƣợc viết... tạo cũng nhƣ nghiên cứu! Nhóm chúng em xin chân thành cảm ơn! 21 Tài liệu tham khảo 1 Slide bài giảng Cơ sở mạng thông tin của Thầy Phạm Văn Tiến 2 Tài liệu tham khảo NS2 (Ns2_manual, Introduction to Network Simulator NS2 – Teerawat Issariyakul) 3 Tài liệu hƣớng dẫn NS2 http://www.isi.edu/nsnam/ns/tutorial/ 22 ... $TrafficFile3 "$now [$traffic3 set rate_] [$traffic3 set idle_time_]" 11 $ns at [expr $now + $time30] "PackageDecrease" } d Tính băng thông của từng luồng Sử dụng Agent LossMonitor lƣu lại những gói đã truyền, sau khi tính đƣợc băng thông trong 1 chu kỳ thì làm sạch Agent và thực hiện lại ở chu kỳ tiếp theo Code proc BandWidth {} { global ns sink1 sink2 sink3 BwFile1 BwFile2 BwFile3 set time 3 set bw1... đầu giảm tốc độ gói 50 gói/s sau chu kỳ 30s 13 300.0 Luồng 1,2,3 kết thúc truyền dữ liệu 301.0 Đóng các file trace và data Vẽ đồ thị tỷ lệ chiếm dụng bộ đệm, hiệu suất sử dụng băng thông và trễ đƣờng truyền Kết thúc mô phỏng 2 Kết quả mô phỏng a Mạng các liên kết b Tỷ lệ chiếm dụng bộ đệm của các liên kết 14 Liên kết giữa node 1 và node 3 Liên kết giữa node 2 và node 3 15 Liên kết giữa node 1 và node...s1: 50 * 1300 = 65000 bytes s2: 50 * 1000 = 50000 bytes (2 luồng) - Khi thay đổi số gói (λ) sẽ dẫn đến idle_time_ và rate_ thay đổi Cách tính idle_time_ nhƣ sau: 1 𝑖𝑑𝑙𝑒_𝑡𝑖𝑚𝑒_ = λ , vậy sau khi giảm λ thì idle_time_ = - 1 𝜆−50 Rate đƣợc tính nhƣ sau: s1: rate_ = rate_ – 65000 (bytes) . TỬ - VIỄN THÔNG BÁO CÁO BÀI TẬP LỚN MÔN CƠ SỞ TRUYỀN SỐ LIỆU ĐỀ BÀI SỐ 1 GIẢNG VIÊN HƢỚNG DẪN: TS. PHẠM VĂN TIẾN NHÓM SINH VIÊN THỰC HIỆN: NHÓM SỐ 8 Nguyễn Hữu Quang ĐT12 - K54. bài số 1 - Tuần 4: Tìm cách gắn các nguồn dữ liệu vào các node và truyền nhƣ yêu cầu đề bài - Tuần 5, 6: Thu thập và tính toán số liệu về hiệu suất sử dụng hàng đời, băng thông, độ trễ truyền. hiện bài tập lớn. - Tuần 2: Tìm hiểu giao thức UDP, phát gói tin theo phân bố Poisson. Thực hiện mô phỏng 1 số hệ thống thông tin đơn giản trên ns2 - Tuần 3: Code mô hình mạng thông tin của bài