[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ns] Flow monitoring problem
HAve you taken a look under ~ns/tcl/test for examples like yr simulation?
You can see test-suite-cbq* if you haven't.
--Padma.
On Wed, 28 Feb 2001, Prashant Ratanchandani wrote:
> Dear all,
> I was trying to monitor flows on a cbq link using a
> flow monitor.
> However in my file dumping function the flow
> classifier is not returning the flow and as a result
> nothing is being dumped in the dumpfile..
> can anyone please take a look and tell me what is
> going wromd...i suspect the problem is not in cdump
> but even earlier null values are being returned..
> Please help!!
> The code is as follows-
> set opt(stop) 30
>
> set ns_ [new Simulator]
> set tracefd [open sim6.tr w]
> $ns_ trace-all $tracefd
>
> set s1 [$ns_ node]
> set s2 [$ns_ node]
> set s3 [$ns_ node]
> set s4 [$ns_ node]
> set r1 [$ns_ node]
> set k1 [$ns_ node]
>
> $ns_ duplex-link $s1 $r1 10Mb 5ms DropTail
> $ns_ duplex-link $s2 $r1 10Mb 5ms DropTail
> $ns_ duplex-link $s3 $r1 10Mb 5ms DropTail
> $ns_ duplex-link $s4 $r1 10Mb 5ms DropTail
> set quiet false
> set cbqlink [ns link $r1 $k1 wrr-cbq]
> $cbqlink set bandwidth 1.5Mb
> set maxBytes 187500
> # for a maxburst of 5, 1000-byte packets, set maxidle
> to
> # 0.002 (1/p - 1)
> $cbqlink set delay 5ms
> set qlim 20
> set cbq_qtype_ DropTail
> set topclass_ [new CBQClass]
> $topclass_ setparams none 0 0.98 auto 8 2 0
> set vidclass_ [new CBQClass]
> $vidclass_ setparams $topclass_ true 0.32 auto 1 1 0
> set q1 [new Queue/$cbq_qtype_]
> $q1 set limit_ $qlim
> $vidclass_ install-queue $q1
> set audioclass_ [new CBQClass]
> $audioclass_ setparams $topclass_ true 0.03 auto 1 1 0
> set q2 [new Queue/$cbq_qtype_]
> $q2 set limit_ $qlim
> $audioclass_ install-queue $q2
> set dataclass_ [new CBQClass]
>
>
> $dataclass_ setparams $topclass_ true 0.65 auto 2 1 0
> set q3 [new Queue/$cbq_qtype_]
> $q3 set limit_ $qlim
> $dataclass_ install-queue $q3
>
>
>
>
> $cbqlink insert $topclass_
> $cbqlink insert $vidclass_
> $cbqlink insert $audioclass_
> $cbqlink insert $dataclass_
>
> $cbqlink bind $vidclass_ 2;# fid 2
> $cbqlink bind $audioclass_ 1;# fid 1
> $cbqlink bind $dataclass_ 3; # fid 3
>
>
> #set ls1 [new Agent/LossMonitor]
> #$ns_ attach-agent $W(1) $ls1
>
> # setup CBR connections between a wired node and the
> MobileHost
> set udp1 [$ns_ create-connection UDP $s1 LossMonitor
> $r1 1]
> set cbr1 [new Application/Traffic/CBR]
>
>
>
> $cbr1 attach-agent $udp1
> $cbr1 set packetSize_ 190
> $cbr1 set rate_ 1.52Mb; # interval of 0.001
> set udp2 [$ns_ create-connection UDP $s2 LossMonitor
> $r1 2]
> set cbr2 [new Application/Traffic/CBR]
> $cbr2 attach-agent $udp2
> $cbr2 set packetSize_ 500
> $cbr2 set rate_ 2Mb; # interval of 0.002
>
>
>
> set udp3 [$ns_ create-connection UDP $s3 LossMonitor
> $r1 3]
> #set udp3 [new Agent/UDP]
> #$ns_ attach-agent $W(3) $udp3
>
>
> set cbr3 [new Application/Traffic/CBR]
> $cbr3 attach-agent $udp3
> $cbr3 set packetSize_ 1000
> $cbr3 set rate_ 1.6Mb; # interval of 0.005
>
> set fmon_ [$ns_ makeflowmon Fid]
> $ns_ attach-fmon $cbqlink $fmon_
>
> $ns_ at 0.0 "$cbr1 start; $cbr2 start; $cbr3 start"
> $ns_ at 4.0 "$cbr3 stop"
> $ns_ at 8.0 "$cbr3 start"
> $ns_ at 12.0 "$cbr2 stop"
> $ns_ at 18.0 "$cbr2 start"
> $ns_ at 20.0 "$cbr1 stop"
> $ns_ at 24.0 "$cbr1 start"
>
>
> [$cbqlink queue] algorithm top-level
>
> set stopTime 28.1
> set maxBytes 187500
> set linkno $cbqlink
> set interval 1.0
>
> set dumpfile temp.s
> set fcl [$fmon_ classifier]
>
>
> set fids { 1 2 3 4 }
> foreach i $fids {
> set oldbytes_($i) 0
> }
> set f [open $dumpfile w]
> puts $f "maxbytes $maxBytes"
>
> $ns_ at 0.0 " cdump $linkno $interval $f"
>
> set f1 [open temp.q w]
> set tmpqchan_ $f1
> puts $f1 "delay"
> $ns_ at $opt(stop) " cdumpdel $f1"
>
>
> $ns_ at $opt(stop).0002 "puts \"NS EXITING...\" ; $ns_
> halt"
>
> $ns_ at $opt(stop).0001 "finish"
>
> proc finish {} {
> global cbqlink quiet
> set graphfile temp.rands
> set bw 1500000
> #[[$cbqlink set link_] set bandwidth_]
> set maxbytes [expr $bw / 8.0]
>
>
>
>
> set awkCode {
> $2 == fid { print $1, $3/maxbytes }
> }
> set awkCodeAll {
> $2 == fid { print time, sum; sum = 0 }
> {
> sum += $3/maxbytes;
> if (NF==3)
> time = $1;
> else
> time = 0;
> }
> }
>
>
>
> set f [open $graphfile w]
> # puts $f "TitleText: $testname"
> # puts $f "Device: Postscript"
>
> exec rm -f temp.p
> exec touch temp.p
> foreach i { 1 2 3 4 } {
> exec echo "\n\"flow $i" >> temp.p
> exec awk $awkCode fid=$i
> maxbytes=$maxbytes temp.s > temp.$i
> exec cat temp.$i >> temp.p
> exec echo " " >> temp.p
> }
>
> exec awk $awkCodeAll fid=1 maxbytes=$maxbytes
> temp.s > temp.all
> exec echo "\n\"all " >> temp.p
> exec cat temp.all >> temp.p
>
> exec cat temp.p >@ $f
> close $f
> if {$quiet == "false"} {
> exec xgraph -bb -tk -x time -y
> bandwidth $graphfile &
> }
> # exec csh figure2.com $file
>
> exit 0
> }
>
> proc cdump { lnk interval file } {
>
> global fcl ns_ fmon_ cbqlink fids quiet
> oldbytes_
> set now [$ns_ now]
> set fcl [$fmon_ classifier]
> set fids { 1 2 3 4 }
>
> if {$quiet == "false"} {
> puts "$now"
> }
> foreach i $fids {
>
> set flow($i) [$fcl lookup auto 0 0
> $i]
>
>
> if { $flow($i) != "" } {
>
> set bytes($i) [$flow($i) set
> bdepartures_]
> puts $file "$now $i [expr
> $bytes($i) - $oldbytes_($i)]"
> set oldbytes_($i) $bytes($i)
> }
> }
> $ns_ at [expr $now + $interval] " cdump $lnk
> $interval $file"
> }
>
> proc cdumpdel file {
> global ns_ fmon_
> set now [$ns_ now]
> set fcl [$fmon_ classifier]
>
> set fids { 1 2 3 4 }
> foreach i $fids {
> set flow [$fcl lookup auto 0 0 $i]
> if { $flow != "" } {
> set dsamp [$flow
> get-delay-samples]
> puts $file "$now $i [$dsamp
> mean]"
> }
> }
> }
>
>
> puts "Starting Simulation..."
> $ns_ run
>
>
>
> Thanks in advance..
> cheers
> Prashant
>
> __________________________________________________
> Do You Yahoo!?
> Get email at your own domain with Yahoo! Mail.
> http://personal.mail.yahoo.com/
>
--
------------------------------------------------
Be true to your work, your word, and your friend.
--Thoreau
Padmaparna Haldar