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

[ns] Cannot see RTO in xgraph plot



Hi everybody,
I am a green hand of ns and i am using ns-2.1b6 on Redhat Linux 6.0.
I am using TCP/Reno in my simulation and i have a problem.
Could someone please explain to me how obtain RTO in xgraph.
Which is it the variable that i owe set to measure the timeout ?
This is a part my script:
 
if {$argc==1} {
  set tick [lindex $argv 0]
} else {
  puts " Usage : ns $argv0 TCPTick_in_seconds (real) "
  exit 1
}
 
#Create the 'Simulator Object'
set ns [new Simulator]
 
#Open a file for writing the nam trace data
set trace_nam [open out.nam w]
set trace_rtt [open out.rtt w]
set trace_srtt [open out.srtt w]
set trace_timeout [open out.rto w]
 
$ns namtrace-all $trace_nam
 
#Record procedure
proc record { } {
  global ns ttcp0 trace_rtt trace_srtt trace_timeout
 
set interval  0.1
 
#Get the variables of interest
set curr_rtt [expr [$ttcp0 set rtt_] * [$ttcp0 set tcpTick_]]
set curr_timeout [expr [$ttcp0 set timeout_]]
set curr_srtt [expr ([$ttcp0 set srtt_] >> [$ttcp0 set T_SRTT_BITS])*[$ttcp0 set tcpTick_]]
 
#Get the current time
set now [$ns now]
 
#Write the variables of interest vs.time
puts $trace_rtt "$now $curr_rtt"
puts $trace_srtt "$now $curr_srtt"
puts $trace_timeout "$now $curr_timeout"
#Re-schedule the procedure
$ns at [expr $now+$interval] "record"
}
 
#Add a 'finish' procedure that closes the trace and starts nam
proc finish { } {
global ns trace_nam trace_rtt trace_srtt trace_timeout trace_all
 
$ns flush-trace
close $trace_nam
close $trace_rtt
close $trace_srtt
close $trace_timeout
 
exec xgraph out.rtt out.rto out.srtt -geometry 600x400 &
exec nam out.nam &
exit 0
...........................
......................................
.......
 
$ns run
 
This is the error message
 
ns: record: can't read "timeout_" :no such variable
     while executing
    "subst   $[subst $var]"
         (procedure   "_o480" line 5)
         (Object  next  line 5)
         invoked from within
    "o480 next timeout_"
         ("eval"   body line 1)
         invoked  from  within
    "eval $self next $args"
         (procedure "_o480" line 18)
         (Agent set line 18)
         invoked from within
    "$ttcp0 set timeout_"
         (procedure "record" line 9)
         invoked from within
    "record"
 
I would greatly appreciate any help and advice, thanks a lot
 
                                                                   PROCACCI GAETANO