Re: [LARTC] Question on prio qdisc

Linux Advanced Routing and Traffic Control

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

 



Hi,
 
You can refer to http://lxr.linux.no/source/net/sched/sch_prio.c for the source code of prio qdisc.
 
If you look at the drop function of prio (prio_drop), it really drops packet with precedence of low to high priority. But when a incoming packet finds that there is no room in the queue, it's dropped without calling prio_drop function. The prio_drop will be called based on other condition that I can't remember.
 
If you want to achieve what you want, which is to drop packets with low priority first, I think you can attach a RED qdisc to low prioity queues and set the limit to drop packets before the queues are full.
 
I think my solution is worth trying.
 
Hope this helps,
Wing


"Cain, Joseph" <jcain01@xxxxxxxxxx> wrote:

I have been doing some experiments with the
prio qdisc. I haven't tried to understand the
code, but the behavior I have observed in the
experiments leads me to believe that the prio
qdisc operates in the following manner when the
interface queue is full:
1) Suppose that we are operating with the default
3 priority bands and the interface queue is full
of packets of the lowest priority (indicated by the
TOS byte).
2) Then suppose a new packet of highest priority is to be
sent to the interface for queuing.
3) It appears to me that the newly arriving packet of
highest priority will be dropped because the queue is
full. Prio does not appear to drop one of the lower priority
packets waiting in the queue to make room for the
higher priority packet.

The evidence for this conclusion is that I can set the
"txqueuelen" to a large value to make ample room for
queuing high priority packets. Then if the interface
is sent a mixture of an overload of low priority
packets and a small load of high priority packets, the
high priority packet suffer just as high a packet loss
percentage as the low priority packets. To me this indicates
that they are getting dropped at the interface because the
queue is full.

Can anyone with knowledge of the code or more knowledge
of the proper operation of the prio qdisc verify that this
is indeed what is happening?

Also, the way I would really like prio to operate is that when
the queue is full, I want it not to drop a newly arriving packet
unless there are no lower priority packets waiting in the queue.
If there is a lower priority packets waiting in the queue, I would
like this packet to be dropped to make room for the higher priority packet.
Does anyone know if there is a version of prio that operates this way, or
if there is another qdisc that provides this capability?

Thanks,
Bibb Cain
_______________________________________________
LARTC mailing list / LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/


Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!

[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux