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
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
[aruna@ubuntu]~$ ns tcp.tcl
Hope you'll enjoy NS2... :)