QoS基础及技术原理实战——3

拥塞避免和拥塞管理

 

  当网络间歇性地出现拥塞,且时延敏感业务要求得到比非时延敏感业务更高质量的QoS服务时,需要进行拥塞管理;如果配置拥塞管理后仍然出现拥塞,则需要增加带宽。拥塞避免(Congestion Avoidance)是指通过监视网络资源(如队列或内存缓存区)的使用情况,在拥塞发生或有加剧的趋势时主动丢弃报文,通过调整网络的流量来解除网络过载的一种流控制机制。——拥塞管理是进行数据缓存,拥塞避免是主动进行报文丢弃

一、拥塞避免

两种拥塞避免功能:

1、尾部丢弃

传统的丢包策略采用尾部丢弃的方法,且是同等的对待所有报文不区分报文的服务等级。这时在拥塞发生期间,队列尾部的数据报文将被丢弃,直到拥塞解除。但这种丢弃策略会引发TCP全局同步现象。所谓TCP全局同步现象,是指当多个队列同时丢弃多个TCP连接报文时,将造成多个TCP连接同时进入拥塞避免和慢启动状态,以降低并调整流量;而后这几个TCP连接又会在某个时刻同时出现流量高峰。如此反复,使得网络流量忽大忽小,影响链路利用率。

2、RED/SRED/WRED

在华为S系列交换机中,对REDRandom Early Detection,随机早期检测)、SREDSimple Random Early Detection,简单随机早期检测)和WREDWeightedRandom Early Detection,权重随机早期检测)三种拥塞避免技术有不同的支持。

RED技术是通过随机地丢弃报文让多个TCP连接不同时降低发送速率,从而避免了TCP的全局同步现象。在RED技术的算法中,为每个队列的长度都设定了阈值的上、下限值,并有以下规定:

(1)当队列的长度小于阈值下限时,不丢弃报文。

(2)当队列的长度大于阈值上限时,丢弃所有新收到的报文。

(3)当队列的长度在阈值上限和阈值下限之间时,开始随机丢弃到来的报文。方法是为每个到来的报文赋予一个随机数,并用该随机数与当前队列的丢弃概率比较,如果大于丢弃概率则报文被丢弃。队列越长,报文被丢弃的概率越高。

SRED技术是在RED技术基础上诞生的。在接口出队列上,SRED根据报文的优先级(而不是随机选择要丢弃的报文)将其区分为红色、黄色,并分别为红色和黄色的报文设定起始丢包点和丢包率,然后通过按照一定的丢弃概率主动丢弃队列中的红色甚至黄色报文,从而调整从接口输出的流量速率

WRED技术也是在RED技术基础上改进的,与SRED一样也是基于报文优先级来选择丢弃报文的,但WRED同时还可以为相同颜色的不同报文设置不同的丢弃权重,以实现更加灵活的报文丢弃策略,使高优先级报文被丢弃的概率相对较小。——拥塞避免就是进行丢包处理,只是使用了不同的丢弃技术

二、拥塞管理

拥塞管理一般采用队列调度技术,使用不同的调度算法来发送队列中的报文流。根据排队和调度策略的不同,设备LAN接口上的队列调度技术分为PQDRRPQ+DRRWRRPQ+WRRWAN接口上的队列调度技术分为PQWFQPQ+WFQCBQ

1、PQ调度

PQPriorityQueueing,优先队列)调度是针对于关键业务类型应用而设计的队列机制。PQ调度算法维护一个优先级递减的队列系列,并且只有当更高优先级的所有队列为空时才服务低优先级的队列。这样,将关键业务的分组放入较高优先级的队列,将非关键业务(如Email)的分组放入较低优先级的队列,可以保证关键业务的分组被优先传送,非关键业务的分组在处理关键业务数据的空闲间隙被传送。

如上图所示,只要Queue7有数据,其他队列就不能得到发送的权利。PQ调度机制会使低优先级队列中的报文由于得不到服务而“饿死”。

