Performance analysis of throughput and delay in a multi-hop point-to-point networks | NS3 Project 10
Performance analysis of throughput and delay in a multi-hop point-to-point network
Code:
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"
#include "ns3/netanim-module.h"
#include "ns3/flow-monitor-module.h"
using namespace ns3;
uint32_t nNodes = 10;
Config::SetDefault("ns3::OnOffApplication::PacketSize", StringValue("1024"));
Config::SetDefault("ns3::OnOffApplication::DataRate", StringValue("2Mbps"));
NodeContainer nodes;
nodes.Create(nNodes);
PointToPointHelper p2p;
p2p.SetDeviceAttribute("DataRate", StringValue("5Mbps"));
p2p.SetChannelAttribute("Delay", StringValue("2ms"));
InternetStackHelper stack;
stack.Install(nodes);
Ipv4AddressHelper address;
for (uint32_t i = 0; i < nNodes - 1; ++i) {
NodeContainer linkNodes = NodeContainer(nodes.Get(i), nodes.Get(i + 1));
NetDeviceContainer linkDevices = p2p.Install(linkNodes);
std::stringstream subnet;
address.SetBase(subnet.str().c_str(), "255.255.255.0");
address.Assign(linkDevices);
}
Ipv4GlobalRoutingHelper::PopulateRoutingTables();
// Application: Source at Node 0, Sink at Node 9
uint16_t port = 9;
Address sinkAddress(InetSocketAddress(Ipv4Address("10.1.9.2"), port));
PacketSinkHelper packetSinkHelper("ns3::UdpSocketFactory", sinkAddress);
ApplicationContainer sinkApps = packetSinkHelper.Install(nodes.Get(nNodes - 1));
sinkApps.Start(Seconds(1.0));
sinkApps.Stop(Seconds(10.0));
OnOffHelper onoff("ns3::UdpSocketFactory", sinkAddress);
onoff.SetAttribute("OnTime", StringValue("ns3::ConstantRandomVariable[Constant=1]"));
onoff.SetAttribute("OffTime", StringValue("ns3::ConstantRandomVariable[Constant=0]"));
ApplicationContainer sourceApps = onoff.Install(nodes.Get(0));
sourceApps.Start(Seconds(2.0));
sourceApps.Stop(Seconds(10.0));
// NetAnim
AnimationInterface anim("chain_lab.xml");
for (uint32_t i = 0; i < nNodes; ++i) {
anim.SetConstantPosition(nodes.Get(i), i * 10, 20);
}
// FlowMonitor
Ptr<FlowMonitor> monitor;
FlowMonitorHelper flowmon;
monitor = flowmon.InstallAll();
Simulator::Stop(Seconds(11.0));
Simulator::Run();
monitor->SerializeToXmlFile("chain_results.xml", true, true);
Simulator::Destroy();
return 0;
}
Output :
Netanim:
Gnu Plot:
Prompt:
I am working on a Computer Networks lab assignment using the
ns-3 simulator. I need to create a multi-hop topology consisting of 10 nodes
connected in a point-to-point chain.
My goal is to measure and compare the average end-to-end
delay and throughput as packets travel from the first node to the last. Can you
provide a C++ script (based on second.cc) that implements this? Please include
FlowMonitor for statistics, NetAnim for visualization, and a way to extract the
data so I can plot it using Gnuplot. I need to see how the multi-hop nature
affects the performance compared to a single-hop link.
Comments
Post a Comment