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

Mục lục I. TỔNG QUAN............................................................................................................2 1. Network Simulation là gì?........................................................................................2 2. Network Simulator là gì?.........................................................................................2 3. NS – 3 Tool..............................................................................................................2 II.

ĐẶT VẤN ĐỀ.........................................................................................................5

III.

Cài đặt ns-3 và mô phỏng OLSR – AODV...........................................................5

1. Cài đặt ns3...............................................................................................................5 2. Xây dựng mô hình mô phỏng OLSR và AODV.......................................................6 IV.

KẾT LUẬN...........................................................................................................15

PHÂN CÔNG CÔNG VIỆC..........................................................................................16

1

  1. TỔNG QUAN 1. Network Simulation là gì? Để nghiên cứu về mạng máy tính, Network Simulation [hay còn gọi là mô phỏng mạng] là một kỹ thuật mà trong đó chương trình phần mềm sẽ mô hình hóa hoạt động của mô hình mạng đó bằng cách tính toán giữa các thực thể khác nhau [routers, switches, nodes, access points, links,…]. Hầu hết các trình giả lập sử dụng mô phỏng sự kiện rời rạc - mô hình hóa các hệ thống trong đó các biến trạng thái thay đổi tại các điểm riêng biệt theo thời gian. Hành vi của mạng và các ứng dụng và dịch vụ khác nhau mà nó hỗ trợ có thể được quan sát trong phòng thí nghiệm thử nghiệm; các thuộc tính khác nhau của môi trường cũng có thể được sửa đổi theo cách được kiểm soát để đánh giá cách thức hoạt động của mạng / giao thức trong các điều kiện khác nhau. 2. Network Simulator là gì? Network Simulator [hay còn gọi là trình mô phỏng mạng] là phần mềm mô phỏng hoạt động của mạng máy tính. Vì mạng truyền thông đã trên nên phức tạp đối với phương pháp phân tích truyền thống để cung cấp thông tin chính xác về hoạt động của hệ thống mạng. Đây là lí do mà Network Simulator được đưa vào sử dụng. Trong các trình mô phỏng, mạng máy tính được mô hình hóa với các thiết bị, ứng dụng, liên kết, v.v và hiệu suất mạng được ghi lại. Bộ mô phỏng mạng hỗ trợ các công nghệ và mạng phổ biến như: 3G, 4G, IoT, WLAN, MANET, Wireless Sensor Network,… . Các trình mô phỏng mạng thương mại thường được điều khiển dạng GUI[ Graphic User Interface]. Ví dụ như: Cisco Packer Tracer. Một số thì được điều khiển dạng CLI[command-line Interface]. Mô hình hay cấu hình mạng được mô tả mạng[Nodes, Routers, Switches, Link,…] và các sự kiện [truyền dữ liệu, gói lỗi,…]. Kết quả đầu ra sẽ bao gồm Level Metric, Link Metric, Device Metric,… . Hơn thế nữa, Network Simulator sẽ ghi lại file log của mỗi packet, mỗi sự kiện để người dùng có thể phân tích được mô hình mạng đó như thế nào. Có một số Network Simulator là mã nguồn mở và miễn phí như: OPNET, Tetcos Netsim, NS2/NS3. 2

3. NS – 3 Tool a. Khái niệm và quá trình phát triển 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. Năm 2006, một nhóm do Tom Henderson, George Riley, Sally Floyd và Sumit Roy dẫn đầu đã nộp đơn xin và nhận tài trợ từ Quỹ khoa học quốc gia Hoa Kỳ [NSF] để xây dựng một thay thế cho ns-2, được gọi là ns-3. Nhóm này đã hợp tác với dự án Planete của INRIA tại Sophia Antipolis, với Mathieu Lacage là người lãnh đạo phần mềm và tạo thành một dự án nguồn mở mới. Trong quá trình phát triển ns-3, người ta đã quyết định từ bỏ hoàn toàn khả năng tương thích ngược với ns-2. Trình giả lập mới sẽ được viết từ đầu, sử dụng ngôn ngữ lập trình C . Sự phát triển của ns-3 bắt đầu vào tháng 7 năm 2006. b. Một số khái niệm: 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ễn 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ả 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, 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. 4. Net Device Trong ns-3, net device là một mô hình dùng mô phỏng cho các card mạng [NIC] mô phỏng cả thông số card và software drivver. Một net device được cài đặt lên một Node để nó có thể truyền thông được với node khác khác trong môi trường mô phỏng thông qua các kênh [Channel]. Ns-3 cung cấp lớp NetDevice với các phương thức để quản lý các kết nối đến các đối tượng Node và Channel; và được thể được đặc tả củ thể hơn bởi nhà phát triển trong khi lập trình. Trong nội dung thực hành, chúng ta sẽ sử dụng nhiều phiên bản khác nhau của NetDevice như CsmaNetDevice, PointToPointNetDevice và WifiNetDevice. Lưu ý: NetDevice nào thì sử dụng Channel tương thích, Ethernet NIC được thiết kế để sử dụng với Ethernet Network, CsmaNetDevice làm việc với CsmaChannel, PointToPointNetDevice thì làm việc với PointToPointChannel và WifiNetDevice tương thích với WifiChannel. 5. Topology Helpers Trong ns-3, chúng ta sẽ thấy Nodes sẽ gắn liền với NetDevices. Trong những mô phỏng mạng lớn, chúng ta cần sắp đặt rất nhiều connections giữa các Nodes, NetDevices và Channels. Khi kết nối NetDevice với Nodes, NetDevices với Channels, gán địa chỉ IP, v.v.., là một trong những tác vụ phổ biến trong ns-3, topology helpers được cung câp1 để đơn giản hóa các công việc trên. Ví dụ, chúng ta có thể mất nhiều thao tác ns-3 cơ bản như vừa nêu để tạo một NetDevice , thêm một MAC address, cài đặt net device lên node, cấu hình các tầng giao thức rồi kết nối NetDevice tới một Channel. Và còn cần nhiều thời gian hơn để kết nối những thiết bị này tới nhiều điểm hoặc kết nối các mạng này lại với nhau, hoặc tạo thành một 4

