# May 1999, by I. AAD, using ns-2.1b4 set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf # the variable nbmob is in fact the number of mobiles -1 set nbmob 59 set nbmobp1 [expr $nbmob+1] set nbmobp2 [expr $nbmob+2] #the next variables are used to compute the standard deviation set som 0.0 set somcar 0.0 set nbevnts [expr $nbmob*2] proc finish {} { global ns nf som somcar nbmobp1 set avr [expr $som/100] set avrsq [expr $somcar/100] set variance [expr $avrsq-$avr*$avr] set relstdev [expr 100*sqrt($variance)/$avr] puts "_________________________" puts "result $relstdev%" puts "-------------------------" $ns flush-trace close $nf # exec nam out.nam & exit 0 } proc record {} { global sink som somcar set ns2 [Simulator instance] set time 0.01 set bytrec [expr [$sink set bytes_]/1000] set now [$ns2 now] set som [expr $som+$bytrec] set somcar [expr $somcar+$bytrec*$bytrec] $sink set bytes_ 0 $ns2 at [expr $now+$time] "record" } proc etatini {} { global ns n nbmob for {set i 0} {$i <= $nbmob} {incr i} { set a [expr round(rand())] if $a<=0.5 {$ns rtmodel-at now down $n($i) } } } proc switchon {} { global n ns nbevnts nbmob for {set i 0} {$i <= $nbevnts} {incr i} { set time [expr rand()*1.08] set ln [expr round(rand()*$nbmob)] $ns rtmodel-at $time up $n($ln) } } proc switchoff {} { global n ns nbevnts nbmob for {set i 0} {$i <= $nbevnts} {incr i} { set time [expr rand()*1.08] set ln [expr round(rand()*$nbmob)] $ns rtmodel-at $time down $n($ln) } } for {set i 0} {$i <= $nbmobp2} {incr i} { set n($i) [$ns node] } set sink [new Agent/LossMonitor] $ns attach-agent $n($nbmobp2) $sink for {set i 0} {$i <= $nbmob} {incr i} { $ns duplex-link $n($i) $n($nbmobp1) 1Mb 10ms DropTail set ag($i) [new Agent/CBR] $ns attach-agent $n($i) $ag($i) $ag($i) set packetSize_ 625 $ag($i) set interval_ 0.005 } $ns duplex-link $n($nbmobp1) $n($nbmobp2) [expr $nbmobp1*1000000] 10ms DropTail for {set i 0} {$i <= $nbmob} {incr i} { $ns connect $ag($i) $sink $ns at 0 "$ag($i) start" $ns at 1.1 "$ag($i) stop" } "etatini" "switchon" "switchoff" $ns at 0.07 "$sink set bytes_ 0" $ns at 0.08 "record" $ns at 1.08 "finish" $ns run