[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
priorities in CBQ seem not to work
- To: [email protected]
- Subject: priorities in CBQ seem not to work
- From: Urs Thuermann <[email protected]>
- Date: 16 Aug 1999 18:23:01 +0200
- Cache-Post-Path: mumm.ibr.cs.tu-bs.de!thuerman@tuborg
- Newsgroups: ibr.mailinglists.ns-users
- Organization: TU Braunschweig, Informatik (Bueltenweg), Germany
- Sender: [email protected]
I use the CBQ queuing with priorities in my simulations. I have
traffic of small UDP packets that I want to be served with high
priority. Another traffic flow generates large TCP packet, that are
inserted into a lower priority class the queue is set as follows:
proc link {n1 n2 bw delay qtype} {
global ns
$ns duplex-link $n1 $n2 $bw $delay $qtype
if {$qtype == "CBQ"} {
conf_queue $n1 $n2 RIO
}
}
proc conf_queue {n1 n2 qtype} {
global ns
set cbqlink [$ns link $n1 $n2]
set ef_class [new CBQClass]
set af1_class [new CBQClass]
set af2_class [new CBQClass]
set be_class [new CBQClass]
$ef_class install [new Queue/DropTail]
$af1_class install [new Queue/$qtype]
$af2_class install [new Queue/$qtype]
$be_class install [new Queue/DropTail]
# parent okborrow allot maxidle prio level extradly
$topclass setparams none 0 .50 auto 8 2 0
$ef_class setparams $topclass true .11 auto 0 1 0
$af1_class setparams $topclass true .40 auto 1 1 0
$af2_class setparams $topclass true .30 auto 2 1 0
$be_class setparams $topclass true .19 auto 3 1 0
$cbqlink insert $topclass
$cbqlink insert $ef_class
$cbqlink insert $af1_class
$cbqlink insert $af2_class
$cbqlink insert $be_class
$cbqlink bind $ef_class 0 1
$cbqlink bind $af1_class 2 3
$cbqlink bind $af2_class 4 5
$cbqlink bind $be_class 6
}
The UDP agent is configured to send packets with flow id 0 while the
TCP agent sets the flow id of its packets to 2.
My simulatons however show some unexpected effect: When a UDP packet
arrives at the queue while the high priority queue ($ef_class) is
empty and there are some packets in the $af1_class queue, the UDP
packet is not sent immediately (this is although the UDP traffic flow
does not exceed its allocated bandwidth of 11% of the total available
bandwidth). Instead up to 11 lower priority TCP packets from the
$af1_class are sent before the UDP packet from $ef_class is dequeued
and sent.
Is this a bug in the CBQ implementation or do I misunderstand the
priorities in CBQ?
urs