2、WRR调度

WRRWeight RoundRobin,加权循环调度)是在RRRound Robin,循环调度)的基础上演变而来的。它可在队列之间进行轮流调度,根据每个队列的权重来调度各队列中的报文流。实际上,RR调度相当于权值为1(即每个队列在调度一次后都重新开始新的一轮调度)的WRR调度。WRR队列示意图如下

WRR很好理解,本身是一个轮循调度,只是不同队列的权值不同,也就是在一轮的轮循中,不同队列被调度的次数不同,有的多有的少。各队列中的报文流被调度的次数与该队列的权值成正比,权值越大被调度的次数相对越多。由于WRR调度是以报文为单位,因此每个队列没有固定的带宽,同等调度机会下大尺寸报文获得的实际带宽要大于小尺寸报文获得的带宽,避免了采用PQ调度时低优先级队列中的报文可能长时间得不到服务的缺点。另外,WRR调度中虽然多个队列的调度是轮循进行的,但对每个队列不是固定地分配服务时间片——如果某个队列为空,那么马上切换到下一个队列调度,这样带宽资源可以得到充分的利用。

但WRR调度有两个缺点:

(1)WRR调度按照报文个数进行调度,而用户一般关心的是带宽。当每个队列的平均报文长度相等或已知时,通过配置WRR权重,用户能够获得想要的带宽;但是,当队列的平均报文长度变化时,用户就不能通过配置WRR权重获取想要的带宽。

(2)低延时需求业务(如话音)得不到及时调度

3、DRR调度

DRR(DeficitRound Robin,差额循环调度)调度同样也是RR(循环调度)法的扩展。相对于WRR而言,DRR调度解决了WRR调度中只关心报文,同等调度机会下大尺寸报文获得的实际带宽要大于小尺寸报文获得的带宽的问题。DRR调度通过调度过程中考虑了包长的因素,从而达到调度的速率公平性

在DRR调度中,Deficit表示队列的带宽赤字,初始值为0。每次调度前,系统按权重为各队列分配带宽,计算Deficit值,如果队列的Deficit值大于0,则参与此轮调度,发送一个报文,并根据所发送报文的长度计算调度后Deficit值,作为下一轮调度的依据;如果队列的Deficit值小于0,则不参与此轮调度,当前Deficit值作为下一轮调度的依据。

DRR调度避免了采用PQ调度时低优先级队列中的报文可能长时间得不到服务的缺点,也避免了各队列报文长度不等或变化较大时,WRR调度不能按配置比例分配带宽资源的缺点。但是,DRR调度也具有低延时需求业务(如话音)得不到及时调度的缺点。

4、WFQ调度

FQFair Queuing,公平队列)目的是尽可能公平的分享网络资源,使所有流的延迟和抖动达到最优。即不同的队列获得公平的调度机会,从总体上均衡各个流的延迟;短报文和长报文也可获得公平的调度;如果不同队列间同时存在多个长报文和短报文等待发送,让短报文优先获得调度,从而在总体上减少各个流的报文间的抖动

WFQ调度在报文入队列之前,先对流量进行分类,有两种分类方式:

(1)按流的“会话”信息分类。根据报文的协议类型、源和目的TCP或UDP端口号、源和目的IP地址、ToS域中的优先级位等自动进行流分类,并且尽可能多地提供队列,以将每个流均匀的放入不同队列中,从而在总体上均衡各个流的延迟。在出队列的时候,WFQ按流的优先级来分配每个流应占有带宽。优先级的数值越小,所得的带宽越少。优先级的数值越大,所得的带宽越多。

(2)按优先级分类。通过优先级映射把流量标记为本地优先级,每个本地优先级对应一个队列号。每个接口预分配4个或8个队列,报文根据队列号进入队列。缺省情况,队列的WFQ权重相同,流量平均分配接口带宽。用户可以通过配置修改权重,高优先权和低优先权按权重比例分配带宽。

