总结如下:
现有数据包的数量>CDT,如果新来的数据包要进入目前最长的队列,则丢弃该数据包;如果新来的数据包不是进入目前最长的队列,则插入该数据包。
26
上图,已有三种Flow,对应进入三个队列,且占用了10个座位;
对于新来的数据包,由于数据包的number(数量)超过了HQO定义的值,而且该新来的数据包将要进入的Queue长度是目前所有队列中最长的,那么,将丢弃这个新来的数据包。
27
上图,将最长队列中的最后一个数据包删除,然后自己加入队列(图中为第三行的队列)。
上图,CDT和HQO的目的:每个队列中的报文数比较均衡,不会出现某个队列过长或过短。 总结WFQ的三步骤:
分类:自动进行,按FLOW进行分类;
插入:对256个队列宏观调控;丢弃原则(依靠CDT和HQO,具体情况如前面所讲)。 调度:
接下来讲WFQ的调度机制。
28
上图,假设IP Precedence采用默认值0,real packet size为真实报文的大小,A1[100]表示报文A1的大小为100.
那么上图四种报文的FT值如何计算呢?如下图所示:
注意:Finish time即报文在queue中等待被发送出去的时间。图中对于A2来说,必须等A1发送出去之后才能轮到其发送,故A2的FT=100+20,而不是20。
WFQ的调度机制:报文FT数值越小,越优先调度该报文。WFQ的思想:让大包先走。 所以上图中四种报文出队列的顺序为:A1—A2—B1—B2。
上面的方法,仅仅体现出了WFQ的Fair特性,而没有体现出Weighted特性,因为所有报文的precedence都采取默认值0。
为体现Weighted特性,可以将重要报文的precedence设置的大一些,如下图:
29
上图报文发送的先后顺序为:B1—B2---A1—A2.
30