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…

TCP Congestion Control

Congestion control is one of the performance metrics of TCP protocol. There are so many TCP Versions to control congestion in the network.
NS2 also supports various TCP protocols like TCP Vegas, TCP Reno, TCP, TCP Sack, Full TCP, TCP linux, etc.

Each TCP protocols has different mechanism in controlling the congestion. Some are good at Congestion control, some are good at error ands flow control.

Before understanding the congestion control, one has to know the congestion window of TCP. TCP has a congestion window (cwnd_ in ns2), this variable affects or predicts the congestion control.

The value assigned to this variable will alter the congestion control. Here are the files that are of prime importance before dealing with congestion control.
~ns-2.35/tcp/tcp.cc 
~ns-2.35/tcp/tcp.h 
~ns-2.35/tcl/lib/ns-default.tcl (In this file, the constant values for all the protocols in ns2 are set)

For example, the packet size of CBR is 210 by default, this value is represented like this in the ns-default.tcl file.

Application/Traffic/CBR set packetSize_ 210 

if you want to change the packet size of CBR for ns2, you may change the above line to

Application/Traffic/CBR set packetSize_ 500 

which is set to 500 bytes, the above line will affect the entire tcl scripts (the value is changed to 500), instead the packet size can be changed within the TCL file where it is programmed as given below

set cbr [new Application/Traffic/CBR]
$cbr set packetSize_ 500
The above line will change the packet size for this file only. Similarly, the TCP congestion window is set like this
Agent/TCP set cwnd_ 0 

the default value is 0 and you may modify this within the file as given below
set tcp [new Agent/TCP]
$tcp set cwnd_ 3


To know more about congestion control, please see the video given below for detailed instructions. 



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