Báo cáo Tìm hiểu NS (Network simulator) ứng dụng mô phỏng mạng máy tính (Phần 1)
Bạn đang xem 20 trang mẫu của tài liệu "Báo cáo Tìm hiểu NS (Network simulator) ứng dụng mô phỏng mạng máy tính (Phần 1)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bao_cao_tim_hieu_ns_network_simulator_ung_dung_mo_phong_mang.pdf
Nội dung text: Báo cáo Tìm hiểu NS (Network simulator) ứng dụng mô phỏng mạng máy tính (Phần 1)
- BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO TỔNG KẾT ÐỀ TÀI KH&CN CẤP TRƯỜNG TRỌNG ÐIỂM TÌM HIỂU NS (NETWORK SIMULATOR) ỨNG DỤNG MÔ PHỎNG MẠNG MÁY TÍNH Mã số: T2014-156 Chủ nhiệm đề tài: ThS. NGUYỄN ÐANG QUANG S K C0 0 5 5 6 6 Tp. Hồ Chí Minh, tháng 11/2014
- BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO TỔNG KẾT ĐỀ TÀI KH&CN CẤP TRƯỜNG TÌM HIỂU NS (NETWORK SIMULATOR) ỨNG DỤNG MÔ PHỎNG MẠNG MÁY TÍNH Mã số: T2014-156 Chủ nhiệm đề tài: ThS. NGUYỄN ĐĂNG QUANG TP. HCM, 11 / 2014
- Đề tài NCKH cấp trường T2014-156 MỤC LỤC CHƯƠNG 1: MỞ ĐẦU 1.1. Tổng quan 7 1.2. Đối tượng và phạm vi nghiên cứu 7 1.3. Giới hạn và phạm vi đề tài 8 CHƯƠNG 2: TỔNG QUAN VỀ MÔ PHỎNG 2.1. Mô phỏng biến cố rời rạc 9 2.2. Xây dựng mô hình mô phỏng trên máy tính 12 CHƯƠNG 3: CÔNG CỤ MÔ PHỎNG NS-3 3.1. Tổng quan 14 3.2. Mô hình các thành phần mạng trong ns-3 15 3.3. Mô phỏng mạng trong ns-3 16 3.4. Một chương trình ví dụ 17 3.5. Con trỏ thông minh 18 3.6. Biểu diễn Packet trong ns-3 19 3.7. Biến cố trong ns-3 20 3.8. Biên dịch và chạy mô phỏng 21 3.9. Phân tích kết quả 22 CHƯƠNG 4: THƯ VIỆN MÔ HÌNH MẠNG 4.1. Packets 25 4.2. Socket API 34 CHƯƠNG 5: CÀI ĐẶT VÀ MÔ PHỎNG VỚI NS-3 5.1. Cài đặt ns-3 37 5.2. Kiến trúc mô phỏng mạng trong ns-3 40 5.3. Một số chương trình mô phỏng và kết quả 43 CHƯƠNG 6: KẾT LUẬN 6.1. Những vấn đề đã thực hiện được 55 6.2. Hướng phát triển 55 TÀI LIỆU THAM KHẢO 56 Tìm hiều NS và mô phỏng mạng máy tính 1
- Đề tài NCKH cấp trường T2014-156 PHỤ LỤC A: Chương trình mô phỏng mạng Point-To-Point 57 PHỤ LỤC B: Chương trình mô phỏng mạng Point-To-Point (Python) 59 PHỤ LỤC C: Chương trình mô phỏng mạng Ethernet 61 PHỤ LỤC D: Chương trình mô phỏng mạng không dây 64 Tìm hiều NS và mô phỏng mạng máy tính 2
- Đề tài NCKH cấp trường T2014-156 DANH MỤC CHỮ VIẾT TẮT CSMA/CD Carrier Sense Multiple Access with Collision Detection FEL Future Event List NIC Network Interface Card NS Network Simulator Tìm hiều NS và mô phỏng mạng máy tính 3
- Đề tài NCKH cấp trường T2014-156 DANH MỤC HÌNH ẢNH Hình 1.1 Nguyên lý mô phỏng biến cố rời rạc Hình 1.2 Lưu đồ mô phỏng biến cố rời rạc. Hình 3.1 Tổ chức phần mềm của ns-3 Hình 4.1 Lớp Packet Hình 4.2 Packet byte buffer Hình 4.3 Tổng quan về native socket API Hình 5.1 Kiến trúc mô phỏng mạng trong ns-3 Hình 5.2 Kết quả mô phỏng Hình 5.3 Kết quả mô phỏng sau khi điều chỉnh thời gian trễ Hình 5.4 Kết quả mô phỏng sau khi tăng số gói tin gửi thành 2 Hình 5.5 Không có phản hồi từ server do gói tin được gửi đến cổng 11 thay vì 9 Hình 5.6 Xem nội dung các tracefile PCAP bằng tcpdump Hình 5.7 Sơ đồ mạng mô phỏng Hình 5.8 Kết quả mô phỏng mạng CSMA Hình 5.9 Nội dung file second-0-0.pcap Hình 5.10 Nội dung file second-1-0.pcap Hình 5.11 Nội dung file second-2-0.pcap Hình 5.12 Sơ đồ mô phỏng mạng không dây Hình 5.13 Kết quả mô phỏng 5.2.3 Hình 5.14 Nội dung promicuous trace từ mạng wifi (third-0-1.pcap) Hình 5.15 Nội dung promicuous trace từ mạng CSMA (third-1-1.pcap) Tìm hiều NS và mô phỏng mạng máy tính 4
- Đề tài NCKH cấp trường T2014-156 ĐH SPKT TP HCM Đơn vị: Khoa Đào tạo Chất lượng cao THÔNG TIN KẾT QUẢ NGHIÊN CỨU 1. Thông tin chung: - Tên đề tài: Tìm hiểu NS (Network simulator) ứng dụng mô phỏng mạng máy tính - Mã số: T2014-156 - Chủ nhiệm: GVC. ThS Nguyễn Đăng Quang - Cơ quan chủ trì: Trường Đại học Sư phạm Kỹ thuật TP.HCM - Thời gian thực hiện: 1/2014-11/2013 2. Mục tiêu: Tìm hiểu ns-3 và xây dựng một số thực nghiệm mô phỏng mạng máy tính 3. Tính mới và sáng tạo: 4. Kết quả nghiên cứu: - Báo cáo 5. Sản phẩm: - Báo cáo khoa học, kết quả mô phỏng 6. Hiệu quả, phương thức chuyển giao kết quả nghiên cứu và khả năng áp dụng: - Tài liệu tham khảo mô phỏng mạng máy tính Ngày 5 tháng 11 năm 2014 Trưởng Đơn vị Chủ nhiệm đề tài (ký, họ và tên, đóng dấu) (ký, họ và tên) Tìm hiều NS và mô phỏng mạng máy tính 5
- Đề tài NCKH cấp trường T2014-156 INFORMATION ON RESEARCH RESULTS 1. General information: Project title: A Study on NS (Network simulator) and Application to Computer Network Simulation Code number: T2014-156 Coordinator: Senior Lecturer, M.Eng. Nguyễn Đăng Quang Implementing institution: University of Technical Education, HCMC Duration: from March 2014 to November 2014 2. Objective(s): - Study ns3 and practice on computer network simulation 3. Creativeness and innovativeness: 4. Research results: Report on simulation 5. Products: Report and simulation results 6. Effects, transfer alternatives of reserach results and applicability: To be used as reference materials on Computer Network Simulation Tìm hiều NS và mô phỏng mạng máy tính 6
- Đề tài NCKH cấp trường T2014-156 Chương 1: MỞ ĐẦU 1.1. Tổng quan Mô phỏng là phương pháp không thể thiếu để đặc tả, thiết kế và phân tích mạng máy tính và mạng truyền thông. Kỹ thuật này được sử dụng ở nhiều cấp độ từ nghiên cứu phần cứng đến mạng máy tính. Tuy nhiên, để những kết quả thu thập được dự báo chinh xác đáp ứng của một hệ thống thực, tất cả các tác động liên quan phải được cung cấp đầy đủ trong mô hình mô phỏng. Tác vụ này luôn là một thách thức lớn vì rất khó có thể mô hình hóa và mô phỏng nhiều mức khác nhau một cách độc lập. Ngoài ra, việc tối ưu hóa hệ thống ở mức cao luôn làm cho các cấp độ của hệ thống phụ thuộc lẫn nhau. Để có thể nhận được tất cả kết quả thống kê có liên quan và phủ hết tất cả các trường hợp – thời gian mô phỏng phải đủ dài. Tuy nhiên, để tránh kéo dài thời gian mô phỏng thậm chí trên các máy tính mạnh, việc mô hình hóa không chỉ phải hợp lý mà còn cần phải hiệu quả. Tìm kiếm một cách thức đúng đắn để kết hợp các mô hình mô phỏng của nhiều tầng là vấn đề chinh để giải quyết yêu cầu trên. Việc sử dụng các hệ thống xử lý song song đã cho phép thực hiện các mô phỏng đồng thời để đạt độ chinh xác cao tuy nhiên, thời gian mô phỏng hiện nay vẫn chưa đủ nhanh cho các mô phỏng phức tạp. Việc trừu tượng hóa các ảnh hưởng từ các tầng khác và việc mô hình hóa một cách hiệu quả là nhân tố chính để đạt tốc độ mô phỏng cao, tuy nhiên cần lưu ý thu thập đủ tất cả các dữ liệu liên quan để cung cấp cho hệ thống mô phỏng. Chính vì những lý do trên, các nhà nghiên cứu và nhà khoa học cần hiểu rõ các khái niệm mô hình hóa và mô phỏng áp dụng cho các tầng của một hệ thống mạng. Kết quả của đề tài có thể làm tài liệu tham khảo cho các nghiên cứu viên thực hiện các nghiên cứu lý thuyết trên hệ thống mạng hoặc làm tài liệu tham khảo cho nghiên cứu sinh chuyên ngành hệ thống mạng. 1.2. Đối tượng và phạm vi nghiên cứu Đối tượng nghiên cứu Tìm hiều NS và mô phỏng mạng máy tính 7
- Đề tài NCKH cấp trường T2014-156 Lý thuyết mô phỏng biến cố rời rạc (Discrete-event simulation) ns-3 Phạm vi nghiên cứu Hệ thống phần mềm ns-3 Thư viện mô hình mạng (Network library model) Viết script mô phỏng trong ns-3 bằng C++ và Python Phân tích kết quả mô phỏng bằng tcpdump, wireshark hoặc các công cụ trên linux 1.3. Giới hạn và phạm vi đề tài Thư viện mô hình và các lớp đối tượng trợ giúp (Helper Objects) trong ns-3 Mô phỏng các sơ đồ mạng đơn giản: Point-To-Point link, mạng Ethernet (CSMA/CD), mạng không dây Phân tích kết quả từ PCAP trace file bằng tcpdump Tìm hiều NS và mô phỏng mạng máy tính 8
- Đề tài NCKH cấp trường T2014-156 Chương 2: TỔNG QUAN VỀ MÔ PHỎNG Về mặt tổng quan có 3 kỹ thuật để đánh giá đáp ứng của một hệ thống, đó là: Phân tích toán học, đo lường và mô phỏng bằng máy tính. Tất cả các Phương pháp đều có ưu nhược điểm riêng. Một câu hỏi lớn thường được đặt ra trong đánh giá hệ thống đó là nên thực hiện trên hệ thống thực hay trên một mô hình. Trong mô phỏng trên máy tính, một tiến trình hoặc một hệ thống được bắt chước hoặc hoạt động phỏng theo hệ thống thực trong một khoảng thời gian. Trong thực tế mô phỏng máy tính được ứng dụng tronng nhiều trường hợp như mô phỏng biến cố rời rạc (Discrete-event simulation), mô phỏng liên tục (continuous simulation), mô phỏng Monte Carlo Trong lĩnh vực mạng máy tính, kỹ thuật mô phỏng chủ đạo là mô phỏng biến cố rời rạc. Đặc điểm chính của loại mô phỏng này là trạng thái của mô hình chỉ có thể thay đổi ở những thời điểm xác định còn được gọi là các sự kiện. Cho đến hiện nay, mô phỏng biến cố rời rạc được ứng dụng nghiên cứu trên tất cả các tầng của mạng máy tính, từ các vấn đề về xử lý tín hiệu ở tầng vật lý, các vấn đề về truy xuất môi trường truyền ở tầng liên kết dữ liệu, định tuyến ở tầng network, vấn đề về giao thức ở tầng transport và các vấn đề về thiết kế ở tầng ứng dụng. 2.1. Mô phỏng biến cố rời rạc 2.1.1. Các khái niệm và thành phần của hệ thống mô phỏng Hệ thống mô phỏng biến cố rời rạc sử dụng các thành phần sau: - Thực thể (Entity): Trừu tượng hóa của một đối tượng. Mỗi thực thể được mô tả bởi các thuộc tính của nó. Ví dụ thực thể gói tin có các thuộc tính như kích thước, địa chỉ nguồn, địa chỉ đích - Hệ thống (System) là một tập các thực thể và quan hệ giữa chúng, thực hiện một mục đích nào đó. Ví dụ một hệ thống mạng có thể được định nghĩa bởi các thực thể máy tính, router và đường truyền cung cấp kết nối điểm điểm. - Hệ thống ròi rạc là một hệ thống mà trạng thái của nó được định nghĩa bởi các trạng thái của tất cả các thực thể trong hệ thống đó, các trạng thái này chỉ thay đổi ở những thời điểm rời rạc xác định. Trạng thái thay đổi được kích hoạt bởi một biến cố. Loại biến cố tác động phụ thuộc vào hệ thống và mục tiêu nghiên Tìm hiều NS và mô phỏng mạng máy tính 9
- Đề tài NCKH cấp trường T2014-156 cứu, có thể là gửi một gói tin, nhận một gói tin hoặc lựa chọn liên kết trên một trang Web. Các hệ thống thực tế thường phức tạp, để đánh giá đáp ứng của hệ thống bằng mô phỏng trên máy tính, cần xây dung một mô hình là sự trừu tượng hóa của hệ thống thực. Công việc này bao gồm lựa chọn thực thể và xác định quan hệ giữa các thực thể đó. 2.1.2. Nguyên lý mô phỏng biến cố rời rạc Ý tưởng của mô phỏng biến cố rời rạc là nhảy từ biến cố này sang biến cố kế tiếp. Trong đó biến cố xảy ra có thể kích hoạt những thay đổi trạng thái hệ thống hoặc phát sinh những biến cố mới. Các biến cố được ghi nhận thành danh sách các biến cố sẽ xảy ra (FEL – Future Event List), thực chất là một cấu trúc dữ liệu phù hợp để quản lý tất cả các biến cố trong mô phỏng. Mỗi biến cố gồm ít nhất 2 dữ liệu (thời gian, loại) trong đó thời gian là thời điểm biến cố xảy ra và loại mô tả loại biến cố. FEL phải được cài đặt có các phương thức để chèn thêm, xóa bỏ hoặc tìm kiếm các biến cố. Hình 1.1 trình bày tiến trình mô phỏng biến cố rời rạc theo thời gian. t1 t2 ti ti+1 ti+2 Hình 1.1: Nguyên lý mô phỏng biến cố rời rạc. Trong quá trình mô phỏng, trạng thái hệ thống chỉ thay đổi ở các thời điểm ti Tại mỗi thời điểm rời rạc ti , trạng thái của hệ thống được lưu lại. Thường tất cả các bộ mô phỏng biến cố rời rạc sử dụng các thành phần: - Trạng thái hệ thống (System state): Một tập các biến mô tả trạng thái hệ thống, - Đồng hồ (Clock): Thời gian hiện tại trong quá trình mô phỏng, - Danh sách biến cố (FEL): Cấu trúc dữ liệu phù hợp quản lý các biến cố, - Các Bộ đếm thống kê (Statistical Counters): Một tập biến chứa thông tin thống kê về đáp ứng của hệ thống, - Chương trình con khởi tạo (Initialization routine): Một chương trình con khởi tạo mô hình mô phỏng và đặt đồng hồ về 0, - Chương trình con định thời (Timing routine): Một chương trình con lấy ra biến cố kế tiếp từ FEL và chuyển đồng hồ sang thời điểm biến cố kế tiếp, Tìm hiều NS và mô phỏng mạng máy tính 10
- Đề tài NCKH cấp trường T2014-156 - Chương trình con xử lý biến cố (Event routine/Handler): Chương trình con được gọi khi một biến cố xảy ra trong quá trình mô phỏng. Mỗi loại biến cố sẽ có một chương trình con xử lý biến cố tương ứng. 2.1.3. Giải thuật lập lịch sự kiện – thay đổi thời gian Đây là giải thuật lõi của một bộ mô phỏng biến cố rời rạc. Trong thời gian mô phỏng, trang thái hệ thống thay đổi theo thời gian. FEL chứa tất cả các biến cố sắp xếp tuần tự theo thời gian. 푒푙 = [푡1, 푡2, 푡 ] 푡 표푛 đó 푡1 ≤ 푡2 ≤ ≤ 푡 Lưu đồ của giải thuật được trình bày ở hình 1.2 gồm 3 phần: Khởi tạo, vòng lặp xử lý và xuất kết quả. Start Initialization o Select next event Event routine 1 Event routine 2 Event routine 3 No Terminate Yes Output End Hình 1.2: Lưu đồ mô phỏng biến cố rời rạc. Thuật toán lập lịch sự kiện – thay đổi thời gian 2.1.4. Khởi động và kết thúc mô phỏng Khởi động: Thực hiện ở bước khởi tạo trên lưu đồ - các biến cố được phát sinh và chứa vào FEL. Kết thúc: Mô phỏng kết thúc khi một trong các điều kiện sau xảy ra: Tìm hiều NS và mô phỏng mạng máy tính 11
- Đề tài NCKH cấp trường T2014-156 - Biến cố kết thúc: ví dụ thời gian trễ của gói tin lớn hơn 500ms, đã gửi được 1000 bytes hoặc số lượng gói tin mất nhiều hơn 50, - Sau một khoảng thời gian mô phỏng xác định: sau 1000s - Cho đến khi fel trống (không còn biến cố nào). 2.1.5. Các kiểu chạy mô phỏng Có 2 kiểu chạy mô phỏng: Mô phỏng quá độ (transient) và mô phỏng trạng thái ổn định (steady state). Việc lựa chọn loại mô phỏng đặc biệt quan trọng đối với việc phân tích kết quả mô phỏng. Mô phỏng quá độ còn được xem là mô phỏng dừng (terminating) vì mô phỏng này chỉ chạy trong một khoảng thời gian xác định. Thời gian chạy mô phỏng có thể cho trước bởi một biến cố kết thúc đặc biệt hoặc một thời điểm xác định trước. Mô phỏng trạng thái ổn định còn được gọi là mô phỏng không dừng (non-terminating). Mục tiêu của mô phỏng loại này nhằm nghiên cứu đáp ứng trong thời gian dài của hệ thống, vì vậy thời gian chạy mô phỏng trong trường hợp này phải được thiết lập để các điều kiện ban đầu không làm ảnh hưởng đến kết quả mô phỏng. Vấn đề quan trọng là xác định số lần chạy mô phỏng phù hợp. 2.2. Xây dựng mô hình mô phỏng trên máy tính Như đã đề cập ở phần trên, mô hình hệ thống nghiên cứu là sự trừu tượng hóa, hệ thống mô phỏng được xem là hệ thống thực đã được đơn giản hóa, nó chỉ biểu diễn những đặc tính được lựa chọn trong toàn bộ các đặc tính của hệ thống thực. Xây dựng mô hình là quá trình xác định và trừu tượng hóa các thực thể liên quan và quan hệ giữa chúng từ hệ thống khảo sát. Bốn yếu tố quan trọng cần xem xét khi xây dựng mô hình: - Thế nào là một mô hình tốt ? - Làm cách nào để có được một mô hình tốt ? - Một khi mô hình đã được xây dựng và được cài đặt bằng phần mềm thì việc cài đặt cần biểu diễn được, - Công cụ phù hợp cần phải được lựa chọn sao cho đáp ứng tốt qui trình đánh giá. Tìm hiều NS và mô phỏng mạng máy tính 12
- Đề tài NCKH cấp trường T2014-156 2.2.1. Mô hình đáp ứng tốt và mô hình mô phỏng tốt Mô hình đáp ứng tốt (Good Performance Model) có các đặc điểm sau: - Đơn giản (Simplicity): Mô hình càng đơn giản càng tốt. Điều này không có nghĩa là mô hình không chi tiết hóa hoặc không xem xét đến các quan hệ phức tạp. - Tin cậy (Credibility): Kết quả mô phỏng từ mô hình phải đáng tin để có thể thực hiện các quyết định dựa trên kết quả. - Lập tư liệu (Documentation) Mô hình mô phỏng tốt (Good Simulation Model) có các đặc điểm sau: - Tính hiệu quả (Efficiency): So với mô hình đáp ứng tốt loại mô hình này phải được cài đặt một cách hiệu quả, số lần chạy mô phỏng nên ở mức độ trung bình (so với độ phức tạp của nó) và cho phép thực hiện nhiều loại khảo sát. - Được kiểm chứng (Verified): Mô hình phải được kiểm chứng và được kiểm tra bằng nhiều phương pháp. - Chất lượng code (Code Quality): Tùy thuộc vào công cụ mô phỏng đã sử dụng, việc cài đặt cần đảm bảo qui cách viết code, sử dụng hướng đối tượng và tài liệu đầy đủ. - Sẵn sang (Availability): Mô hình phải dễ dàng truy xuất để nhiều nhóm sử dụng có thể kiểm chứng lẫn nhau. Tìm hiều NS và mô phỏng mạng máy tính 13
- Đề tài NCKH cấp trường T2014-156 Chương 3: CÔNG CỤ MÔ PHỎNG NS-3 3.1. Tổng quan Khi mạng của các thiết bị tính toán phát triển ngày càng phức tạp, nhu cầu về các công nghệ mô phỏng với độ chinh xác cao trở nên cần thiết. Trong nhiều năm, công cụ mô phỏng mạng ns-2 đã được sử dụng rộng rãi trong các viện nghiên cứu để mô phỏng các giao thức mạng và các phương thức truyền thông. Rất nhiều báo cáo nghiên cứu báo cáo kết quả mô phỏng bằng ns-2 và hàng trăm mô hình mới đã được viết đóng góp vào thư viện mã của ns-2. Ns-3 có các đặc điểm sau: Ns-3 được thiết kế để cải tiến tính thực tiễn của các mô hình mô phỏng, làm cho các mô hình gần với thực tế hơn khi được cài đặt; Tính sử dụng lại: ns-3 không đơn thuần là một công cụ mô phỏng mới hoàn toàn mà là tổng hợp của nhiều công cụ, kể cả ns-2 (bộ tạo số ngẫu nhiên, một số mô hình mạng không dây và xử lý lỗi, giao thức định tuyến); Dễ dàng tìm lỗi (gỡ rối) do việc lựa chọn ngôn ngữ lập trình tích hợp là C++, Python thay vì chọn ngôn ngữ hướng đối tượng Tcl và C++ như trong ns-2. Việc lựa chọn C++ và Python cho phép tích hợp ns-3 trong các môi trường lập trình dựa trên Python và C++. Hình 3.1: Tổ chức phần mềm của ns-3 Tìm hiều NS và mô phỏng mạng máy tính 14
- Đề tài NCKH cấp trường T2014-156 3.2. Mô hình các thành phần mạng trong ns-3 Cũng tương tự như các công cụ mô phỏng mạng khác, chương trinh mô phỏng ns-3 cũng có mô hình cho tất cả các thành phần tạo nên một hệ thống mạng. Cụ thể như: - Các nút mạng (Network nodes) như máy tính desktop, laptop, router, hub hoặc switch. - Thiết bị mạng đại diện cho thiết bị vật lý kết nối một nút mạng vào đường truyền. Ví dụ như card mạng (NIC) hoặc thiết bị không dây IEEE 802.11. - Kênh truyền (Communication channels): đại diện cho môi trường truyền được sử dụng để truyền thông tin giữa các thiết bị mạng. Đó có thể là đường truyền cáp quang điểm-điểm, kênh truyền chung như Ethernet hoặc phổ mạng không dây sử dụng trong truyền thông vô tuyến. - Giao thức truyền (Communication protocols) - Protocol Headers: Tập hợp các dữ liệu trong gói tin truyền trên mạng - Gói tin (Network packet): đơn vị trao đổi thông tin trên mạng. Mỗi gói tin trên mạng thường bao gồm Protocol Header chứa thông tin phục vụ cho hoạt động của giao thức và Payload chứa dữ liệu thực sự. Ngoài các mô hình cho các thành phần mạng, ns-3 còn định nghĩa các loại đối tượng trợ giúp (helper objects) nhằm trợ giúp việc thực thi và phân tích mô phỏng. Đó là: - Các biến ngẫu nhiên (Random variables) có thể được tạo và lấy mẫu để đưa các giá trị ngẫu nhiên cần thiết vào mô phỏng. Ví dụ đáp ứng của mô hình Web Browser được kiếm soát bởi một số biến ngẫu nhiên đặc tả kích thước đối tượng yêu cầu (request object size), kích thước đối tượng phản hồi (response object size) và số lượng đối tượng trên một trang Web. Ngoài ra còn có một số loại phân phối phổ biến như phân phối đồng nhất, chuẩn, theo hàm mũ, Pareto và Weibull. - (Trace objects): Giúp ghi lại dữ liệu hoạt động trong quá trình thực hiện mô phỏng, để phục vụ cho các giai đoạn phân tích sau. Đối tượng này có thể kết nối đến bất kỳ thành phần mạng và có thể ghi lại thông tin ở nhiều dạng khác nhau. Định dạng phổ biến trong ns-3 là định dạng bắt gói tin (packet capture log) còn gọi là pcap. Các dữ liệu pcap có thể biểu diễn một cách trực quan và phân tích sử dụng các công cụ phân tích như Wireshark. Tìm hiều NS và mô phỏng mạng máy tính 15
- Đề tài NCKH cấp trường T2014-156 - Các đối tượng trợ giúp (Helper Objects): Các đối tượng này được thiết kế để hỗ trợ hoặc che giấu một số chi tiết trong các thao tác khởi tạo và thực thi mô phỏng trong ns-3. Ví dụ PointToPointHelper hỗ trợ tạo một hệ thống mạng point-to- point một cách dễ dàng. - Các thuộc tính (Attributes): được sử dụng để cấu hình hầu hết các mô hình các thành phần mạng bằng một tập giá trị mặc định phù hợp (chằng hạn như khởi tạo giá trị TTL ban đầu khi khởi tạo gói tin IPv4. Các giá trị đó có thể dễ dàng thay đổi hoặc bằng cách gán giá trị mới trên dòng lệnh khi chạy mô phỏng hoặc gọi một hàm API trong các đối tượng giá trị mặc định. 3.3. Mô phỏng mạng trong ns-3 Thư viện mô phỏng ns-3 được phát triển và phân phối hoàn toàn bằng C++. Đề xây dựng một mô phỏng sử dụng ns-3, người sử dụng viết chương trinh chính xây dựng mạng dược mô phỏng và các hoạt động mong muốn cho hệ thống mạng đó. Sau đó chương trình được biên dịch và liên kết với thư viện các mô hình mạng được phân phối trong ns-3. Có 4 bước căn bản cần thực hiện khi viết chương trình mô phỏng bằng C++: Bước 1: Tạo sơ đồ (Topology) mạng. Bước này bao gồm khởi tạo các đối tượng C++ cho các nút mạng, thiết bị mạng, kênh truyền và giao thức được sử dụng trong mô phỏng. Bước 2: Tạo dữ liệu yêu cầu trên mạng. Bước này gồm tạo mô hình mô phỏng các ứng dụng mạng sẽ gửi và nhận thông tin trên mạng, tạo ra các gói tin, nhận và xử lý chúng. Bước 3: Mô phỏng. Thường ở bước này là một vòng lặp lấy các biến cố theo thứ tự thời gian cho đến khi danh sách biến cố rỗng hoặc hết thời gian mô phỏng được ấn định trước. Bước 4: Phân tích kết quả. Thông tin trong các trace files được sử dụng để tính toán hiệu suất sử dụng kênh truyền, kích thước trung bình của hàng đợi, mức độ gói tin bị mất (drop rate) trong hàng đợi. Bằng cách sử dụng tùy chọn định dạng pcap, có thể sử dụng bất kỳ công cụ nào để phân tích dữ liệu pcap. 3.4. Một chương trình ví dụ Chương trình mô phỏng một mạng Point-to-Point gửi một gói tin từ node0 đến node1 Tìm hiều NS và mô phỏng mạng máy tính 16
- Đề tài NCKH cấp trường T2014-156 Chương trình 2.1: Mô phỏng một mạng Point-to-point đơn giản - Dòng 5,6 minh họa việc sử dụng đối tượng trợ giúp NodeContainer: Phương thức Create khởi tạo 2 nút mạng. Trong ví dụ này, cả 2 nút biểu diễn các thiết bị đầu cuối: một thiết bị gửi và một thiết bị nhận. - Dòng 8 – 10 minh họa việc sử dụng PointToPointHelper. Phương thức SetDevice Attribute của đối tượng minh họa việc sử dụng hệ thống thuộc tính và khả năng nạp chồng giá trị mặc định cho các thành phần cấu hình bằng giá trị thực tế dùng cho mô phỏng. Phương thức Install được gọi ở dòng 12 với tham số là đối tượng NodeContainer và trả về một đối tượng NetDeviceContainer mới chứa các thiết bị mạng được tạo ra khi cài đặt mạng điểm-điểm kết nối 2 nút. Tìm hiều NS và mô phỏng mạng máy tính 17
- Đề tài NCKH cấp trường T2014-156 - Dòng 14 – 15 minh họa việc sử dụng InternetStackHelper. Phương thức Install được gọi ở dòng 15 nhằm thêm các đối tượng giao thức gồm ARP, IPv4, UDP và TCP. - Dòng 17 – 20 minh họa việc sử dụng Ipv4AddressHelper. Phương thức SetBase được gọi ở dòng 18 đặc tả địa chỉ mạng và Subnet mask cho các địa chỉ gán (IPv4). Phương thức Assign được gọi ở dòng 20 gán địa chỉ tuần tự cho mỗi thiết bị mạng trong đối tượng chứa devices và trả về một đối tượng mới Ipv4InterfaceContainer chứa tất cả các giao tiếp Ipv4 đã được tạo bởi phép gán địa chỉ. Cần lưu ý trong ns-3, địa chỉ Internet được gán cho các giao tiếp thể hiện (interface instance) ở tầng mạng, không phải gán cho các nút mạng. - Dòng 28 – 35 minh họa một số tính chất khác của đối tượng trợ giúp bao gồm constructor ở dòng 28 khởi tạo địa chỉ đích và địa chỉ cổng cho các dữ liệu phản hồi và Phương thức SetAttribute nạp chồng giá trị thay cho giá trị mặc định. - Ứng dụng Echo Client được cài đặt trên 1 node (node 0 trong đối tượng NodeContainer) và thời gian khởi đầu/kết thúc đặc tả ở dòng 33 – 35. - Cuối cùng, Phương thức Run của Simulator được gọi ở dòng 37 để kích hoạt mô phỏng. Trong ví dụ này, echo client chỉ gửi nhận một gói tin. - Phương thức Destroy được gọi tường minh giải phóng tất cả đối tượng trong ns- 3 và trả lại bộ nhớ đã cấp pháp cho các đối tượng. Câu lệnh này không nhất thiết phải được thực hiện. 3.5. Con trỏ thông minh (Smart Pointer) Tất cả các công cụ mô phỏng mạng viết bằng C++ sử dụng rộng rãi bộ nhớ động bằng các toán tử new và delete. Tuy nhiên, cách sử dụng bộ nhớ như vậy có khả năng dẫn đến memory leak khi lập trình không cần thận. Memory leak đôi khi còn dẫn đến chương trình hoạt động lỗi hoặc kết thúc không mong muốn. Công cụ mô phỏng ns-3 sử dụng con trỏ thông minh để tránh xảy ra tình trạng trên. Với con trỏ thông minh, các mô hình mô phỏng không cần gọi new/delete trực tiếp mà chỉ gọi một phương thức mẫu đặc biệt Create, phương thức này sẽ yêu cầu cấp phát và tăng giá trị một biến đếm tham chiếu tương ứng với vùng nhớ được cấp phát. Mỗi khi con trỏ thông minh được sao chép (ví dụ khi truyền con trỏ cho một hàm bằng trị), biến đếm tham chiếu sẽ được tăng lên cho biết có thêm một biến con trỏ trỏ đến vùng nhớ. Tìm hiều NS và mô phỏng mạng máy tính 18