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

[ns] problem with ns



I have:
....................

#----------------------------------------------------------------------------------------------------------------------------
#Create  nodes and links
#----------------------------------------------------------------------------------------------------------------------------
 
puts "How many flows do you want?(2,3,4,6,8 or 10)"           
 
set numero_flussi [gets stdin]                     
set numero_nodi [expr 2*$numero_flussi+2]
 
for {set i 0} {$i <= $numero_nodi} {incr i} {
 set n($i) [$ns node]
 
#$n11 shape hexagon
#$n12 shape hexagon
 
for {set i 0} {$i <= $numero_flussi} {incr i} {
 
    $ns duplex-link $n($i) $n([expr $numero_flussi+1]) 10Mb 10ms DropTail
 
}   
 
for {set i  [expr $numero_flussi+3]} {$i <= [expr 2*$numero_flussi+2]} {incr i} {
 
    $ns duplex-link $n($i) $n([expr $numero_flussi+2]) 10Mb 10ms DropTail
 
}
 
$ns simplex-link     $n([expr $numero_flussi+1])  $n([expr $numero_flussi+2])  $BW 2ms $tipo_di_coda
$ns simplex-link     $n([expr $numero_flussi+2])  $n([expr $numero_flussi+1])  $BW 2ms DropTail
$ns simplex-link-op  $n([expr $numero_flussi+1])  $n([expr $numero_flussi+2])  orient right
 
 
#----------------------------------------------------------------------------------------------------------------------------
#Monitor_queue
#----------------------------------------------------------------------------------------------------------------------------
 
#Monitor the queue between the routers
$ns duplex-link-op $n([expr $numero_flussi+1]) $n([expr $numero_flussi+2]) queuePos 0.5
 
$ns trace-queue $n([expr $numero_flussi+1])  $n([expr $numero_flussi+2]) $tfrouters
    
#Oggetti QueueMonitor
set queue_r_r [$ns monitor-queue $n([expr $numero_flussi+1])  $n([expr $numero_flussi+2]) [$ns get-ns-traceall]]
 
#----------------------------------------------------------------------------------------------------------------------------
#Create Flow-Monitor sinks links
#----------------------------------------------------------------------------------------------------------------------------
 
for {set i  [expr $numero_flussi+3]} {$i <= [expr 2*$numero_flussi+2]} {incr i} {
 

set getlink_r_sink($i) [$ns link $n([expr $numero_flussi+2]) $i]
set fmon_r_sink($i) [$ns makeflowmon Fid]
$ns attach-fmon $getlink_r_sink($i) $fmon_r_sink($i)
 
set tf_r_sink($i)   [open flow_r_sink($i).tr w]
 
$fmon_r_sink($i) attach $tf_r_sink($i)
 
    for {set j 0} {$j <= $finishTime} {set j [expr $j + 0.5]} {
    $ns at $j "$fmon_r_sink($i) dump"
 
    }
 
}
 
 

proc creaflowmon {} {
   
    global counter ns numero_flussi
    global n([expr $numero_flussi+1])  n([expr $numero_flussi+2])
 
  
    set counter [$ns makeflowmon Fid]           
    set bottleneck [$ns link $n([expr $numero_flussi+1])  $n([expr $numero_flussi+2])]       
    $ns attach-fmon $bottleneck $counter        
   
     for {set i 0} {$i <= $numero_flussi} {incr i} {
      global  tcp($i)bw
      set tcp($i)bw 0
     }
   
}
 
...............
 
why it doesn't work?It says:
 
can't read "n(4)" : no such variable 
while executing
"$ns link $n([expr $numero_flussi+1])  $n([expr $numero_flussi+2])"
(procedure "creaflowmon" line 8)
invoked from within
"creaflowmon"
 
 
why monitor-queue is ok?
Thank you for your help!