以上整个WFQ调度原理下图。以端口有8个输出队列为例,WFQ可为每个队列配置一个加权值(依次为w7、w6、w5、w4、w3、w2、w1、w0),加权值表示获取资源的比重。例如:一个100MB的端口,配置它的WFQ队列调度算法的加权值为50、50、30、30、10、10、10、10(依次对应w7、w6、w5、w4、w3、w2、w1、w0),这样可以保证最低优先级队列至少获得5Mbit/s带宽,避免了采用PQ调度时低优先级队列中的报文可能长时间得不到服务的缺点。从统计上,WFQ使高优先权的报文获得优先调度的机会多于低优先权的报文。

5、PQ+WRR调度

PQ+WRR调度不仅可以通过WRR调度可以让低优先级队列中的报文也能及时获得带宽,而且通过PQ调度可以保证了低延时需求的业务能优先得到调度。

在设备上,用户可以配置队列的WRR参数,根据配置将接口上的8个队列分为两组,一组(例如Queue7、Queue6、Queue5)采用PQ调度,另一组(如Queue4、Queue3、Queue2、Queue1、Queue0队列)采用WRR调度,设备上只有LAN侧接口支持PQ+WRR调度。

PQ+WRR调度示意图如下。在调度时,设备首先按照PQ方式调度Queue7、Queue6、Queue5队列中的报文流,只有这些队列中的报文流全部调度完毕后,才开始以WRR方式循环调度其他队列中的报文流。Queue4、Queue3、Queue2、Queue1、Queue0队列包含自己的权值。重要的协议报文和有低延时需求的业务报文应放入采用PQ调度的队列中,得到优先调度的机会,其余报文放入以WRR方式调度的各队列中。

6、PQ+DRR

PQ+DRR集合了PQ调度和DRR调度。单纯采用PQ调度时,低优先级队列中的报文流长期得不到带宽,而单纯采用DRR调度时低延时需求业务得不到优先调度,将两种调度方式结合起来形成PQ+DRR调度,不仅能发挥两种调度的优势,而且能克服两种调度各自的缺点。

在PQ+DRR调度中,设备接口上的8个队列被分为两组,用户可以指定其中的某几组队列进行PQ调度,其他队列进行DRR调度。如下图:

7、PQ+WFQ调度

PQ+WFQ调度方式集合了PQ调度和WFQ调度。在PQ+WFQ调度中,设备接口上的8个队列也被分为两组,用户可以指定其中的某几组队列进行PQ调度,其他队列进行WFQ调度。只有WAN侧接口支持PQ+WFQ调度。如下图,在调度时,设备首先按照PQ方式优先调度Queue7、Queue6、Queue5队列中的报文流,只有这些队列中的报文流全部调度完毕后,才开始以WFQ方式调度Queue4、Queue3、Queue2、Queue1、Queue0队列中的报文流。其中,Queue4、Queue3、Queue2、Queue1、Queue0队列包含自己的权值。重要的协议报文以及有低延时需求的业务报文应放入需要进行PQ调度的队列中,得到优先调度的机会,其他报文放入以WFQ方式调度的各队列中。

8、CBQ调度

CBQ(Class-based Queueing,基于类的加权公平队列)是对WFQ功能的扩展,为用户提供了定义类的支持。CBQ首先根据IP优先级或者DSCP优先级、输入接口、IP报文的五元组等规则对报文进行分类,然后让不同类别的报文进入不同的队列。对于不匹配任何类别的报文,送入系统定义的缺省类。

(1)EF(加速转发)队列:满足低时延业务

