TiiL Tutorials
@TinhocTiiL

NS3 – Bài 2- Trực quan hóa mô phỏng với NetAnim

NetAnim là một công cụ  offline network animator được gói cùng trong các bản ns-allinone-3.xx .

Nó có thể animate mô phỏng mạng ns-3 qua việc sử dụng XML trace file output được tạo trong quá trình mô phỏng.

Do vậy, các bước cần thiết cho việc tạo XML trace file và setting các attributes liên quan CẦN ĐƯỢC viết trong script code mô phỏng ns-3.

Trong ví dụ sau đây, Tôi sẽ mở rộng simulation script ở Bài 1 https://tinhoc123.edu.vn/ns3/ns3-bai-1-xay-dung-mo-phong-don-gian/

SimpleNS3Simulation2.cc

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/internet-module.h"
#include "ns3/applications-module.h"
// ---- header Them so voi Bai 1
#include "ns3/mobility-module.h"
#include "ns3/netanim-module.h"
// --- het phan them header
using namespace ns3;
int main (int argc, char *argv[])
{
	NodeContainer nodes;
	nodes.Create (2);

	PointToPointHelper channel;
	channel.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
	channel.SetChannelAttribute ("Delay", StringValue ("2ms"));

	NetDeviceContainer netDevices;
	netDevices = channel.Install (nodes);

	InternetStackHelper ipStack;
	ipStack.Install (nodes);

	Ipv4AddressHelper ipAddresses;
	ipAddresses.SetBase ("192.168.1.0", "255.255.255.0");

	Ipv4InterfaceContainer ipinterfaces = ipAddresses.Assign (netDevices);

	UdpEchoServerHelper udpEchoServer (9);

	ApplicationContainer serverApps = udpEchoServer.Install (nodes.Get (1));
	serverApps.Start (Seconds (1.0));

	UdpEchoClientHelper udpEchoClient (ipinterfaces.GetAddress (1), 9);

	ApplicationContainer clientApps = udpEchoClient.Install (nodes.Get (0));
	clientApps.Start (Seconds (2.0));

        //Mo rong them so voi Bai 1
		MobilityHelper mobility;

		mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
			    "MinX", DoubleValue (0.0), "MinY", DoubleValue (0.0),"DeltaX", DoubleValue (5.0), "DeltaY", DoubleValue (10.0),
			     "GridWidth", UintegerValue (5), "LayoutType", StringValue ("RowFirst"));

		mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
		mobility.Install (nodes);

		AnimationInterface anim ("SimpleNS3Simulation_NetAnimationOutput.xml");
		anim.SetConstantPosition (nodes.Get(0), 0, 5);
		anim.SetConstantPosition (nodes.Get(1), 10, 5);
        //--------- het phan mo rong them 
	Simulator::Run ();
}

Phần header, Tôi đã thêm 2 dòng lệnh nhằm mục tiêu khai báo sử dụng thư viện/module cần thiết

#include “ns3/mobility-module.h”
#include “ns3/netanim-module.h”

Và code khai thác các module,  trong đó có việc tạo file XML file output cho việc trực quan hóa lại mô phỏng sử dụng công cụ NetAnim.

MobilityHelper mobility;

mobility.SetPositionAllocator (“ns3::GridPositionAllocator”,
“MinX”, DoubleValue (0.0), “MinY”, DoubleValue (0.0),”DeltaX”, DoubleValue (5.0), “DeltaY”, DoubleValue (10.0),
“GridWidth”, UintegerValue (5), “LayoutType”, StringValue (“RowFirst”));

mobility.SetMobilityModel (“ns3::ConstantPositionMobilityModel”);
mobility.Install (nodes);

AnimationInterface anim (“SimpleNS3Simulation_NetAnimationOutput.xml“);
anim.SetConstantPosition (nodes.Get(0), 0, 5);
anim.SetConstantPosition (nodes.Get(1), 10, 5);

Mặc dù vậy, sẽ không có bất kỳ tính di động nào trong kịch bản mạng có dây này, một mô hình di động nên được gắn vào các nút để hiển thị các nút tại các vị trí thích hợp.

Chạy mô phỏng NS3

$ ./waf –run SimpleNS3Simulation2

Kết thúc mô phỏng, ta sẽ được tệp SimpleNS3Simulation_NetAnimationOutput.xml, nằm tại thư mục gốc NS3-xx

Chạy trực quan hóa lại mô phỏng với NetAnim

NetAnim là ứng dụng đặt tại ns-allinone-3.xx/netanim-3.yyy

— Do vậy, để chạy ứng dụng này, nếu chưa set path, ta sử dụng các bước như sau  (phần màu tím)

thomc@thomc-EliteBook:~/ns-allinone-3.35$ ./netanim-3.108/NetAnim
Màn hình trực quan hiện lên, sử dụng tính năng mở file để mở file XML đã tạo ra trước đó

Kết quả sau khi load file

đúp chuột lên nút sẽ hiện các properties của node đó

Tạm kết:

– Người học tự khám phá các tính năng của ứng dụng NetAnim

Avatar
https://khoacntt.ntu.edu.vn/giang-vien/mai-cuong-tho

một GV Đại học. TiiL đã phụ trách một số môn học như: Lập trình Java, Phát triển web với Java, Lập trình thiết bị di động, Lập trình hệ thống nhúng và IoT.

Comments are closed.