网关的QoS技术

 

QoS基础及技术原理----- 1

QoS基础

QoS(质量服务)是一项非常复杂的技术,但应用广泛。可实现的主要功能包括流量监管(对进入接口的,超出限制速率的报文进行丢弃)、流量整形(对接口发送的,超出限制速率的报文先进行缓存,等待流量不超出速率时发送)、拥塞避免(在出现网络拥塞时对符合条件的报文进行丢弃)、拥塞管理(在出现网络拥塞时采用队列调度的方法对符合条件的队列中的报文优先发送)、流策略(可根据不同的流分类实现诸如禁止/允许通过,重标记报文优先级、重标记报文VLAN标签、重定向流量、过滤报文、流量镜像、启用流量统计功能等行为)。

QoS基础

QoS(Quality ofService,服务质量)是一种可以为不同类型业务流提供差分(即“不同”)服务等级的技术。通过QoS可以给那些对带宽、时延、时延抖动、丢包率等敏感的业务流提供更加优先的服务等级,使业务能满足用户正常、高性能使用的需求。

一、QoS概述

在传统的IP网络中,所有的报文都被无区别的同等对待。即每个网络设备对所有的报文均采用FIFO(First In First Out,先进先出)的策略进行处理,依照报文到达时间的先后次序分配所需的资源,尽最大的努力(Best-Effort)将报文送到目的地。这种方式下,对报文传送的可靠性、传递延迟、丢包率等性能不能提供任何保证,仅适用于对服务性能不敏感的普通业务,如WWW、FTP、Email等。

随着IP互联网上新型应用不断出现,对IP网络的服务质量提出新要求,如远程教学、远程医疗,可视电话、视频点播等,对实时性和连续性方面要求更加苛刻,如果报文传送延时太长将是用户无法接受的,这类应用中不能容忍中间停顿现象。为支持具有不同服务需求的话音、视频以及数据等业务,要求网络能够区分出不同的业务类型,进而为之提供相应等级的服务。QoS正是这样一种可以为不同业务类型报文提供差分服务的技术,通过对网络流量进行调控,可避免并管理网络拥塞,减少报文丢包率。

QoS服务等级就是指对业务流所需的带宽、时延、时延抖动、丢包率等核心需求的评估。不同类型的业务所需要评估的因素并不一样,如普通数据流在带宽、丢包率方面要求更高,而视屏通讯之类的业务流则在时延和时延抖动方面要求更高。

1、带宽

“带宽”又称为吞吐量,表示在一定时间内业务流的平均速率,单位通常是kbit/s。QoS可以为不同业务流分配不同的端口带宽,以实现高优先级,或者对带宽需求更高的业务流(如视频流等)分配到更大的端口带宽,实现更加快速的数据传输。

2、时延

“时延”表示业务流穿过网络时需要的平均时间。对于网络中的一个设备来说,一般将时延的需求理解为几种等级。通过优先队列(端口有几个优先级不同的数据发送队列)的调度方法使得高优先级的队列业务尽可能的获得传输服务,而低优先级的队列业务则需要等待没有高优先级业务时才能获得传输服务。

3、延时抖动

“延时抖动”表示业务流穿过网络的时间的变化。不同的业务流对时延抖动的敏感度也不一样,像话音、视频类实时要求比较高的业务要求延时抖动更小,否则可能出现话音、视频流断断续续,不连续或失真现象。

4、丢包率

“丢包率”表示业务流在传送过程中的丢失比率。信息的丢失往往发生在网络出现拥塞时。不同业务流对丢包率的敏感度不一样,如话音、视频流对丢包率不是很敏感,而对于数据文件来说就非常敏感,可能导致数据最终无法使用。

在QoS的分类流程中最关键的是对各种不同业务流配置不同的优先级,对流入设备的业务流按其优先级进行分类,然后为不同类型业务流定义一个相应的流行为,设备就会为对应的业务流执行相应的QoS行为。

不同的报文使用不同的QoS优先级,例如二层VLAN报文使用802.1p优先级,三层IP报文使用DSCP优先级,MPLS报文使用EXP优先级。

二、二层VLAN帧中的优先级

二层帧中的优先级是专门针对VLAN帧的,因为普通二层帧中是不携带优先级字段的。VLAN帧中的优先级就是我们常说的802.1p优先级(由IEEE802.1p协议定义),位于VLAN帧中的“802.1Q Tag”字段的“PRI”子字段中,如下图:

 

 

IEEE802.1p是IEEE802.1Q(VLAN标签技术)标准的扩充协议,它们协同工作。IEEE802.1p的出现,使得第二层交换机能够提供流量优先级和动态组播过滤服务,其中流量优先级规范工作在媒体访问控制(MAC)层,组播流量过滤功能可确保该流量不超出第二层交换网络范围。

IEEE802.1Q标准定义了为以太网MAC帧添加的标签,但并没有定义和使用优先级字段,而使用IEEE 802.1p修改后的以太网MAC帧的以太网协议头中则定义了该字段。802.1p优先级位于二层VLAN帧头部,适用于不需要分析三层报文头,而需要在二层环境下保证QoS的场合。4个字节的802.1Q标签头包含了2个字节的TPID(Tag Protocol Identifier,标签协议标识,取值为0x8100)和2个字节的TCI(Tag ControlInformation,标签控制信息)。

TCI部分中PRI子字段就是802.1p优先级,也称为CoS优先级。它由3位组成,取值范围为0~7,共可表示8个优先级。其中,最高优先级为7,应用于网络管理和关键性网络流量,如路由选择信息协议(RIP)和开放最短路径优先(OSPF)协议的路由表更新;优先级6和5主要用于延迟敏感(delay-sensitive)应用程序,分别对应交互式话音和视频;优先级4到1主要用于受控负载(controlled-load)应用程序、流式多媒体(streaming multimedia)、关键性业务流量(business-scritical traffic),如SAP数据和后台流量。优先级0是缺省值,并在没有设置其他优先级值的情况下自动启用。

三、三层IP报文中的优先级

二层VLAN帧优先级比较简单,就是由PRI子字段的三位来标识,共有8中优先级,但在三层IP报文中,优先级的描述就要复杂许多,并且在不同时期出现了两种不同的优先级类型和不同的标识方法。

1、ToS字段标的IP优先级

