Pages

Subscribe:

Ads 468x60px

Wednesday, October 24, 2012

Network Simulation using NS2

Before deploying a network it is necessary to check how the network would behave after the deployment. After deploying the network sometime it may not function/behave as expected. So it is better to get some idea before the real deployment. 

There are commercial simulators of course,  but the problem is that they are very expensive. So NS2 come in handy, since it's free and opensource. The script files you write in NS2 is .tcl 

First of all you have to install NS2 in your computer. Just enter the following command and it will be installed.

[aruna@ubuntu]~$ sudo apt-get install ns2 nam

Now you have installed NS2. (I am not going to teach you how to write .tcl scripts there are enough tutorials on how to write .tcl scripts. I just want to give you a simple introduction to what is NS2 and what it is capable of.)
The following code creates six nodes 0,1,2,3,4 and 5 and there are two tcp connections from node 0 to 5 and the other from node 1 to 4. You can see how the data packet travel through the links and even you can analyze each data packet.

Download Code Link :   Download 

#**********************************************************************
 # Sample tcp.tcl file 
#*********************************************************************/


#Create a simulator object
set ns [new Simulator]

$ns color 1 Blue
$ns color 2 Red
$ns color 3 Green

#Open the nam trace file
set nf [open out.nam w]
$ns namtrace-all $nf

#Define a 'finish' procedure
proc finish {} {
        global ns nf f0 f1
        $ns flush-trace
 #Close the trace files
        close $nf
 #Execute nam on the trace file
        exec nam out.nam &
        exit 0
}
#Create two nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]

#Create a duplex link between the nodes
$ns duplex-link $n0 $n2 1Mb 10ms DropTail 
$ns duplex-link $n1 $n2 1Mb 10ms DropTail 
$ns duplex-link $n2 $n3 1Mb 10ms DropTail 
$ns duplex-link $n3 $n4 1Mb 10ms DropTail 
$ns duplex-link $n3 $n5 1Mb 10ms DropTail 

#give node position
$ns duplex-link-op $n0 $n2 orient right-down 
$ns duplex-link-op $n1 $n2 orient right-up 
$ns duplex-link-op $n2 $n3 orient right 
$ns duplex-link-op $n3 $n4 orient right-up 
$ns duplex-link-op $n3 $n5 orient right-down

#Create a TCP agent and attach it to node n0
set tcp0 [new Agent/TCP]
$ns attach-agent $n0 $tcp0
set sink0 [new Agent/TCPSink]
$ns attach-agent $n5 $sink0
$ns connect $tcp0 $sink0
$tcp0 set fid_ 3

#Create a TCP agent and attach it to node n1
set tcp1 [new Agent/TCP]
$ns attach-agent $n1 $tcp1
set sink1 [new Agent/TCPSink]
$ns attach-agent $n4 $sink1
$ns connect $tcp1 $sink1
$tcp1 set fid_ 2

# Create a CBR traffic source and attach it to tcp1
set ftp0 [new Application/FTP]
$ftp0 set packetSize_ 500
$ftp0 set interval_ 0.005
$ftp0 attach-agent $tcp1
$ftp0 set rate_ 3mb
$ftp0 set random_ false

# Create a CBR traffic source and attach it to tcp0
set ftp1 [new Application/FTP]
$ftp1 set packetSize_ 500
$ftp1 set interval_ 0.005
$ftp1 attach-agent $tcp0
$ftp1 set rate_ 3mb
$ftp1 set random_ false

#Schedule events for the CBR agent
$ns at 0.0 "$ftp0 start"
$ns at 1.0 "$ftp1 start"
$ns at 5.0 "$ftp0 stop"
$ns at 5.0 "$ftp1 stop"

#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish"

#Run the simulation
$ns run
To run the following code just type 

[aruna@ubuntu]~$ ns tcp.tcl



Hope you'll enjoy NS2... :)