internetwork. Ns-3 cung cấp các lớp topology helper như NodeContainer, NetDeviceContainer, PointToPointHelper hay InternetStackHelper giúp thực hiện các tác vụ trên một cách nhanh chóng và tiện lợi hơn. II.ĐẶT VẤN ĐỀ Để có thể tìm hiểu về giao thức định tuyến Optimized Link State Routing [OLSR] và Ad hoc On-Demand Distance Vector [AODV] sử dụng trong Mobile Ad-hoc Network [MANET]. Vấn đề được đưa ra ở đây, giao thức OLSR và AODV: - Hoạt động như thế nào? - Cài đặt hai giao thức này trên ns-3 như thế nào? - Giữa hai giao thức này, giao thức nào sẽ hoạt động hiệu quả hơn? Kịch bản cho hai giao thức: Trong mô hình sẽ có tổng cộng 4 node, node0 và node1 sẽ đứng cố định một chỗ. Ban đầu node3 nằm trong vùng truyền thông của node0 và node1 [phạm vi giữa 2 node tối đa 250m], trong khi node2 sẽ nằm ngoài vùng truyền thông này. Sau đó, node2 và node3 sẽ di chuyển lần lược với các vận tốc 8 m/s và 15 m/s theo 2 hướng node2 đi về bên phải vào vùng truyền thông giữa node0 và node1, trong khi đó node3 đi về phía trên ra khỏi vùng truyền thông giữa node0 và node1 Trên node1 sẽ được cài đặt một UDP Sink Application, node0 được cài đặt một UDP sender liên tục gửi các packet đến địa chỉ IP của node1. Thực nghiệm và quan sát quá trình tái định tuyến khi node3 ra khỏi vùng truyền thông node0 và node1, và node2 đi vào vùng này của giao thức định tuyến AODV để thiết lập một kênh truyền Mobile Ad-hoc Network [MANET] giữa node0 và node1, từ đó tái thiết lập kết nối UDP giữa node0 và node1. III. Cài đặt ns-3 và mô phỏng OLSR – AODV 1. Cài đặt ns3 A.Yêu cầu: Cài đặt máy ảo Ubuntu 14.04 trong VMware B. Cài các gói thư viện: $ sudo apt-get update $ sudo apt-get install python-pip python-setuptools python-pip libxml2 $ sudo apt-get install gtk+2.0 qt4-dev-tools $ sudo apt-get install graphviz libgraphviz-dev pkg-config

5

$ sudo apt-get install python-dev python-pygraphviz graphviz-dev python-kiwi python-pygoocanvas python-gnome2 python-gnome2-dev python-rsvg C. Install PygraphViz: Download Links: //pypi.org/project/pygraphviz/

files Giải nén file zip đã tải về: pygraphviz-1.5.zip $ cd pygraphviz-1.3.1 $ sudo python setup.py 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 D.Build NS-3 Download link: //www.nsnam.org/release/ns-allinone-3.25.tar.bz2 Kiểm tra các gói thư viện đã được cài đặt đầy đủ và configure $ tar xjvf ns-allinone-3.25.tar.bz2 $ cd ns-allinone-3.25/ns-3.25 $ ./waf --enable-sudo --build-profile=debug --enable-examples --enable-tests configure $ ./waf clean $ cd ../ Cài đặt $ ./build.py 2. Xây dựng mô hình mô phỏng OLSR và AODV A. Xây dựng mô hình mô phỏng OLSR Olsr.cc  Khai báo thư viện