在早期的RFC791标准中,IP数据包是依赖ToS(Type ofService,服务类型)字段来标识数据优先级值的。ToS是IP数据包中的IP报头中的一个字段(共1个字节),用来指定IP包的优先级,设备会优先转发ToS值高的数据包。

 

 

ToS字段共一个字节(8位),包括3个部分:0~2共3位用来定义数据包的IP优先级(IP Precedence)、ToS(4位)和最后一个固定为0的位,如下图:

 

 

    (1)IPPrecedence部分

IP优先级部分共3位,取值范围为0~7(值越大,优先级越高)。用名称表示时,这8个取值分别为routine(普通,值为000)、priority(优先,值为001)、immediate(快速,值为010)、flash(闪速,值为011)、flash-override(急速,值为100)、critical(关键,值为101)、internetwork control(网间控制,值为110)和network control(网络控制,值为111),分别对应于数字0~7。

以上IP优先级中,6和7一般保留给网络控制数据使用,比如路由;5推荐给话音数据使用;4推荐由视频会议和视频流使用;3推荐给话音控制数据使用;1和2推荐给数据业务使用;0为缺省标记值。在IP优先级配置时,既可以使用0~7这样的数值,也可使用上述对应的优先级名称。

(2)ToS

在IP报头的ToS字段中紧接着IP优先级字段后面的四位是ToS部分,代表需要为对应报文提供的服务类型(标识报文所注重的特性要求)。一开始,RFC791中只用到了第3~5位,分别代表IP包在Delay(延时),Throughput(吞吐量),Reliability(可靠性)这三方面的特性要求(每个报文在这三位中只有一位可能置1,此时表示IP包在对应方面有特别要求)。后来在RFC1349标准中又宽展到第6位,表示IP包在路径开销(cost)方面的特性要求。

要注意的是,虽然ToS部分共有4位,但每个IP包中这4位中只能有一位为1,所以实际上只有5个取值(包括全为0的值)。这5个值所对应的名称和数值分别为normal(一般服务,取值为0000)、min-monetary-cost(最小开销,取值为0001,确保路径开销最小)、max-reliability(最高可靠性,取值为0010,确保可靠性最高)、max-throughput(最大吞吐量,取值为0100,确保传输速率最高)、min-delay(最小时延,取值为1000,确保传输时延最小)。

2、DS字段的DSCP优先级和PHB

在新的RFC2474标准中,重新定义了原来IP包头部的ToS字段,并改称为DS(DifferentiatedServices,差分服务)字段,也是共一个字节(8位)。总的来说,第0~5位(共6位)用来表示DSCP(Differentiated Services Code Point,差分服务代码点)优先级,取值范围为0~63,共能标识出64个优先级值(值越大,优先级越高),最后两位保留,用于显示拥塞通知(Explicit Congestion Notification,ECN),如下图:

 

 

后来在IETF RFC2597标准中定义了PHB(Per-HopBehavior,逐跳行为),通过PHB值可以确定在网关处对IP包的转发行为。这个PHB值是通过DSCP优先级部分的第0~4位来标识的,其中第0~2位用来标识PHB类别(PHB Class)值,共8个值,对应表示为CS0~CS7,对应在RFC791定义的8个IP优先级,而第3~4位用来标识PHB类别选择(PHB Class Selector)值,见上图。PHB类别值和PHB类别选择值共同组成PHB值。DSCP值是由PHB的5位再加上第5位(固定为0),但在PHB类别中的3位不能全为0。

在RFC2597中定义了4种确保转发(AssureForwarding,AF)PHB组(称为AF PHB)。它使用了DS字段中的第0~2位定义PHB类别,而使用DS字段中的第3和4位代表报文的“丢弃优先级”,用AF(x,y)表示,其中x表示流分类,y表示对应的丢弃优先级。

所谓“确保转发”就是允许管理员在没有超过线路允许速率的情况下提供尽可能的传输质量保证,但如果超出用户线路速率则可能在出现拥塞时丢弃数据包。

在确保转发PHB中,定义了4种PHB类别(也即“流分类”),它们的值分别为001、010、011、和100(对应CS1~CS4),它们本身代表了流的不同优先级(值越大转发优先级越高),然后通过第3和4位的丢弃优先级值(取非0的3个值,分别为01、10和11,值越大丢弃优先级越高)进一步区分同一类流不同IP包的丢弃优先级。它们共同针对4种PHB分类组成了4组AF等级,它们所对应的AF值和对应的DSCP值如下表所示(此时第5位的值固定为0)。

 

再后来在RFC3246标准中,又定义一个加速转发(Expedited Forwarding,EF)PHB,对应CS5,即在DS字段中的第0~2位取值为101,第3~4位取值固定为11,第5位固定为0,这样一来对应的DSCP值就为46(101110)。EF PHB具有低延时、低开销和低抖动特性,适用于话音、视频和其他实时服务,一般具有比其他通信类型更加优先的队列。

除了AF和EF外,还有一个缺省的PHB,那就是尽力服务类型,它所对应的DSCP值为000000,即十进制的0。另外还定义了CS6和CS7,CS6用于网间控制,对应的DSCP为110000,即十进制的48;CS7用于网内控制,对应的DSCP值为111000,即十进制的56。

在配置DSCP优先级时,既可以使用对应的DSCP名称,如CS6、CS7、AF11、AF12(在CS1~CS4中每个包含了一组DSCP值,所以要指定具体的DSCP名称),又可以使用对应的DSCP十进制值,如48、56等。

3、IP优先级与DSCP优先级的对应关系

DSCP优先级是向后兼容IP优先级的,当支持DSCP的设备收到仅支持ToS中的IP优先级的报文时,缺省情况下它们之间是有一种映射关系的,具体如下表。当然,如果设备仅支持ToS的IP优先级,缺省情况下是不能识别报文中的DSCP优先级值的,这时需要事先在接收设备配置好DSCP优先级与IP优先级的映射关系。

 

 

四、三种QoS服务模型

“服务模型”就是设备为不同业务流提供服务的一种模式。总体来说,包括Best Effort、IntServ和DiffServ三种服务模型。

1、Best Effort模型

Best Effort(尽力而为)模型是一种为所有业务流提供相同服务等级的服务模型,也是最简单的服务模型。在Best Effort模型中,应用程序可以在任何时候发出任意数量的报文,而且不需要事先获得批准,也不需要通知网络,网络尽最大的可能性发送每一个数据报文,但对时延、可靠性等性能不提供任何保证。

