Ns3 is a network simulation software, it depends on various in built and third party tools for enablement.
Here are some of the third party modules that can be enabled while running ns3. This is a handy note for such modules.
All these examples were tried on the ~ns-3.24.1/examples/tutorial/third.cc file
1. NetAnim#include "ns3/netanim-module.h"
AnimationInterface anim("third.xml");
anim.SetConstantPosition(csmaNodes.Get(0),1.0,1,0);
anim.SetConstantPosition(csmaNodes.Get(1),2.0,2,0);
anim.SetConstantPosition(csmaNodes.Get(2),3.0,3,0);
anim.SetConstantPosition(csmaNodes.Get(3),4.0,4,0);
anim.SetConstantPosition(wifiApNode.Get(0),5.0,5,0);
anim.SetConstantPosition(wifiStaNodes.Get(0),6.0,1,0);
anim.SetConstantPosition(wifiStaNodes.Get(1),7.0,1,0);
anim.SetConstantPosition(wifiStaNodes.Get(2),8.0,1,0);
Open NetAnim and open the xml file (third.xml in this case). Always prefer to use the inbuilt netanim rather than an installed version of NetAnim.
2. Ascii Trace FilesAsciiTraceHelper ascii;
csma.EnableAsciiAll(ascii.CreateFileStream("thirdcsma.tr"));
phy.EnableAsciiAll(ascii.CreateFileStream("thirdwifi.tr"));
Open the tracefiles using tracemetrics software, see the screenshot below
3. Pcap files pointToPoint.EnablePcapAll ("third");
phy.EnablePcap ("third", apDevices.Get (0));
csma.EnablePcap ("third", csmaDevices.Get (0), true);
Pcap files can be opened using wireshark or tcpdump
$] tcpdump -nn -tt -t file.pcap
4. Trace Metrics java -jar tracemetrics.jar
5. Flow Monitor. #include "ns3/flow-monitor-helper.h"
// Flow monitor
Ptr<FlowMonitor> flowMonitor;
FlowMonitorHelper flowHelper;
flowMonitor = flowHelper.InstallAll();
Simulator::Run ();
flowMonitor->SerializeToXmlFile("thirdflow.xml", true, true);
The xml file have to be below the Simulator::Run(); and the flowmonitor declaration should be above the Run()
6. Gnuplot
To plot a given file file.data here is the command to plot using Gnuplot
set terminal png size 600,480
set output "file.png"
plot "file.data" using 1:2 with linespoints title "Congestion"
7. xgraph xgraph file.xg
8. Visualizer ./waf --run scratch/third --vis
./waf --run scratch/third --visualizer
T S Pradeep Kumar
Here are some of the third party modules that can be enabled while running ns3. This is a handy note for such modules.
All these examples were tried on the ~ns-3.24.1/examples/tutorial/third.cc file
1. NetAnim#include "ns3/netanim-module.h"
AnimationInterface anim("third.xml");
anim.SetConstantPosition(csmaNodes.Get(0),1.0,1,0);
anim.SetConstantPosition(csmaNodes.Get(1),2.0,2,0);
anim.SetConstantPosition(csmaNodes.Get(2),3.0,3,0);
anim.SetConstantPosition(csmaNodes.Get(3),4.0,4,0);
anim.SetConstantPosition(wifiApNode.Get(0),5.0,5,0);
anim.SetConstantPosition(wifiStaNodes.Get(0),6.0,1,0);
anim.SetConstantPosition(wifiStaNodes.Get(1),7.0,1,0);
anim.SetConstantPosition(wifiStaNodes.Get(2),8.0,1,0);
Open NetAnim and open the xml file (third.xml in this case). Always prefer to use the inbuilt netanim rather than an installed version of NetAnim.
2. Ascii Trace FilesAsciiTraceHelper ascii;
csma.EnableAsciiAll(ascii.CreateFileStream("thirdcsma.tr"));
phy.EnableAsciiAll(ascii.CreateFileStream("thirdwifi.tr"));
Open the tracefiles using tracemetrics software, see the screenshot below
Tracemetrics |
3. Pcap files pointToPoint.EnablePcapAll ("third");
phy.EnablePcap ("third", apDevices.Get (0));
csma.EnablePcap ("third", csmaDevices.Get (0), true);
Pcap files can be opened using wireshark or tcpdump
$] tcpdump -nn -tt -t file.pcap
4. Trace Metrics java -jar tracemetrics.jar
TraceMetrics |
5. Flow Monitor. #include "ns3/flow-monitor-helper.h"
// Flow monitor
Ptr<FlowMonitor> flowMonitor;
FlowMonitorHelper flowHelper;
flowMonitor = flowHelper.InstallAll();
Simulator::Run ();
flowMonitor->SerializeToXmlFile("thirdflow.xml", true, true);
The xml file have to be below the Simulator::Run(); and the flowmonitor declaration should be above the Run()
6. Gnuplot
To plot a given file file.data here is the command to plot using Gnuplot
set terminal png size 600,480
set output "file.png"
plot "file.data" using 1:2 with linespoints title "Congestion"
7. xgraph xgraph file.xg
8. Visualizer ./waf --run scratch/third --vis
./waf --run scratch/third --visualizer
T S Pradeep Kumar
I have modified the thrid.cc to enable the communication by all wifi nodes.
ReplyDeleteApplicationContainer clientApps[nWifi];
for(uint32_t x=0; x < nWifi; x++){
ApplicationContainer clientApps[x] = echoClient.Install (wifiStaNodes.Get (x));
clientApps[x].Start (Seconds (2.0));
clientApps[x].Stop (Seconds (2.0));
//separately it works fine.
/*
ApplicationContainer clientApps = echoClient.Install (wifiStaNodes.Get (0));
ApplicationContainer clientApps1 = echoClient.Install (wifiStaNodes.Get (1));
ApplicationContainer clientApps2 = echoClient.Install (wifiStaNodes.Get (2));
clientApps.Start (Seconds (2.0));
clientApps1.Start (Seconds (2.0));
clientApps2.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));
clientApps1.Stop (Seconds (10.0));
clientApps2.Stop (Seconds (10.0));
*/
}
terminated with signal SIGSEGV. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s ").