队列指的是在缓存中对报文进行排序的逻辑。当流量的速率超过接口带宽或超过为该流量设置的带宽时,报文就以队列的形式暂存在缓存中。报文离开队列的时间、顺序,以及各个队列之间报文离开的相互关系由队列调度算法决定。
华为交换机设备的每个端口上都有 8 个下行队列,称为CQ(Class Queue)队列,也叫 端口队列(Port-queue),在交换机内部与前文提到的 8 个PHB一一对应,分别为BE、 AF1、AF2、AF3、AF4、EF、CS6 和CS7。单个队列的报文采用 FIFO(First In First Out)原则入队和出队。
- PQ(Priority Queuing)调度
PQ(Priority Queuing)调度,就是严格按照队列优先级的高低顺序进行调度。只有 高优先级队列中的报文全部调度完毕后,低优先级队列才有调度机会。 采用PQ 调度方式,将延迟敏感的关键业务放入高优先级队列,将非关键业务放入 低优先级队列,从而确保关键业务被优先发送。 PQ调度的缺点是:拥塞发生时,如果较高优先级队列中长时间有分组存在,那么 低优先级队列中的报文就会由于得不到服务而“饿死”。
假设端口有 3 个采用PQ调度的队列,分别为高优先(High)队列、中优先(Medium) 队列、和低优先(Low)队列,它们的优先级依次降低。如图,其中报文编号表示报文到达顺序。
图1 PQ调度
- RR(Round Robin)调度
RR调度采用轮询的方式,对多个队列进行调度。RR以环形的方式轮询多个队列。 如果轮询的队列不为空,则从该队列取走一个报文;如果该队列为空,则直接跳过该队列,调度器不等待。
图2 RR调度