include "ns3/core-module.h"

include "ns3/network-module.h"

include "ns3/internet-module.h"

include "ns3/applications-module.h" 6

include "ns3/mobility-module.h"

include "ns3/wifi-module.h"

include "ns3/olsr-module.h"

include "ns3/flow-monitor-module.h"

include "ns3/mobility-module.h"

include "myapp.h"  Chuẩn bị mô hình di chuyển cho các node Ptr Ptr cvmm3;

 Tạo

kênh

kết

nối

wifi

[YansWifiChannel

cvmm2;

trong

ns-3]

WifiHelper wifi; YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default []; wifiPhy.SetPcapDataLinkType[YansWifiPhyHelper::DLT_IEEE802_ 11];  Cài đặt thông số về công suất truyền để khoảng cách truyền tối đa là 250m wifiPhy.Set ["TxPowerStart", DoubleValue[33]]; wifiPhy.Set ["TxPowerEnd", DoubleValue[33]]; wifiPhy.Set ["TxPowerLevels", UintegerValue[1]]; wifiPhy.Set ["TxGain", DoubleValue[0]]; wifiPhy.Set ["RxGain", DoubleValue[0]]; wifiPhy.Set ["EnergyDetectionThreshold",DoubleValue[-1.8]]; wifiPhy.Set ["CcaMode1Threshold", DoubleValue[-64.8]];  Cấu hình chế độ ad-hoc cho kênh truyền cài đặt lên các NetDevices NqosWifiMacHelper wifiMac wifiMac.SetType // Set wifi.SetStandard

\=

NetDeviceContainer devices = wifi.Install [wifiPhy, wifiMac, c];

NqosWifiMacHelper::Default []; ["ns3::AdhocWifiMac"]; 802.11b standard [WIFI_PHY_STANDARD_80211b]; devices; 7

 Cấu hình OSLR sử dụng trong quá trình truyền thông // Khởi OlsrHelper Ipv4ListRoutingHelper list.Add // Cài đặt OLSR cho InternetStackHelper internet.SetRoutingHelper internet.Install [c];

