,

ns3 modules

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
Tracemetrics
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
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

1 comment:

  1. I have modified the thrid.cc to enable the communication by all wifi nodes.
    ApplicationContainer 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 ").

    ReplyDelete