Tìm hiểu ns ứng dụng mô phỏng mạng máy tính

pdf 6 trang phuongnguyen 3431
Bạn đang xem tài liệu "Tìm hiểu ns ứng dụng mô phỏng mạng máy tính", để 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:

  • pdftim_hieu_ns_ung_dung_mo_phong_mang_may_tinh.pdf

Nội dung text: Tìm hiểu ns ứng dụng mô phỏng mạng máy tính

  1. TÌM HIỂU NS ỨNG DỤNG MÔ PHỎNG MẠNG MÁY TÍNH A Study on Network Simulator and Application to Computer Network Simulation Nguyễn Đăng Quang Khoa Đào tạo Chất lượng cao TÓM TẮT 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. Các công cụ mô phỏng mạng cho phép mô hình hóa một hệ thống mạng bằng cách đặc tả tham số, đáp ứng của các nút mạng và kênh truyền; cung cấp một môi trường ảo để thử nghiệm các điều kiện và thực thi mạng trong các tình huống đặc biệt ở các điều kiện khác nhau. Được viết lại từ đầu bằng C++, thư viện mô hình của NS-3 là sự trừu tượng hóa ở mức cao của các thành phần mạng và có thể được ứng dụng để mô phỏng đa dạng các hệ thống và giao thức mạng. Bài báo trình bày những vấn đề cơ bản trong tổ chức phần mềm của NS-3 và kết quả mô phỏng các sơ đồ mạng đơn giản như Point-To-Point, CSMA, Wired/Wireless LAN, UDP Echo. Từ khóa: NS-3, Mô phỏng mạng ABSTRACT Simulation is undoubtedly one of the most prevalent evaluation methodologies in the area of computer networks. The network simulators allow one to model an arbitrary computer network by specifying both the behavior of the network nodes and the communication channels. It provides a virtual environment for an assortment of desirable features such as modeling a network based on a specific criteria and analyzing its performance under different scenarios. NS-3 is implemented in C++, NS-3 Network library model is a high-level abstraction of networking components and can be used to simulate various types of network topologies and protocols. The primary purpose of this paper is to review NS-3 software organization and simulation results of simple topologies including Point-to-Point links, CSMA Ethernet, Wired/Wireless LAN and UDP Packets. Keywords: NS-3, Network simulator I. GIỚI THIỆU 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 trong nhiều trường hợp như mô phỏng biến cố rời
  2. 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. 1. Mô phỏng biến cố rời rạc 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 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ể đó. 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. 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 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: Nguyên lý mô phỏng biến cố rời rạc. - 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ố,
  3. - Các Bộ đếm (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, - 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. 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 ≤ ≤ 푡 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: - Biến cố kết thúc, - Sau một khoảng thời gian mô phỏng xác định, - Cho đến khi fel trống (không còn biến cố nào). II. CÔNG CỤ MÔ PHỎNG MẠNG NS-3 1. Tổng quan NS-3 là một công cụ mô phỏng mạng biến cố rời rạc được viết bằng C++, script mô phỏng có thể viết bằng C++ hoặc Python. NS-3 cho phép mô phỏng các giao thức Internet và những hệ thống mạng có qui mô lớn. NS-3 hoàn toàn miễn phí, mục tiêu hướng đến là sinh viên, nghiên cứu viên hoặc giảng viên các trường Đại học. 2. Lịch sử phát triển Lịch sử phát triển của ns-3 được minh họa như hình 2 Hình 2: Lịch sử phát triển ns-3 3. Kiến trúc phần mềm của NS-3
  4. Hình 3: Kiến trúc phần mềm của NS-3 Về kiến trúc, NS-3 là một công cụ mô phỏng biến cố rời rạc trong đó nhân mô phỏng và các mô hình được cài đặt bằng C++. NS-3 được cung cấp như một thư viện có thể liên kết tĩnh hoặc động vào một chương trình mô phỏng viết bằng C++ . NS-3 cũng export toàn bộ API sang Python, cho phép các chương trình Python import các module của NS-3 giống như trong C++. 4. Đặc điểm của NS-3 - Viết bằng C++, script mô phỏng có thể viết bằng C++ hoặc cho phép tùy chọn script mô phỏng bằng Python. Các mẫu thiết kế trong C++ như con trỏ thông minh (smart pointers), mẫu (templates), callbacks và copy-on-write được nâng cấp. - Gần với thực tế hơn: Các nút mạng được thiết kế gần như các máy tính thực, bao gồm những thành phần như thiết bị mạng, socket, hỗ trợ nhiều NIC trên một node, sử dụng nhiều địa chỉ IP - Cơ chế lưu kết quả mô phỏng lên các Trace file cho phép phân tích kết quả mô phỏng bằng các công cụ phân tích có sẵn. 5. Các khái niệm cơ bản trong NS-3 Các đối tượng chinh trong NS-3 là Node, Packet và Channel. Node gồm Application, Protocol Stack và Net Devices như trình bày ở hình 3 Hình 3: Các thành phần cơ bản trong NS-3
  5. Node: Đại diện cho một máy tính, được trừu tượng hóa thành Node class Application: Bộ thu/phát gói tin (packet) chạy trên một Node và trao đổi thông qua các Protocol Stack, được trừu tượng hóa thành class Application. NetDevice: Đại diện cho NIC gắn trên một Node. Node liên lạc với các Node khác qua kênh truyền (Channel). Mỗi Node có thể kết nối với nhiều Channel thông qua nhiều NetDevice. Đối tượng này được trừu tượng hóa thành class NetDevice. Channel: Kết nối vật lý giữa các đối tượng NetDevice. Đối tượng này được trừu tượng hóa thành class Channel. Packet: Mỗi gói tin trên mạng gồm 1 byte buffer, 1 danh sách các thẻ (tags) và metadata. Socket: Giao tiếp giữa ứng dụng và Network stack. Containers & Helpers: Một số container class: NodeContainer, NetDeviceContainer, Ipv4AddressContainer và Một số Helpers class: InternetStackHelper, WifiHelper, MobilityHelper, OlsrHelper 6. Chương trình mô phỏng trên NS-3: Chương trình mô phỏng trên NS-3 gồm nhiều phần: bắt đầu bằng định nghĩa sơ đồ mạng (Topology), tiếp theo là định nghĩa mô hình (models), thiết lập tham số cho mô hình, cuối cùng là thực thi. Hình 4: Chương trình mô phỏng NS-3 III. MỘT VÍ DỤ MÔ PHỎNG Tác giả đã thực hiện một số mô phỏng trên các mô hình đơn giản như mô hình Point-To-Point Link, CSMA Ethernet, Wired/Wireless LAN và Udp Echo. Trong giới hạn của bài báo này chỉ minh họa mã nguồn script mô phỏng mô hình Point-To-Point Link #include "ns3/core-module.h" #include "ns3/network-module.h" #include "ns3/internet-module.h" #include "ns3/point-to-point-module.h" #include "ns3/applications-module.h" using namespace ns3; NS_LOG_COMPONENT_DEFINE ("FirstScriptExample"); Int main (int argc, char *argv[]) { Time::SetResolution (Time::NS);
  6. LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO); NodeContainer nodes; nodes.Create (2); PointToPointHelper pointToPoint; pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms")); NetDeviceContainer devices; devices = pointToPoint.Install (nodes); InternetStackHelper stack; stack.Install (nodes); Ipv4AddressHelper address; address.SetBase ("10.1.1.0", "255.255.255.0"); Ipv4InterfaceContainer interfaces = address.Assign (devices); UdpEchoServerHelper echoServer (9); ApplicationContainer serverApps = echoServer.Install (nodes.Get (1)); serverApps.Start (Seconds (1.0)); serverApps.Stop (Seconds (10.0)); UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9); echoClient.SetAttribute ("MaxPackets", UintegerValue (1)); echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0))); echoClient.SetAttribute ("PacketSize", UintegerValue (1024)); ApplicationContainer clientApps = echoClient.Install (nodes.Get (0)); clientApps.Start (Seconds (2.0)); clientApps.Stop (Seconds (10.0)); Simulator::Run (); Simulator::Destroy (); return 0; } VI. KẾT LUẬN Đề tài đã hoàn thành được mục tiêu đề ra ban đầu. Những nội dung đã thực hiện được: Tìm hiểu lý thuyết mô phỏng biến cố rời rạc, Hệ thống phần mềm NS-3, Thư viện mô hình mạng trong NS-3, Viết các script mô phỏng một số mô hình đơn giản như Point-To-Point link, Mạng Ethernet, Mạng không dây sử dụng Access Point bằng C++ và Python, Phân tích kết quả mô phỏng từ PCAP Trace file bằng tcpdump hoặc Wireshark. TÀI LIỆU THAM KHẢO [1] Klaus Wehrle, Mesut Güne, James Gross , Modeling and Tools for Network Simulation, Springer ISBN 978-3-642-12330-6 [2] [3] [4]