Best Effort模型是Internet的缺省服务模型,它适用于绝大多数网络,如FTP、Email等,通过先进先出(FIFO)调度方式来实现。

2、IntServ模型

IntServ(IntegratedService,综合服务)模型的主要特点是在发送报文前要先向网络提出申请。这个请求是通过协议信令来完成的,如RSVP(Resource Reservation Protocol,资源预留协议)。应用程序首先通过RSVP信令通知网络它的QoS需求(如时延、带宽、丢包率等指标),在收到资源预留请求后,传送路径上的网络节点实施许可控制(Admission control),验证用户的合法性并检查资源的可用性,决定是否为应用程序预留资源。一旦认可并为应用程序的报文分配了资源,则只要应用程序的报文控制在流量参数描述的范围内,网络节点将承若满足应用程序的QoS需求。传输路径上的网路节点可以通过执行报文的分类、流量监管、低延迟的排队调度等行为,来满足对应程序的承诺。

IntServ模型常与组播应用结合,使用于需要保证带宽、低延迟的实时多媒体应用,如电视会议、视频点播等。当前,采用RSVP协议的IntServ模型定义了两种业务类型:

(1)保证型服务(GuaranteedService):提供保证的带宽和时延限制来满足应用程序的要求。如VoIP应用可预留10MB带宽和要求不超过1s的时延。

(2)负载控制型服务(Controlled-LoadService):保证即使在网络过载(overload)的情况下,仍能对报文提供类似Best Effort模型在未过载时的服务质量,保证某些应用程序报文的低时延和低丢包率需求。

IntServ模型的最大优点是可以提供端到端的QoS传输服务,最大缺点是可扩展性不好:网络节点需要为每个资源预留维护一些必要的软状态(Soft State)信息;在与组播应用相结合时,还要定期地向网络发资源请求和路径刷新信息,以支持组播成员的动态加入和退出。而这些操作要耗费网络节点较多的处理时间和内存资源。在网络规模扩大时,维护的开销幅度增加,对网络节点特别是核心节点线速处理报文的性能造成严重影响。因此IntServ模型不适宜于在流量汇集的骨干网上大量应用。

3、DiffServ模型

为了在Internet上针对不同的业务提供有差别的服务,IETF定义了DiffServ(Differentiated Service,差分服务)模型。

DiffServ模型是一种多服务模型,可以满足不同用户业务流的QoS需求。它与IntServ模型不同的是应用程序在发出报文前通过设置报文头部的优先级字段,向网络中各设备通告自己的QoS需求,而不需要通知途径的网络设备为其预留资源,网络不需要为每个流维护状态,仅根据每个报文携带的优先级就可确定所需为对应流提供的服务等级。

DiffServ模型一般用来为一些重要的应用提供端到端的QoS。通常在配置DiffServ模型后,边界设备通过报文的源地址和目的地址等信息对报文进行分类,对不同的报文设置不同的优先级,并标记在报文头部,而其他设备只需要根据设置的优先级来进行报文的调度。

在DiffServ模型中,流分类、流量监管、流量整形、拥塞管理和拥塞避免是对不同类型报文提供有区别服务的基石,它们主要完成如下功能:

(1)流分类:依据一定的匹配规则识别出不同类型的报文,是有区别地实施服务的前提。

(2)流量监管:对进入交换机的特定流量的规格进行监管。当流量超出规格时,可以采取限制或惩罚措施,以保护运营商的商业利益和网络资源不受损害。

(3)流量整形:一种主动调整流的输出速率的措施,使流量适配下游交换机可供给的网络资源,避免不必要的报文丢弃和拥塞。

(4)拥塞管理:在发生网络拥塞时必须采取解决资源竞争的措施。通常是将报文放入队列缓存,并采取某种调度算法安排报文的转发次序。

(5)拥塞避免:过渡的拥塞会对网络资源造成损害。拥塞避免功能可以监督网络资源的使用情况,在发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整流量措施来解除网络的过载。

在这些功能组件中:流分类是基础,它依据一定的匹配规则识别出报文,是有区别地实施服务的前提;流量监管、流量整形、拥塞管理和拥塞避免从不同方面对网络流量及其分配的资源实施控制,是有区别的提供服务具体体现。

五、DiffServ模型体系结构

DiffServ体系结构定义了实现差分服务的系统模型和基本功能组件

在一个网络节点上,实现差分服务的基本功能组件包括“逐跳行为”(PHB)、业务流分类和流量调整(包括流量监管与流量整形、拥塞避免与拥塞管理)等功能。差分服务建立在DS(差分服务)域模型之上,并规定了一个DS域的边界点和内部节点。在DS域边界节点上,对进入网络的业务流进行分类、流量调整和优先级标记,并按照DS域所支持的PHB组中的一个PHB进行转发。在内部节点上,将根据边界节点标记的DSCP或802.1p优先级所定义的PHB来选择该业务流的转发行为,为业务流分配带宽资源。

    1、DS域

DiffServ模型的现实基于DS域,DS域由一组采用相同的服务提供策略和实现了相同PHB组集合的相连DS节点组成。一个DS域由DS边界节点和DS内部节点组成,边界节点构成了DS域的边界,内部节点构成了DS域的核心。

2、DS节点

DS节点指实现DiffServ功能的网络节点。DS节点可分为DS边界节点和DS内部节点。

(1)DS边界节点

DS边界节点负责连接另一个DS域或者连接一个没有DS功能的域的节点。DS边界节点负责将进入此DS域的业务流进行分类和可能的流量调整,以保证穿过此DS域的业务流被适当标记,并按照DS域所支持的PHB组中的一个PHB进行转发。

对于不同方向的业务流,DS边界节点既可以是DS域的输入(Ingress)节点,又可以是DS域的输出(Egress)节点。业务流在Ingress节点处进入DS域,在Egress节点处离开DS域。Ingress节点负责保证进入DS域的业务流符合本域和此节点直连的另一个域之间的SLA(Service Level Agreement,服务等级协议)或TCA(TrafficConditioning Agreement,流量控制协议)。Egress节点依据两个域之间的TCA细节,对转发到其直连的对等域的业务流执行流量调整功能。

(2)DS内部节点

DS内部节点负责连接同一DS域中的其他DS内部节点或DS边界节点。DS内部节点负责根据IP报头中的DS字段或VLAN报文的802.1p字段所定义的PHB来为该业务流选择转发行为。无论是DS边界节点还是DS内部节点都必须根据业务流的DSCP或802.1p选择相应的PHB进行转发操作。

