How to Install:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sudo apt-get install xgraph |
1. NS2 UDP Example
2. NS2 TCP Example
You will need both source code to plot ns2 simulations in this example.
Additionally we have to use these perl scripts to extract data from output trace generated from NS2.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# type: perl throughput.pl <trace file> <required node> <granlarity> > output file | |
$infile=$ARGV[0]; | |
$tonode=$ARGV[1]; | |
$granularity=$ARGV[2]; | |
#we compute how many bytes were transmitted during time interval specified | |
#by granularity parameter in seconds | |
$sum=0; | |
$clock=0; | |
open (DATA,"<$infile") | |
|| die "Can't open $infile $!"; | |
while (<DATA>) { | |
@x = split(' '); | |
#column 1 is time | |
if ($x[1]-$clock <= $granularity) | |
{ | |
#checking if the event corresponds to a reception | |
if ($x[0] eq 'r') | |
{ | |
#checking if the destination corresponds to arg 1 | |
if ($x[3] eq $tonode) | |
{ | |
#checking if the packet type is TCP | |
if ($x[4] eq 'tcp') | |
{ | |
$sum=$sum+$x[5];#number of bytes in the period | |
} | |
} | |
} | |
} | |
else | |
{ $throughput=$sum/$granularity; | |
print STDOUT "$x[1] $throughput\n"; | |
$clock=$clock+$granularity; | |
$sum=0; | |
} | |
}#end while | |
$throughput=$sum/$granularity; | |
print STDOUT "$x[1] $throughput\n"; | |
$clock=$clock+$granularity; | |
$sum=0; | |
close DATA; | |
exit(0); | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# type: perl throughput.pl <trace file> <required node> <granlarity> > output file | |
$infile=$ARGV[0]; | |
$tonode=$ARGV[1]; | |
$granularity=$ARGV[2]; | |
#we compute how many bytes were transmitted during time interval specified | |
#by granularity parameter in seconds | |
$sum=0; | |
$clock=0; | |
open (DATA,"<$infile") | |
|| die "Can't open $infile $!"; | |
while (<DATA>) { | |
@x = split(' '); | |
#column 1 is time | |
if ($x[1]-$clock <= $granularity) | |
{ | |
#checking if the event corresponds to a reception | |
if ($x[0] eq 'r') | |
{ | |
#checking if the destination corresponds to arg 1 | |
if ($x[3] eq $tonode) | |
{ | |
#checking if the packet type is TCP | |
if ($x[4] eq 'cbr') | |
{ | |
$sum=$sum+$x[5];#number of bytes in the period | |
} | |
} | |
} | |
} | |
else | |
{ $throughput=$sum/$granularity; | |
print STDOUT "$x[1] $throughput\n"; | |
$clock=$clock+$granularity; | |
$sum=0; | |
} | |
}#end while | |
$throughput=$sum/$granularity; | |
print STDOUT "$x[1] $throughput\n"; | |
$clock=$clock+$granularity; | |
$sum=0; | |
close DATA; | |
exit(0); | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!bin/bash | |
perl Perltcp.pl outudp.tr 4 0.5 > tcp-udp-one.tr | |
perl Perlcbr.pl outudp.tr 5 0.5 > tcp-udp-two.tr | |
xgraph -bg white tcp-udp-one.tr tcp-udp-two.tr & | |
perl Perltcp.pl outtcp.tr 4 0.5 > tcp-tcp-one.tr | |
perl Perltcp.pl outtcp.tr 5 0.5 > tcp-tcp-two.tr | |
xgraph -bg white tcp-tcp-one.tr tcp-tcp-two.tr & |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sh genGraph.sh |
Sample out put: