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

Problem with CBQ and TCP Traffic



Hi, I'm trying to use a CBQ queue with TCP traffic, but I get the
following error:

ns: _o34 unknown-flow 1280 768 3 3:
    (_o34 cmd line 1)
    invoked from within
"_o34 cmd unknown-flow 1280 768 3 3"
    invoked from within
"catch "$self cmd $args" ret"
    (procedure "_o34" line 2)
    (SplitObject unknown line 2)
    invoked from within
"_o34 unknown-flow 1280 768 3 3"

The code that I'm using is the following:

proc finish {} {
	global ns nf sender receiver
	$ns flush-trace
	close $nf
	close $sender
	close $receiver
	exit 0
}

proc attach-expoo-traffic { node sink size burst idle rate type} {
	#Get an instance of the simulator
	set ns [Simulator instance]
	#Create a UDP agent and attach it to the node
	set source [new $type]
	$ns attach-agent $node $source
	#Create an Expoo traffic agent and set its configuration parameters
	set traffic [new Traffic/Expoo]
	$traffic set packet-size $size
	$traffic set burst-time $burst
	$traffic set idle-time $idle
	$traffic set rate $rate
	#Attach the traffic agent to the traffic source
	$source attach-traffic $traffic
	#Connect the source and the sink
	$ns connect $source $sink
	return $source
}


#Create link between n1 and n2
##############################
proc setupLink {n1 n2 bw delay qtype} {
global ns

	$ns duplex-link $n1 $n2 $bw $delay $qtype

	#if queue type is CBq, then setup CBQ queue
	###########################################
	if { "$qtype" == "CBQ" } {
		setupCBQ $n1 $n2
 	}
}


#Setup a CBQ Queue. Create two queues:
# audioClass: audio queue. Priority 0 (highest)
# dataClass : data queue. Priority 1
###############################################
proc setupCBQ {n1 n2} {
global ns

	#Get link
	#########
	set cbqlink [$ns link $n1 $n2]
	
	#Create classes for the queue
	#############################
	set topClass   [new CBQClass]
	set audioClass [new CBQClass]
	set dataClass  [new CBQClass]

	#Install DropTail queue in audioClass and dataClass
	###################################################
	$audioClass install-queue [new Queue/DropTail]
	$dataClass  install-queue [new Queue/DropTail]

	#set parameters for audioClass and dataClass
	############################################
	#			parent		borrow?		bw all.	delay	prty	type	extra delay
	#			------		-------		-------	-----	-----	----	-----------
	$topClass   setparams 	none      	0    		0.50 	auto 	8 	2 	0
	$audioClass setparams 	$topClass 	true 		0.11 	auto 	1 	1 	0
	$dataClass  setparams 	$topClass 	true 		0.40 	auto	2 	1 	0

	#Insert new classes into the link
	#################################
	$cbqlink insert $topClass
	$cbqlink insert $audioClass
	$cbqlink insert $dataClass
	
	#Attach flow ids to each queue
	##############################
	$cbqlink bind $audioClass 0 2
	$cbqlink bind $dataClass 3 10
}

################
# MAIN PROGRAM #
################

#Some important variables
########################

#Start environment
##################
set ns [new Simulator]
$ns color 1 Red
$ns color 2 Yellow
$ns color 3 Blue
$ns color 4 Green

#Trace files
############
set nf [open out.nam w]
$ns namtrace-all $nf
set sender [open out.log w]
set receiver [open in.log w]

#Create nodes
#############
set C0 [$ns node]
set C1 [$ns node]
set t1 [$ns node]
set t2 [$ns node]
set c1 [$ns node]
set c2 [$ns node]


#Set up links between nodes
###########################
#Hop links
##########
setupLink $C0 $C1 1.5Mb 5ms CBQ
#Transmision link
#################
setupLink $t1 $C0 64Kb 5ms DropTail
setupLink $t2 $C0 64Kb 5ms DropTail
#Recepcion link
###############
setupLink $C1 $c1 64Kb 5ms DropTail
setupLink $C1 $c2 1.5Mb 5ms DropTail

#TEST TEST TEST
 set tcp_src1 [new Agent/TCP] 
 set tcp_src2 [new Agent/TCP] 
 set tcp_snk1 [new Agent/TCPSink]
 set tcp_snk2 [new Agent/TCPSink]
 $ns attach-agent $t2 $tcp_src1
 $ns attach-agent $c2 $tcp_snk1
 $ns attach-agent $c2 $tcp_src2
 $ns attach-agent $t2 $tcp_snk2
 $tcp_src1 set fid_ 3
 $tcp_src2 set fid_ 4
 $ns connect $tcp_src1 $tcp_snk1
 $ns connect $tcp_src2 $tcp_snk2
 set ftp1 [$tcp_src1 attach-source FTP]
 set ftp2 [$tcp_src2 attach-source FTP]
#TEST TEST TEST

#Create sinks
#############
set null1 [new Agent/LossMonitor] 
$ns attach-agent $c1 $null1

#Create agents
##############
set cbr1 [attach-expoo-traffic $t1 $null1 200 2s 1s 64k Agent/CBR/UDP]
$cbr1 set fid_ 1

#Connect agents
###############
$ns connect $cbr1 $null1

#Set trace files
################
#$ns trace-queue $t1 $C0 $sender
#$ns trace-queue $C2 $c1 $receiver

#Start the simulation
#####################
#$ns at 0.0 "result"
$ns duplex-link-op $C0 $C1 queuePos 0.5
$ns at 0.5 "$cbr1 start"
$ns at 1.0 "$ftp1 start"
$ns at 2.0 "$ftp2 start" 
$ns at 90.6 "$cbr1 stop"
$ns at 100.0 "finish"

Everything works OK except for the part that is between the TEST
comments. If I change the queue between C0 and C1 to a DropTail queue,
the simulation works. If I change the queue back again to a CBQ queue, I
get the previous error message.

I'm new to ns and it is very probably that I'm doing something wrong.
Any clue?

Thanks,

Oscar.