Tuesday, 8 January 2013
Tcl script to generate graph taking two parameter files as output
set tracefd [open Graph2.tr w]
set namtrace [open Graph2.nam w]
$ns trace-all $tracefd$ns namtrace-all-wireless $namtrace $val(x) $val(y)
# set up topography object
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
set god_ [create-god $val(nn)]
# configure the nodes
$ns node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace ON
## Creating node objects..
for {set i 0} {$i < $val(nn) } { incr i } {
set node_($i) [$ns node]
}
for {set i 0} {$i < $val(nn) } {incr i } {
$node_($i) color black
$ns at 0.0 "$node_($i) color black"
}
# Provide initial location of mobilenodes
$node_(0) set X_ 50.0
$node_(0) set Y_ 50.0
$node_(0) set Z_ 0.0
$node_(1) set X_ 200.0
$node_(1) set Y_ 250.0
$node_(1) set Z_ 0.0
$node_(2) set X_ 300.0
$node_(2) set Y_ 300.0
$node_(2) set Z_ 0.0
# Define node initial position in nam
for {set i 0} {$i < $val(nn)} { incr i } {
# 30 defines the node size for nam
$ns initial_node_pos $node_($i) 30
}
# Telling nodes when the simulation ends
for {set i 0} {$i < $val(nn) } { incr i } {
$ns at $val(stop) "$node_($i) reset";
}
# ending nam and the simulation
$ns at $val(stop) "$ns nam-end-wireless $val(stop)"
$ns at $val(stop) "stop"
$ns at 10.01 "puts \"end simulation\" ; $ns halt"
#Graph procedure..
#procedure..
$ns at 1.0 "Graph"
set g [open graph.tr w]
set g1 [open graph1.tr w]
proc Graph {} {
global ns g g1
set time 1.0
set now [$ns now]
puts $g "[expr rand()*8] [expr rand()*6]"
puts $g1 "[expr rand()*8] [expr rand()*6]"
$ns at [expr $now+$time] "Graph"
}
#stop procedure:
proc stop {} {
global ns tracefd namtrace
$ns flush-trace
close $tracefd
close $namtrace
exec xgraph -P -bb -geometry 700X800 graph.tr graph1.tr &
exec nam Graph2.nam &
exit 0
}
$ns run
Tcl script to generate graph taking two parameter files as output
set tracefd [open Graph2.tr w]
set namtrace [open Graph2.nam w]
$ns trace-all $tracefd$ns namtrace-all-wireless $namtrace $val(x) $val(y)
# set up topography object
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
set god_ [create-god $val(nn)]
# configure the nodes
$ns node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace ON
## Creating node objects..
for {set i 0} {$i < $val(nn) } { incr i } {
set node_($i) [$ns node]
}
for {set i 0} {$i < $val(nn) } {incr i } {
$node_($i) color black
$ns at 0.0 "$node_($i) color black"
}
# Provide initial location of mobilenodes
$node_(0) set X_ 50.0
$node_(0) set Y_ 50.0
$node_(0) set Z_ 0.0
$node_(1) set X_ 200.0
$node_(1) set Y_ 250.0
$node_(1) set Z_ 0.0
$node_(2) set X_ 300.0
$node_(2) set Y_ 300.0
$node_(2) set Z_ 0.0
# Define node initial position in nam
for {set i 0} {$i < $val(nn)} { incr i } {
# 30 defines the node size for nam
$ns initial_node_pos $node_($i) 30
}
# Telling nodes when the simulation ends
for {set i 0} {$i < $val(nn) } { incr i } {
$ns at $val(stop) "$node_($i) reset";
}
# ending nam and the simulation
$ns at $val(stop) "$ns nam-end-wireless $val(stop)"
$ns at $val(stop) "stop"
$ns at 10.01 "puts \"end simulation\" ; $ns halt"
#Graph procedure..
#procedure..
$ns at 1.0 "Graph"
set g [open graph.tr w]
set g1 [open graph1.tr w]
proc Graph {} {
global ns g g1
set time 1.0
set now [$ns now]
puts $g "[expr rand()*8] [expr rand()*6]"
puts $g1 "[expr rand()*8] [expr rand()*6]"
$ns at [expr $now+$time] "Graph"
}
#stop procedure:
proc stop {} {
global ns tracefd namtrace
$ns flush-trace
close $tracefd
close $namtrace
exec xgraph -P -bb -geometry 700X800 graph.tr graph1.tr &
exec nam Graph2.nam &
exit 0
}
$ns run
Tcl script to draw the graph
set namtrace [open Graph1.nam w]
$ns trace-all $tracefd
$ns namtrace-all-wireless $namtrace $val(x) $val(y)
# set up topography object
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
set god_ [create-god $val(nn)]
# configure the nodes
$ns node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace ON
## Creating node objects..
for {set i 0} {$i < $val(nn) } { incr i } {
set node_($i) [$ns node]
}
for {set i 0} {$i < $val(nn) } {incr i } {
$node_($i) color black
$ns at 0.0 "$node_($i) color black"
}
# Provide initial location of mobilenodes
$node_(0) set X_ 50.0
$node_(0) set Y_ 50.0
$node_(0) set Z_ 0.0
$node_(1) set X_ 200.0
$node_(1) set Y_ 250.0
$node_(1) set Z_ 0.0
$node_(2) set X_ 300.0
$node_(2) set Y_ 300.0
$node_(2) set Z_ 0.0
# Define node initial position in nam
for {set i 0} {$i < $val(nn)} { incr i } {
# 30 defines the node size for nam
$ns initial_node_pos $node_($i) 30
}
# Telling nodes when the simulation ends
for {set i 0} {$i < $val(nn) } { incr i } {
$ns at $val(stop) "$node_($i) reset";
}
# ending nam and the simulation
$ns at $val(stop) "$ns nam-end-wireless $val(stop)"
$ns at $val(stop) "stop"
$ns at 10.01 "puts \"end simulation\" ; $ns halt"
#Graph procedure..
$ns at 1.0 "Graph"
set g [open graph.tr w]
proc Graph {} {
global ns g
set time 1.0
set now [$ns now]
puts $g "[expr rand()*8] [expr rand()*6]"
$ns at [expr $now+$time] "Graph"
}
#Stop proceture
proc stop {} {
global ns tracefd namtrace
$ns flush-trace
close $tracefd
close $namtrace
exec xgraph -M -bb -geometry 700X800 graph.tr &
exec nam Graph1.nam &
exit 0
}
$ns run
To set nodes initial and destination position randomly in TCL Script
# Define options
set val(chan) Channel/WirelessChannel ;# channel type
set val(prop) Propagation/TwoRayGround ;# radio-propagation model
set val(netif) Phy/WirelessPhy ;# network interface type
set val(mac) Mac/802_11 ;# MAC type
set val(ifq) Queue/DropTail/PriQueue ;# interface queue type
set val(ll) LL ;# link layer type
set val(ant) Antenna/OmniAntenna ;# antenna model
set val(ifqlen) 50 ;# max packet in ifq
set val(nn) 8 ;# number of mobilenodes
set val(rp) AODV ;# routing protocol
set val(x) 500 ;# X dimension of topography
set val(y) 400 ;# Y dimension of topography
set val(stop) 10 ;# time of simulation end
#Creating simulation:
set ns [new Simulator]
#Creating nam and trace file:
set tracefd [open wireless3.tr w]
set namtrace [open wireless3.nam w]
$ns trace-all $tracefd
$ns namtrace-all-wireless $namtrace $val(x) $val(y)
# set up topography object
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
set god_ [create-god $val(nn)]
# configure the nodes
$ns node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace ON
## Creating node objects..
for {set i 0} {$i < 3 } { incr i } {
set node_($i) [$ns node]
}
for {set i 0} {$i < 3 } {incr i } {
$node_($i) color blue
$ns at 0.0 "$node_($i) color blue"
}
for {set i 3} {$i < 6 } { incr i } {
set node_($i) [$ns node]
}
for {set i 3} {$i < 6 } {incr i } {
$node_($i) color cyan
$ns at 1.0 "$node_($i) color cyan"
}
for {set i 6} {$i < 8 } { incr i } {
set node_($i) [$ns node]
}
for {set i 5} {$i < 8 } {incr i } {
$node_($i) color red
$ns at 2.0 "$node_($i) color red"
}
## Provide initial location of mobilenodes..
for {set i 0} {$i < $val(nn) } { incr i } {
set xx [expr rand()*500]
set yy [expr rand()*400]
$node_($i) set X_ $xx
$node_($i) set Y_ $yy
}
# Define node initial position in nam
for {set i 0} {$i < $val(nn)} { incr i } {
# 30 defines the node size for nam
$ns initial_node_pos $node_($i) 30
}
# Telling nodes when the simulation ends
for {set i 0} {$i < $val(nn) } { incr i } {
$ns at $val(stop) "$node_($i) reset";
}
# dynamic destination setting procedure..
$ns at 0.0 "destination"
proc destination {} {
global ns val node_
set time 1.0
set now [$ns now]
for {set i 0} {$i<$val(nn)} {incr i} {
set xx [expr rand()*500]
set yy [expr rand()*400]
$ns at $now "$node_($i) setdest $xx $yy 10.0"
}
$ns at [expr $now+$time] "destination"
}
#stop procedure..
$ns at $val(stop) "stop"
proc stop {} {
global ns tracefd namtrace
$ns flush-trace
close $tracefd
close $namtrace
exec nam wireless3.nam &
}
$ns run
To set nodes destination and color randomly
set val(chan) Channel/WirelessChannel ;# channel type
set val(prop) Propagation/TwoRayGround ;# radio-propagation model
set val(netif) Phy/WirelessPhy ;# network interface type
set val(mac) Mac/802_11 ;# MAC type
set val(ifq) Queue/DropTail/PriQueue ;# interface queue type
set val(ll) LL ;# link layer type
set val(ant) Antenna/OmniAntenna ;# antenna model
set val(ifqlen) 50 ;# max packet in ifq
set val(nn) 8 ;# number of mobilenodes
set val(rp) AODV ;# routing protocol
set val(x) 500 ;# X dimension of topography
set val(y) 400 ;# Y dimension of topography
set val(stop) 10 ;# time of simulation end
set ns [new Simulator]
#Creating nam and trace file:
set tracefd [open wireless2.tr w]
set namtrace [open wireless2.nam w]
$ns trace-all $tracefd
$ns namtrace-all-wireless $namtrace $val(x) $val(y)
# set up topography object
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
set god_ [create-god $val(nn)]
# configure the nodes
$ns node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace ON
## Creating node objects..
for {set i 0} {$i < 3 } { incr i } {
set node_($i) [$ns node]
}
for {set i 0} {$i < 3 } {incr i } {
$node_($i) color blue
$ns at 0.0 "$node_($i) color blue"
}
for {set i 3} {$i < 6 } { incr i } {
set node_($i) [$ns node]
}
for {set i 3} {$i < 5 } {incr i } {
$node_($i) color cyan
$ns at 0.0 "$node_($i) color cyan"
}
for {set i 5} {$i < 8 } { incr i } {
set node_($i) [$ns node]
}
for {set i 5} {$i < 8 } {incr i } {
$node_($i) color red
$ns at 0.0 "$node_($i) color red"
}
## Provide initial location of mobilenodes..
for {set i 0} {$i < $val(nn) } { incr i } {
set xx [expr rand()*500]
set yy [expr rand()*400]
$node_($i) set X_ $xx
$node_($i) set Y_ $yy
}
# Define node initial position in nam
for {set i 0} {$i < $val(nn)} { incr i } {
# 30 defines the node size for nam
$ns initial_node_pos $node_($i) 30
}
# Telling nodes when the simulation ends
for {set i 0} {$i < $val(nn) } { incr i } {
$ns at $val(stop) "$node_($i) reset";
}
# dynamic destination setting procedure..
$ns at 0.0 "destination"
proc destination {} {
global ns val node_
set time 1.0
set now [$ns now]
for {set i 0} {$i<$val(nn)} {incr i} {
set xx [expr rand()*500]
set yy [expr rand()*400]
$ns at $now "$node_($i) setdest $xx $yy 10.0"
}
$ns at [expr $now+$time] "destination"
}
#stop procedure..
$ns at $val(stop) "stop"
proc stop {} {
global ns tracefd namtrace
$ns flush-trace
close $tracefd
close $namtrace
exec nam wireless2.nam &
}
$ns run
Monday, 7 January 2013
How to install Cygwin and NS2 in windows?
[Cygwin]
1.
Download the cygwin.rar.
2.
Decompress the cygwin.rar
1.
Click the setup.exe to install cygwin.
2.
Because the language of
operating system is Traditional Chinese. The text of button is shown in
Chinese. But you don’t need to worry about this. I think it is shown in English
in your computer. Just click “Next”.
3.
Then choose “Install from Local
Directory”
4.
Click “Next”.
(Just keep the settings as they are.)
5.
Click “Next”
6.
Click “Browse” to choose where
the software is. (Please choose “ftp%3a%2f%2fftp.nctu.edu.tw%2fWindows%2fcygwin”)
7.
Click “OK”.
8.
Click “Next” and you will see
the figure shown as follows. In this window, the cygwin
setup program let you choose what software you want to install.
9.
Click “View” first to make the
word “Category “change to “Full”.
10.
XFree86-base, XFree86-bin, XFree86-prog, XFree86-lib, XFree86-etc, make, patch, perl, gcc, gcc-g++, gawk, gnuplot, tar and
gzip must be chosen. For example, if I want
to install XFree-86 base (upper figure), click the “Skip” of “New” column. The
“Skip” will be changed to “4.3.0-1” (lower figure).
11. Click “Next”.
(Please be patient. It may take a long time to finish the
installation.)
12. When setup is done, it
will be shown as following figure. Click “Finish”.
13. Click “OK” to finish the
cygwin setup program.
[myNS2 setup]
1.
Click the icon on the desktop.
2.
For the first time execution,
it will generate some environment parameter setting files. In this example, smallko is my login name to windows system. Therefore, the cygwin will create a folder named “smallko”
under home directory. (The actual path for smallko
folder is: c:\cygwin\home\smallko) It should be noticed that the login name can
not have any space in your name. For example, “A B” may cause errors when you
install NS2.
3.
Download myNS2.
4.
Decompress the
ns-allinone-2.28.rar.
5.
Move this folder under
c:\cygwin\home\smallko. (P.S. smallko is my login
name)
6.
Open a cygwin
window
7.
Change the path to
ns-allinone-2.28/ns-2.28
8.
Run the command “./configure;
make clean; make
9.
Please be patient. It will take
some time to finish the compilation.
10.
When it is done, it should look
like as follows.
11.
To make sure that you have
successfully installed myNS2, you need to check whether you can find ns.exe
under ns-allinone-2.28/ns-2.28
12.
Copy the .bashrc
to c:/cygwin/home/smallko
13.
Run the example script to test
whether you have setup the path or not.
14.
If you see the error message like “ns
command not found”, no worry about this. Sometimes even you have setup the
path, but it does not work. You can copy the ns.exe (nam.exe) to the same place
as the simulation script. Run the simulation with “./ns.exe”
and it will be ok.
Subscribe to:
Posts (Atom)