[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ns] queue-tracing



Do a grep in ~ns/tcl/ex and ~ns/tcl/test. 
You will find some examples there.


Kun-chan Lan

On Thu, 23 Aug 2001, lorenz meier wrote:

> hi all
> in my simulations i would like to know what happens in the queues.
> i read in the ns manual about "monitor-queue" and similar things
> but i don't know what commands i have to add to my script, to get a 
> "trace-file of the queue"...can someone help me?
> thanks very much
> lorenz
> 
> here is the simulation script:
> 
> # ======================================================================
> # Define options
> # ======================================================================
> 
> set val(chan)       Channel/WirelessChannel
> set val(prop)       Propagation/TwoRayGround
> set val(netif)      Phy/WirelessPhy
> set val(mac)        Mac/802_11
> set val(ifq)        Queue/DropTail/PriQueue
> set val(ll)         LL
> set val(ant)        Antenna/OmniAntenna
> set val(x)              200  ;# X dimension of the topography
> set val(y)              200   ;# Y dimension of the topography
> set val(ifqlen)         50            ;# max packet in ifq
> set val(seed)           0.0
> set val(adhocRouting)   DSR
> set val(nn)             5            ;# how many nodes are simulated
> set val(stop)           20        ;# simulation time
> 
> # =====================================================================
> # Main Program
> # ======================================================================
> 
> #
> # Initialize Global Variables
> #
> 
> # create simulator instance
> 
> set ns		[new Simulator]
> 
> # setup topography object
> 
> set topo	[new Topography]
> 
> # create trace object for ns and nam
> 
> set tracefd	[open 5tr.tr w]
> set namtrace    [open 5nam.nam w]
> for {set i 0} {$i < $val(nn)} {incr i} {
>     set f($i)  [open out($i).tr w]
>     }
> $ns trace-all $tracefd
> $ns namtrace-all-wireless $namtrace $val(x) $val(y)
> 
> #Define a 'finish' procedure
> proc finish {} {
>         global ns tracefd f
>         $ns flush-trace
> 	#Close the trace file
>         close $tracefd
> 	#Execute nam on the trace file
>         exec nam 5nam.nam &
>         exit 0
> }
> 
> # define topology
> $topo load_flatgrid $val(x) $val(y)
> 
> #
> # Create God
> #
> set god [create-god $val(nn)]
> 
> #
> # define how node should be created
> #
> # Create channel
> set chan_0_ [new $val(chan)]
> #global node setting
> 
> $ns node-config -adhocRouting $val(adhocRouting) \
>                  -llType $val(ll) \
>                  -macType $val(mac) \
>                  -ifqType $val(ifq) \
>                  -ifqLen $val(ifqlen) \
>                  -antType $val(ant) \
>                  -propType $val(prop) \
>                  -phyType $val(netif) \
> 		 -topoInstance $topo \
> 		 -agentTrace ON \
>                  -routerTrace OFF \
>                  -macTrace OFF \
> 		 -channel $chan_0_
> 
> #
> #  Create the specified number of nodes [$val(nn)] and "attach" them
> #  to the channel.
> 
> for {set i 0} {$i < $val(nn) } {incr i} {
> 	set node_($i) [$ns node]
> 	$node_($i) random-motion 0		;# disable random motion
> 
> }
> #
> # Provide initial (X,Y, for now Z=0) co-ordinates for mobilenodes
> for {set i 0} {$i < $val(nn) } {incr i} {
>     $node_($i) set X_ [expr 80*cos((6.282/($val(nn))*($i+1)))]
>     $node_($i) set Y_ [expr 80*sin((6.282/($val(nn))*($i+1)))]
> 
>     $node_($i) set Z_ 0.0
> }
> 
> #
> 
> 
> #
> for {set i 0} {$i < $val(nn) } {incr i} {
>     set tcp($i) [new Agent/TCP]
>     $ns attach-agent $node_([expr ($val(nn)-1)]) $tcp($i)
> }
> 
> for {set i 0} {$i < $val(nn) } {incr i } {
>     set null($i) [new Agent/LossMonitor]
>     $ns attach-agent $node_($i) $null($i)
> }
> 
> for {set i 0} {$i <  $val(nn)-1 } {incr i} {
> 
> 
> 	$ns connect $tcp($i) $null($i)
> 	}
> 
> for {set i 0} {$i < ($val(nn)-1) } {incr i} {
>     set exp($i) [new Application/Traffic/Exponential]
>     $exp($i) set packetSize_ 210
>     $exp($i) set burst_time_ 3
>     $exp($i) set idle_time_ 1
>     $exp($i) set rate_ 64000
>     $exp($i) attach-agent $tcp($i)}
> 
> 
> for {set i 0} {$i < ($val(nn)-1) } {incr i} {
>     $ns at 5.0 "$exp($i) start" }
> 
> 
> 
> # Define node initial position in nam
> 
> for {set i 0} {$i < $val(nn)} {incr i} {
> 
>     # 20 defines the node size in nam, must adjust it according to your 
> scenario
>     # The function must be called after mobility model is defined
> 
>     $ns initial_node_pos $node_($i) 20
> }
> 
> proc record {} {
> 	global  null f
> 	set ns [Simulator instance]
> 	set time 0.001
> 	for {set i 0} {$i < 5} {incr i} {
> 	    set bw($i) [$null($i) set bytes_]
> 	    }
> 	set now [$ns now]
> 	for {set i 0} {$i < 5} {incr i} {
> 	    puts $f($i) "$now [expr $bw($i)]"
> 	    $null($i) set bytes_ 0
> 	    }
> 	$ns at [expr $now+$time] "record"
> }
> 
> $ns at 0.0 "record"
> 
> #Call the finish procedure after 5 seconds of simulation time
> $ns at 20 "finish"
> 
> #
> # Tell nodes when the simulation ends
> #
> for {set i 0} {$i < $val(nn) } {incr i} {
>     $ns at $val(stop).0 "$node_($i) reset";
> }
> 
> $ns at  $val(stop).0002 "puts \"NS EXITING...\" ; $ns halt"
> 
> 
> puts "Starting Simulation..."
> $ns run
> 
> 
> 
> 
> 
> 
> _________________________________________________________________
> Downloaden Sie MSN Explorer kostenlos unter http://explorer.msn.de/intl.asp
>