基于类的加权公平队列(Class Based Weighted Fair Queueing, CBWFQ)
(点击查看原图)
图8 基于类的加权公平队列示意图
如图8所示,基于类的加权公平队列(以后简称CBWFQ)首先根据报文进入网络设备的接口、报文的协议,报文是否匹配访问控制列表(access Control List,ACL)来对报文进行分类。然后让不同类别的报文进入不同的队列。对于不匹配任何类别的报文,报文被送入默认队列,按WFQ进行处理,即按照流的方式进行处理。
对于默认队列和1到N1的队列,用户可以设定队列的最大长度。当队列的长度达到队列的最大长度时,默认采用尾丢弃的策略。但用户还可以选择用加权随机早期检测(Weighted Random Early Detection, WRED)的丢弃策略。加权随机早期检测的丢弃策略请参见后面加权随机早期检测WRED的描述。
对于优先队列,由于在接口拥塞的时候流量限制开始起作用,所以用户不必设置队列的长度(也就没有了尾丢弃)。另外,由于优先队列中的报文一般是语音报文(Voice over IP, VoIP),采用的是UDP报文,所以WRED的丢弃策略也不需要。
为了避免这种情况的发生,队列可以采用加权随机早期检测WRED(Weighted Random Early Detection )的报文丢弃策略(WRED与RED的区别在于前者引入IP优先权来区别丢弃策略)。采用WRED时,用户可以设定队列的低限和高限。当队列的长度小于低限时,不丢弃报文;当队列的长度在低限和高限之间时,WRED开始随机丢弃报文(队列的长度越长,丢弃的概率越高);当队列的长度大于高限时,丢弃所有的报文。