我试图了解linux和linux的QDisc的排队机制。
我能收集到的是:在TX期间,包被排队到linux中的队列中。默认情况下,此队列遵循一个txqueuelen为1000的pfifo_fast QDisc。包调度程序将数据包从这个队列中排出,并将其放入TX驱动程序队列(环形缓冲区)。
当我们使用linux时,txqueuelen只对默认队列继承。[链接]。我的问题是:考虑树(在括号()中以kbit/秒为单位指定速率):
1: root qdisc (class htb)
(100)
/ | \
/ | \
/ | \
1:1 1:2 1:3 parent qdiscs (class htb)
(30) (10) (60)如果可能的话,提供相关来源的链接。
发布于 2019-03-03 20:24:33
免责声明:这些都是很多问题,我已经有十年没有使用过HTB了?所以我不能自信地回答。但到目前为止你还没有收到回复,也许这还是有帮助的。
是否为每个父htb类(1:1、1:2和1:3)维护内部队列?
它们是叶类,每个类都由一个qdisc队列结构表示,因此我假设它可以算作内部队列。不确定队列长度-抱歉。
struct htb_class_leaf {
int deficit[TC_HTB_MAXDEPTH];
struct Qdisc *q;
} leaf;Qdisc结构在include/net/sch_generic.h中定义。
排队纪律(QDisc)究竟是什么意思?
这取决于上下文,但基本上,它是一个内核API,在这个内核中包被排队和退出;因此,QDisc被赋予了一些控制权,来的数据包应该再次(甚至完全丢弃)的顺序(或时间)。这就是像HTB、SFQ或PRIO这样的QDiscs如何以各种方式塑造流量,比如优先排序或施加带宽限制。
Generally, queueing discipline ("qdisc") is a black box,
which is able to enqueue packets and to dequeue them (when
device is ready to send something) in order and at times
determined by algorithm hidden in it.而HTB只是几种这样的算法之一。
什么是direct_queue?
不是API的一部分,而是内部处理.所以你可以把它看作是HTB算法的一部分。
如果您有意地将数据包分类到X:0,或者如果默认类不存在,则HTB决定将它们放在一个单独的队列中,并且在去队列时,它将尝试首先发送这些数据包。
* [...] If we end up with classid MAJOR:0 we enqueue the skb into special
* internal fifo (direct). These packets then go directly thru. If we still
* have no valid leaf we try to use MAJOR:default leaf. It still unsuccessful
* then finish and return direct queue....and 这是它首先对直接数据包进行排队的地方。.
这通常是一个错误配置的结果(向不存在的类发送数据包),但是HTB决定在这种情况下,应该传递所有的通信量,而不是所有的通信量应该被丢弃(太具有破坏性)。
发布于 2019-03-03 21:10:46
一些基于模糊记忆的快速搜索:
HTB是灵活的。默认情况下,我认为每个叶类都有一个FIFO,也许它使用FIFO的默认配置。但是,您也可以使用PFIFO或FQ_CODEL作为叶类。例如,请参见此处的“可选地将队列规则附加到叶类”:http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm
如果你运行tc qdisc show,我想你会看到它们的。
“这个‘直接’队列只有在您的过滤器明确针对htb的'0‘分类”https://lists.bufferbloat.net/pipermail/cerowrt-devel/2013-June/006507.html时才会使用。直接队列没有成形。显然,现在可以控制直接队列的长度,尽管我不知道tc如何(或是否)支持这一点。https://patchwork.ozlabs.org/patch/225546/
我不会说有一个单独的“分组调度器”。包调度程序是一个QDisc (尽管,man tc-tbf将自己描述为“从不调度流量”;它的意思是它从不重新订购它)。
https://unix.stackexchange.com/questions/503563
复制相似问题