Hướng dẫn cách nối dây trong g ns3

Ghi chú: định dạng file bài nộp __BTn hoặc .zip nếu có yêu cầu chỉnh sửa source VD: NguyenVanA_13020010_BT1

I. Giới thiệu ns-3 Simulator

Ns-3 simulator là một chương trình mô phỏng mã nguồn mở, hỗ trợ mô phỏng các sự kiện truyền thông rời rạc [ discrete event simulation ] của nhiều giao thức mạng khác nhau như WLAN, AODV, OSLR, ..... Ns-3 được viết bằng ngôn ngữ C++ , tuy nhiên người sử dụng chỉ cần nắm ngôn ngữ C++ ở mức cơ bản để có thể hiểu và xây dựng các kịch bản mô phỏng mong muốn.

Một số khái niệm cần quan tâm trong ns-3:

  1. Node Trong ns-3, chúng ta sử dụng một khái niệm chung thường được sử dụng bởi các trình mô phỏng mạng khác là node để biểu diễn cho một thiết bị tính toán cơ bản. Khái niệm được biểu diễn bằng lớp Node của ngôn ngữ C++ trong ns-3. C thể xem môt Node như một máy tính mà chúng ta có thể thêm các chức năng cho nó bằng việc cài thêm ứng dụng dụng mạng, thêm các tầng giao thức, gắn thêm các card wifi, Bluetooth với các driver tương thích.
  2. Application Trong ns-3, chúng ta không cần quan tâm đến các node sử dụng hệ điều hành gì hoặc cấu trúc lệnh hệ thống để lập trình mô phỏng giao thức mạng mà mình mong muốn. Tuy nhiên, trong ns-3, vẫn tồn tại khái niệm Application được biểu diễu với lớp cùng tên trong C++. Lớp này cung cấp các phương thức để hỗ trợ xây dựng được những tính năng mô phỏng ở tầng ứng dụng mong muốn [Vd: FTP, HTTP,...]. Các nhà phát triển có thể mở rộng lớp Application để tạo ra ứng dụng cụ thể hơn phục vụ cho việc giải lập.
  3. Channel Trong thực tế, để kết nối một máy tính vào mạng, thông thường dữ liệu truyền dẫn qua mạng thông qua một kênh truyền – Channel. Ví dụ khi chúng ta kết nối cáp Ethernet vào ổ cắm trên tường, chúng ta đang kết nối vào một kênh giao tiếp Ethernet. Trong trình mô phỏng ns-3, chúng ta sẽ kết nối Node tới một đối tượng biểu diễn cho kênh truyền – Channel. Lớp Channel cung cấp phương thức để quản lý, lập trình những cách thức truyền thông thông giữa các Nodes. Những lớp Channel cụ thể có thể đặc tả được những mô hình phức tạp như Ethernet Switch, hoặc môi trường truyền dẫn mạng không dây trong thực thế [không gian 3 chiều].

Một số lớp thông dụng mô tả các kênh truyền thông trong thực tế như CsmaChannel, PointToPointChannel và WifiChannel. Ví dụ CsmaChannel, mô hình một phiên bản của môi trường mạng không dây mà chúng ta có thể can thiệp vào điều chỉnh các thông số liên quan đến tính năng Carrier Sense Multiple Access /Collision Avoidance phục vụ cho mô phỏng.

Net Device

Application

Net Device

Application

Net Device

Application

Node Node

Node

Channel

Protocol Stack

Protocol Stack

Protocol Stack

Packet Flow

II. Cài đặt NS- 1. Yêu cầu: Cài đặt máy ảo Ubuntu 14 trong VMware 2. Cài các gói thư viện: $ sudo apt-get update $ sudo apt-get install python-pip python-setuptools python-pip libxml $ sudo apt-get install gtk+2 qt4-dev-tools $ sudo apt-get install graphviz libgraphviz-dev pkg-config $ sudo apt-get install python-dev python-pygraphviz graphviz-dev python-kiwi python-pygoocanvas python-gnome2 python-gnome2-dev python-rsvg 3. Install PygraphViz: Download Links: pypi.python/pypi/pygraphviz $ tar zxvf pygraphviz-1.3.1.tar $ cd pygraphviz-1. $ sudo python setup install library-path=/usr/lib/graphviz Hoặc sử dụng Pip $ sudo pip uninstall pygraphviz $ pkg-config --libs-only-L libcgraph $ pkg-config --cflags-only-I libcgraph $ pip install pygraphviz --install-option="--include-path=/usr/include/graphviz" install-option="--library-path=/usr/lib/graphviz/" Kiểm tra pygraphviz đã dc install $ python $ >> import pygraphviz as pgv

  1. Build NS- Download link: nsnam/release/ns-allinone-3.25.tar.bz Kiểm tra các gói thư viện đã được cài đặt đầy đủ và configure $ tar xjvf ns-allinone-3.25.tar $ cd ns-allinone-3/ns-3. $ ./waf clean $ ./waf – enable-sudo --build-profile=debug --enable-examples --enable-tests configure $ cd ../ Cài đặt $ ./build
  2. Hướng dẫn compile và chạy một kịch bản mẫu Để compile script các bạn cần copy đoạn script vào thư mục ns-3/scratch. Ví dụ muốn compile đoạn script first trong thư mục ns-3.25/examples/tutorial/first

$ cd ns-3.

$ cp examples/tutorial/first scratch/myfirst

$ ./waf Output [614/708] cxx: scratch/myfirst -> build/debug/scratch/myfirst_3 [706/708] cxx_link: build/debug/scratch/myfirst_3 -> build/debug/scratch/myfirst Waf: Leaving directory `/home/lxc/Downloads/ns-allinone-3/ns- 3/build' 'build' finished successfully [2] Chạy đoạn kịch bản vừa compile

$ ./waf --run scratch/myfirst Output

Ghi chú: NodeContainer cho phép chúng ta tạo một tập các Node để chúng ta có thể cài đặt Channel, Protocol Stack và Application lên các node một cách nhanh chóng.

  1. Cài Ipv4 Stack lên các node để chạy ứng dụng UDP, Cài đặt một UdpClient trên Node và UdpServer [server1] trên Node2. Cài đặt cho đường truyền có một dataRate cố định Rate1. // Install Internet Stack InternetStackHelper internet; internet [n]; Ipv4AddressHelper ipv4; //... // Tạo UdpServer trên 2 port 8000 UdpServerHelper server1 [8000]; // Dùng ApplicationContainer để cài đặt server vừa tạo lên Node trong mô hình topology phía trên ApplicationContainer apps; apps = server2 [n [2]];

Start ứng dụng client, đo lưu lượng end-to-end trong khi thay đổi độ trễ của đường truyền. // Compile source code Ns-3$./waf cp lab1 scratch/lab1 Ns-3$./waf // Chạy mô phỏng Ns-3$./waf – run scratch/lab1 – -vis --Vis để hiển thị visualization.

Chủ Đề