sir,
I am using below tcl code to generate xgraph but it give the
following error:
"can't read "n0": no such variable
while executing
"$ns attach-agent $n0 $udp0"
(procedure "attach-expoo-traffic" line 6)
invoked from within
"attach-expoo-traffic $n4 $Sink0 200 2s 1s 100k"
invoked from within
"set udp0 [attach-expoo-traffic $n4 $Sink0 200 2s 1s 100k]"
(file "blue1.tcl" line 145)"
---------------------------------blue.tcl-------------------------------------------------------------------
#script illustrating the BLUE algorithm
#Senders are TCP-SACK senders, and receivers are TCP-SACK sinks
set ns [new Simulator]
# turn on ns and nam tracing
$ns color 0 red
#set the no of TCP flows here
set f0 [open out0.tr w]
set f1 [open out1.tr w]
set f2 [open out2.nam w]
$ns namtrace-all $f2
# create the nodes
#First create TCP senders and receivers
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
# create the links
#betwwen the senders and n1, receivers and n2
$ns duplex-link $n0 $n2 10Mb 1ms DropTail
$ns duplex-link $n1 $n2 10Mb 1ms DropTail
#Bottle neck link between between n1 and n2
$ns simplex-link $n2 $n3 1Mbps 100ms Blue
$ns simplex-link $n4 $n3 1Mbps 100ms DropTail
$ns simplex-link $n5 $n3 1Mbps 100ms DropTail
proc finish {} {
global ns f0 f1 f2 f3
$ns flush-trace
close $f0
close $f1
close $f2
exec nam out2.nam &
exec xgraph out0.tr out1.tr -geometry 800x400 &
exit 0
}
#Configure BLUE queue parameters here
set blueq [[$ns link $n2 $n3] queue]
$blueq set decrement 0.00025
$blueq set increment 0.0025
$blueq set dhold-time 100ms
$blueq set ihold-time 100ms
#Enable ECN here
$blueq set setbit true
#set the queue-limit between n1 and n2
$ns queue-limit $n2 $n3 50
#set up queue monitor, sample every 0.5 seconds
set qfile [open "test-blue-qsize.out" w]
set qm [$ns monitor-queue $n2 $n3 $qfile 0.5]
[$ns link $n2 $n3] queue-sample-timeout
proc attach-expoo-traffic { node sink size burst idle rate } {
set ns [Simulator instance]
set udp0 [new Agent/UDP]
$udp0 set fid_ 1
$udp0 set ecn_ 1
$ns attach-agent $n0 $udp0
set udp1 [new Agent/UDP]
$udp1 set fid_ 2
$udp1 set ecn_ 1
$ns attach-agent $n1 $udp1
#set Sink0 [new Agent/TCPSink/Sack1/DeAck]
#$Sink0 set ecn_ 1
#$ns attach-agent $n4 $Sink0
#set Sink1 [new Agent/TCPSink/Sack1/DeAck]
#$Sink1 set ecn_ 1
#$ns attach-agent $n5 $Sink1
set traffic0 [new Application/Traffic/Pareto]
$traffic0 set packetSize_ 1000
$traffic0 set burst_time_ 200ms
$traffic0 set idle_time_ 200ms
$traffic0 set shape_ 1.5
$traffic0 set rate_ 10000K
$traffic0 attach-agent $udp0
set traffic1 [new Application/Traffic/Pareto]
$traffic1 set packetSize_ 1000
$traffic1 set burst_time_ 200ms
$traffic1 set idle_time_ 200ms
$traffic1 set shape_ 1.5
$traffic1 set rate_ 10000K
$traffic1 attach-agent $udp1
$ns connect $udp0 $Sink0
$ns connect $udp1 $Sink1
return $traffic0
return $traffic1
}
proc record {} {
global Sink0 Sink1 f0 f1
set ns [Simulator instance]
set time 0.5
set bw0 [$Sink0 set bytes_]
set bw1 [$Sink1 set bytes_]
set now [$ns now]
puts $f0 "$now [expr $bw0/$time*8/1000000]"
puts $f1 "$now [expr $bw1/$time*8/1000000]"
$Sink0 set bytes_ 0
$Sink1 set bytes_ 0
$ns at [expr $now+$time] "record"
}
set Sink0 [new Agent/LossMonitor]
set Sink1 [new Agent/LossMonitor]
$ns attach-agent $n4 $Sink0
$ns attach-agent $n5 $Sink1
set udp0 [attach-expoo-traffic $n4 $Sink0 200 2s 1s 100k]
set udp1 [attach-expoo-traffic $n5 $Sink1 200 2s 1s 200k]
$ns at 0.0 "record"
$ns at 10.0 "$udp0 start"
$ns at 10.0 "$udp1 start"
$ns at 90.0 "$udp0 stop"
$ns at 95.0 "$udp1 stop"
$ns at 100.0 "finish"
$ns run
plz solve error or tell me how to above error.
thank you