tạo [olsr, các node

protocol

trong

list olsr; list; 10]; nodeContainer “c” internet; [list];

 Các IP address cho các netDevices thuộc các nodes Ipv4AddressHelper NS_LOG_INFO ["Assign IP ipv4.SetBase ["10.1.1.0", Ipv4InterfaceContainer ifcont = ipv4.Assign [devices];

ipv4; Addresses."]; "255.255.255.0"];

 Các bước cài đặt UDP Sink app và UDP Sender Ptr app = CreateObject []; app->Setup [ns3UdpSocket, sinkAddress, 1040, 100000, DataRate ["250Kbps"]]; //Ptr app1 = CreateObject []; //app1->Setup [ns3UdpSocket, sinkAddress, 2000, 100000, DataRate ["1000Kbps"]];

c.Get [0]->AddApplication [app]; //c.Get [0]->AddApplication [app1];

//app1->SetStartTime [Seconds [10.]]; 8

//app1->SetStopTime [Seconds [40.]];

app->SetStartTime [Seconds [1.]]; app->SetStopTime [Seconds [40.]];  Cài đặt vị trí cho các node MobilityHelper Ptr positionAlloc []; positionAlloc ->Add[Vector[0, 0, positionAlloc ->Add[Vector[300, 0, positionAlloc ->Add[Vector[0, 110, positionAlloc ->Add[Vector[600, -150, mobility.SetPositionAllocator[positionAlloc]

\= 0]]; 0]]; 0]]; 0]];

mobility; CreateObject // // // //

node0 node1 node2 node3

 Cài đặt tốc độ và hướng di chuyển cho các node // Vận tốc theo trục x cho node2 và node3 Vector vel2 [10, 0, 0]; Vector vel3 [-20, 0, 0]; Ptr mover2 = c.Get[2]; Ptr mover3 = c.Get[3]; mobility.SetMobilityModel["ns3::ConstantVelocityMobilityMod el"]; mobility.Install[c]; cvmm2 = mover2->GetObject[]; cvmm2->SetVelocity[vel2]; cvmm3 = mover3->GetObject[]; cvmm3->SetVelocity[vel3];  Ghi lại file PCAP để phân tích

wifiPhy.EnablePcap ["lab3-3-olsr-dev0", devices.Get[0]]; wifiPhy.EnablePcap ["lab3-3-olsr-dev1", devices.Get[1]];

9

wifiPhy.EnablePcap ["lab3-3-olsr-dev2", devices.Get[2]]; wifiPhy.EnablePcap ["lab3-3-olsr-dev3", devices.Get[3]]; B. Xây dựng mô hình mô phỏng AODV Với phần xây dựng mô hình mô phỏng AODV, chỉ khác ở phần cài đặt giao thức AODV. aodv.cc AodvHelper Ipv4ListRoutingHelper list.Add // Cài đặt AODV cho InternetStackHelper internet.SetRoutingHelper internet.Install [c];

[aodv, các node

trong

aodv; list; 10]; nodeContainer “c” internet; [list];

  1. Chạy mô phỏng Trước khi chạy, thêm vào thư mục Download/ ns-allinone-3.25/ns-3.25/scratch và thêm thư mục myapp.h

    include "ns3/applications-module.h"

    include "ns3/core-module.h" using namespace ns3; class MyApp : public Application { public: MyApp []; virtual ~MyApp[]; void Setup [Ptr socket, Address address, uint32_t packetSize, uint32_t nPackets, DataRate dataRate]; private: virtual void StartApplication [void]; virtual void StopApplication [void]; 10

void ScheduleTx [void]; void SendPacket [void]; Ptr m_socket; Address m_peer; uint32_t m_packetSize; uint32_t m_nPackets; DataRate m_dataRate; EventId m_sendEvent; bool m_running; uint32_t m_packetsSent; }; MyApp::MyApp [] : m_socket [0], m_peer [], m_packetSize [0], m_nPackets [0], m_dataRate [0], m_sendEvent [], m_running [false], m_packetsSent [0] { } MyApp::~MyApp[] { m_socket = 0; } void MyApp::Setup [Ptr socket, Address address, uint32_t packetSize, uint32_t nPackets, DataRate dataRate] { m_socket = socket; m_peer = address; m_packetSize = packetSize; m_nPackets = nPackets; m_dataRate = dataRate; } void 11

MyApp::StartApplication [void] { m_running = true; m_packetsSent = 0; m_socket->Bind []; m_socket->Connect [m_peer]; SendPacket []; } void MyApp::StopApplication [void] { m_running = false; if [m_sendEvent.IsRunning []] { Simulator::Cancel [m_sendEvent]; } if [m_socket] { m_socket->Close []; } } void MyApp::SendPacket [void] { Ptr packet = Create [m_packetSize]; m_socket->Send [packet]; if [++m_packetsSent < m_nPackets] { ScheduleTx []; } } void MyApp::ScheduleTx [void] { if [m_running] { Time tNext [Seconds [m_packetSize * 8 / static_cast 12

[m_dataRate.GetBitRate []]]]; m_sendEvent &MyApp::SendPacket, this]; }

\=

Simulator::Schedule

[tNext,

} $Download/ Download/ ns-allinone-3.25/ns-3.25 ./waf --run scratch/olsr.cc --vis $ Download/ Download/ ns-allinone-3.25/ns-3.25 ./waf --run scratch/aodv.cc --vis

  1. So sánh thời gian mất cho việc tái định tuyến của 2 giao thức AODV và OLSR từ sau giây thứ 10.

Thời gian định tuyến lại của aodv nhanh hơn so với olsr. Aodv mất 14s.

13

Olsr mất 20s:

Do Giao thức aodv trong lúc node nguồn gửi gói request đã hình thành nhiều đường dẫn đến đích, chỉ cần hình thành đường dãn một chiều đến đích là có thể gửi gói tin. Trong khi đó giao thức olsr pháie mất thời gian hình thành đường dẫn 2 chiều ở các node. Khi có lỗi xảy ra một node trong giao thức aodv sẽ thông báo tới nguồn để khởi tạo lại đường đi mới. Còn olsr phải đi hình thành lại đường dãn 2 chiều giữa các node. IV.

KẾT LUẬN

Network Simulation là một kỹ thuật có lợi ích lớn trong việc nghiên cứu và tìm hiểu hoạt động của mạng về các giao thức, hoạt động,… giữa các Nodes, Routes, Switches, Links,… . Thay vì chúng ta phải làm những device thực tế gây ra sự tốn kém để có thể tính toán được, Network Simulation là một sự lựa chọn tốt để nghiên cứu. Ngoài ra, Network Simulation còn có thể thực hiện những công nghệ khác như: WLAN, UDP, TCP,…

PHÂN CÔNG CÔNG VIỆC MSSV 1752127 6

Họ và Tên Hoàng Gia Vương

Công việc - Chuẩn bị môi trường - Xây dựng kịch bản 14

1752127 1 1752118 4

Mai Hoàng Vũ Nguyễn Đang Trường

- Làm PowerPoint, Báo cáo - Build OLSR, phân tích PCAP OLSR - Build AODV, phân tích AODV - Quay và chỉnh sửa video

Chủ Đề