[ns] DropTail queue-limit calculation
Дмитрий Синельников
geos_rf at mail.ru
Wed Apr 16 00:50:37 PDT 2008
Hi All,
Did anyone have a chance to count the number of packets
sitting in a drop-tail queue precisely?
I have the latest ns v.2.33 and faced the following issue:
I was running simple script with the following topology
> node ----- router1 ---- router2 ----- receiver
where the link type between routers was set to DropTail
and queue limit was set to 16 packets
> set rout_link [$ns duplex-link $r1 $r2 $bw_rout $delay_rout DropTail]
> $ns queue-limit $r1 $r2 16
I enabled trace-all' traces and then parsed the output
file with the simple awk script. The idea was to see the
time-dependent built of the bottleneck queue. As a result the
number of packets in a queue never reached its limit of 16 and
packets started dropping when queue built was equal to 15
packets instead of 16 as it should be.
I took a look at the
> void DropTail::enque(Packet* p)
function which is implemented in the
> \ns-2.33\queue\drop-tail.cc,
file and found that one of the conditions to enable "packet drop"
mechanism is not quite correct (from my viewpoint):
> if ( + (q_->length() + 1) >= qlim_ +)
Here q_->length() is the current number of packets sitting
in a queue and qlim_ is a queue-limit (which is 16). This
explains why the packet-drop started at 15 packets: 15 + 1
is equal to 16 thus a packet is dropped. It can be 'cured'
easily by exchanging >= with >.
Link queue is pretty old and one of the basic features
in ns. So the question is:
"Is it a real bug and nobody ever tried to count the number
of packets sitting in a queue precisely or it is kinda
specific logic of ns queue management?"
I understand that it is a minor bug but I just wanted to know
someone's opinion concerning this issue.
Best regards,
Dmitry Sinelnikov
More information about the Ns-users
mailing list