EF队列是具有高优先级的队列,一个或多个类的报文可以被设定进入EF队列,不同类别的报文可设定占用不同的带宽。在调度出队的时候,若EF队列中有报文,会优先得到调度,以保证其获得低时延。当接口发生拥塞时,EF队列的报文会优先发送,但为了防止低优先级队列(AF、BE队列)得不到调度,EF队列以设置的带宽限速。当接口不拥塞时,EF队列可以占用AF、BE的空闲带宽。这样,属于EF队列的报文既可以获得空闲的带宽,又不会占用超出规定的带宽,保护了其他报文的应得带宽。

设备除了提供普通的EF队列,还支持一种特殊的EF队列——LLQ(低时延队列)。两种队列都采用绝对优先调度,但是LLQ队列使用流量监管实现,不论接口是否拥塞,流量都不会超过设置的带宽,LLQ队列不缓存报文,可以将报文被发送的时延降低为最低限度。这为对时延敏感的应用(如VoIP业务)提供了良好的服务质量保证。

(2)AF(确保转发)队列:满足需要带宽保证的关键数据业务

每个AF队列分别对应一类报文,用户可以设定每类报文占用的带宽。在系统调度报文出队的时候,按用户为各类报文设定的带宽将报文出队发送,可以实现各个类的队列的公平调度。当接口有剩余带宽时,AF队列按照权重分享剩余带宽。同时,在接口拥塞的时候,仍然能保证各类报文得到用户设定的最小带宽。

对于AF队列。当队列的长度达到队列的最大长度时,缺省采用尾丢弃的策略,但用户还可以选择用WRED丢弃策略。

(3)BE队列(尽力而为):满足不需要严格QoS保证的尽力发送业务

当报文不匹配用户设定的所有类别时,报文被送入系统定义的缺省类。虽然允许为缺省类配置AF队列,并配置带宽,但是更多的情况是为缺省类配置BE队列。BE队列使用WFQ调度,使所有进入缺省类的报文进行基于流的队列调度。

对于BE队列,当队列的长度达到队列的最大长度时,缺省采用尾丢弃的策略,但用户还可以选择用WRED丢弃策略。

——各种队列调度算法,有点类似操作系统中对共享资源访问的调度,这里端口或者说端口带宽就是共享资源,怎样调度能够最大限度的利用资源,最大限度的使重要任务先调度,最大限度的保证公平,就是各种调度算法的考虑的重点而调度是为了解决拥塞,是拥塞管理的灵魂,而之所以拥塞,是资源不够,如果资源始终充足,就不需要拥塞管理了

 

流策略

 

流策略是指按照某种规则对流量进行分类,并对同种类型的流量关联某种行为形成某种策略。将该策略应用后可实现流量监管、重新标记优先级、重定向等功能。

流策略包含3个要素:流分类、流行为和流策略,这也是配置QoS流策略的前三大基本任务。

1、流分类

流分类采用一定的规则识别符合某类特征的报文,从而把具有某类共同特征的报文划分为一类,它是有区别地进行服务的前提和基础。

用户可以通过定义一系列的规则来对报文进行分类,同时也可以指定规则之间的关系

(1)and:报文只有匹配了类中的所有的规则,设备才认为报文属于此类。当流分类中有ACL规则时报文必须匹配其中一条ACL规则以及所有非ACL规则才属于该类。当流分类中没有ACL规则时,则报文必须匹配所有非ACL规则才属于该类。

——ACL规则时,必须匹配其中一条ACL是什么意思??

(2)or:报文只要匹配了类中的一个规则,设备就认为报文属于此类。

2、流行为

流行为用来定义针对某类报文所做的QoS行为。进行流分类是为了有区别地提供服务,它必须与某种流量控制或资源分配的流行为关联起来才有意义

针对流分类可实施的流行为包括报文过滤、重标记、重定向、流量监管、流量整形、流镜像、队列调度、流量统计、绑定子流策略、禁止URPF检查、封装外层VLAN标签和禁止MAC地址学习

(1)报文过滤。报文过滤是最简单的流控行为。通过对报文的允许或禁止行为处理,控制网络流量,实现动态的防火墙报文过滤功能

