I have pasted sample tcl file and scenario file here... save scn file as wsn1.scn and tcl file as (say)wsn1.tcl and run tcl file...
try runnin this....if any bugs then let me know... wsn1.tcl # ====================================================================== # Define options # ====================================================================== set val(chan) Channel/WirelessChannel ;# Channel Type set val(prop) Propagation/TwoRayGround ;# radio-propagation model set val(netif) Phy/WirelessPhy/802_15_4 set val(mac) Mac/802_15_4 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) 25 ;# number of mobilenodes set val(rp) AODV ;# routing protocol set val(x) 50 set val(y) 50 set val(nam) wsn1.nam set val(traffic) ftp ;# cbr/poisson/ftp #read command line arguments proc getCmdArgu {argc argv} { global val for {set i 0} {$i < $argc} {incr i} { set arg [lindex $argv $i] if {[string range $arg 0 0] != "-"} continue set name [string range $arg 1 end] set val($name) [lindex $argv [expr $i+1]] } } getCmdArgu $argc $argv set appTime1 0.0 ;# in seconds set appTime2 0.3 ;# in seconds set appTime3 0.7 ;# in seconds set stopTime 100 ;# in seconds # Initialize Global Variables set ns_ [new Simulator] set tracefd [open ./wsn1.tr w] $ns_ trace-all $tracefd if { "$val(nam)" == "wsn1.nam" } { set namtrace [open ./$val(nam) w] $ns_ namtrace-all-wireless $namtrace $val(x) $val(y) } $ns_ puts-nam-traceall {# nam4wpan #} ;# inform nam that this is a trace file for wpan (special handling needed) Mac/802_15_4 wpanNam namStatus on ;# default = off (should be turned on before other 'wpanNam' commands can work) #Mac/802_15_4 wpanNam ColFlashClr gold ;# default = gold #Mac/802_15_4 wpanNam NodeFailClr grey ;# default = grey # For model 'TwoRayGround' set dist(5m) 7.69113e-06 set dist(9m) 2.37381e-06 set dist(10m) 1.92278e-06 set dist(11m) 1.58908e-06 set dist(12m) 1.33527e-06 set dist(13m) 1.13774e-06 set dist(14m) 9.81011e-07 set dist(15m) 8.54570e-07 set dist(16m) 7.51087e-07 set dist(20m) 4.80696e-07 set dist(25m) 3.07645e-07 set dist(30m) 2.13643e-07 set dist(35m) 1.56962e-07 set dist(40m) 1.20174e-07 Phy/WirelessPhy set CSThresh_ $dist(15m) Phy/WirelessPhy set RXThresh_ $dist(15m) # set up topography object set topo [new Topography] $topo load_flatgrid $val(x) $val(y) # Create God set god_ [create-god $val(nn)] set chan_1_ [new $val(chan)] # configure node $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) \ -topoInstance $topo \ -agentTrace OFF \ -routerTrace OFF \ -macTrace ON \ -movementTrace OFF \ #-energyModel "EnergyModel" \ #-initialEnergy 1 \ #-rxPower 0.3 \ #-txPower 0.3 \ -channel $chan_1_ for {set i 0} {$i < $val(nn) } {incr i} { set node_($i) [$ns_ node] $node_($i) random-motion 0 ;# disable random motion } source ./wsn1.scn # Setup traffic flow between nodes proc cbrtraffic { src dst interval starttime } { global ns_ node_ set udp($src) [new Agent/UDP] eval $ns_ attach-agent \$node_($src) \$udp($src) set null($dst) [new Agent/Null] eval $ns_ attach-agent \$node_($dst) \$null($dst) set cbr($src) [new Application/Traffic/CBR] eval \$cbr($src) set packetSize_ 70 eval \$cbr($src) set interval_ $interval eval \$cbr($src) set random_ 0 #eval \$cbr($src) set maxpkts_ 10000 eval \$cbr($src) attach-agent \$udp($src) eval $ns_ connect \$udp($src) \$null($dst) $ns_ at $starttime "$cbr($src) start" } proc poissontraffic { src dst interval starttime } { global ns_ node_ set udp($src) [new Agent/UDP] eval $ns_ attach-agent \$node_($src) \$udp($src) set null($dst) [new Agent/Null] eval $ns_ attach-agent \$node_($dst) \$null($dst) set expl($src) [new Application/Traffic/Exponential] eval \$expl($src) set packetSize_ 70 eval \$expl($src) set burst_time_ 0 eval \$expl($src) set idle_time_ [expr $interval*1000.0-70.0*8/250]ms ;# idle_time + pkt_tx_time = interval eval \$expl($src) set rate_ 250k eval \$expl($src) attach-agent \$udp($src) eval $ns_ connect \$udp($src) \$null($dst) $ns_ at $starttime "$expl($src) start" } if { ("$val(traffic)" == "cbr") || ("$val(traffic)" == "poisson") } { puts "\nTraffic: $val(traffic)" #Mac/802_15_4 wpanCmd ack4data on puts [format "Acknowledgement for data: %s" [Mac/802_15_4 wpanCmd ack4data]] set lowSpeed 0.5ms set highSpeed 1.5ms Mac/802_15_4 wpanNam PlaybackRate $lowSpeed $ns_ at [expr $appTime1+0.1] "Mac/802_15_4 wpanNam PlaybackRate $highSpeed" $ns_ at $appTime2 "Mac/802_15_4 wpanNam PlaybackRate $lowSpeed" $ns_ at [expr $appTime2+0.1] "Mac/802_15_4 wpanNam PlaybackRate $highSpeed" $ns_ at $appTime3 "Mac/802_15_4 wpanNam PlaybackRate $lowSpeed" $ns_ at [expr $appTime3+0.1] "Mac/802_15_4 wpanNam PlaybackRate $highSpeed" eval $val(traffic)traffic 19 6 0.2 $appTime1 eval $val(traffic)traffic 10 4 0.2 $appTime2 eval $val(traffic)traffic 3 2 0.2 $appTime3 Mac/802_15_4 wpanNam FlowClr -p AODV -c tomato Mac/802_15_4 wpanNam FlowClr -p ARP -c green if { "$val(traffic)" == "cbr" } { set pktType cbr } else { set pktType exp } Mac/802_15_4 wpanNam FlowClr -p $pktType -s 19 -d 6 -c blue Mac/802_15_4 wpanNam FlowClr -p $pktType -s 10 -d 4 -c green4 Mac/802_15_4 wpanNam FlowClr -p $pktType -s 3 -d 2 -c cyan4 $ns_ at $appTime1 "$node_(19) NodeClr blue" $ns_ at $appTime1 "$node_(6) NodeClr blue" $ns_ at $appTime1 "$ns_ trace-annotate \"(at $appTime1) $val(traffic) traffic from node 19 to node 6\"" $ns_ at $appTime2 "$node_(10) NodeClr green4" $ns_ at $appTime2 "$node_(4) NodeClr green4" $ns_ at $appTime2 "$ns_ trace-annotate \"(at $appTime2) $val(traffic) traffic from node 10 to node 4\"" $ns_ at $appTime3 "$node_(3) NodeClr cyan3" $ns_ at $appTime3 "$node_(2) NodeClr cyan3" $ns_ at $appTime3 "$ns_ trace-annotate \"(at $appTime3) $val(traffic) traffic from node 3 to node 2\"" } proc ftptraffic { src dst starttime } { global ns_ node_ set tcp($src) [new Agent/TCP] eval \$tcp($src) set packetSize_ 60 set sink($dst) [new Agent/TCPSink] eval $ns_ attach-agent \$node_($src) \$tcp($src) eval $ns_ attach-agent \$node_($dst) \$sink($dst) eval $ns_ connect \$tcp($src) \$sink($dst) set ftp($src) [new Application/FTP] eval \$ftp($src) attach-agent \$tcp($src) $ns_ at $starttime "$ftp($src) start" } if { "$val(traffic)" == "ftp" } { puts "\nTraffic: ftp" #Mac/802_15_4 wpanCmd ack4data off puts [format "Acknowledgement for data: %s" [Mac/802_15_4 wpanCmd ack4data]] set lowSpeed 0.20ms set highSpeed 1.5ms Mac/802_15_4 wpanNam PlaybackRate $lowSpeed $ns_ at [expr $appTime1+0.2] "Mac/802_15_4 wpanNam PlaybackRate $highSpeed" $ns_ at $appTime2 "Mac/802_15_4 wpanNam PlaybackRate $lowSpeed" $ns_ at [expr $appTime2+0.2] "Mac/802_15_4 wpanNam PlaybackRate $highSpeed" $ns_ at $appTime3 "Mac/802_15_4 wpanNam PlaybackRate $lowSpeed" $ns_ at [expr $appTime3+0.2] "Mac/802_15_4 wpanNam PlaybackRate 1ms" ftptraffic 19 6 $appTime1 ftptraffic 10 4 $appTime2 ftptraffic 3 2 $appTime3 Mac/802_15_4 wpanNam FlowClr -p AODV -c tomato Mac/802_15_4 wpanNam FlowClr -p ARP -c green Mac/802_15_4 wpanNam FlowClr -p tcp -s 19 -d 6 -c blue Mac/802_15_4 wpanNam FlowClr -p ack -s 6 -d 19 -c blue Mac/802_15_4 wpanNam FlowClr -p tcp -s 10 -d 4 -c green4 Mac/802_15_4 wpanNam FlowClr -p ack -s 4 -d 10 -c green4 Mac/802_15_4 wpanNam FlowClr -p tcp -s 3 -d 2 -c cyan4 Mac/802_15_4 wpanNam FlowClr -p ack -s 2 -d 3 -c cyan4 $ns_ at $appTime1 "$node_(19) NodeClr blue" $ns_ at $appTime1 "$node_(6) NodeClr blue" $ns_ at $appTime1 "$ns_ trace-annotate \"(at $appTime1) ftp traffic from node 19 to node 6\"" $ns_ at $appTime2 "$node_(10) NodeClr green4" $ns_ at $appTime2 "$node_(4) NodeClr green4" $ns_ at $appTime2 "$ns_ trace-annotate \"(at $appTime2) ftp traffic from node 10 to node 4\"" $ns_ at $appTime3 "$node_(3) NodeClr cyan3" $ns_ at $appTime3 "$node_(2) NodeClr cyan3" $ns_ at $appTime3 "$ns_ trace-annotate \"(at $appTime3) ftp traffic from node 3 to node 2\"" } # defines the node size in nam for {set i 0} {$i < $val(nn)} {incr i} { $ns_ initial_node_pos $node_($i) 2 } # Tell nodes when the simulation ends for {set i 0} {$i < $val(nn) } {incr i} { $ns_ at $stopTime "$node_($i) reset"; } $ns_ at $stopTime "stop" $ns_ at $stopTime "puts \"\nNS EXITING...\"" $ns_ at $stopTime "$ns_ halt" proc stop {} { global ns_ tracefd val env $ns_ flush-trace close $tracefd set hasDISPLAY 0 foreach index [array names env] { #puts "$index: $env($index)" if { ("$index" == "DISPLAY") && ("$env($index)" != "") } { set hasDISPLAY 1 } } if { ("$val(nam)" == "wsn1.nam") && ("$hasDISPLAY" == "1") } { exec ./nam wsn1.nam & } } puts "\nStarting Simulation..." $ns_ run -------------------------------- wsn1.scn # # nodes: 25, pause: 2.00, max speed: 2.00 max x = 50.00, max y: 50.00 # $node_(0) set X_ 26.608377307314 $node_(0) set Y_ 49.446991827566 $node_(0) set Z_ 0.000000000000 $node_(1) set X_ 49.337311778721 $node_(1) set Y_ 48.582820874924 $node_(1) set Z_ 0.000000000000 $node_(2) set X_ 27.437938215931 $node_(2) set Y_ 30.091658830425 $node_(2) set Z_ 0.000000000000 $node_(3) set X_ 10.568766842667 $node_(3) set Y_ 47.453389414657 $node_(3) set Z_ 0.000000000000 $node_(4) set X_ 32.496269526711 $node_(4) set Y_ 2.257450139045 $node_(4) set Z_ 0.000000000000 $node_(5) set X_ 26.476535726599 $node_(5) set Y_ 38.646396828920 $node_(5) set Z_ 0.000000000000 $node_(6) set X_ 49.430596917301 $node_(6) set Y_ 31.320042376073 $node_(6) set Z_ 0.000000000000 $node_(7) set X_ 20.045665842364 $node_(7) set Y_ 32.537008965783 $node_(7) set Z_ 0.000000000000 $node_(8) set X_ 13.641089465783 $node_(8) set Y_ 28.871428688349 $node_(8) set Z_ 0.000000000000 $node_(9) set X_ 2.125856848941 $node_(9) set Y_ 9.049644538277 $node_(9) set Z_ 0.000000000000 $node_(10) set X_ 0.596871605178 $node_(10) set Y_ 0.816174228621 $node_(10) set Z_ 0.000000000000 $node_(11) set X_ 8.828197591068 $node_(11) set Y_ 34.402175912553 $node_(11) set Z_ 0.000000000000 $node_(12) set X_ 18.759762507870 $node_(12) set Y_ 25.069997591097 $node_(12) set Z_ 0.000000000000 $node_(13) set X_ 13.277017351151 $node_(13) set Y_ 5.522149009306 $node_(13) set Z_ 0.000000000000 $node_(14) set X_ 28.935083056450 $node_(14) set Y_ 37.156742480258 $node_(14) set Z_ 0.000000000000 $node_(15) set X_ 23.507724673396 $node_(15) set Y_ 3.566772846479 $node_(15) set Z_ 0.000000000000 $node_(16) set X_ 20.236128396148 $node_(16) set Y_ 45.484419961171 $node_(16) set Z_ 0.000000000000 $node_(17) set X_ 45.709636471608 $node_(17) set Y_ 48.353113573382 $node_(17) set Z_ 0.000000000000 $node_(18) set X_ 45.610349971557 $node_(18) set Y_ 49.787732692400 $node_(18) set Z_ 0.000000000000 $node_(19) set X_ 24.345058881159 $node_(19) set Y_ 19.614188426582 $node_(19) set Z_ 0.000000000000 $node_(20) set X_ 35.972132273531 $node_(20) set Y_ 10.620805728046 $node_(20) set Z_ 0.000000000000 $node_(21) set X_ 49.626765649851 $node_(21) set Y_ 14.028905860151 $node_(21) set Z_ 0.000000000000 $node_(22) set X_ 14.914806804685 $node_(22) set Y_ 24.094071765795 $node_(22) set Z_ 0.000000000000 $node_(23) set X_ 28.443020411336 $node_(23) set Y_ 24.367299319338 $node_(23) set Z_ 0.000000000000 $node_(24) set X_ 48.102836431793 $node_(24) set Y_ 22.394995544608 $node_(24) set Z_ 0.000000000000 -------------