3、SLA

SLA(服务等级协定)指用户(个人、企业、有业务往来的相邻ISP等)和服务提供商签署的关于业务流在网络中国传递时所应当获得的待遇。SLA包括很多方面,例如付费协议,其中的技术说明部分被称为SLS(Service Level Specification,服务等级规范)。

4、TCA

TCA(流量控制协定)指用户与服务提供商签署的关于业务分类准则、业务模型及相应处理的协定。去掉了商业条款的TCA称为TCS(Traffic Conditioning Specification,流量控制规范),一个SLA中可以包含TCA。对于业务的处理而言,SLA或SLS指明的是比较一般的内容,例如采用什么样的机制,而TCA或TCS则比较具体,例如具体的带宽要求。

5、DS区

一个或多个邻接的DS域统称为DS区。DS区可以支持贯穿区内多个DS域的分类业务。DS区中的DS域可能支持不同的PHB组,和QoS优先级到PHB的映射规则。不同DS域可有不同的PHB,以实现不同的服务提供策略。它们之间通过SLA和TCA协调提供跨区域服务。SLA/TCA指明了如何在DS域边界节点调整从一个DS域传向另一个DS域的业务流。

QoS优先级映射

优先级映射用来实现报文携带的QoS优先级与设备内部优先级(又称为本地优先级,是设备为报文分配的具有本地意义的优先级)之间的转换,从而使设备根据内部优先级为不同报文提供有差别的QoS服务质量。不同S系列交换机所支持的优先级信任模式和优先级映射模式都有所不同。

一、优先级映射

不同网络中的报文使用不同类型的QoS优先级字段,例如VLAN网络中的报文使用802.1p优先级,IP网络中的报文使用IP优先级或DSCP优先级。当报文经过不同网络时,为了保持报文的优先级,需要在连接不同网络的设备上配置这些优先级字段的映射关系。当设备连接不同网络时,所有进入设备的报文优先级(包括802.1p和DSCP,统称为“外部优先级”)字段根据所配置优先级映射表都被转换为交换机端口的内部优先级;当设备发出报文时,又需要根据优先级映射表将报文中携带的内部优先级恢复为原来的对应外部优先级。

这里涉及到设备信任报文的哪种优先级,也就是优先级信任模式,以及对应的内、外部优先级映射模式。

1、优先级信任模式

配置优先级信任模式可以确定设备根据哪种优先级进行映射。相当于你说你有多种身份,但最终要确定以哪种身份来衡量你的地位。

(1)三种优先级信任模式

在华为S系列交换机中,有三种优先级信任模式

①信任报文的802.1p优先级:配置信任802.1p优先级时,设备根据报文的802.1p优先级对报文进行分类并进行后续的优先级映射,得到报文映射后的802.1p优先级,IP优先级,或DSCP优先级。缺省情况下,端口信任报文的802.1p优先级。

②信任报文的DSCP优先级:配置信任DSCP优先级时,设备根据报文的DSCP优先级对报文进行分类并进行后续的优先级映射,得到报文映射后的802.1p优先级,或DSCP优先级,或丢弃优先级(只有支持DSCP优先级的IP报文才可映射丢弃优先级,因为只有这类报文才有这样的数据位。)

③信任报文的IP优先级:配置交换机端口信任IP优先级,此时将按照报文中所携带的IP优先级查找对应的IP优先级映射表,得到报文映射后的802.1p优先级或IP优先级。

在报文进入设备端口之后,如果报文携带了VLAN标签,则可以选择信任802.1p优先级;如果报文没有携带VLAN标签,则报文或根据端口缺省的802.1p优先级进行转发,该端口优先级即报文转发时进入的端口队列号。在三层转发时,可以选择信任DSCP优先级。

2、优先级映射模式

为了保证不同报文的服务质量,对于进入设备的报文,设备可以根据配置将报文携带的优先级映射为内部优先级,并根据内部优先级与队列之间的映射关系确定报文进入的队列,从而针对队列进行流量整形、拥塞避免、队列调度等处理;报文从设备发送出去时,设备可以根据配置修改报文发送出去时所携带的优先级,以便其他设备根据报文的优先级提供相应的QoS服务。配置优先级映射模式可以确定报文优先级与内部优先级的映射关系,以便设备在后续转发中根据内部优先级提供有差别的QoS服务。

(1)优先级映射模式

总体来说,华为S系列交换机所支持的所有优先级映射模式包括以下几种:

①内部优先级和队列之间的映射

②DSCP优先级到802.1p、新的DSCP优先级、丢弃优先级的映射

③IP优先级到802.1p、新的IP优先级的映射

④802.1p优先级到PHB行为/颜色的映射

⑤PHB行为/颜色到802.1p优先级的映射

⑥DSCP优先级到PHB行为/颜色的映射

⑦PHB行为/颜色到DSCP优先级的映射

(2)华为S系列交换机对优先级信任模式的支持

①在S2700SI/2700EI/2700SI系列交换机中仅支持“内部优先级和队列之间的映射”模式。

②在S2700-52P-EI/2700-52P-PWR-EI/S3700SI/3700EI/5700SI/5700EI/5700LI/5700S-LI系列交换机中支持以下3种优先级映射模式。

- 内部优先级和队列之间的映射

- DSCP优先级到802.1p、新的DSCP优先级、丢弃优先级的映射

- IP优先级到802.1p、新的IP优先级的映射

③在S5700HI/5710EI/6700/7700/9300/9300E/9700系列交换机中,支持以下几种优先级映射模式。

- 在接口入方向,将802.1p优先级映射为PHB行为/颜色

- 在接口出方向,将PHB行为/颜色映射为802.1p优先级

- 在接口入方向,将DSCP优先级映射为PHB行为/颜色

- 在接口出方向,将PHB行为/颜色映射为DSCP优先级。

在S5700HI/5710EI/6700/7700/9300/9300E/9700系列交换机中,支持RFC2597和RFC3246标准中的PHB,用户可以根据DiffServ域中定义逇报文优先级与PHB行为/颜色之间的映射关系对报文进行分类。对于来自上游设备的报文,在设备的入接口上绑定DiffServ域,在DiffServ域中将报文携带的优先级信息映射到相应的PHB行为/颜色,然后根据内部优先级与队列之间的映射关系确定报文进入的队列;在设备的出接口上,根据报文的PHB行为进行拥塞管理,根据报文的颜色进行拥塞避免;然后对于流向下游设备的报文,在设备的出接口上绑定DiffServ域,在DiffServ域中将报文的PHB行为/颜色映射为相应的优先级,下游设备根据报文的优先级提供相应的QoS服务。