(2)重标记。重标记是指将报文的优先级字段进行重新设置。在不同的网络中报文使用不同的优先级字段,例如VLAN网络使用802.1p,IP网络使用ToS,MPLS网络使用EXP。通常是需要在网络的边界节点设备上对进入的报文进行优先级重标记,网络内部的节点设备按照边界节点所标记的优先级提供相应等级的QoS服务,或者按自己的标准重新进行标记。

(3)重定向。重定向是指将报文不按原始的目的地址进行路由转发,而是将报文重定向转发到CPU、指定接口、指定的下一跳地址或下一跳标签LSP

通过重定向可以实现策略路由,这也是QoS策略的一种主要应用。这种策略路由是静态的,当配置中的下一跳不可用时,系统将按原来的转发路径转发报文。

(4)流量监管。流量监管是一种通过对流量规格的监督,来限制流量及其资源使用的流控行为。对于超过规格的流量,可以采取丢弃、重标记颜色、重标记优先级或其他的QoS措施,以便更好的利用网络资源。

(5)流量整形。流量整形也是一种通过对流量规则的监督,来限制流量及其资源使用的流控行为。它是一种主动调整流的输出速率的流控措施,通常是为了使流量适配下游设备可供给的网络资源,避免不必要的报文丢弃和拥塞。流量整形通过限制流出某一网络的某一连接的流量,使这类报文以比较均匀的速度向外发送。

(6)流镜像。即将指定的数据包复制到用户指定的目的观察端口,以进行网络流量监控和故障分析与排除。

(7)队列调度。通常用来对某类的流量进行拥塞管理和拥塞避免,使不同类型的业务流进入不同优先级的队列,以获取不同等级的QoS转发服务。

(8)流量统计。流量统计用于统计指定业务流的数据报文。它统计的是匹配流分类的报文中通过和丢弃的报文数量和字节数。但流量统计本身不是QoS控制措施,但可以和其他QoS行为组合使用,以提高网络和报文的安全性。

(9)绑定子流策略。绑定子流策略是指为流策略中的流行为绑定一个子流策略,实现流策略嵌套。使用流策略嵌套时,对于匹配流分类的某一类报文,除了执行父策略中定义的行为外,还由子策略对该类流量进行再次分类,执行子策略中定义的行为,实现了更为精细化的HQoS(高级QoS)服务。

(10)禁止URPF检查。禁止URPFUnicastReverse Path Forward,单播反向路径转发)检查是指设备对符合流分类规则的报文不进行逆向地址检查。配置接口的URPF检查功能后,设备对进入接口的所有报文都进行URPF检查,丢弃源地址对应的接口与入接口不一致的报文。此时,如果要保证某类特定的报文不被丢弃,比如设备相信从某个服务器过来的所有报文,不对其进行URPF检查,可配置对指定流禁止URPF检查功能。

(11)封装外层VLAN标签。封装外层VLAN标签是指对符合流分类规则的报文创建外层VLAN标签。当下游设备根据指定的外层VLAN标签提供差分服务时,可以在本设备上为指定流分类的报文配置封装外层VLAN标签,以便于下游设备进行识别。

(12)禁止MAC地址学习。禁止MAC地址学习是指设备不再学习符合流分类规则的报文的MAC地址。在网络比较稳定,报文的MAC地址相对固定的情况下,为了节省MAC地址表项的开支,提高设备的运行效率,可以去使能MAC地址学习功能。

(13)Netstream统计采样。对匹配流分类的流量使用Netstream统计采样的方法,通过设定适当的统计采样方式及采样间隔,只对匹配流分类的IPv4报文进行流信息统计分析,收集到的统计信息可以基本反映该流的流量状况,同时也可降低使能NetStream功能对设备性能的影响。

3、流策略

流策略是将流分类和流行绑定后形成的完整的策略。通过将流策略应用到接口、全局、单板或VLAN,实现了针对不同业务的差分服务。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值