当网络中刚出现间歇性拥塞,且关键报文要求更优先的转发时,此时就需要进行拥塞管理。通过采用队列技术及不同的调度算法来发送队列中的报文流。如果某些突发的、非关键的报文装满队列,而后发往该队列的报文都被全部丢弃,那么拥塞管理也就未取得理想效果,此时就需要配合使用拥塞避免技术。
目录
1、拥塞管理
1.1 拥塞现象的产生与改善
拥塞现象主要发生的场景:
- 速率不匹配:报文从高速链路进入设备,再由低速链路转发出去。
- 汇聚问题:报文从多个接口同时进入设备,有一个没有足够带宽的接口转发出去。
拥塞引发的负面影响:
- 增加了报文的时延和抖动。
- 过高的延时会引起报文的重传。
- 使网络的有效吞吐率降低,造成网络资源的损害。
- 加剧耗费大量的网络资源(特别是存储资源),不合理的资源分配甚至可能导致系统陷入资源死锁而崩溃。
由上可知,拥塞使流量不能及时的获得资源,是造成服务性能下降的源头。然而在报文交换以及多用户业务并存的复杂环境下,拥塞又是常见的。因此采取有效的避免拥塞以及防止拥塞加剧的方法是必须的。
拥塞管理通过队列机制来实现:
第一步:将准备从一个接口发出的所有报文放入不同的缓存队列中;

优先级映射实现了从数据原始携带的QOS优先级到内部优先级或从内部优先级到QOS优先级的映射。优先级映射:https://blog.csdn.net/weixin_43997530/article/details/109686933
对于进入设备的报文,设备将报文携带的优先级或者端口优先级映射为内部优先级,然后根据内部优先级与队列之间的对应关系确定报文进入的队列。
第二步:根据各队列间的调度机制实现不同报文的差分转发。
提供差分服务的核心就是当拥塞发生时如何决定不同队列报文的转发次序,这就用到了队列的调度机制。常见的调度算法包括:FIFO、PQ、WRR、WFQ、CBQ等等。
1.2 常见的队列调度算法
1. FIFO(First In First Out)
FIFO队列不对报文进行分类,当报文进入接口的速度大于出接口能发送的速度时,FIFO按报文到达接口的先后顺序让报文进入队列,同时,FIFO在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队。
FIFO队列具有处理简单,开销小的优点。但FIFO不区分报文类型,采用尽力而为的服务模型,使得对时延敏感的实时应用的延迟得不到保证,关键业务的带宽也不能得到保证。
- 优点:实现机制简单且处理速度快。
- 缺点:不能有差别的对待优先级不同的报文。
2. PQ(Priority Queuing)
PQ队列是对关键业务应用设计的,且关键业务有一个重要的特点,就是需要在发生拥塞的时候要求优先保障关键的业务流量。
PQ调度机制:分为4个队列,分别为高优先级队列、中优先级队列、正常优先级队列和低优先级队列,它们的优先级依次降低。在报文出队的时候,PQ会首先让高优先级队列中的报文出队并发送,直到高优先级队列中的报文发送完,然后发送中优先级队列中的报文,同样直到发送完,正常和低优先级队列同理。如此,我们可以将关键业务的报文放入较高优先级的队列,将非关键业务流量(如E-mail)放入低优先级队列中。这样在网络出现拥塞时,可以保证关键业务报文优先传送,非关键业务的报文在处理关键业务的间隙传送。
如果高优先级队列中持续有报文等待被发送,那么后面较低优先级队列中的报文就迟迟不能得到发送,出现“饿死”现象。避免队列饿死需要上游设备精心规定数据流的业务特性以确保映射到高优先级队列的业务流不超出输出链路容量的一定比例,这样可以使高优先级队列常常为空,允许调度器为低优先级队列服务