二、内部优先级与802.1p和入队列索引的映射扮戏

“内部优先级”是指设备对报文进行处理的优先级,报文中携带的优先级只有在与内部优先级进行了映射后,才能体现报文在对应设备的最终优先级,设备对报文的处理优先级不是直接按照报文中所携带的各种优先级进行的,而是按照设备中配置的内部优先级进行的。不同PHB行为定义了8种“内部优先级”,从低到高的顺序依次是:BE、AF1、AF2、AF3、AF4、EF、CS6和CS7(不区分大小写)。

1、802.1p优先级与内部优先级的映射关系

缺省情况下,所有华为S系列交换机的802.1p优先级与内部优先级的映射关系是一样的,如下表。这些交换机中802.1p优先级与内部优先级的缺省映射关系是按等级一一对应的,即最低的802.1p优先级0对应最低的内部优先级BE,最高的802.1p优先级7对应最高的内部优先级CS7。

 

2、内部优先级与入队列索引的映射关系

在实际部署时有时需要调整服务等级与入端口队列的映射关系,或者将不同的服务等级放入同一入端口队列中进行调度,从而有效地节约设备缓存。设备按照内部优先级将报文送入不同的入端口队列,从而针对队列进行流量整形、拥塞避免、队列调度等处理。不同S系列交换机的内部优先级与入队列的索引关系也有所不同。

内部优先级与入队列的映射配置仅在S2700SI/3700/5700/6700系列交换机上支持,其他系列仅可采用缺省映射关系。

不同S系列交换机中内部优先级与队列索引之间的映射关系有所不同。在S2700-52P-EI/2700-52P-PWR-EI/3700SI/3700EI/5700HI/5710EI系列交换机中,缺省情况下,8个内部优先级与8个入队列索引号之间是由低到高(指优先级和入队列索引号)一一对应的映射关系,如下表左。但在S2700SI系列,以及除S2700-52P-EI和S2700-52P-PWR-EI之外的其他S2700EI系列交换机中,仅支持4个入队列,所以每两个内部优先级映射同一个入队列(如BE和AF1这两个最低的内部优先级同时映射最小的0号队列,而CS6和CS7这两个最高的内部优先级同时映射最大的3号队列),但总体上也是由低到高一一对应的。

在S6700系列以及S7700系列的ES1D2X40SFC0单板、ES1D2L02QFC0单板,S9300系列的LE0DX40SFC00单板、LE1D2L02QFC0单板和S9300E的LE0DX40SFC00单板和LH2D2L02QFC0单板,S9700系列的EH1D2X40SFC0单板、EH1D2L02QFC0单板中内部优先级与各队列之间的对应关系如下表,从中可见,内部优先级和入队列的映射关系还要看报文是否是已知的单播报文,如果是已知单播报文,则与上表左部一样,只是针对非已知单播报文情况下的映射关系有所不同。

 

QoS基础及技术原理——2

流量监管和流量整形

如果不限制用户发送的业务流量,大量用户不断突发的业务数据会使网络更加拥挤。必须对用户的业务流量加以限制。流量监管(TP,Traffic Policing)和流量整形(TS,Traffic Shaping)就可以通过监督进入网络的流量速率来限制流量及其资源的使用。进行流量监管和流量整形有一个前提条件,就是要判断流量是否超出了规格,然后才能根据评估结果实施调控策略。在流量监管和流量整形功能实现中,一般采用令牌桶(Token Bucket)对流量的规格进行评估。

一、QoS令牌桶基本工作原理

“令牌桶”是指网络设备的内部存储池(也就是用于缓存数据的内存),而“令牌”(Token)则是指以给定速率填充令牌桶的虚拟信息包。“令牌桶”可以简单理解为一个水桶,而“令牌”则可以理解为通过一根水管流到水桶中的水。

交换机在入端口接收每个帧时都将一个令牌添加到令牌桶中,但这个令牌桶底部有一个孔,不断地按照你指定作为平均通信速率(单位为bit/s)的速度领出令牌(也就是从桶中删除令牌的意思),其实就是不断的从出端口发送数据的过程,相当于一个水桶的上边连接一根进水管,而下边又连接一根到用水的地方的出水管。在每次向令牌桶中添加新的令牌包时,交换机都会检查令牌桶中是否有足够容量(也就是在要向桶中加水前,先检查桶内是否已满了),如果没有足够的空间,包将被标记为不符规定的包,这时在包上将发生指定监管器中规定的行为(丢弃或标记)。就相当于如果当前水桶满了,但上边水管的水还是来了,这时要么让这些水白白流到桶外,要么把这些水用其他容器先装起来,等水桶中不再水满时再倒进去,供用户使用。

最初的令牌桶模型考虑的是单令牌桶结构,这个令牌桶称为CBS(Committed Burst Size,承若突发尺寸),简称C桶,而向C桶中填充令牌的平均速率称之为CIR(Committed Information Rate,承若信息速率),如果用Tc表示当前令牌桶中的令牌数,则这个单令牌桶的基本工作原理可用下图表示。

 

用文字描述如下(假设用B来表示新接收的数据包大小):

(1)系统按照CIR速率向令牌桶(相当于交换机缓存)中投放令牌(相当于从端口上接收到数据包)。

(2)当Tc < CBS时再比较B与Tc的大小关系。如果B ≤ Tc,则表示新接收的数据包大小符合规定(Conform)可完整的被缓存到令牌桶中,此时数据包被标记为绿色(表示允许转发的),当前的Tc值要相应减少B。

(3)如果B > Tc,则表示新接收的数据包大小违规(Violate)不能完整的被缓存到令牌桶中,此时整个数据包被标记为红色,并将被直接丢弃,Tc值不减少。

