QoS服务质量六路由器拥塞管理
4、Qos拥塞管理
拥塞是指由于网络资源不足而造成速率下降、引入额外延时的一种现象。拥塞会造成报文的传输时延、吞吐率低及资源的大量耗费。而在IP分组交换及多业务并存的复杂环境下,拥塞又极为常见。比如由于广域网的带宽通常要比局域网的带宽小,当一个局域网的用户向另一个局域网的用户发送数据时,由于广域网的带宽小于局域网的带宽,数据将不可能按局域网发送的速度在广域网上传输。
拥塞管理通过指定报文调度次序来确保高优先级业务优先被处理。
4.1、拥塞现象的产生
拥塞发生的主要场景:
- 速率不匹配:报文从高速链路进入设备,再由低速链路转发出去;
- 汇聚问题:报文从多个接口同时进入设备,由一个没有足够带宽的接口转发出去。
拥塞发生的负面影响:
(1)、增加了报文传输的时延和抖动;
(2)、过高的延迟会引起报文重传;
(3)、使网络的有效吞吐率降低,造成网络资源的损害;
(4)、剧耗费大量的网络资源(特别是存储资源),不合理的资源分配甚至可能导致系统陷入资源死锁而崩溃。
4.2、拥塞管理概述
拥塞管理是指网络在发生拥塞时使用队列技术,将从一个接口发出的所有报文放入多个队列,使用不同的调度算法来发送队列中的报文流。
4.2.1、网络设备的队列构成
什么是队列?
队列指的是在缓存中对报文进行排序的逻辑。当流量的速率超过接口带宽或超过为该流量设置的带宽时,报文就以队列的形式暂存在缓存中。报文离开队列的时间、顺序,以及各个队列之间报文离开的相互关系则由队列调度算法决定。
当网络发生拥塞时,网络设备中没有转发完毕而剩下的数据包,这部分数据包存储在网络设备的内存中,按照一定的规则排列。每个队列可以排列10个1500字节的数据包。也因此队列的单位通常是报文个数而不是报文字节数。
网络设备中的硬件队列和软件队列
在网络设备的出接口处,一般由一个最基本的队列,该队列以FIFO(First IN First Out)的方式调度,我们把该队列放入硬件队列。在硬件队列之前还有一个进行QoS管理和控制软件队列,拥塞发生时,就将存放在内存中等待发送的数据包组成队列,等待调度算法来发送队列中的报文流。
4.2.1.1、路由器的队列构成
当网络没有发生拥塞时,各接口进入的报文直接进入路由设备自身的硬件队列,发送队列按照FIFO(先进先出)的顺序转发出去。
当拥塞发生时,进入路由器的报文以及自身设备的报文进入软件队列缓存中,由调度算法来进行转发。
路由器设备缓存中的队列分为两种类型:
(1)、系统队列
路由器组网中,由硬件设备运行的维持组网,保障网络连通性,可达性的各种控制协议,组成的队列。系统队列又分为两种:
- 紧急队列:链路控制层的各种协议(PPP协议等)
- 协议队列:路由协议(OSPF、RIP、ISIS、BGP等)
(2)、用户队列
从路由器入接口进入的流用户使用的各种业务流量。路由器常用队列有FIFO、PQ、CQ、RTPQ、WFQ、CBQ、CBR等队列技术,默认使用FIFO队列。
4.2.1.2、交换机的队列构成
交换机工作在二层,处理的各业务流数据量大,带宽高,需要传输效率高,因此交换机使用高速硬件直接处理,采用芯片实现QoS队列。这种方式下,交换机采用二层头识别数据类型,主要流量是以使用802.1p的VLAN报文为主,还有来自三层DSCP的流。
交换机根据优先级信任规则,查找QoS映射表,将映射结果对报文进行内部优先级标记,报文映射到本地队列。
报文在入端口,根据映射表入本地队列;
报文在出端口,进行队列调度后发送;
常用的队列:SP、WRR、HWFQ。
4.2.2、路由器拥塞管理
4.2.2.1、FIFO队列
FIFO(First In First Out Queuing,先入先出)所有报文按到达转发接口的时间先后顺序,先入先出地发送FIFO队列报文。
优点:处理简单,开销小。
缺点:没有公平性,不同的流之间不互相隔离,关键业务的带宽不能得到保证。
FIFO的配置:
[sysname-Ethernet1/0/3] qos fifo queue-length queue-length
queue-length参数指定了FIFO队列的长度,即其最大可以容纳的报文数量。增加FIFO队列的长度可以减少丢包,但同时也可以增加延迟。
4.2.2.2、PQ队列
PQ(Priority Queuing,优先队列)调度,就是严格按照队列优先级的高低顺序进行调度。只有高优先级队列中的报文全部调度完毕后,低优先级队列才有调度机会。
采用PQ调度方式,将延迟敏感的关键业务放入高优先级队列,将非关键业务放入低优先级队列,从而确保关键业务被优先发送。
PQ队列的4个队列:
Top(高优先队列)、Middle(中优先队列)、Normal(正常优先队列)和boottom(低优先队列)。默认是Normal(正常优先队列)。
二层交换机配置PQ调度后,按照7、6、5、4、3、2、1、0从高到低的优先级依次进行调度,发送报文。
PQ队列原理:
- 按类别入队,队列满后尾丢弃
- 优先级高的队列先调度
- 加入top队列一直是满的,会导致优先级低的队列,一直得不到调度(Normal为默认队列)
PQ队列特征:
- 可以使用ACL对报文进行分类,根据需要将报文入队列;
- 报文丢弃策略采用尾丢弃(Tail Drop)机制,且只有这一种机制;
- 队列长度可以设置为0,表示该队列无穷大,即进入该队列的报文不会被Tail Drop机制丢弃,除非内存耗尽了;
- 队列内部使用FIFO逻辑;
- 当从队列调度报文时,从高优先级的队列到低优先级调度报文。
PQ队列缺点:</