Queuing Models in NS2

Image
M/M/1 is a system with poisson arrival time, servicing exponentially and a queue of unlimited capacity and type of FIFO Queue. This is the simplest queuing system.  NS2 supports various distributions like pareto, exponential, constant, unifrom, etc to handle the network dynamics and metrics. So it is very easy to test the given network link to monitor a given queue using any of these queuing models. The listing 3 and 4 are monitoring the link when DropTail queue is used with a capacity of finite and infinite. Listing 13.3 uses infinite capacity and Listing 13.4 uses Finite capacity The output screen shot is shown below the scripts for further understanding
Listing 3 – M/M/1 Queuing Model #new Simulator creation set ns [new Simulator] #trace file creation for capturing the UDP data set tf [open out.tr w] $ns trace-all $tf
#setting the exponential distribution param set lambda 30.0 set mu     33.0
#creation of nodes set n1 [$ns node] set n2 [$ns node] #The queue limit is 1Lakh as the capacity is infin…

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

Popular posts from this blog

AWK Scripts for NS2 to process data from Trace Files

Xgraph

ns2 installation in Ubuntu 14.04