令牌桶填满的时间长短是由令牌桶深度(也就是交换机的缓存大小,单位为bit,类似水桶的深度)、令牌漏出速率(类似通下边接的出水管的水流速)和超过平均速率的突发流量(类似于桶上边水管突发的急速水流)持续时间这3个方面共同决定。令牌桶的大小是通过“突发时长上限”乘以“点对点传输时的帧数限制”得出(也就类似突发水流持续的时间*突发水流的流速)。如果突发时间比较短,令牌桶不会溢出,在通信流上不会发生行为;但如果突发时间比较长,并且速率比较高,令牌桶将溢出,这时将对突发过程中的帧采取相应的流监管策略行为(也就是在水桶水满后对溢出的水的处理方法)。

二、单速率三色标记算法

在令牌桶处理包的行为方面,主要包括两种令牌桶算法:RFC2697定义的单速率三色标记(srTCM,single rate three color market)算法和RFC2698定义的双速率三色标记(trTCM,two ratethree color market)算法,其评估结果都是为包打上红、黄、绿三色标记(所以称为“三色标记”)。QoS会根据包的颜色,设置包的丢弃优先级,其中单速率三色标记比较关心包尺寸的突发,而双速率三色标记则关注速率上的突发,两种算法都可工作于色盲模式和非色盲模式。

srTCM(单速率三色标记)是一种“单速双桶”算法,它可对流量进行测评,根据评估结果为报文打颜色标记,即绿色、黄色和红色。“单速”是指算法中的两个令牌桶有同样的承若信息速率(CIR),也就是具有相同平均访问速率;这两个令牌桶分别是正常使用的令牌桶(也就是C桶)和超出令牌桶容量的突发令牌桶(也就是E桶),可以理解为两个水桶,一个是正常使用的水桶,另一个是当正常使用的水桶满后用于装多余水的水桶。

 

1、srTCM算法的3个参数

srTCM算法关注的是数据包的突发尺寸,数据包的色标记评估依据以下3个参数。

(1)承若信息速率(CIR,CommittedInformation Rate):表示向C桶中填充令牌的平均速率,即C桶允许传输或转发报文的平均速率。

(2)承若突发尺寸(CBS,CommittedBurst Size):表示C桶的容量,即指每次突发所允许的最大的流量尺寸,也相当于允许的最大取令牌的速率,等于桶的容量(最大时一个包就可以全部领取桶中的全部令牌)。

(3)超额突发尺寸(EBS,Excess BurstSize):表示E桶的容量,即每次突发允许超出CBS的最大流量尺寸。

单速率三色机制采用双桶结构:C桶和E桶,且两个令牌桶的CIR一样。当C令牌桶满时,超出的令牌也会放在E令牌桶中。

Tc和Te分别表示C令牌桶和E令牌桶中的令牌数,也就是桶中当前的容量(单位为bit),两桶的总容量分别为CBS和EBS,也就是对应的承若突发尺寸和超额突发尺寸,最初它们都是满的,即Tc和Te初始值分别等于CBS和EBS。正常情况下不会使用第二个令牌桶(也就是E桶),只有当C令牌桶满后,后面来的令牌才放到E令牌桶中,为出现的突发数据提供信用令牌(也就是经过允许的令牌)。

2、srTCM算法原理

在srTCM算法中,两个令牌桶中令牌的添加是按照相同的CIR速率进行的。即每隔1/CIR时间添加一个令牌。添加的顺序是先添加C桶再添加E桶,当两个令牌桶中的令牌都满时,再产生的令牌就会被丢弃。系统按照CIR速率向桶中填充令牌。

(1)若Tc < CBS,则Tc增加。

(2)若Tc = CBS,Te < EBS,则Te增加。

(3)若Tc = CBS,Te = EBS,则都不增加。

对于到达的报文,用B表示报文的大小。

(1)若B ≤ Tc,报文被标记为绿色,且Tc减少B。

(2)若Tc  < B ≤ Te,报文被标记为黄色,且Te减少B。

(3)若Te < B,报文被标记为红色,且Tc和Te都不减少。

3、srTCM算法中的报文着色处理

在发送数据包时,令牌的使用IEEE又定义了3种颜色(分别为红色、黄色和绿色)以及两种模式:色盲(color-blind)模式和感色(color-aware)模式,缺省为色盲模式。3种颜色的功能与日常交通指示灯的3中颜色类似,红色表示违规数据,直接丢弃,黄色表示数据包虽然违法,但不直接丢弃,而是延迟发送,绿色为合法数据包,直接发送。

在色盲(color-blind)模式下假设包都是没有经过“着色”处理的(不辨别包中原来标记的颜色),是根据包长度来确定包被标记的颜色。现假设到达的包长度为B(单位为bit)。若包长度B小于C桶中的令牌数Tc(也就是C桶中的令牌数足够该包发送所需),则包被标记为绿色,表示包符合要求,包发送后C桶中的令牌数Tc减少B。如果Tc  < B < Te(也就是包长度大于C桶中的令牌数,而小于E桶中的令牌数),则标记为黄色,则从E桶中取出所需令牌,E桶中的令牌数Te减少B;若B > Te,标记为红色,表示违反规定的包,直接丢弃,两令牌桶中的总令牌数都不减少。

在感色(color-aware)模式下是假设包在此之前已经过“着色”处理(会辨别包中原来标记的颜色),则包被标记为绿色,或包长度B < Tc(注意只要满足其中一个条件即可,下同),则包被标记为绿色,C桶中的令牌数Tc值随之也相应减少B;如果包已被标记为黄色,或c  < B < Te,则包被标记为黄色,同时E桶中的令牌数Te也随之相应减少B;如果包已被标记为红色,或B> Te,则包被标记为红色,Tc和Te都不减少。

三、双速率三色标记算法

trTCM(双速率三色标记)是一种双桶双速算法,也可对流量进行评测,根据评估结果为报文打颜色标记,即绿色、黄色和红色。这里的“双速率”是指该算法中两个令牌桶中的CIR速率不同,存在两个令牌填充速率。

与单速率三色标记算法不同,双速率三色标记算法中的两个令牌桶是C桶和P桶(不是C桶和E桶)

它们的令牌填充速率是不同的,C桶填充速率为CIR,P桶为PIR;两桶的容量分别为CBS和PBS。用Tc和Tp表示两桶中的令牌数目,初始状态时两桶是满的,即Tc和Tp初始值分别等于CBS和PBS。

    1、trTCM算法的4个参数

trTCM算法关注的是速率的突发,但它不像单速率三色标记算法那样把第一个桶中未使用的令牌放到第二个桶中,而是使用两个独立的令牌桶。第一个令牌桶为PIR,大小为PBS,第二个令牌桶为CIR,大小为CBS。数据的测量是先比较PIR,再比较CIR。也就是在双速率三色标记中,首先判断的是数据发送速率是否符合规定的突发要求,而不是正常情况下的色标方法。

