Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công nghệ thông tin UBND TỈNH QUẢNG NAM TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA CÔNG NGHỆ THÔNG TIN ---------- SONEXAY KEOBOUAPHA NGHIÊN CỨU CÔNG CỤ MÔ PHỎNG NS-2 KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Quảng Nam, tháng 5 năm 2018 UBND TỈNH QUẢNG NAM TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA CÔNG NGHỆ THÔNG TIN ---------- KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Tên đề tài: NGHIÊN CỨU CÔNG CỤ MÔ PHỎNG NS-2 Sinh viên thực hiện SONEXAY KEOBOUAPHA MSSV: 2114011018 CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN KHÓA 2014– 2018 Cán bộ hướng dẫn ThS. LÊ THỊ THANH BÌNH Quảng Nam, tháng 5 năm 2018 LỜI CẢM ƠN Được sự phân công của khoa công nghệ thông tin, T rường Đại Học Quảng Nam, và được sự đồng ý của giáo viên hướng dẫn ThS. Lê Thị Thanh Bình em đã thực hiện đề tài “Nghiên cứu công cụ mô phỏng NS-2 ” . Để hoàn thành khóa luận này. Em xin ch ân thành cảm ơn thầy cô giáo trong khoa đã tận tình hướng dẫn, giảng dạy trong suốt thời gian học tập, nghiên cứu và rèn luyện ở trường đại học Quảng Nam. Xin chân thành cảm ơn cô giáo hướng dẫn ThS. Lê Thị Thanh Bình đã tận tình, chu đáo hướng dẫn em thực hiện khóa luận này. Mặc dù có nhiều cố gắng thực hiện đề tài một cách hoàn chỉnh nhất nhưng do buổi đầu mới làm quen với công tác nghiên cứu cũng như hạn chế về kiến thức và kinh nghiệm nên không tránh khỏi những thiếu sót nhất định mà bản thân chưa thấy được. Tôi rất mong được sự góp ý của quý thầy cô giáo và các bạn để khóa luận hoàn chỉnh hơn. Em xin chân thành cảm ơn. MỤC LỤC PHẦN 1. MỞ ĐẦU ................................................................................................ 1 1.1. Lý do chọn đề tài ...................................................................................................... 1 1.2. Mục tiêu của đề tài ................................................................................................... 1 1.3. Đối tượng và phạm vi nghiên cứu ........................................................................... 1 1.4. Phương pháp nghiên cứu ......................................................................................... 1 1.5. Đóng góp của đề tài.................................................................................................. 1 1.6 .Cấu trúc đề tài ........................................................................................................... 1 CHƯƠNG III: MÔ PHỎNG VỚI NS-2 ................................................................ 2 PHẦN 2: NỘI DUNG NGHIÊN CỨU .................................................................. 3 CHƯƠNG I...................................................................................................................... 3 TỔNG QUAN VỀ CÔNG CỤ MÔ PHỎNG NS-2 ..................................................... 3 1.1. GIỚI THIỆU CÔNG CỤ NS-2 ............................................................................... 3 1.2. KIẾN TRÚC CỦA CÔNG CỤ NS-2 ..................................................................... 3 1.2.1. C++ và otcl ......................................................................................... 6 1.2.2. Các đặc tính của NS-2 ........................................................................ 8 1.3. ĐẶC ĐIỂM CỦA NS-2........................................................................................... 9 CHƯƠNG II .................................................................................................................. 11 GIỚI THIỆU CÁC BƯỚC CƠ BẢN MÔ PHỎNG KỊCH BẢN VÀ PHẦN MỀM KẾT HỢP VỚI CÔNG CỤ NS-2 ................................................................................ 11 2.1. CÁC BƯỚC CƠ BẢN MÔ PHỎNG KỊCH BẢN TRONG CÔNG CỤ NS-2 11 2.1.1. Khởi tạo và kết thúc .......................................................................... 11 2.1.2. Định nghĩa các nút và mạng liên kết ................................................. 12 2.1.3. Khởi tạo Node ................................................................................... 15 2.1.4. Khởi tạo Link .................................................................................... 16 2.1.5. Khởi tạo Network Agents .................................................................. 17 2.1.6. Các loại traffic ................................................................................... 18 2.1.7. Các dịch vụ cơ bản trong Internet ..................................................... 20 2.1.8. Tracing ............................................................................................... 21 2.1.9. Routing .............................................................................................. 23 2.2. CÁC PHẦN MỀM KẾT HỢP VỚI CÔNG CỤ NS-2........................................ 24 2.2.1. Nam ................................................................................................... 24 2.2.2. NSCRIPT ........................................................................................... 28 2.2.3. Topology Generator .......................................................................... 29 2.2.4. Trace Data Analyzers ........................................................................ 29 CHƯƠNG III ................................................................................................................. 39 MÔ PHỎNG VỚI NS-2................................................................................................ 39 3.1. CÀI ĐẶT CÔNG CỤ NS-2................................................................................... 39 3.2. CHẠY MỘT CHƯƠNG TRÌNH NS-2................................................................ 43 3.2.1. Mục đích mô phỏng ........................................................................... 43 3.2.2. kết quả mô phỏng .............................................................................. 44 PHẦN 3. KẾT LUẬN .......................................................................................... 53 PHẦN 4. TÀI LIỆU THAM KHẢO .................................................................... 54 DANH MỤC CÁC TỪ VIẾT TẮT Viết tắt Nghĩa tiếng Anh Nghĩa tiếng việt CBR Constant Bit Rate Tốc độ bit cổ định CBQ Class Based Queucing Hàng đợi đựa trên 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 nhất HTTP Hypertext Transfer Protocol Giáo thức truyền tải siêu văn bả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 Giáo thức Internet LAN Local Area Network Mạng cức bộ MAC Media Access Control Điều khiển truy cập đường truyền MMS MPLS Network Simulation Mô phỏng mạng MPLS MPLS Multicast-Protocol Label Switching Chuyển mạch nhân giaothức NAM Network Animator Mịnh họa mạng NFS Network Filesystems Các tập tin hệ thống mạng NS Network Simulator Mô phỏng mạng OSPF Open shortest Path First Đường dẫn ngắn nhất mở đầu tiền 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 gian SPF shortest Path First Đường dẫn ngắn nhất đầu tiền ST Singnaling Traffic Lưu lượng tin hiệu TCP Transmission Control Protocol Giao thức điều khiển truyền tải TTL Time-To-Live Thời gian tồn tại UDP User Datagram Protocol Giao thức gói người dùng VBR Variable Bit Rate Tốc độ bit thay đổi được WAN wide Area Network Mạng diện rộng WLAN Wireless Local Area Network Mạng cực bộ không dây WWW World Wide Web Môi trường internets DANH MỤC HÌNH ẢNH Hình 1.1: Tổng quan về NS-2 dưới góc độ người dụng ........................................ 4 Hình 1.2: Luồng các sự kiện cho file Tcl chạy trong NS....................................... 5 Hình 1.3: Kiến trúc của NS-2 ................................................................................. 6 Hình 1.4: C++ và OTcl sự đối ngẫu ....................................................................... 6 Hình 1.5: TclCL hoạt động như liên kết giữa A và B ............................................ 7 Hình 2.1: sự liên kết các đối tượng cơ bản trong NS ........................................... 15 Hình 2.2: Node unicast và node multicast ........................................................... 15 Hình 2.3: Link ...................................................................................................... 16 Hình 2.4: Chèn đối tượng trace ............................................................................ 21 Hình 2.5: Giao diện đồ họa Nam ......................................................................... 24 Hình 2.6: Cửa sổ Nam console ............................................................................ 25 Hình 2.7: Cửa sổ minh họa Nam .......................................................................... 26 Hình 2.8: Cấu trúc lien kết của 5 node mạng ....................................................... 29 Hình 2.9: mô hình ví dụ được diễn trong xgraph ................................................. 34 Hình 3.1: Lệnh Code trong Terminal để cài đặt công cụ biên dịch ..................... 39 Hình 3.2: Cách Fix bug từ CC=cc trở thành CC=gcc-4.4 ............................ 40 Hình 3.3: Cách cài đặt NS2 trong thư mục ns-allinone-2.35 .............................. 41 Hình 3.4: Thiết lập biến môi trường .................................................................... 42 Hình 3.5: Cài đặt thành công................................................................................ 43 Hình 3.6: Mô hình mạng sử dụng giao thức TCP, TCP Reno, TCP Vegas ......... 43 Hinh 3.7: Kết quả mô hình chương trình đang hoạt động ................................... 51 Hinh 3.8: Kết quả thông tin Simulation ............................................................... 51 Hinh 3.9: Kết quả mô hình trong GRAPH ........................................................... 52 1 PHẦN 1. MỞ ĐẦU 1.1. Lý do chọn đề tài Hiện nay, các hệ thống mạng ngày càng phức tạp, đòi hỏi phải đáp ứng được với nhiều loại dịch vụ khác nhau, với tốc độ dịch vụ khác nhau, lưu lượng các gói tin trên đường truyền không ngừng tăng lên, nhiều lúc dẫn đến tắc nghẽn. Vì vậy, việc sử dụng các phương pháp giải thích ngày càng trở nên phức tạp trong tính toán các đối tượng ngẫu nhiên, đồng thời khó có những mô hình thực tế để do thử nghiệm nên việc sử dụng các hệ thống mô phỏng máy tính trở nên thuận lợi hơn nhiều. Phương pháp mô phỏng là sử dụng chương trình phần mềm xây dựng các đối tượng trong mạng dựa trên Topology mạng đã được thiết kế. Thiết lập bảng hoạt động cho từng node mạng, thiết lập các thông số đường truyền, thời gian truyền. Hiện tại có rất nhiều phần mềm mô phỏng, một trong số đó là NS2, là một sản phẩm phần mềm lớn, chuyên dụng cho việc mô phỏng mạng trước thực tế này, được sự định hướng và chỉ dẫn của ThS. Lê Thị Thanh Bình, em đã chọn đề tài: “ Nghiên cứu công cụ mô phỏng NS-2 ” để làm khóa luận tốt nghiệp. 1.2. Mục tiêu của đề tài - Nghiên cứu về công cụ NS-2 - Nghiên cứu phần mềm kết hợp với NS-2 - Thực hiện mô phỏng với NS-2 1.3. Đối tượng và phạm vi nghiên cứu - Đề tài tập trung nghiên cứu về công cụ NS-2 và ứng dụng của nó. 1.4. Phương pháp nghiên cứu - Nghiên cứu lý thuyết NS-2. - Mô phỏng thực nghiệm. 1.5. Đóng góp của đề tài - Đề tài trình bày cách thức cài đặt NS- 2 trên Ubuntu và chạy các ví dụ .tcl trên nền NS-2 1.6 .Cấu trúc đề tài Đề tài gồm có ba chương như sau : 2 Chương I: TỔNG QUAN VỀ CÔNG CỤ MÔ PHỎNG NS-2 Chương II: GIỚI THIỆU CÁC BƯỚC CƠ BẢN MÔ PHỎNG KỊCH BẢN VÀ PHẦN MỀM KẾT HỢP VỚI NS-2 Chương III: MÔ PHỎNG VỚI NS-2 3 PHẦN 2: NỘI DUNG NGHIÊN CỨU CHƯƠNG I TỔNG QUAN VỀ CÔNG CỤ MÔ PHỎNG NS-2 1.1. GIỚI THIỆU CÔNG CỤ NS-2 NS-2 ( Network simulator Version 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 đại học California tại Berkely, được viết bằng ngôn ngữ C++ và Otcl. Được sử dụng rất phổ biến trong các nghiên cứu khoa học về mạng (rất hữu ích cho việc mô phỏng mạng WAN và mạng LAN). Bốn lợi ích lớn nhất của NS-2 phải kể đến là: - Khả năng kiểm tra tính ổn định của các giao thức mạng đang tồn tại. - Khả năng đánh giá các giao thức mạng mới trước khi đưa vào sử dụng. - Khả năng thực thi những mô hình mạng lớn mà gần như ta không thể thực thi được trong thực tế. - Khả năng mô phỏng nhiều loại mạng khác nhau Mục đích của NS-2 là tạo ra một môi trường giả lập cho việc nghiên cứu, kiểm tra, thiết kế các giao thức, các kiến trúc mới, so sánh các giao thức và tạo ra các mô hình mạng phức tạp. Phiên bản thứ nhất của NS được phát triển vào năm 1995 và phiên bản thứ hai ra đời năm 1996. NS- 2 là phần mềm mã nguồn mở có thể chạy được trong môi trường Linux và Window. 1.2. KIẾN TRÚC CỦA CÔNG CỤ NS-2 NS là một phần mềm hướng đối tượng sử dụng hai ngôn ngữ C++ và OTcl. Phần dữ liệu và phần điều khiển được tách biệt. - C++ cho phần dữ liệu: Xử lý mỗi gói tin, thực thi nhanh chóng, chi tiết hóa, bổ sung đầy đủ cho việc điều khiển, các thuật toán đối với bộ dữ liệu lớn. - OTcl cho phần điều khiển : + Mô phỏng các cấu hình cho kịch bản + Thực thi nhanh chóng ,dễ dàng cấu hình lại + Thao tác với các đối tượng C++ hiện tại. + Viết mã nhanh chóng và thay đổi dễ dàng. 4 Hình 1.1: Tổng quan về NS-2 dưới góc độ người dụng - OTcl Script Kịch bản OTcl - Simulation Program Chương trình Mô phòng - OTcl Bộ biên dịch Tcl mở rộng hướng đối tượng - NS Simulation Library Thư viện Mô phỏng NS - Event Scheduler Objects Các đối tượng Bộ lập lịch Sự kiện - Network Component Objects Các đối tượng Thành phần Mạng - Network Setup Helping Modules Các mô đun Trợ giúp Thiết lập Mạng - Plumbling Modules Các mô đun Plumbling - Simulation Results Các kết quả Mô phỏng - Analysis Phân tích - NAM Network Animator Minh họa Mạng NAM Trong hình 1.1. NS-2 là b ộ biên dịch Tcl mở rộng hướng đối tượng, bao gồm các đối tượng bộ lập lịch sự kiện, các đối tượng thành phần mạng và các mô đun trợ giúp thiết lập mạng (hay các mô đun Plumbing). Kịch bản OTcl có thể thực hiện những việc sau: - Khởi tạo Bộ lập lịch Sự kiện - Thiết lập Mô hình mạng dùng các đối tượng Thành phần Mạng - Báo cho nguồn traffic khi nào bắt đầu truyền và ngưng truyền packet trong Bộ lập lịch Sự kiện. 5 Thuật ngữ plumbing được dùng để chỉ việc thiết lập mạng, vì thiết lập một mạng nghĩa là xây dựng các đường dữ liệu giữa các đối tượng mạng bằng cách thiết lập con trỏ “neighbor ” cho một đối tượng để chỉ đến địa chỉ của đối tượng tương ứng. Mô đun plumbing OTcl trong thực tế thực hiện việc trên rất đơn giản. Plumbing làm nên sức mạnh của NS. Thành phần lớn khác của NS bên cạnh các đối tượng th ành phần mạng là bộ lập lịch sự kiện. bộ lập lịch sự kiện trong NS-2 thực hiện những việc sau: - Tổ chức Bộ định thời Mô phỏng - Huỷ các sự kiện trong hàng đợi sự kiện - Triệu gọi các Thành phần Mạng trong mô phỏng Phụ thuộc vào mục đích của user đối với kịch bản mô phỏng OTcl mà kết quả mô phỏng có thể được lưu trữ như file trace. Định dạng file trace sẽ được tải vào trong các ứng dụng khác để thực hiện phân tích: - File nam trace (file.nam) được dùng cho công cụ minh họa mạng NAM - File Trace (file.tr) được dùng cho công cụ lần vết và giám sát mô phỏng XGRAPH hay TRACEGRAPH. Hình 1.2: Luồng các sự kiện cho file Tcl chạy trong NS - NAM Visual Simulation Mô phỏng ảo NAM - Tracing and Monitoring Simulation Mô phỏng Lần vết và Giám sát 6 1.2.1. C++ và otcl Hình 1.3 biểu diễn kiến trúc chung của NS-2 . User có thể tưởng tượng mình đang đứng ở góc trái dưới, thiết kế và chạy các mô phỏng trong Tcl. Tcl dùng các đối tượng mô phỏng trong OTcl. Các đối tượng bộ lập lịch sự kiện và hầu hết các đối tượng thành phần mạng thực thi bằng C++ và sẵn có cho OTcl qua một liên kết OTcl. Liên kết OTcl này được thực thi dùng TclCL. Tất cả đã là m nên NS, bộ biên dịch Tcl mở rộng hướng đối tượng và các thư viện mô phỏng mạng. Tcl OTcl OTcl TclCL TclCL ns-2 Event Scheduler Network Components Event Scheduler Network Components CC++ Hình 1.3: Kiến trúc của NS-2 NS sử dụng hai ngôn ngữ lập trình: Ngôn ngữ kịch bản (Tcl – Tool Command Language, đọc là tickle) và Ngôn ngữ lập trình hệ thống (CC++) NS là tầng biên dịch Tcl để chạy các kịch bản Tcl Bằng cách sử dụng C++OTcl, bộ mô phỏng mạng phải hoàn toàn là hướng đối tượng Hình 1.4 chỉ ra các đối tượng C++ có liên kết OTcl. Khi đó, nếu chúng tạo nên một phân cấp thì các đối tượng OTcl cũng có một phân cấp tương ứng như vậy. Hình 1.4: C++ và OTcl sự đối ngẫu 7 OTcl là ngôn ngữ được sử dụng để cung cấp liên kết giữa C++ và OTcl. Các kịch bản TclOTcl được viết để thiết lập và cấu hình topology của mạng. T clCL cung cấp liên kết giữa phân cấp lớp, khởi tạo đối tượng, nối kết biến và gửi lệnh. Hình 1.5: TclCL hoạt động như liên kết giữa A và B NS cần đến 2 ngôn ngữ là vì bộ mô phỏng cần thực hiện hai việc khác nhau.Một mặt là vì các mô phỏng cho các giao thức yêu cầu một ngôn ngữ lập trình hệ thống có thể tính toán một cách hiệu quả các byte, các tiêu đề packet và các thuật toán thực thi đang chạy trên một tập dữ liệu lớn. Với tác vụ này, run- time speed (tốc độ thời gian chạy thực) là quan trọng trong khi turn-around time (thời gian thay đổi) thì ít quan trọng hơn. Turn- around time bao gồm thời gian chạy mô phỏng, thời gian tìm lỗi, thời gian sửa lỗi, thời gian biên dịch lại và thời gian chạy lại. Mặt khác, khi nghiên cứu mạng thì rất cần quan tâm đến các tham số và các cấu hình có thay đổi nhưng không đáng kể, hay quan tâm đến các scenario (tình huống) cần khám phá thật nhanh chóng. Trong tác vụ này thì iteration time (thời gian lặp lại, tức là thời gian hay đổi mô hình và chạy lại) là quan trọng hơn. Vì cấu hình chỉ chạy một lần lúc bắt đầu mô phỏng nên run- time trong tác vụ này rõ ràng kém quan trọng hơn. Dùng C++ để: - Mô phỏng giao thức chi tiết yêu cầu ngôn ngữ lập trình hệ thống + Thao tác trên byte, xử lý gói, thực thi thuật toán + Tốc độ thời gian thực là quan trọng nhất 8 - Thực hiện bất kỳ việc gì mà cần phải xử lý tứng packet của một luồng. Thay đổi hành vi của lớp C++ đang tồn tại theo những hướng đã không được lường trước. Và dùng OTcl để: - Mô phỏng những thông số hay cấu hình thay đổi + Tham dò nhanh một số tình huống + Thời gian tương tác (thay đổi mô hình hay chạy lại) là quan trọng - Cấu hình, thiết lập hay những gì chỉ làm một lần. - Thực hiện những cái ta muốn bằng cách thao tác trên các đối tượng C++ đang tồn tại. 1.2.2. Các đặc tính của NS-2 NS-2 thực thi những tính năng sau: - Các kỹ thuật quản lý hàng đợi Router như DropTail, RED, CBQ, - Multicasting - Mô phỏng mạng không dây: + Được phát triển bởi Sun Microsystems + UC Berkeley (Dự án Daedalus). + Thuộc mặt đất (di động, adhoc, GPRS, WLAN, BLUETOOTH), vệ tinh. + Chuẩn IEEE 802.11 có thể được mô phỏng, các giao thức Mobile-IP và adhoc như DSR, TORA, DSDV và AODV. - Hành vi nguồn traffic – www, CBR, VBR - Các agent truyền tải – UDP, TCP - Định tuyến - Luồng packet - Mô hình mạng - Các ứng dụng – Telnet, FTP, Ping - Các packet tracing trên tất cả các link và trên các link xác định 9 1.3. ĐẶC ĐIỂM CỦA NS-2 Công cụ mô phỏng NS2 có thể hỗ trợ người nghiên cứu mạng các đặc điểm nỗi bật sau: - K hả năng trừu tượng hóa: giúp nghiên cứu các giao thức mạng ở nhiều mức khác nhau, từ hành vi đơn lễ của một giao thức đến kết hợp của nhiều luồng dữ liệu và tương tắc của nhiều giao thức. Điều này giúp người cứu có thể dễ dàng so sánh và phân tích các kết quả chi tiết với trừu tượng. - K hả năng tương tác với mạng thực: cho phép chương trình mô phỏng đang chạy tương tác với các nút mạng thực đang hoạt đông thông qua việc thiết lập lưu lương cho các liên kết mạng. - K hả năng tạo ngữ cảnh: người nghiên cứu có thể tạo các hiện trạng mạng phức tập và các sự kiện động như lỗi liên kết một cách dễ dàng. Điều này giúp cho việc nghiên cứu, kiểm chứng các giao thức mạng trong các mô hình mạng khác nhau được đúng đắn hơn. - K hả năng hiền thị hóa: thông qua công cụ hiển thị NAM, người nghiên cứu có thể quan sát trực quan hoạt động của các nút mạng, lưu lượng, tỷ lệ lỗi để từ đó dễ dàng hiểu được các hành vi phức tập của đồ hình mạng mô phỏng . - K hả năng mở rộng được: NS2 cho phép mở rộng các chức năng mới một cách dễ dàng như thay đổi các tham số, xây dựng lên một giao thức mới, thử nghiệm các kịch bản khác nhau. - K hả năng mô phỏng NS: với bộ mô phỏng NS2, người dùng có thể mô phỏng nhiều giao thức khác nhau tại nhiều tầng khác nhau như: tại tầng ứng dụng, FTP, HTTP, tại tầng giao viên như: UDP, TCP (reno, tahoe, vegas, sack...), tại tầng MAC như: MAC 802.3, MAC 802.11, MAC 802.15,...trong các mô hình mạng có dây, mô hình mạng không dây và mô hình mạng hỗn hợp. Ngoài ra NS- 2 còn có thể mô phỏng các thuật toán định tuyến trong mạng không dây, đặc biệt là mạng Ad-Hoc: DSDV, DSR, AODV, TORA,. .. các vấn đề về định tuyến UnicastMulticast, liên mạng sử dụng về tinh (Satellite network) và nhiều các vấn đề khác cụ thể như: + Đối với mạng có dây: - Các đường truyền điểm-điểm đơn công , song công, mạng cục bộ LAN. - Các chính sách phục vụ hàng đợi. 10 - Các mô hình sinh lỗi. - Vấn đề định tuyến UnicastMulticast (UnicastMulticast routing). - Các giao thức tầng giao vận: TCPTahoeRenoNew RenoSackVegas,UDP, điều khiển lưu lượng và điểu khiển tắc nghẽn. - Các giao thức tầng ứng dụng, Web caching, truyền luồng dữ liệu đa phương tiện. + Đối với mạng không dây: - kênh truyền. - Sự đi chuyển của các nút mạng trong không gian hai chiều. - Mạng LAN không dây (WLAN) 802.11. - Mobile IP. - Các thuật toán định tuyến trong mạng không dây đặc biệt (Ad Hoc networks): DSDV, DSR, AODV, TORA... - Liên mạng sử dụng vệ tinh (Satellite Networking). + Trong lĩnh vực mạng hỗn hợp có dây và không dây: - Trạm cơ sở (Base station) đóng vai trò gateway giữa mạng có dây và mạng không dây. - Snoop TCP 11 CHƯƠNG II GIỚI THIỆU CÁC BƯỚC CƠ BẢN MÔ PHỎNG KỊCH BẢN VÀ PHẦN MỀM KẾT HỢP VỚI CÔNG CỤ NS-2 2.1. CÁC BƯỚC CƠ BẢN MÔ PHỎNG KỊCH BẢN TRONG CÔNG CỤ NS-2 2.1.1. Khởi tạo và kết thúc Một mô phỏng bắt đầu với câu lệnh: Set ns new Simulator. Đây là dòng lệnh đầu tiên trong tập lệnh tcl. Dòng này khai báo một biến mới dùng lệnh set. Dùng biến ns để có thể sử dụng tất cả các phương thức của lớp Simulator. Để lưu trữ dữ liệu mô phỏng và hiển thị kết quả mô phỏng chúng ta tạo file bằng cách sử dụng lện “open” Open the Trace file Set tracefile1 open out.tr.w ns trace-all tracefile1 Open the NAM trace.file set namfile open out.nam w ns trace-all namfile Kết thúc chương trình được thực hiện bằng một thủ tục “finish” Define a ‘finish’ procedure Proc finish {} { global ns tracefile1 namfile ns flush-trace close tracefile1 close namfile exec nam out.nam exit 0 } Cuối chương trình ns chúng ta sẽ gọi thủ tục “finish” và chỉ ra thời điểm kết thúc. Ví dụ : ns at 125.0 “finish” 12 Lệnh trên được dùng để gọi “finish” vào thời điểm 125 giây. Cuối cùng cho trình mô phỏng bắt đầu bằng lệnh: ns run 2.1.2. Định nghĩa các nút và mạng liên kết Đầu tiên là quá trình thiết lập mạng cơ bản. NS script bắt đầu bằng việc tạo ra một instance cho đối tượng Simulator (đối tượng mô phỏng). set ns new Simulator : tạo instance của Simulator, gán vào biến ns. Dòng này sẽ thực hiện: - Khởi tạo định dạng packet. - Tạo Bộ lập lịch (mặc định là Calender scheduler - Bộ lập lịch Thời gian). Đối tượng “Simulator” có các hàm thành viên thực hiện những việc sau: - Tạo đối tượng ghép như các node và các link - Connect (nối) các đối tượng Thành phần Mạng đã được tạo lại với nhau (ví dụ như hàm attach-agent) - Gán giá trị cho các tham số cho các đối tượng Thành phần Mạng (thường là cho các đối tượng ghép) - Tạo các connection giữa các agent (ví dụ như tạo connection giữa “tcp” và “sink”) - Xác định tuyến tùy chọn trình diễn NAM. - v.v… Hầu hết các hàm thành viên dùng cho mục đích thiết lập mô phỏng (được đề cập đến như các hàm plumbing) và cho mục đích lập lịch. Tuy nhiên cũng có những hàm là cho việc trình diễn bằng NAM. Các thực thi cho các hàm thành viên của đối tượng “Simulator” được định vị trong file “ns-2tcllib.ns-lib.tcl”. ns color fid color : gán màu các packet cho luồng có mã nhận dạng luồng fid. Hàm thành viên này của đối tượng Simulator được dùng cho việc trình diễn NAM, và không có tác dụng gì trên mô phỏng thực tế. ns namtrace-all file-descripto : hàm thành viên này yêu cầu mô phỏng lưu lại các dấu vết mô phỏng vào trong định dạng đầu vào cho NAM. Đồng thời có thể cung cấp tên file mà trace (dấu vết) sẽ được ghi vào bằng lệnh ns flush- 13 trace. Tương tự, hàm thành viên trace-all dùng lưu trace theo định tuyến dạng chung. proc finish{} : được gọi sau khi mô phỏng đã kết thúc. Trong hàm này các tiến trình post-simulation (mô phỏng thông báo) được xác định. set n0 ns node: hàm thành viên node khởi tạo một node. node trong NS là đối tượng ghép bao gồm address (địa chỉ) và port classifiers (bộ phân loại cổng). User có thể tạo node bằng các tạo riêng đối tượng address và port classifier và nối chúng lại với nhau.Tuy nhiên các hàm thành viên của đối tượng Simulator đã thực hiện việc này rất đơn giản. Xem file “ns-2tcllibns- lib.tcl” và “ns-2tcllibns-node.tcl” để viết Simulator tạo node như thế nào. ns duplex-link node1 node2 bandwidth delay queue-type: tạo hai simplex link (liên kết đơn) với band width và delay xác định tuyến, nối hai node xác định lại với nhau. Trong NS, hàng đợi đầu ra của node được thực thi như một phần của link, vì vậy user nên xác định luôn queue- type khi khởi tạo link. Giống như node, link là đối tượng ghép, user có thể tạo và nối các link với các node. Mã nguồn link được tìm trong file “ns-2tcllibns-lib.tcl” và “ns-2tcllibns- link.tcl”. Cần chú ý là ta hoàn toàn có thể chèn các mô đun lỗi vào trong thành phần link để mô phỏng một link hay bị mất gói cũng như chèn thêm bất kỳ đối tượng mạng nào. ns queue-linit node1 node2 number: xác định giới hạn hàng đợi của hai simplex link kết nối node1 và node2 với nhau. ns duplex-link-op node1 node2 : dùng cho NAM. Quá trình tiếp theo là thiết lập các agent như TCP, UDP; các nguồn traffic như FTP, CBR; connect các agent với các node và connect các nguồn traffic với các agent. set tcp new AgentTCP: lệnh tạo ra một agent TCP, và đây cũng là cách để tạo ra bất kỳ agent hay nguồn traffic nào. Các agent và các nguồn traffic chứa trong các đối tượng cơ bản thực (không phải trong các đối tượng kép), hầu như được thực thi trong C++ và được liên kết đến OTcl. Vì vậy, không có hàm thành viên nào của một đối tượng Simulator xác định là có thể tạo ra các instance của 14 các đối tượng này. Để tạo được agent và nguồn lưu lượng thì user cần phải biết tên lớp của các đối tượng này (AgentTCP, AgentTCPSink, ApplicationFTP v.v..) Xem thêm trong file "ns-2tcllibsns- default.tcl". File này chứa các thiết lập giá trị tham số cấu hình mặc định cho các đối tượng mạng sẵn có. ns attach-agent node agent: hàm thành viên attach- agent gắn agent vào node. Hàm này sẽ gọi hàm thành viên attach của một node xác định tuyến, để gắn agent vào node đó. Vì vậy, user có thể làm tương tự, như n0 attach tcp chẳng hạn. Ngoài ra, một agent có thể dùng hàm attach của nó để gắn một nguồn traffic vào chính nó. ns connect agent1 agent2: hàm thiết lập liên kết luận lý giữa hai agent, bằng cách thiết lập địa chỉ đích đến mạng của nhau và cặp địa chỉ cổng. Bây giờ giả sử rằng tất cả cấu hình mạng đã được thực hiện. Tiếp theo là ghi kịch bản mô phỏng. Đối tượng Simulator hiện có nhiều hàm thành viên lập lịch. ns at time “string”: hàm n ày yêu cầu scheduler (bộ lập lịch) lập lịch cho “string” thực thi vào thời gian time. Trong NS, thực tế thì nguồn traffic không truyền dữ liệu thật, nhưng nó lại thông báo cho agent phía dưới rằng nó có dữ liệu cần truyền. Khi đó agent sẽ tạo ra packet để truyền dữ liệu ấy đi. Cuối cùng là chạy mô phỏng bằng lệnh ns run. Ví dụ trên đã cho chúng ta những hình dung cơ bản về cách khởi tạo node, link, agent, traffic…Trên cơ sở đó sẽ giới thiệu chi tiết các hoạt động này. Đồng thời ta sẽ biết thêm về các dịch vụ cơ bản trong Internet, tracing, routing…Nắm vững được chúng sẽ giúp thực thi được những bài mô phỏng hiệu quả và lợi ích nhất. Trong NS- 2, một mạng máy tính bao gồm các node được nối với nhau bởi các link. Các event được lập lịch để truyền dọc theo các link, nghĩa là truyền giữa các node. Agent được gắn vào node để tạo các packet khác nhau (như agent TCP hay agent UDP). Traffic source (nguồn lưu lượng) chính là application (ứng dụng) được gắn vào agent. Hình sau biểu diễn hai node, một link giữa hai node, một agent gắn vào node 1 và một application gắn vào agent đó. 15 Hình 2.1: sự liên kết các đối tượng cơ bản trong NS Kịch bản OTcl cho lập lịch sự kiện: Tạo bộ lập lịch, Lập lịch sự kiện, Khởi động bộ lập lịch như sau: set ns new Simulator ns at ns run 2.1.3. Khởi tạo Node Node là đối tượng ghép từ đối tượng node entry và classifiers. Trong NS có hai loại node. Node unicast có một address classifier (bộ phân loại địa chỉ) làm nhiệm vụ định tuyến tuyến unicast và một port classifier (bộ phân loại cổng). Node multicast có thêm một classifier (bộ phân loại) làm nhiệm vụ phân loại các packet multicast với các packet unicast và multicast classifier (bộ phân loại multicast) để định tuyến multicast. Trong NS, các no de unicast là các node mặc định. Để tạo node multicast user phải thông báo tường minh trong kịch bản OTcl đầu vào rằng tất cả các node sẽ được tạo là node multicast, ngay sau khi user tạo ra đối tượng lập lịch. Hình 2.2: Node unicast và node multicast 16 Đối tượng mô phỏng node được dùng để khởi tạo một node. Hai node được tạo với điều khiển n0, n1. set n0 ns node set n1 ns node + Để tạo liên tục 5 node, ta dùng cách sau: for {set i 0} {i5
[[$ns link $node(8) $node(5)] queue] set limit_ 20
$ns simplex-link $node(7) $node(5) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(7) $node(5) queuePos 0.5
$ns simplex-link-op $node(7) $node(5) color black
$ns simplex-link-op $node(7) $node(5) orient 182.8deg
# Set Queue Properties for link 7->5
[[$ns link $node(7) $node(5)] queue] set limit_ 20
$ns simplex-link $node(6) $node(5) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(6) $node(5) queuePos 0.5
$ns simplex-link-op $node(6) $node(5) color red
$ns simplex-link-op $node(6) $node(5) orient 219.4deg
# Set Queue Properties for link 6->5
[[$ns link $node(6) $node(5)] queue] set limit_ 20
$ns simplex-link $node(5) $node(8) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(5) $node(8) queuePos 0.5
$ns simplex-link-op $node(5) $node(8) color black
[[$ns link $node(5) $node(8)] queue] set limit_ 20
$ns simplex-link $node(5) $node(7) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(5) $node(7) queuePos 0.5
$ns simplex-link-op $node(5) $node(7) color black
$ns simplex-link-op $node(5) $node(7) orient 2.8deg
# Set Queue Properties for link 5->7
[[$ns link $node(5) $node(7)] queue] set limit_ 20
$ns simplex-link $node(5) $node(6) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(5) $node(6) queuePos 0.5
$ns simplex-link-op $node(5) $node(6) color black
$ns simplex-link-op $node(5) $node(6) orient 39.4deg
# Set Queue Properties for link 5->6
[[$ns link $node(5) $node(6)] queue] set limit_ 20
$ns simplex-link $node(5) $node(4) 2.000000Mb 20.000000ms DropTail
$ns simplex-link-op $node(5) $node(4) queuePos 0.5
$ns simplex-link-op $node(5) $node(4) color black
$ns simplex-link-op $node(5) $node(4) orient 182.7deg
# Set Queue Properties for link 5->4
[[$ns link $node(5) $node(4)] queue] set limit_ 20
$ns simplex-link $node(4) $node(5) 2.000000Mb 20.000000ms DropTail
$ns simplex-link-op $node(4) $node(5) queuePos 0.5
$ns simplex-link-op $node(4) $node(5) color black
$ns simplex-link-op $node(4) $node(5) orient 2.7deg
# Set Queue Properties for link 4->5
[[$ns link $node(4) $node(5)] queue] set limit_ 20
$ns simplex-link $node(4) $node(3) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(4) $node(3) queuePos 0.5
$ns simplex-link-op $node(4) $node(3) color red
$ns simplex-link-op $node(4) $node(3) orient 217.3deg
# Set Queue Properties for link 4->3
[[$ns link $node(4) $node(3)] queue] set limit_ 20
$ns simplex-link $node(4) $node(2) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(4) $node(2) queuePos 0.5
$ns simplex-link-op $node(4) $node(2) color red
$ns simplex-link-op $node(4) $node(2) orient 175.6deg
# Set Queue Properties for link 4->2
[[$ns link $node(4) $node(2)] queue] set limit_ 20
$ns simplex-link $node(4) $node(1) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(4) $node(1) queuePos 0.5
$ns simplex-link-op $node(4) $node(1) color red
$ns simplex-link-op $node(4) $node(1) orient 142.8deg
# Set Queue Properties for link 4->1
[[$ns link $node(4) $node(1)] queue] set limit_ 20
$ns simplex-link $node(3) $node(4) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(3) $node(4) queuePos 0.5
$ns simplex-link-op $node(3) $node(4) color black
$ns simplex-link-op $node(3) $node(4) orient 37.3deg
# Set Queue Properties for link 3->4
[[$ns link $node(3) $node(4)] queue] set limit_ 20
$ns simplex-link $node(2) $node(4) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(2) $node(4) queuePos 0.5
$ns simplex-link-op $node(2) $node(4) color black
$ns simplex-link-op $node(2) $node(4) orient 355.6deg
# Set Queue Properties for link 2->4
[[$ns link $node(2) $node(4)] queue] set limit_ 20
$ns simplex-link $node(1) $node(4) 20.000000Mb 2.000000ms DropTail
$ns simplex-link-op $node(1) $node(4) queuePos 0.5
$ns simplex-link-op $node(1) $node(4) color black
[[$ns link $node(1) $node(4)] queue] set limit_ 20
# Create agents set agent(12) [new Agent/TCPSink]
$ns attach-agent $node(8) $agent(12)
$agent(12) set packetSize_ 210 set agent(11) [new Agent/TCPSink]
$ns attach-agent $node(7) $agent(11)
$agent(11) set packetSize_ 210 set agent(10) [new Agent/TCPSink]
$ns attach-agent $node(6) $agent(10)
$agent(10) set packetSize_ 210 set agent(9) [new Agent/TCP/Vegas]
$ns attach-agent $node(3) $agent(9)
# Create traffic sources and add them to the agent set traffic_source(14) [new Application/FTP]
$traffic_source(14) attach-agent $agent(9)
$traffic_source(14) set maxpkts_ 256 set agent(8) [new Agent/TCP/Reno]
$ns attach-agent $node(2) $agent(8)
# Create traffic sources and add them to the agent set traffic_source(13) [new Application/FTP]
$traffic_source(13) attach-agent $agent(8)
$traffic_source(13) set maxpkts_ 256 set agent(7) [new Agent/TCP]
$ns attach-agent $node(1) $agent(7)
# Create traffic sources and add them to the agent set traffic_source(12) [new Application/FTP]
$traffic_source(12) attach-agent $agent(7)
$ns at 0.000000 "$traffic_source(14) start"
$ns at 60.000000 "$traffic_source(14) stop"
$ns at 0.000000 "$traffic_source(13) start"
$ns at 60.000000 "$traffic_source(13) stop"
$ns at 0.000000 "$traffic_source(12) start"
$ns at 60.000000 "$traffic_source(12) stop"
# Run the simulation proc finish {} { global ns namfile namfile1 close $namfile1 exec nam -r 2000.000000us /home/dung/test.nam & exit 0
Hinh 3.7: Kết quả mô hình chương trình đang hoạt động
Hinh 3.8: Kết quả thông tin Simulation
Hinh 3.9: Kết quả mô hình trong GRAPH
KẾT LUẬN
- Nắm được kiến thức chung về công cụ NS-2
- Nắm được cách thức để mô phỏng mạng bằng phần mềm NS-2
- Tuy đã cố gắng tìm hiểu nhiệm vụ của NS-2 song vẫn chưa thể thực hiện một cách cụ thể và hoàn chỉnh
- Trong thời gian tới sẽ tiếp tục thực hiện mô phỏng mạng trong công cụ NS-2 một cách hoàn chỉnh và cụ thể.