Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 233 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
233
Dung lượng
4,44 MB
Nội dung
BỘ CÔNG THƢƠNG TRƢỜNG ĐẠI HỌC KINH TẾ - KỸ THUẬT CÔNG NGHIỆP KHOA CÔNG NGHỆ THÔNG TIN TÀI LIỆU HỌC TẬP KỸ THUẬT MƠ PHỎNG Đối tƣợng: HSSV trình độ Đại học, Cao đẳng Ngành đào tạo: Dùng chung cho Khối ngành Công nghệ Lƣu hành nội M CL C DANH M C VIẾT TẮT LỜI NÓI ĐẦU CHƢƠNG MƠ PHỎNG MẠNG MÁY TÍNH 1.1 Mạng máy tính kiến trúc phân tầng 1.1.1 Khái niệm phân tầng 1.1.2 Mô hình tham chiếu OSI TCP/IP 11 1.2 Mơ hình hệ thống 13 1.2.1 Tiếp cận theo phƣơng pháp phân tích 13 1.2.2 Tiếp cận theo phƣơng pháp mô 13 1.3 Khái niệm mô mạng máy tính 14 1.3.1 Định nghĩa chuẩn mô 14 1.3.2 Các thành phần mô 15 1.4 Mô phụ thuộc thời gian 16 1.4.1 Mô hƣớng thời gian 16 1.4.2 Mô hƣớng kiện 17 1.5 Ví dụ mơ mạng máy tính 19 CHƢƠNG GIỚI THIỆU VỀ NS2 26 2.1 Giới thiệu 26 2.2 Kiến trúc 27 2.3 Cài đặt 28 2.3.1 Cài đặt NS2 cài tích hợp hệ thống Unix 28 2.3.2 Cài đặt NS2 cài tích hợp hệ thống Windows 29 2.4 Thƣ mục quy ƣớc 29 2.4.1 Thƣ mục 29 2.4.2 Các quy ƣớc 30 2.5 Chạy mô NS2 32 2.6 Các thành phần C++ NS2 Công cụ Make 39 CHƢƠNG LIÊN KÉT GIỮA OTCL VÀ C++ TRONG NS2 43 3.1 Khái niệm hai ngôn ngữ NS2 44 3.2 Tạo huỷ đối tƣợng ánh xạ TclObject 55 3.3 Liên kết biến thông dịch biên dịch 58 3.4 Các lệnh OTcl 60 3.5 Tạo đối tƣợng TclObject 66 3.6 Gọi lệnh TclCommand 67 -1- 3.7 Lớp EmbeddeđTcl 70 CHƢƠNG MÔ PHỎNG ĐIỀU KHIỂN SỰ KIỆN TRONG NS2 72 4.1 Phân biệt Event-Driven Time-Driven 72 4.1.1 Mô hƣớng thời gian 73 4.1.2 Bƣớc nhảy thời gian mô hƣớng thời gian 73 4.1.3 Mô hƣớng kiện 74 4.2 Khái niệm mô NS2 75 4.3 Events Handlers 75 4.3.1 Tổng quan kiện thẻ quản lý 75 4.3.2 Lớp NsObject 76 4.3.3 Lớp Packet lớp AtEvent 77 4.4 Bộ lập lịch 78 4.4.1 Các thành phần lập lịch 79 4.4.2 Đóng gói liệu khái niệm đa hình 79 4.4.3 Các hàm lập lịch 80 4.4.4 Tính động ID định danh kiện 81 4.4.5 Cơ chế Lập lịch-Thực thi (Scheduling-Dispatching) 82 4.4.6 Lập lịch cho kiện rỗng kiện giả 83 CHƢƠNG CÁC THÀNH PHẦN CHÍNH TRONG NS2 89 5.1 Các thành phần NS2 89 5.2 Cây phân lớp C++ 90 5.3 Phân lớp NSObjects 91 5.3.1.Lớp NsObject …………………………………………………………….91 5.3.2 Cơ chế chuyển tiếp gói tin NsObject 92 5.4 Phân lớp Connector 92 5.4.1 Khai báo lớp Connector 93 5.4.2 Lệnh cấu hình lớp Connector OTcl 94 5.5 Cơ chế chuyển tiếp gói tin 96 CHƢƠNG CÁC NÚT NHƢ ROUTERS VÀ COMPUTER HOSTS 99 6.1 Tổng quan nút NS2 99 6.1.1 Các thủ tục instproc lớp Node 100 6.1.2 Nút mặc định Giao tiếp cấu hình nút 102 6.2 Cơ chế định tuyến NS2 102 6.3 Tuyến đƣờng logic 104 6.4 Phân lớp Classifier 105 6.5 Định tuyến 114 -2- 6.5.1 Tổng quan module định tuyến 114 6.5.2 Lớp RoutingModule C++ 117 6.5.3 Lớp RtModule OTcl 119 6.5.4 Lớp BaseRoutingModule RtModule/Base 120 6.6 Cấu hình đối tƣợng Node 120 6.7 Khởi tạo nút 123 6.8 Cấu hình đƣờng 127 CHƢƠNG QUẢN LÝ VÙNG ĐỆM VÀ ĐƢỜNG LIÊN KẾT 131 7.1 Giới thiệu đối tƣợng SimpleLink 131 7.1.1 Các thủ tục instproc để cấu hình đối tƣợng SimpleLink 132 7.1.2 Khởi tạo Lớp SimpleLink 133 7.2 Mô hình truyền gói tin 134 7.3 Quản lý vùng đệm 136 7.4 Một ví dụ mạng Two-Node 143 CHƢƠNG PACKETS, PACKETS HEADERS, VÀ HEADERS FORMAT 145 8.1 Tổng quan nguyên tắc tạo gói tin 145 8.2 Sắp xếp phân bổ gói tin 150 8.2.1 Cấp phát gói tin 150 8.2.2 Thu hồi gói tin 153 8.3 Tiêu đề gói tin 155 8.3.1 Truy cập header gói tin Mức 156 8.3.2 Header gói tin thơng dụng 157 8.3.3 Header gói IP 157 8.3.4 Loại gói tin 158 8.3.5 Header theo giao thức 161 8.4 Tải trọng liệu 171 8.4.1 Tùy biến gói tin 174 8.4.2 Tự tạo gói tin 174 CHƢƠNG TỔNG QUAN VÀ TRIỂN KHAI UDP 178 9.1 Khái niệm UDP TCP 178 9.1.1 Cơ giao thức UDP 178 9.1.2 Cơ giao thức TCP 178 9.2 Tác tử 183 9.2.1 9.2.2 9.2.3 9.2.4 Chƣong trình ứng dụng, tác tử mạng cấp thấp 183 Cấu hình tác tử 185 Cơ chế bên tác tử 186 Định nghĩa tác tử tầng giao vận 189 -3- 9.3 UDP tác tử NULL 190 CHƢƠNG 10 TCP 195 10.1 Tổng quan tác tử TCP NS2 195 10.1.1 Thiết lập kết nối TCP 195 10.1.2 Truyền gói tin chế báo nhận 195 10.1.3 TCP Header 196 10.1.4 Định nghĩa TCP gửi TCP nhận 197 10.2 TCP Receiver 202 10.2.1 Lớp Acker 202 10.2.2 Lớp TcpSink 205 10.3 TCP Sender 207 10.4 Chức truyền gói tin TCP 207 10.4.1 Hàm sendmsg(nbytes) 208 10.4.2 Hàm send_much(force, reason, maxburst) 209 10.4.3 Hàm output(seqno, reason) 211 10.4.4 Hàm sendone() 213 CHƢƠNG 11 TẦNG ỨNG D NG 215 11.1 Mối quan hệ tầng ứng dụng tầng giao vận 215 11.2 Phân tích phân lớp tầng ứng dụng 218 11.2.1 Các hàm lớp Application Lớp Agent 219 11.2.2 Các hàm public lớp Application 219 11.2.3 Các hàm public có liên quan Lớp Agent 220 11.2.4 Các lệnh OTcl Lớp Application 221 11.3 Phần tử sinh lƣu lƣợng 221 11.4 Lớp CBR Traffic: Một ví dụ sinh lƣu lƣợng 228 11.5 Ứng dụng mô 230 11.5.1 (File Transfer Protocol) 230 11.5.2 Telnet 231 TÀI LIỆU THAM KHẢO 232 -4- DANH M C VIẾT TẮT Tên viết tắt Nội dung CBR (Constant Bit Rate) Tốc độ bit cố định CBQ (Class Based Queueing ) Hàng đợi dựa lớp FTP (File Transfer Protocol) Giao thức truyền tập tin HBT (High priority Best effort Traffic) Lƣu lƣợng nỗ lực tối đa có độ ƣu tiên cao HTTP (Hypertext Transfer Protocol) Giao thức truyền tải siêu văn ID (Identifier) Mã nhận dạng IEEE (Institute of Electrical and Electronic Engineers ) Viện kỹ thuật điện điện tử IP (Internet Protocol) Giao thức internet LAN (Local Area Network) Mạng cục MAC (Media Access Control) Điều khiển truy cập đƣờng truyền MMS (MPLS Network Simulation) Mô mạng MPLS MPLS (Multicast-Protocol Label Switching ) Chuyển mạch nhãn đa giao thức NAM (Network Animator) Minh họa mạng NFS (Network FileSystems) Các tập tin hệ thống mạng NS (Network Simulator) Mô mạng OSPF (Open Shortest Path First ) Đƣờng dẫn ngắn mở RED (Random Early Detection) Hàng đợi dò sớm ngẫu nhiên RT (Realtime Traffic ) Lƣu lƣợng thời gian thực SBT (Simple Best Effort Traffic) Lƣu lƣợng nỗ lực tối đa đơn giản SPF (Shortest Path First ) Đƣờng dẫn ngắn ST (Signaling Traffic) Lƣu lƣợng tín hiệu TCP (Transmission Control Protocol ) Giao thức điều khiển truyền TTL (Time-To-Live) Thời gian tồn UDP (User Datagram Protocol) Giao thức gói ngƣời dùng VBR (Variable Bit Rate) Tốc độ bit thay đổi đƣợc -5- Tên viết tắt Nội dung WAN (Wide Area Network) Mạng diện rộng WLAN (Wireless Local Area Network) Mạng cục không dây CBR (Constant Bit Rate) Tốc độ bit cố định CBQ (Class Based Queueing ) Hàng đợi dựa lớp FTP (File Transfer Protocol) Giao thức truyền tập tin HBT (High priority Best effort Traffic) Lƣu lƣợng nỗ lực tối đa có độ ƣu tiên cao HTTP (Hypertext Transfer Protocol) Giao thức truyền tải siêu văn -6- LỜI NÓI ĐẦU Cùng với phát triển khoa học kỹ thuật, Công nghệ thông tin nƣớc ta năm gần phát triển mạnh Lĩnh vực Truyền thông Mạng máy tính phát triển cách nhanh chóng đa dạng quy mơ, hệ điều hành ứng dụng Do nhu cầu trình độ cao, ngƣời hoạt động chuyên ngành Công nghệ thông tin cần ln phải nâng cao trình độ để đáp ứng Tuy nhiên, mạng máy tính có điểm chung thơng qua khảo sát, mô phân loại đánh giá chúng Tuy nhiên để nghiên cứu, đánh giá hệ thống mạng truyền thơng có nhƣ đề xuất hệ thống khơng phải nhà khoa học có điều kiện triển khai thực nghiệm hệ thống thực tế Do đó, cơng cụ mơ hình hóa, mơ phỏng, phân tích đánh giá hiệu mạng công cụ trợ thủ giúp đắc lực nghiên cứu đóng góp vào phát triển lĩnh vực Truyền thơng Mạng máy tính Trong số cơng cụ mơ hệ thống mạng NS (Network Simulator) hệ mô hƣớng kiện mã nguồn mở đƣợc sử dụng rộng rãi học tập nghiên cứu Do hệ mô mã nguồn mở nên kể từ đƣợc giới thiệu vào năm 1989, NS phát triển cách mạnh mẽ với đóng góp cỉa cộng đồng nghiên cứu quốc tế Hiện NS đƣợc tích hợp hầu hết module mô thành phần mạng nhƣ giao thức định tuyến, giao thức tầng vận chuyển, giao thức tầng ứng dụng phần mềm đƣợc sử dụng rộng rãi số phần mềm mô mạng dùng cho nghiên cứu, học tập lĩnh vực Truyền thơng mạng máy tính Để đáp ứng với yêu cầu học tập sinh viên chuyên ngành công nghệ thông tin, Trƣờng Đại học Kinh tế - Kỹ thuật Công nghiệp tổ chức biên soạn giảng ―Kỹ thuật mô phỏng‖ Đây học phần chuyên sâu sinh viên chuyên ngành Đại học Cao đẳng Công nghệ thông tin Học phần cung cấp cho sinh viên tổng quan kiến trúc hệ mô NS, cách thức cài đặt sử dụng NS, đồng thời phân tích thảo luận cách chi tiết đối tƣợng nhƣ : Nút mạng, gói tin, module định tuyến, đệm, liên kết, nhằm giúp cho học viên làm chủ đƣợc hệ mô Bài giảng đƣợc biên soạn theo chƣơng trình đào tạo quy định cách trình bày Nhà trƣờng Nội dung giảng bao gồm 11 chƣơng: Chƣơng 1: Giới thiệu với bạn đọc số lý thuyết mạng máy tính tốn mơ mạng Trọng tâm chƣơng phƣơng pháp mô hƣớng kiện đƣợc sử dụng để phát triển NS Chƣơng 2: Cung cấp kiến thức tổng quan NS nhƣ : Kiến trúc hai ngôn ngữ NS, tổ chức thƣ mục NS, quy ƣớc đƣợc sử dụng, Cách cài đặt NS hệ điều hành Unix Windows -7- Chƣơng 3: Trình bày chi tiết kiến trúc hai ngôn ngữ NS bao gồm lớp C++ : Tcl, Instvar, TclObject, TclCommand EmbeddedTcl Chƣơng 5: Trình bày thành phần mơ quan trọng NS Chƣơng tập trung vào việc giải thích phƣơng pháp triển khai tốn mơ kiện NS Chƣơng tập trung vào đối tƣợng mạng nhƣ chế chuyển tiếp gói tin Chƣơng đến chƣơng 11, Sinh viên đƣợc tiếp cận với module đƣợc sử dụng phổ biến NS Module biểu diễn đối tƣợng nút mạng đƣợc phân tích chƣơng Liên kết nút mạng đối tƣợng simpleLink đƣợc trình bày chƣơng 7, Chƣơng cung cấp cho bạn đọc kiến thức đối tƣợng mô gói tin Packet Các tốn tử dùng để tạo gói tin đƣợc biểu diễn đối tƣợng Agent đƣợc đề cập tới chƣơng chƣơng 10 Chƣơng 11 trình bàu đối tƣợng Application dùng để mô yêu cầu truyền liệu ngƣời sử dụng Mong nội dung giảng giúp cho sinh viên bạn đọc kiến thức cần thiết, làm sở để sâu vào thiết kế, làm chủ NS Bài giảng đƣợc dùng để giảng dạy cho sinh viên ngành Công nghệ thông tin, xong giúp sinh viên ngành điện tử, viễn thông trƣờng đại học bạn đọc cần tham khảo vấn đề mô đánh giá hiệu mạng NS Vì giảng đƣợc biên soạn lần đầu, cố gắng hồn chỉnh, song khơng tránh khỏi thiếu sót Rất mong nhận đƣợc góp ý bạn đọc để giảng đƣợc hoàn thiện Xin chân thành cám ơn! -8- CHƢƠNG MƠ PHỎNG MẠNG MÁY TÍNH Mục tiêu Trong vài thập kỷ qua, nhiều công nghệ kỹ thuật hỗ trợ truyền thông ngƣời đƣợc phát triển Từ hệ thống mạng điện thoại cố định đến mạng truyền thanh, mạng truyền hình mạng máy tính Ban đầu đời, hệ thống hoạt động độc lập với ngƣời mong muốn tích hợp chúng hệ thống Trên thực tế xem mạng truyền thơng máy tính kết hội tụ Chƣơng cung cấp cho bạn đọc cách nhìn tổng quan mạng truyền thơng máy tính vấn đề để mô chúng Mục 1.1 Giới thiệu mạng máy tính với mơ hình tham chiếu mơ tả kiến trúc mạng truyền thơng máy tính Mục 1.2 Trình bày vắn tắt phƣơng pháp thiết kế mơ hình hóa hệ thống mạng máy tính phức tạp Trong Mục 1.3 Các vấn đề mô mạng máy tính đƣợc đề cập đến Mục 1.4 Trình bày kỹ thuật phổ biến mô theo phƣơng pháp mô theo thời gian Mục 1.5 đƣa ví dụ điển hình Mục 1.6 tổng kết lại vấn đề chƣơng Mạng máy tính kiến trúc phân tầng Một mạng máy tính đƣợc định nghĩa tập máy tính có kết nối với để thu thập, xử lý phân bố thơng tin Thuật ngữ máy tính đƣợc hiểu tƣơng đối rộng bao gồm thiết bị nhƣ máy trạm, máy chủ, router, modem, trạm sở, điểm mở rộng truy cập không dây, Các máy tính đƣợc kết nối liên kết truyền thông nhƣ cáp quang, cáp đồng, hay liên kết sóng vi ba, sóng vệ tinh, sóng radio Một mạng máy tính đƣợc xây dựng bên mạng máy tính khác kết nối với mạng máy tính khác Internet ví dụ điển hình mạng máy tính Trên thực tế, Internet mạng mạng 1.1.1 Khái niệm phân tầng Một mạng máy tính hệ thống phức tạp Để đơn giản hóa việc thiết kế triển khai hệ thống nhƣ vậy, ngƣời ta đƣa khái niệm phân tầng Sử dụng kiến trúc phân tầng, chức hệ thống mạng máy tính đƣợc tổ chức nhƣ ngăn xếp tầng Mối quan hệ ngang hàng (hay liên kết ảo) diễn tầng đồng mức nút truyền thông với Luồng liệu theo chiều dọc tầng từ tầng cao xuống tầng thấp bên nút gửi, qua đƣờng truyền vật lý đến tầng thấp bên nút nhận, sau ngƣợc lên đến tầng cao bên nút nhận Mỗi tầng biểu diễn phần đặc trƣng đƣợc định nghĩa trƣớc hệ thống cung cấp số dịch vụ cho tầng phía Tầng truy cập xuống tầng dƣới thơng qua giao tiếp tầng (interface) Các dịch vụ thƣờng định nghĩa công việc đƣợc thực theo thuật ngữ -9- Chƣơng trình 11.2 đƣa chi tiết thủ tục connec{tsrc dst} Dòng gọi thủ tục simplex-connect{src dst} để thiết lập kết nối từ src tới dst_ dòng gọi thủ tục simplex-connect{dst src} để tạo kết nối ngƣợc lại từ dst tới src Các biến thành viên dst_addr_ dst_port đƣợc cấu hình dịng 9-10 Khi tác tử tạo gói tin, lƣu giá trị biến thành viên dst_.addr_ dst_.port header gói tin Trong tiến trình chuyển tiếp gói tin, mạng phía dƣới chuyển tiếp gói tin tới tác tử tƣơng ứng với địa cổng đƣợc có header gói tin 11.2 Phân tích phân lớp tầng ứng dụng Chƣơng trình 11.3 khai báo Lớp c_++ Application biểu diễn ứng dụng Lớp Application có biến thành viên agent_ Đây trỏ trỏ tới đối tƣợng Agent Hai biến khác enableRecv_ enableResume_ biến cờ dùng để - 218 - báo hiệu đối tƣợng Application có sử dụng hàm recv(nbytes) hàm resume() hay không Mặc định hai biến cờ đƣợc thiết lập giá trị 11.2.1 Các hàm lớp Application Lớp Agent Sau kết nối đối tƣợng Application đối tƣợng Agent đƣợc tạo ra, đối tƣợng gọi hàm public đối tƣợng thông qua trỏ tƣơng ứng agent_ app_ Các hàm public lớp Application bao gồm: send(nbytes), recv(nbytes), resume() Trong đó, hàm public lớp Agent là: send(nbytes), recv(nbytes), sendmsg(nbytes), close(), listen() set_pktttỵpe(pkttype) Ngoài hàm public trên, Lớp Application cung cấp hàm riêng start() stop() đề khởi động dừng đối tƣợng Application Cuối cùng, có lệnh OTcl dành cho lớp Application đƣợc gọi từ miền OTcl là: start{}, stop{}, agent{}, send{nbytes} attach-agent{agent} 11.2.2 Các hàm public lớp Application Chƣơng trình 11.4 đƣa chi tiết hàm public sau lớp Application: (ix) send(nbyte): Báo cho tác tử tầng giao vậnđang gắn với ứng dụng biết ngƣời dùng cần gửi nbytes liệu Dòng gửi yêu cầu tới tác tử gắn với ứng dụng lệnh c‗agent_->sendsmg(nbytes)‖ (x) recv(nbytes): Nhận ―nbytes‖ byte từ tác tử nhận tầng Giao vậnđang gắn với ứng dụng Tác tử UDP quy định nbytes số byte gói tin nhận đƣợc Trong trƣờng hợp giao thức UDP, nbytes với kích thƣớc gói tin Tuy nhiên giao thức TCP, ―nbytes‖ số byte liệu nhận theo trình tự thời gian Chính nbytes lớn kích thƣớc gói tin (xi) resume(): Đƣợc tác tử gửi gọi để định tác tử gửi hết liệu theo yêu cầu ngƣời dùng Đối với đối tƣợng gửi TCP, hàm đƣợc gọi gửi hết gói tin liệu có nhận đƣợc gói báo nhận hay khơng - 219 - Chú ý hàm recv(nbytes) resume() khơng làm nhƣ hai biến trạng thái tƣơng ứng enableRecv_=0 enableResume_=0 Khi hai biến khác 0, dòng 10 dòng 17 Chƣơng trình 11.4 gọi hai thủ tục tƣơng ứng miền OTcl recv{nbytes} resume{} Giá trị mặc định hai biến Một ngƣời dùng định hành động đƣợc thực sở triệu gọi hàm recv(nbytes) resumeO cách: Thiết lập biến enableRecv_ và/hoặc biến enableResume_ Chỉ định hành động trong: (xii) Các hàm recv(nbytes) và/hoặc hàm resume(), (xiii) Thủ tục recv{nbytes} và/hoặc thủ tục resume{} miền OTcl, (xiv) Các lệnh OTcl recv{nbytes} và/hoặc resumeO lệnh command() Điều quan trọng cần lƣu ý thất bại việc thực bƣớc (ii), gây lỗi thời gian chạy vi lệnh thủ tục recv(nbytes) resume() không đƣợc định nghĩa Lớp Application 11.2.3 Các hàm public cố liên quan Lớp Agent Lớp Application gọi hàm sau lớp Agent thơng qua biến thành viên agent_: (xv) send(nbytes): Gửi ―nbytes‖ liệu ứng dụng tới tác tử nhận Nếu nbytes=-l liệu từ ngƣời dùng đƣợc coi vơ hạn (xvi) sendmsg(nbytes, flags): Tƣơng tự nhƣ hàm send(nbytes) nhƣng đƣa thêm cờ flags làm biến đầu vào - 220 - (xvii) close(): Yêu cầu tác tử đóng kết nối (chỉ áp dụng TCP) (xviii) listen(): Yêu cầu tác tử đợi kết nối (chỉ áp dụng phiên TCP đầy đủ) (xix) set_pkttype (pkttỵpe): Thiết lập biến type_ tác tử gắn vào ứng dụng giá trị pkttype 11.2.4 Các lệnh OTcl Lớp Application Đƣợc định nghĩa hàm command, lệnh OTcl đƣợc liên kết với Lớp Application bao gồm: (xx) start{}: Gọi hàm starto để khởi động ứng dụng (xxi) stop{}: Gọi hàm stopO để dừng ứng dụng (xxii) agent{}: Trả tên tác tử gắn vào ứng dụng (xxiii) send{nbytes}: Gửi nbytes byte liệu tới tác tử gắn vào cách gọi hàm send(nbytes) (xxiv) attach-agent{agent}: Tạo kết nối chiều ứng dụng đối tƣợng đầu vào agent Chi tiết lệnh OTcl file ~ns/apps/app.cc 11.3 Phân tử sinh lƣu lƣợng Bộ sinh lƣu lƣợng mơ hình hóa hành động ngƣời dùng theo lịch xác định trƣớc Trong thực tế, gửi yêu cầu truyền liệu ngƣời dùng tới tác tử gắn vào ứng dụng theo thời gian thiết lập trƣớc lịch mà không cần để ý tới trạng thái tác tử Trong NS2 có loại sinh lƣu lƣợng: (xxv) Constant Bit Rate (CBR): Gửi khối liệu có kích thƣớc cố định tới tác tử gắn vào ứng dụng Mặc định, thời gian gửi hai khối liệu ngƣời dùng cố định Tuy nhiên sử dụng tùy chọn ngẫu nhiên (xxvi) Exponential On/Off: Gửi khối liệu kích thƣớc cố định theo khoảng thời gian ngẫu nhiên cho tác tử gắn vào ứng dụng chu kỳ ON Dừng việc gửi chu kỳ OFF Chu kỳ ON OFF đƣợc phân bố theo quy luật hàm lũy thừa đƣợc đan xen chu kỳ kết thúc (xxvii) Pareto On/Off: Tƣơng tự nhƣ sinh lƣu lƣợng Exponential On/Off Tuy nhiên, độ dài chu kỳ ON OFF tuân theo phân bố Pareto (xxviii) Traffỉc Trace: Sinh lƣu lƣợng liệu theo file trace cho trƣớc File chứa chuỗi khoảng thời gian truyền lƣợng liệu truyền • Tổng quan Lớp TrafficGenerator NS2 triển khai sinh lƣu lƣợng lớp TrafficGenerator Chƣơng trình 11.5 đƣa khai báo Lớp trừu tƣợng TrafficGenerator - 221 - Trong Chƣơng trình 11.5, hàm next_interval(size) (dòng 4) hàm ảo nguvên thủy Lớp bao gồm biến thành viên sau: (xxix) time_; Là đối tƣợng TrafficTimer dùng để xác định khối liệu- đƣợc tạo (xxx) nextPkttimes_: Thời gian khối liệu đƣợc truyền tới tác tử tầng giao vậnđang gắn vào ứng dụng (xxxi) size_: Kích thƣớc khối liệu ứng dụng (xxxii) running_: Có giá trị true đối tƣợng TrafficGenerator chạy Lớp TrafficeGenerator thừa kế hàm recv(nbytes) resume() từ lớp Application nạp chồng hàm starto stop() từ lớp Application Hàm start() báo cho đối tƣợng TraffỉcGenerator khởi động hàm stop() báo cho đối tƣợng dừng việc sinh lƣu lƣợng liệu Trong Chƣơng trình 11.6, hàm starto khởi động đối tƣợng TraffỉcGenerator cách gọi hàm inito dòng thiết lập giá trị biến running_ dịng Nó tính tốn lƣu thời gian khối liệu đƣợc sinh biến nextPkttime_ dịng Cuối cùng, thiết lập giá trị vƣợt ngƣỡng cho biến tỉmer_ thời điểm nextPkttime_ (dòng 6) Từ dịng đến dịng 13 Chƣơng trình 11.6, hàm stopO làm ngƣợc lại với hàm starto Nó hủy bỏ đếm thời gian hoạt động (nếu có) dịng 11 thiết lập giá trị biến runnỉng_ dòng 12 Lớp TrafficGenerator định nghĩa thêm hàm sau: (xxxiii) next_interval(size): Nhận kích thƣớc khối liệu ―size‖ đối số đầu vào trả giá trị thời gian trễ sau khối liệu đƣợc sinh (dòng 4) Hàm hàm ảo nguyên thủy phải đƣợc triển khai Lớp thừa kế từ lớp Traff ỉcGenerator - 222 - (xxxiv) init(): Khởi động sinh lƣu lƣợng liệu (xxxv) timeout(): Gửi khối liệu ngƣời dùng tới ứng dụng gắn vào khởi động lại timer_ Hàm đƣợc gọi đếm timer_ vƣợt ngƣỡng Chi tiết hàm timeout() đƣợc đƣa dòng 14-24 Chƣơng trình 11.6 Hàm khơng thực việc nhƣ đối tƣợng TrafficGenerator khơng chạy (dịng 16-17) Ngƣợc lại, gửi ―size_‖ byte liệu tới tác tử gắn vào cách sử dụng hàm send(nbytes) (đƣợc định nghĩa Chƣơng trình 11.4) Sau đó, dịng 19 tính tốn giá tri nextPkttime_ Nếu giá trị lớn 0, dòng 21 báo cho đếm timer_ đạt giá trị vƣợt ngƣỡng sau chu kỳ thời gian có giá trị nextPkttime_ Ngƣợc lại, dòng 23 dừng đối tƣợng TrafficeGenerator chạy cách thiết lập biến running_ • Cơ chế Bộ sinh lƣu lƣợng Hình 11.2 minh họa chế hoạt động sinh lƣu lƣợng Cơ chế phụ thuộc nhiều vào biến timer_thuộc lớp TraficTimer Đây lớp thừa kế từ lớp TimerHandler Lớp TimeHandler đƣợc đề cập cách chi tiết Mục 12.1 Lớp bao gồm ba trạng thái TIMER_IDLE, TIMER_PENDING TIMER_HANDLING Mỗi trạng thái đáp ứng hai trạng thái đối tƣợng TrafficGenerator là: rỗi (running_=0) hoạt động (running_=l) Trong trạng thái TIMER_IDLE đáp ứng trạng thái rỗi đối tƣợng TrafficGenerator hai trạng thái cịn lại trạng thái thuộc trạng thái hoạt động đối tƣợng - 223 - Hình 11.2 Cơ chế hoạt động sinh lƣu lƣợng Bộ sinh lƣu lƣợng trạng thái rỗi Nó chuyển tới trạng thái hoạt động hàm starto đƣợc gọi Ở trạng thái timer_ đƣợc thiết lập TIMER_PENDING Tại thời điểm vƣợt ngƣỡng, timer_ chuyển tới trạng thái TIMER_HANDLING gọi hàm timeout() lớp TraffỉcGenerator Sau thực hàm timeout(), trạng thái chuyển lại TIMER_PENDING trình tiếp tục đƣợc lặp lại Khi trạng thái tỉmer_ TIMER_PENDING TIMER_HANDLING, dừng hoạt động sinh lƣu lƣợng cách sử dụng hàm stop() Chƣơng trình 11.7 đƣa khai báo lớp TraffỉcTỉmer Đây lớp thừa kế từ Lớp TimerHandler (xem Mục 12.1) Lớp Traffictimer có biến thành viên biến tgen_ trỏ trỏ tới đối tƣợng TrafficGenerator (dòng 6) Tại thời điểm đếm vƣợt ngƣỡng, NS2 gọi hàm expire(e) timer_ (dòng 8-11) Hàm sau gọi đến hàm timeouto đối tƣợng TraffỉcGenerator liên kết với đối tƣợng TrafficTimer qua biến *tgen_ Kết nối hai chiều đối tƣợng TrafficGenerator TrafficTimer đƣợc tạo nhƣ sau: Lớp TrafficGenerator khai báo biến timer_ nhƣ trỏ trỏ tới đối tƣợng TraffỉcTimer (dịng 17 Chƣơng trình 11.5) Đối tƣợng TrafficGenerator khởi tạo biến timer_ cách đƣa trỏ trỏ vào (con trỏ this) làm đối số đầu vào (dịng 12 Chƣơng trình 11.7) Hàm khởi tạo biến timer_ sau gắn trỏ đầu vào (con trỏ this) cho trỏ để trỏ vào đối tƣợng TrafficGenerator qua biến tgen_ (dịng Chƣơng trình 11.7) nhằm tạo kết nối ngƣợc lại với đối tƣợng TraficTimer - 224 - Các sinh lƣu lƣợng Ns2 Constant Bit Rate (CBR) Bộ sinh lƣu lƣợng CBR tạo khối liệu có kích thƣớc cố định theo khoảng thời gian cố định Nhƣ ta thấy Chƣơng trình 11.8, NS2 triển khai sinh lƣu lƣợng CBR cách sử dụng lớp C++ CBR_Traffic Lớp đƣợc ánh xạ với lớp OTcl Application/Traffỉc/CBR Các biến thành viên giá trị mặc định lớp OTcl đƣợc trình bày Bảng 11.1 Cần ý rằng, khoảng thời gian lần truyền khối liệu khoảng thời gian thời điểm bắt đầu truyền khối liệu Khoảng thời gian tính đƣợc cách chia kích thƣớc khối liệu cho tốc độ truyền Mặc định, khoảng thời gian 210 X 8/488.000 ** 3.44 ms Cơ chế hoạt động chi tiết Lớp CBR_Traffỉc đƣợc đề cập Mục 11.3.4 - 225 - Biến thành viên Giá trị mặc định packetSize-_ 210 Kích thƣớc khối liệu tính theo đơn vị byte Rate-_ 488x1o3 Tốc độ truyền tính theo đơn vị bps Random-_ (faise) Nếu true sinh thơi gian ngẫu nhiên (có thể dƣơng âm) lần truyền khối liệu Maxpkts-_ 167 Số lƣợng gói tin lớn mà CBR gửi Mơ tả Bảng 11.1 Các biến thành viên ỉớp CBR OTcl Exponential On/Off Bộ sinh lƣu lƣợng Exponential On/Off hoạt động tƣơng tự nhƣ sinh lƣu lƣợng CBR chu kỳ ON không sinh lƣu lƣợng liệu chu kỳ 0FF Các chu kỳ ON OFF đƣợc phân bố theo quy tắc lũy thừa Chƣơng trình 11.9 cho ta thấy NS2 triển khai sinh lƣu lƣợng cách sử dụng Lớp C++ EXPOO_Traffic Lớp đƣợc ánh xạ với Lớp OTcl Application/Traffic/- Exponential Lớp OTcl có biến thành viên giá trị mặc định đƣợc mô tả Bảng 11.2 Biến thành viên Giá trị mặc định Mơ tả PacketSize_ 210 Kích thƣớc khối liệu tính theo đơn vị byte Rate_ 64x103 Tốc độ truyền theo đơn bị bps chu kỳ ON Burst_time_ 0.5 Thịi gian trung bình chu kỳ ON tính giây Id;e_time_ 0.5 Thời gian trung bình chu kỳ OFF tính giây Bảng 11.2 Các biến thành viên ỉớp Exponentiaỉ On/Ojf OTcl - 226 - Pareto On/Off Bộ sinh lƣu lƣợng Pareto On/Off hoạt động tƣơng tự nhƣ sinh lƣu lƣợng Exponential On/Off nhƣng chu kỳ ON OFF đƣợc phân bố theo quy tắc Pareto Chƣơng trình 11.10 cho thấy NS2 triển khai sinh lƣu lƣợng cách sử dụng lớp C++ POO_Traffic đƣợc ánh xạ với lớp Otcl Application/Traffic/Pareto Lớp OTcl có biến thành viên giá tri mặc định đƣợc mô tả Bảng 11.3 Biến thành viên Giá trị mặc định Mơ tả Packetsize_ 210 Kích thƣớc khối liệu tính theo đơn vị byte Rate_ 64x103 Tốc độ truyền theo đơn vị bps chu kỳ ON Burst_time_ 0.5 Thời gian trung bình chu kỳ ON tính theo giây Idle_time_ 0.5 Thời gian trung bình chu kỳ OFF tính theo giây Shape_ 1.5 Tham số ―shape‖ luận phân bố Pareto Bảng 11.3 Các biến thành viên lớp Pareto On/Off OTclTraffic Trace Bộ sinh lƣu lƣợng Traffic Trace sinh khối liệu theo file trace cho trƣớc Trong Chƣơng trinh 11.11, ta thấy NS2 triển khai sinh lƣu lƣợng sử dụng lớp C++ TrafficTrace liên kết với Lớp OTcl Ầpplication/TraffỈc/Trace Không giống nhƣ sinh lƣu lƣợng khác mô tả trên, với sinh lƣu lƣợng ta cần xây dựng file lƣu lƣợng trace định file miền OTcl lệnh attach-tracefỉle Lớp Ầpplỉcation/Traffic/Trace (xem Ví dụ 11.2) - 227 - Ví dụ 11.2: Bộ sinh lƣu lƣợng CBR Ví dụ 9.1 đƣợc thay sinh lƣu lƣợng TraíTic Trace thay dòng 10-12 Chƣơng trinh 9.2 dòng sau: File sinh lƣu lƣợng trace thực file nhị phân Mỗi từ mã file bao gồm trƣờng 32 bit Trƣờng thứ định khoảng cách thời gian khối liệu truyền tính theo đơn vị micro giây Trƣờng thứ hai kích thƣớc khối liệu tính theo đơn vị byte (xem ví dụ qua Ẽle ~ns/tcl/ex/example-trace) 11.4 Lớp CBR Traffic: Một ví dụ sinh lƣu lƣợng Trong phần này, ta tìm hiểu Lớp C++ CBR_Traffỉc Đây lớp thừa kết từ Lớp TrafficGenerator Nó bao gồm biến sau: rate_: Tốc độ truyền tính theo đơn vị bps ỉnterval_: Thời gian truyền gói tin tính theo đơn vị giây (xxxvi) random_: Nếu có giá trị true thời gian truyền ngẫu (xxxvii) seqno_: số thứ tự CBR (xxxviii) maxpkts_: Cận số thứ tự nhiên Theo chế đƣợc thảo luận Mục 11.3.2, NS2 kích hoạt sinh lƣu lƣợng cách gọi hàm starto Khi đƣợc kích hoạt, sinh lƣu lƣợng gọi hàm tỉmeouto theo định kỳ để sinh khối liệu Khoảng thời gian hai lần gọi hàm timeouto đƣợc xác định hàm next_interval(size) Lời gọi hàm timeout() đƣợc thực lặp lại sinh lƣu lƣợng bị vơ hiệu hóa (bằng cách gọi hàm close()) - 228 - Nhƣ ta thấy Chƣơng trình 11.12, hàm starto gọi hàm init() (dòng 17) để khởi tạo sinh lƣu lƣợng, thiết lập biến running_ =1 (dòng 18) gọi hàm timeouto (dòng 19) Chi tiết hàm init() đƣợc đƣa dòng 21-28 Dịng 23 thực việc tính tốn khoảng thời gian truyền cách lấy kích thƣớc khối liệu đổi đơn vị bit (size_«3) chia cho tốc độ truyền (rate_) Hàm init() thiết lập kiểu gói tin PT_CBR kiểu gói tin trƣớc chƣa đƣợc thiết lập PT_TCP PT_TFRC (dòng 25-26) Từ Chƣơng trình 11.6, hàm timeout() gửi ―size_‖ byte liệu (dịng 8) tính tốn giá trị biến nextPkttime_ giá tri trả hàm next_interval(size_) (dòng 19) lập lịch cho đếm timer_ vƣợt ngƣỡng thời điểm nextPkttime_ giây (dòng 21) cần nhắc lại hàm next_interval(size_) hàm ảo nguyên thủy nên phải đƣợc xây dựng Lớp thừa kết từ lớp TrafficGenerator Lớp CBR_Traffic xây dựng hàm (Chƣơng trình 11.13) cách trả thời gian truyền gói tin đƣợc tính tốn từ kích cỡ khối liệu ―size_‖ tốc độ truyền CBR ―rate_‖ (dòng 9) Dịng đƣa tùy chọn để cộng trừ giá trị ngẫu nhiên vào khoảng thời gian truyền đƣợc tính tốn biến random_ đƣợc thiết lập true Ngồi ra, kích thƣớc khối liệu lớn giá trị maxpkts_, dòng 11 trả giá trị -1 thay việc tính toán thời gian truyền - 229 - 11.5 Ứng dụng mô Không giống nhƣ sinh lƣu lƣợng, ứng dụng mơ khơng có lịch định trƣớc dành cho việc sinh liệu Thay vào đó, hoạt động nhƣ ứng dụng thực chạy NS2 cung cấp hai ứng dụng mô FTP Telnet 11.5.1 (File Transfer Protocol) FTP giao thức thực việc chia file thành phần nhỏ truyền chúng tới đích Tuy nhiên NS2 không mô FTP giống nhƣ ứng dụng truyền file thực tế FTP module NS2 không cần file đầu vào Nó đơn giản báo cho tác tử tầng giao vậnđang gắn vào việc truyền file có kích thƣớc tính theo đon vị byte Khi nhận đƣợc yêu cầu này, tác tử gửi tầng giao vậnsẽ tạo gói tin để mơ việc vận chuvển file chuyển tiếp chúng tói tác tử nhận tầng giao vậnmà kết nối qua mạng phía dƣới Module FTP NS2 khơng cần định nút đích nút đích tác tử nhận tầng giao vậnxác định (qua thủ tục connect{src dst}) Để đảm bảo tính đon giản, module FTP đƣợc triển khai miền OTcl Nó đƣợc định nghĩa Lớp Application/FTP thừa kế từ lớp Application Các lệnh thủ tục miền OTcl bao gồm: (xxxix) attach-agent{agent}: Đáng ký ―agent‖ đầu vào làm tác tử gắn với FTP (xl) start{}: Báo cho tác tử gắn vào FTP yêu cầu truyền file có kích thƣớc vơ hạn cách thực lệnh ―send -1‖ (xli) stop{}: Dừng phiên truyền file (xlii) sendlnbytes{}: Gửi file có kích thƣớc ―nbytes‖ byte tới tác tử gắn vào FTP cách gọi hàm sendmsg(nbytes) (xliii) produce{nbytes}: Báo cho tác tử gắn vào FTP thực việc truyền số thứ tự đạt tới giá trị tối thiểu ―nbytes‖ ―maxseq_‖ - 230 - (xliv) producemore{nbytes}: Báo cho tác tử gắn vào FTP truyền thêm gói tin với kích thƣớc ―nbytes‖ 11.5.2 Telnet Telnet ứng dụng tƣơng tác client-server theo giao diện text Một telnet Client đăng nhập vào telnet server, gửi thông điệp dạng text tới server Sau server thực thi thơng diệp nhận đƣợc gửi trả lại kết dạng text tới Client Rõ ràng, liệu Telnet triển khai dƣới dạng lập lịch truyền liệu từ trƣớc liệu đƣợc tạo co sở yêu cầu ngƣời dùng Tuy nhiên, NS2 mơ hình hóa ứng dụng Telnet theo cách thực đối vói sinh lƣu lƣợng Đó gửi gói tin có kích thƣớc cố định theo khoảng thời gian ngẫu nhiên NS2 định nghĩa ứng dụng Telnet Lớp C++ TelnetApp lớp OTcl Application/Telnet Lớp OTcl đƣợc thừa kế từ lớp Application Nó sử dụng giá trị đƣợc lƣu trữ biến size_ tác tử gắn vào kích thƣớc gói tin Telnet tính tốn thịi gian truyền gói nhƣ sau: (xlv) Trƣờng hợp I: Nếu interval_ khác 0, thời gian truyền gói đƣợc chọn từ phân bố hàm lũy thừa với giá trị kỳ vọng interval_ (xlvi) Trƣờng hợp II: Nếu interval_ 0, thời gian truyền gói đƣợc xác định từ thực nghiệm phân bố tcplib đƣợc định nghĩa file '"ns/tcp/tcplibtelnet.cc Telnet có biến cấu hình interval_ Cũng giống nhƣ đối tƣợng Application khác, khởi động dừng cách sử dụng lệnh tƣơng ứng start{} stop{} - 231 - TÀI LIỆU THAM KHẢO [1] Kavin Fall, Kannan Varadhan ―The ns Manual‖ The VINT Project, A Collaboration between researchers at UC Berkeley, LBL, USC/ISI, and Xerox PARC December 13, 2008 http://www.isi.edu/nsnam/ns/ [2] Paul Meeneghan and Declan Delaney ―An Introduction to NS, Nam and OTcl Scripting‖ National University of Ireland, Maynooth, Co Kildare, Ireland DEPARTMENT OF COMPUTER SCIENCE April 2009 [3] Enrique Campos-Nanez ―Nscript Version 1.0a User‘s Manual‖ Department of Systems Engineering, University of Virginia March 13, 2011 [4] Eitan Altman and Tania Jiménez ―NS Simulator for beginers‖ Univ de Los Andes, Mérida, Venezuela and ESSI, Sophia-Antipolis, France December 4, 2008 [5] Jae Chung and http://www.nile.wpi.edu/ns Mark Claypool ―NS by example‖ [6] Peng Zhang, Raimo Kantola, Zhansong Ma ―Design and Implement of a new routing Simulator‖ Laboratory of Telecommunication Technology, Helsinki University of Technology, Findland [7] Xipeng Xiao and Linoel M Ni ―Internet QoS: A big Picture‖ Departurement of Computer Science, 3115 Engineering Building, Michigan State University [8] Johanna Antila ―TCP Performace Simulations Using Ns2‖ [9] Carey Williamson ―Internet Traffic Measurement‖ Department of Computer Science, University of Calgary November 24, 2011 [10] http://www.Tcl.tk TCL homepage [11] http://www.isi.edu/nsnam/nam/ NAM Network Animator [12] http://isi.edu/nsnam/xgraph XGRAPH homepage [13] http://www.geocities.com/tracegraph/ TRACEGRAPH homepage [14] scripting tool http://home.gwu.edu/~ecamposn/software.html [15] http://www.isi.edu/nsnam/ns/tutorial/index.html Tutorial for the Network Simulation ns NSCRIPT NS-2 Marc Greis‘ - 232 - ... Để đáp ứng với yêu cầu học tập sinh viên chuyên ngành công nghệ thông tin, Trƣờng Đại học Kinh tế - Kỹ thuật Công nghiệp tổ chức biên soạn giảng ? ?Kỹ thuật mô phỏng? ?? Đây học phần chuyên sâu sinh... phƣơng pháp mô 13 1.3 Khái niệm mô mạng máy tính 14 1.3.1 Định nghĩa chuẩn mô 14 1.3.2 Các thành phần mô 15 1.4 Mô phụ thuộc thời gian 16 1.4.1 Mô hƣớng thời... Bộ mô tiến triển từ kiện tới kiện khác thay từ khoảng thời gian tới khoảng thời gian khác nhƣ mô hƣớng thời gian Ngoại trừ chế tiến triển mô phỏng, chế mô hƣớng kiện tƣơng đối giống với chế mô