# ====================================================== # Define options # =======================================================
set val(chan) Channel/WirelessChannel ;# channel type set val(prop) Propagation/TwoRayGround ;# radio-propagation model set val(ant) Antenna/OmniAntenna ;# Antenna type set val(ll) LL ;# Link Layer type set val(ifq) Queue/DropTail/PriQueue ;# Interface queue type set val(ifqlen) 50 ;# max packet in ifq set val(netif) Phy/WirelessPhy ;# network interface type set val(mac) Mac/802_11 ;# MAC type set val(nn) 4 ;# number of mobilenodes set val(rp) AODV ;# routing protocol set val(x) 800 set val(y) 800 set ns [new Simulator] #ns-random 0 set f [open 1_out.tr w] $ns trace-all $f set namtrace [open 1_out.nam w] $ns namtrace-all-wireless $namtrace $val(x) $val(y) set f0 [open proj_out0.tr w] set f1 [open proj_out1.tr w] set f2 [open proj_out2.tr w] set f3 [open proj_out3.tr w] set topo [new Topography] $topo load_flatgrid 800 800 create-god $val(nn) set chan_1 [new $val(chan)] set chan_2 [new $val(chan)] set chan_3 [new $val(chan)] set chan_4 [new $val(chan)] # Configure and create 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 OFF \ -routeTrace ON \ -macTrace ON \ -movementTrace OFF \ -channel $chan_1 \ -channel $chan_2 \ -channel $chan_3 \ -channel $chan_4 proc finish {} { global ns f f0 f1 f2 f3 namtrace $ns flush-trace close $namtrace close $f0 close $f1 close $f2 close $f3 #exec xgraph proj_out0.tr proj_out1.tr proj_out2.tr proj_out3.tr exec nam -r 5m 1_out.nam & exit 0 } proc record {} { global sink0 sink1 sink2 sink3 f0 f1 f2 f3 # Get AN instance of the simulator set ns [Simulator instance] #set the Time after which the procedure should be called again set time 0.05 # How Many Bytes have been received by the traffic sinks? set bw0 [$sink2 set npkts_] set bw1 [$sink2 set nlost_] set bw2 [$sink0 set npkts_] set bw3 [$sink0 set nlost_] # Get the current time set now [$ns now] #save data to the files puts $f0 "$now [expr $bw0]" puts $f1 "$now [expr $bw1]" puts $f2 "$now [expr $bw2]" puts $f3 "$now [expr $bw3]" # Re-schedule the procudere $ns at [expr $now+$time] "record" } #define color index $ns color 0 blue $ns color 1 red $ns color 2 chocolate $ns color 3 red $ns color 4 brown $ns color 5 tan $ns color 6 gold $ns color 7 black set n(0) [$ns node] #$ns at 0.0 "$n(0) color red" $n(0) color "0" $n(0) shape "circle" set n(1) [$ns node] $n(1) color "blue" $n(1) shape "circle" set n(2) [$ns node] $n(2) color "tan" $n(2) shape "circle" set n(3) [$ns node] $n(3) color "red" $n(3) shape "circle" for {set i 0} {$i < $val(nn)} {incr i} { $ns intial_node_pos $n($i) 30+i*100 } $n(0) set X_ 0.0 $n(0) set Y_ 0.0 $n(0) set Z_ 0.0 $n(1) set X_ 0.0 $n(1) set Y_ 0.0 $n(1) set Z_ 0.0 $n(2) set X_ 0.0 $n(2) set Y_ 0.0 $n(2) set Z_ 0.0 $n(3) set X_ 0.0 $n(3) set Y_ 0.0 $n(3) set Z_ 0.0 $ns at 0.0 "$n(0) setdest 100.0 200.0 3000.0" $ns at 0.0 "$n(1) setdest 250.0 200.0 3000.0" $ns at 0.0 "$n(2) setdest 400.0 200.0 3000.0" $ns at 0.0 "$n(3) setdest 550.0 200.0 3000.0" #$ns at 1.5 "$n(2) setdest 100.0 150.0 500.0" #$ns at 1.5 "$n(3) setdest 450.0 150.0 500.0" # Configure and set up a flow set sink0 [new Agent/LossMonitor] set sink1 [new Agent/LossMonitor] set sink2 [new Agent/LossMonitor] set sink3 [new Agent/LossMonitor] $ns attach-agent $n(0) $sink0 $ns attach-agent $n(1) $sink1 $ns attach-agent $n(2) $sink2 $ns attach-agent $n(3) $sink3 #$ns attach-agent $sink2 $sink3 set tcp0 [new Agent/TCP] $ns attach-agent $n(0) $tcp0 set tcp1 [new Agent/TCP] $ns attach-agent $n(1) $tcp1 set tcp2 [new Agent/TCP] $ns attach-agent $n(2) $tcp2 set tcp3 [new Agent/TCP] $ns attach-agent $n(3) $tcp3 proc attach-CBR-traffic {node sink size interval} { #Get an instance of the simulator set ns [Simulator instance] #create a CBR agent and attach it to the node set cbr [new Agent/CBR] $ns attach-agent $node $cbr $cbr set packetSize $size $cbr set interval_ $interval #attach CBR source to sink; $ns connect $cbr $sink return $cbr } set cbr0 [attach-CBR-traffic $n(0) $sink1 1000 .015] set cbr1 [attach-CBR-traffic $n(1) $sink2 1000 .015] set cbr2 [attach-CBR-traffic $n(2) $sink2 1000 .015] set cbr3 [attach-CBR-traffic $n(3) $sink2 1000 .015] $ns at 0.0 "record" $ns at 0.5 "$cbr1 start" $ns at 1.5 "$cbr3 start" $ns at 2.0 "$cbr0 stop" $ns at 2.0 "$cbr2 stop" $ns at 0.2 "$cbr3 start" $ns at 4.0 "$cbr3 stop" $ns at 10.0 "finish" puts "start of simulation." $ns run i got error when tried that program $ ns 4node.tcl num_nodes is set 4 INITIALIZE THE LIST xListHead syntax error in expression "$i $val(nn)": extra tokens at end of expression while executing "for {set i 0 } {$i < $val(nn)} {incr i} { $ns intial_node_pos $n ($i) 30+i*00 }" <file "4node.tcl" line 123> what's wrong? i always got the same problem when run such kind of this program...please help me out i really need someone who expert on that can help me thank you very much $ns run