# ======================================================
# 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