I am trying to understand the queuing mechanism of linux-htb QDisc and QDisc of linux tc in general.
What I could gather:
During TX, the packet is queued into the queue inside the linux tc. This queue by default follows a pfifo_fast QDisc with a txqueuelen of 1000. The packet scheduler dequeues the packet from this queue and puts it onto the TX driver queue (ring buffer).
When we use linux-htb, the txqueuelen is inherited only for the default queue. [Link ].
My question:
Consider the tree (rates are specified in kbits/sec in parenthesis ()):
1: root qdisc (class htb)
(100)
/ | \
/ | \
/ | \
1:1 1:2 1:3 parent qdiscs (class htb)
(30) (10) (60)
1. Are there internal queues maintained for each of the parent htb classes (1:1, 1:2 and 1:3)? If yes what is their queue length? If not, how many queues are actually maintained and for what purpose? What is their queue length?
2. What exactly is meant by Queueing Discipline (QDisc)? Is it the property of the data structure used (queue)? or it is a property of the packet scheduler? Or maybe both combined?
3. While reading the source code of htb QDisc [Link ], I came accross something called a direct queue. What is a direct_queue?
Provide link to relevant sources if possible.
Asked by sbhTWR
(103 rep)
Feb 28, 2019, 02:36 PM
Last activity: Nov 4, 2019, 06:50 PM
Last activity: Nov 4, 2019, 06:50 PM