trTCM算法主要是根据4种流量参数来评估:CIR、CBS、峰值信息速率(PIR,PeakInformation Rate),峰值突发尺寸(PBS,Peak Burst Size)。CIR和CBS参数与单速率三色标记算法中的含义相同,PIR就是允许的最大突发信息传输速率,即P桶允许传输或转发报文的峰值速率,当然它的值肯定不会小于CIR的;PBS是允许的最大突发信息尺寸,表示P桶的容量,它的值也不会小于CBS。

2、trTCM算法原理

在trTCM算法中,系统按照PIR速率向P桶中填充令牌,按照CIR速率向C桶中填充令牌。

(1)当Tp < PBS时,P桶中令牌数增加,否则不增加。

(2)当Tc < CBS时,C桶中令牌数增加,否则不增加。

对于到达的报文,用B表示报文的大小。

(1)若Tp < B,则报文被标记为红色。

(2)若Tc < B ≤ Tp,报文被标记为黄色,且Tp减少B。

(3)若B ≤ Tc,报文被标记为绿色,且Tp和Tc都减少B。

3、trTCM算法中的报文着色处理

在trTCM算法中也有色盲模式和色敏模式两种。

在色盲模式下,当包速率大于PIR,此时未超过Tp + Tc部分的包会分别从P桶和C桶中获取令牌,而且从P桶中获取令牌的部分包被标记为黄色,从C桶中获取令牌的部分包被标记为绿色,超过Tp + Tc部分无法得到令牌的包被标记为红色;当包速率小于PIR,而大于CIR时,包可以得到令牌,但超过Tc部分的包将从P桶中获取令牌,此时这部分包都被标记为黄色,而从C桶中获取令牌的包被标记为绿色;当包速率小于CIR时,包所需令牌数不会超过Tc,只需从C桶中获取令牌,包被标记为绿色。

在色敏模式下,如果包已被标记为红色,或者超过Tp + Tc部分无法得到令牌的包,被标记为红色;如果标记为黄色,或超过Tc但未超过Tp部分包标记为黄色;如果包被标记为绿色或者未超过Tc部分包,被标记为绿色。

四、流量监管

“流量监管”(TrafficPolicing)就是对流量进行控制,通过监督进入交换机端口的流量速率,对超出部分的流量进行“惩罚”(采用监管方式时是直接丢弃),使进入端口的流量被限制在一个合理的范围之内。例如可限制HTTP报文不能占用超过50%的网络带宽,否则QoS流量监管功能可以选择丢弃报文,或重新分配报文的优先级。

流量监管的基本工作机制如下图,由三部分组成

(1)Meter(度量器):通过令牌桶机制对网络流量进行度量,然后向Marker(标记器)输出度量结果。

(2)Marker(标记器):根据Meter的度量结果对报文进行染色,报文会被标识成green、yellow、red三种颜色。

(3)Action:根据Marker对报文的染色结果,对报文进行一些行为,行为如下:

①pass:对测量结果为“符合”的报文继续转发。

②remark +pass:修改报文内部优先级后再转发。

③discard:对测量结果为“不符合”的报文进行丢弃。

缺省情况下,对green、yellow颜色的报文进行转发,对red报文进行丢弃。

当网络发生拥塞后,超出的流量将采取其他方式处理。如果处理方式为监管,那么数据包就会被丢弃。通常情况下,网络设备缺省丢弃后到的数据包而传输先到的数据包,这样的丢弃方式称为尾丢弃。也可以让网络设备在发生拥塞时,先丢弃低优先级的数据包而传输高优先级的数据包。

总体而言,经过流量监管后,如果某流量速率超过标准,设备可以选择降低报文优先级再进行转发或者直接丢弃。缺省情况下,此类报文被丢弃。如下图是一种经过流量监管后的流量变化示意图,超出CAR的流量均被“削”掉了。

五、流量整形

“流量整形”为控制最大输出通信速率提供可能,以确保通信符合配置的最大传输速率规定。符合某种配置的通信可能被整形,以使它符合下游设备的通信速率需求,处理任何失配的数据传输速率。流量整形通常使用缓存区和令牌桶来完成,当报文的发送速率过快时,首先在缓冲区进行缓存,在令牌桶的控制下再均匀地发送这些被缓冲的报文。

当下游设备的接口速率小于上游设备的端口速率或发生突发流量时,在下游设备入端口处可能出现流量拥塞的情况。此时用户可以通过在上游设备的出端口配置流量整形,将上游不规整的流量进行削峰填谷,输出一条比较平整的流量,从而解决下游设备的拥塞问题。

流量整形是一种可应用于接口、子接口或队列的流量控制技术,可以对从接口上经过的所有报文或某类报文进行速率限制。下面以接口或子接口下采用单速率单通技术的基于流的队列整形为例介绍流量整形的处理流程。

(1)当报文到达设备端口时,首先对报文进行简单分类,使报文进入不同的队列。

(2)若报文进入的队列没有配置队列整形功能,则直接发送该队列的报文;否则,进入下一步处理。

(3)按用户设定的队列整形速率向令牌桶中存放令牌。

①如果令牌桶中有足够的令牌可以用来发送报文,则报文直接被发送,在报文被发送的同时,令牌做相应的减少。

②如果令牌桶中没有足够的令牌,则将报文放入缓存队列,如果报文放入缓存队列时,缓存队列已满,则丢弃报文。

(4)缓存队列中有报文的时候,系统按照一定的周期从缓存队列中取出报文进行转发,每次发送都会与令牌桶中的令牌数做比较,直到令牌桶中的令牌数减少到缓存队列中的报文不能再发送或缓存队列中的报文全部发送完毕为止。

经过以上队列整形后,如果该接口或子接口同时配置了基于端口的流量整形功能,则系统还要逐级按照子接口整形速率、接口整形速率对报文流进行速率控制。其处理流程与上述流程类似,但不需要1和2步骤。

流量整形和流量监管都是作用于网络边缘,对进入设备端口的流量进行的一种处理方式。它们的主要区别在于:流量监管直接丢弃不符合速率要求的报文,丢弃的报文比较多,可能引发重传;而流量整形是将不符合速率要求的报文先行缓存,当令牌桶有足够的令牌时再均匀地向外发送这些被缓存的报文,较少丢弃报文,但引入时延和抖动,需要较多的缓存资源缓存报文。所以这两种功能的应用领域也不尽相同,流量监管适用于对丢弃率不敏感,而对时延和抖动比较敏感的网络应用,如一些普通的话音和视频通信;流量整形适用于对时延和抖动不敏感的网络应用,如数据传输、WWW访问等。

QoS基础及技术原理——3

拥塞避免和拥塞管理

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

为了解决网络拥塞,可以通过拥塞避免在网络出现拥塞时主动丢弃一些报文,解除网络过载;为了使用户得到更好的服务质量,可以通过拥塞管理对关键业务优先调度,使得这些业务得到更高的QoS服务。

一、拥塞避免

华为S系列交换机主要支持两种拥塞避免功能。

1、尾部丢弃

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

2、RED/SRED/WRED

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

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

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

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

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

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

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

二、拥塞管理

拥塞管理一般采用队列调度技术,使用不同的调度算法来发送队列中的报文流。根据排队和调度策略的不同,设备LAN接口上的队列调度技术分为PQ、DRR、PQ+DRR、WRR、PQ+WRR;WAN接口上的队列调度技术分为PQ、WFQ、PQ+WFQ和CBQ。

1、PQ调度

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

 

 

如上图,Queue7比Queue6具有更高的优先权,Queue6比Queue5具有更高的优先权,以此类推。只要链路能够传输分组,Queue7尽可能地被服务。只有当Queue7为空,调度器才考虑Queue6.当Queue6有分组等待传输且Queue7为空时,Queue6以链路速率接受类似的服务。当Queue7和Queue6为空时,Queue5以链路速率接收服务,依此类推。

PQ调度算法对低时延业务非常有用。假定数据流X在每一个节点都被映射到最高优先级队列,那么当数据流X的分组到达时,则分组将得到优先服务。然而PQ调度机制会使低优先级队列中的报文由于得不到服务而“饿死”。如映射到Queue7的数据流在一段时间内以100%的输出链路速率到达,调度器将从不为Queue6及以下队列服务。所以在采用PQ调度方式时,应将延迟敏感的关键业务放入高优先级队列,将非关键业务放入低优先级队列,从而确保关键业务被优先发送。

2、WRR调度

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

 

 

在进行WRR调度时,设备根据每个队列的权值进行轮循调度。调度一轮权值减一,权值减到零的队列不参加调度,当所有队列的权值减到0时,开始下一轮的调度。如用户根据需要为借口上8个队列指定的权值分别为4、2、5、3、6、4、2、1,按照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值作为下一轮调度的依据。

假设用户配置各队列权重为40、30、20、10、40、30、20、10(依次对应Q7、Q6、Q5、Q4、Q3、Q2、Q1、Q0)。在调度初始时,队列Q7、Q6、Q5、Q4、Q3、Q2、Q1、Q0依次能够获取20%、15%、10%、5%、20%、15%、10%、5%的带宽。下面以Q7、Q6为例,简要描述DRR队列调度的实现过程(假设Q7队列获得400bit/s的带宽,Q6队列获取300bit/s的带宽)。

第1轮调度

Deficit[7][1]=0(为Q7初始Deficit值)+400(为Q7队列带宽)=400(为Q7队列第1轮调度时的Deficit值),Deficit[6][1]=0(为Q6初始Deficit值)+300(为Q6队列带宽)=300(为Q6队列第1轮调度时的Deficit值).

假设这时从Q7队列取出一个900bytes的报文发送,从Q6队列取出一个400bytes的报文发送。发送后,Deficit[7][1]的Deficit值=400-900(400为Q7队列的带宽,900为Q7队列此次发送的数据字节大小)=-500(为Q7队列第1轮调度后的Deficit值),Deficit[6][1]的Deficit值=300-400(300为Q6队列的带宽,400为Q6队列此次发送的数据字节大小)=-100(为Q6队列第1轮调度后的Deficit值)。

第2轮调度

Deficit[7][2]=-500(为Q7第1轮调度后的Deficit值)+400(为Q7队列的带宽)=-100(为Q7第2轮调度时可用的Deficit值),同理,Deficit[6][2]=-100+300=200。因为Q7队列第2轮调度Deficit值小于0,所以此轮不参与调度,而Q6队列第2轮调度Deficit值大于0,所以仍可从Q6队列取出一个报文(假设为300bytes)进行发送。发送后,Deficit[6][2]=200-300=-100(为Q6队列第2轮调度后的Deficit值)。

第3轮调度

Deficit[7][3]=-100+400=300,Deficit[6][3]=-100+300=200。因为两个队列此时的Deficit值均大于0,所以均可以发送数据。假设此时从Q7队列取出一个600bytes的报文发送,从Q6队列取出一个500bytes的报文发送。发送后,Deficit[7][3]=300-600=-300,Deficit[6][3]=200-500=-300。这时再进行第4轮调度时,可根据前面的方法计算第4轮调度时两队列的Deficit值分别为100和0,所以Q7队列可以继续发送报文,而Q6队列不允许发送报文。如此循环调度,最终Q7、Q6队列获取的带宽将分别占总带宽的20%、15%。因此通过DRR调度方法时用户能够通过设置权重获取想要的带宽。但DRR调度仍然没有解决WRR调度中低延时需求业务得不到及时调度的问题。

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

4、WFQ调度

FQ(Fair 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调度各有优缺点,为了克服单纯采用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+WRR相似,其集合了PQ调度和DRR调度,各有优缺点。单纯采用PQ调度时,低优先级队列中的报文流长期得不到带宽,而单纯采用DRR调度时低延时需求业务得不到优先调度,如果将两种调度方式结合起来形成PQ+DRR调度,不仅能发挥两种调度的优势,而且能克服两种调度各自的缺点。

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

 

 

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

7、PQ+WFQ调度

与PQ+WRR相似,PQ+WFQ调度方式集合了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-basedQueueing,基于类的加权公平队列)是对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规则才属于该类。

(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检查。禁止URPF(UnicastReverse 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,实现了针对不同业务的差分服务。

                                            

扫码关注本人微信公众号,有惊喜奥!公众号每天定时发送精致文章!回复关键词可获得海量各类编程开发学习资料!

例如:想获得Python入门至精通学习资料,请回复关键词Python即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值