QoS基本原理

时间:2025-03-27 22:55:20

QoS基本原理

  • QoS技术概述
    • 1. 什么是QoS
      • (1)传统网络——“尽力而为”、没有服务质量保证
      • (2)QoS(服务质量):
    • 2. QoS服务模型
      • (1)Best-Effort-Service:尽力而为服务模型(缺省,适用绝大多数网络应用)
      • (2)Integrated service:综合服务模型,简称Intserv
      • (3)Differentiated service:区分服务模型,简称DiffServ(多服务模型,目前被广泛使用)
  • QoS流分类和流标记
    • 1. 概述
      • (1)依据一定的匹配规则识别出对象,是有区别地实施服务的前提,通常作用在接口入方向
      • (2) 将数据包分为不同的类别,称为流分类,流分类并不修改原来的数据包
      • (3)将数据包设置为不同的优先级称为标记,而标记会修改原来的数据包
      • (4)标记分类:
    • 2. 简单流分类
      • (1)简单流分类是指采用简单的规则,对报文进行粗略的分类,以识别出具有不同优先级或服务等级特征的流量,实现外部优先级和内部优先级的映射
      • (2)外部优先级
      • (3)服务等级(即队列)——内部优先级
      • (4)Color——丢弃优先级
      • (5)映射
    • 3. 复杂流分类
      • (1)复杂流分类是指采用复杂的规则,对报文进行精细的分类,一般在DS边界入方向部署
      • (2)模板化的QoS:配置流分类、配置流行为、配置流量策略、应用流量策略
      • (3)流量分类全过程
      • (4)配置复杂流分类(命令略)
  • 流量限速技术
    • 1. 流量限速
      • (1)QoS数据处理流程
      • (2)流量限速技术:令牌桶技术
    • 2. 令牌桶
      • (1)单桶单速双色(绿、红)标记法(C桶)
      • (2)双桶单速三色标记法(C、E桶)
      • (3)双桶双速三色标记法
    • 3. 流量监管TP(Traffic Policing)
      • (1)什么是流量监管
      • (2)承诺访问速率(CAR)
      • (3)使用场景
      • (4)配置命令(略)
    • 4. 流量整形
      • (1)什么是流量整形
    • (2)流量整形的实现
    • (3)使用场景
    • (4)配置命令(略)
  • 拥塞避免技术
    • 1. 概述
      • (1)拥塞避免:
      • (2)拥塞经常发生的情况:
      • (3)拥塞的影响:
      • (4)对策:
    • 2. 拥塞避免技术——丢弃策略:尾丢弃、RED、WRED
      • (1)尾丢弃(Tail Drop)——传统处理方式
      • (2)随机检测(RED,Random Early Detection)——随机地丢弃数据报文
      • (3)加权随机嫌弃检测(WRED,Weighted Random Early Detection)——通过对不同优先级数据包或队列设置相应的丢弃策略,以实现对不同流量进行区分丢弃。
    • 3. 拥塞避免的应用:接口出方向
    • 4. 配置命令(略)
  • 拥塞管理技术
    • 1. 概述
    • 2. 什么是队列
    • 3. 队列调度算法
    • 4. 端口队列调度方式
    • 5. 拥塞管理的应用:接口出方向
    • 6. 配置命令(略)
  • HQoS介绍
    • 1. 概述
    • 2. HQoS队列
      • (1)Level3流队列
      • (2)Level2用户队列
      • (3)Level1接口队列
    • 3. HQoS队列调度
    • 4. HQoS流量整形
    • 5. HQoS丢弃器
    • 6. HQoS应用
    • 7. HQoS配置思路

QoS技术概述

1. 什么是QoS

(1)传统网络——“尽力而为”、没有服务质量保证

     新应用不断出现、客户要求越来越高、网络提供有质量保证的服务是大势所趋

(2)QoS(服务质量):

	 针对各种应用的不同需求,为其提供不同的服务质量
     影响QoS的因素:带宽、时延、抖动、丢包率、可用性

2. QoS服务模型

(1)Best-Effort-Service:尽力而为服务模型(缺省,适用绝大多数网络应用)

     无区别对待、先入先出
     网络尽最大的可能性来发送报文
     缺点:对时延、可靠性等性能不提供任何保证

(2)Integrated service:综合服务模型,简称Intserv

     应用程序在发送报文前,需要向未来申请特定的服务
     网络在收到应用程序的资源请求后,通过交换RSVP信令信息,为每个信息预留资源
     缺点:实现复杂、资源浪费、要求端到端所有节点设备都支持并运行RSVP协议

(3)Differentiated service:区分服务模型,简称DiffServ(多服务模型,目前被广泛使用)

     将网络中的流量分成多个类,不同的类采用不同的处理
     常用技术:流量限速、拥塞避免、拥塞管理
     处理流程:流量分类和标记、流量监管、拥塞避免、拥塞管理、流量整形

QoS流分类和流标记

1. 概述

(1)依据一定的匹配规则识别出对象,是有区别地实施服务的前提,通常作用在接口入方向

(2) 将数据包分为不同的类别,称为流分类,流分类并不修改原来的数据包

(3)将数据包设置为不同的优先级称为标记,而标记会修改原来的数据包

(4)标记分类:

     内部标记:标记报文在设备内部处理的服务等级(Service-class)与丢弃优先级,让匹配的报文能够直接进入指定服务等级的队列
          丢弃优先级也叫着色(color),指在相同服务等级的时候,入同一个队列,当此队列快拥塞的时候,可以通过color在进行差分服务
     外部标记:设置/改写(重标记-remark)报文的优先级字段,用于向下一台设备传递差分服务的QoS信息

2. 简单流分类

(1)简单流分类是指采用简单的规则,对报文进行粗略的分类,以识别出具有不同优先级或服务等级特征的流量,实现外部优先级和内部优先级的映射

(2)外部优先级

     VLAN报文:802.1P——VLAN TAG中优先级PRI为外部优先级,取值范围0-7
     MPLS报文:EXP——标签信息中的EXP域作为外部优先级,取值范围0-7
     IP报文:ToS字段(IPP/DSCP)
        IP-Precedence:取值范围0-7
        DSCP:取值范围0-63(对IPP的扩充)

(3)服务等级(即队列)——内部优先级

     取值:CS7、CS6、 EF、AF4、AF3、AF2、AF1、BE(PQ调度优先级由高到低)
     调度算法:PQ(严格优先级调度模式)、WFQ(加权公平调度模式)
     优先级:BE配置为PQ调度,其它7种配置WFQ调度,BE优先级比其余7个都高
                   都配WFQ调度,无优先级高低之分

(4)Color——丢弃优先级

     取值:Green(绿)、Yellow(黄)、Red(红)           //低 --->高
     优先级高低取决于对应参数的配置

(5)映射

     将QoS优先级映射到服务等级和颜色是在报文上行方向进行
     服务等级和颜色映射为QoS优先级则是在下行方向进行

3. 复杂流分类

(1)复杂流分类是指采用复杂的规则,对报文进行精细的分类,一般在DS边界入方向部署

(2)模板化的QoS:配置流分类、配置流行为、配置流量策略、应用流量策略

     需要用到Traffice Policy工具

(3)流量分类全过程

(4)配置复杂流分类(命令略)

流量限速技术

1. 流量限速

(1)QoS数据处理流程

     流量监管:对进入设备的流量进行监控,确保其没有滥用网络资源
     流量整形:对输出报文的速率进行控制,使报文以均匀的速率发送出去
     作用:
            在网络边缘,监控网络流量
            对于进出的不同流量规定带宽占用比例,让不同的业务由不同的流量边界

(2)流量限速技术:令牌桶技术

     令牌桶:使用令牌桶对流量进行评估,是否满足报文转发的条件

2. 令牌桶

(1)单桶单速双色(绿、红)标记法(C桶)

     CIR:承诺信息速率,单位是kbps,表示向令牌桶中投放令牌的速率
     CBS:承诺突发尺寸,单位是byte,用来定义在部分流量超过CIR之前的最大突发流量,即令牌桶的容量
     不允许突发流量,只有承诺流量
     令牌初始数量Tc=CBS
     到达的数据大小B<Tc,Tc=Tc-B,标记为绿色,转发;B>=Tc,Tc不变,标记为红色,丢弃

(2)双桶单速三色标记法(C、E桶)

     EBS:峰值突发尺寸,单位byte,用来定义每次突发所允许的最大的流量尺寸
     允许短暂的突发流量
     规则:
         令牌初始数量:C桶:Tc=CBS、E桶:Te=EBS
         到达的数据大小B<Tc,Tc=Tc-B,标记为绿色,转发;
                              Tc<B<Te,Te=Te-B,标记为黄色,转发
                              B>Te>Tc,Tc、Te不变,标记为红色,丢弃

(3)双桶双速三色标记法

     PIR:峰值信息速率,单位为kbps,表示端口允许的突发流量的最大速率,大于CIR
     PBS:峰值突发尺寸,单位为byte,用来定义每次突发所允许的最大的流量尺寸,大于CBS
     允许长期的突发流量
     规则:
         令牌初始数量:C桶:Tc=CBS、P桶:Tp=PBS
         到达的数据大小B>Tp,标记为红色,Tc和Tp保持不变
                                 Tc<B<Tp,标记为黄色,Tp=Tp-B
                                 B<Tc,标记为绿色,Tp=Tp-B,Tc=Tc-B

3. 流量监管TP(Traffic Policing)

(1)什么是流量监管

     通过监控进入网络的某一流量的规格,限制它在一个允许的范围之内,
     若某个连接的报文流量过大,就丢弃报文,或重新设置该报文的优先级,以保护网络资源不受损害
     流量监管可配置在设备的接口进出方向
     流量监管的实现:采用承诺访问速率CAR来对流量进行控制
     流量监管的特点:
         丢弃超额流量或将超额流量重标记为低优先级量
         不需要额外的内存资源,不会带来延迟和抖动
         丢包可能引发重传
         可以重标记流

(2)承诺访问速率(CAR)

     CAR利用令牌桶来衡量每个数据报文是超过还是遵守所规定的报文速率
     CAR主要有两个功能:流量速率限制、流分类
     CAR处理流程:
         当报文到来时,首先检查端口的匹配规则,如果匹配上了,则进行速率控制,报文进入令牌桶中进行流量速率评估
         令牌桶评估后,报文被标记为红、黄、绿三种颜色
         报文标为红色的直接丢弃,黄色则重新标记后转发,绿色则直接转发
     可使用令牌桶类型:单桶单速、双桶单速、双桶双速

(3)使用场景

     基于接口的流量监管:指对进入该接口的所有流量进行控制,而不区分具体报文的类型
     基于类的流量监管:指对进入该接口的满足特定条件的某一类或几类报文进行流量控制,而非所有报文

(4)配置命令(略)

4. 流量整形

(1)什么是流量整形

     流量整形TS:是一种主动调整流量输出速率的措施,通过在上游设备的接口出方向配置流量整形,
     将上游不规整的流量进行削峰填谷,输出一条比较平整的流量,从而解决下游设备的瞬时拥塞问题
     实现:通常使用缓冲区和令牌桶来完成
     令牌桶类型:单速单桶
     评估结果:符合(Green)、超标(Red)
     特点:
         缓存超出策略/协定SLA规定的超额流量
         需要内存去缓存超额流量,可能会带来延迟和抖动
         较少的丢包,因而较少导致重传
         不能重标记

(2)流量整形的实现

     队列流量整形:对接口的每个队列进行流量整形,区分优先级
           步骤:在出队的时候,不需要整形的报文,直接转发;对于需要进行整形的报文,则先进行令牌桶评估:
                     如果数据包速率符合要求,标记为绿色,并转发。
                     如果数据包速率超标:正在出队的数据包仍然转发出去,将超标的报文所在的队列的状态改为不可调度,等空闲再调度此队列。
     接口流量整形:限制接口发送的所有报文的总速率,是对整个出接口进行流量整形,不区分优先级
           步骤:在出队的时候,对所有队列的数据包总和进行令牌桶评估:
                     如果数据包总速率符合要求,标记为绿色,并转发。
                     如果数据包总速率超标,标记为红色,接口暂停调度,等令牌足够时再继续调度。

(3)使用场景

     一般用于接口出方向,多用于流量限速,对于丢包敏感流量(如:上网、下载等),推荐使用

(4)配置命令(略)

拥塞避免技术

1. 概述

(1)拥塞避免:

过度的拥塞会对网络资源造成损害,拥塞避免监督网络资源的使用情况,
当发现拥塞有加剧的趋势时采取主动丢弃报文的策略,
通过调整流量来解除网络的过载,通常作用在接口出方向。
拥塞是在共享网络上多个用户竞争相同的资源(带宽、缓冲区等)时发生的问题。

(2)拥塞经常发生的情况:

     速率不匹配:分组从高速链路进入设备,再由低速链路转发出去。
     汇聚问题:分组从多个接口同时进入设备,由一个没有足够带宽的接口转发出去。

(3)拥塞的影响:

     拥塞增加了报文传输的延迟和延迟抖动。
     过高的延迟会引起报文重传。
     拥塞使网络的有效吞吐率降低,造成网络资源的损害。
     拥塞加剧会耗费大量的网络资源(特别是存储资源),不合理的资源分配甚至可能导致系统陷入资源死锁而崩溃。

(4)对策:

     拥塞管理:指网络在发生拥塞时,如何进行管理和控制。
     拥塞避免:通过监视网络资源的使用情况,在拥塞有加剧的趋势时,主动丢弃报文,通过调整网络的流量来解除网络过载的一种流量控制机制。
                     拥塞避免用于防止因为线路拥塞而使设备的队列溢出。

2. 拥塞避免技术——丢弃策略:尾丢弃、RED、WRED

(1)尾丢弃(Tail Drop)——传统处理方式

当队列的长度达到最大值后,所有新入队列的报文(缓存在队列尾部)都将被丢弃。
缺点:
   1)TCP全局同步现象
对于TCP报文,如果大量的报文被丢弃,将造成TCP超时,从而引发TCP慢启动,使得TCP减少报文的发送。
当队列同时丢弃多个TCP连接的报文时,将造成多个TCP连接同时进入拥塞避免和慢启动状态以调整并降低流量,这就被称为TCP全局同步现象。
这样多个TCP连接发往队列的报文将同时减少,而后又会在某个时间同时出现流量高峰,如此反复,使网络资源利用率低。
   2)无差别丢弃
尾丢弃很可能导致大量非关键数据被转发,而大量关键数据被丢弃,原因:尾丢弃无法对流量进行区分

(2)随机检测(RED,Random Early Detection)——随机地丢弃数据报文

     RED为每个队列的长度都设定了阈值门限,并规定: 
     1)当队列的长度小于低门限时,不丢弃报文。 
     2)当队列的长度大于高门限时,丢弃所有收到的报文。 
     3)当队列的长度在低门限和高门限之间时,开始随机丢弃到来的报文。
          方法是为每个到来的报文赋予一个随机数,并用该随机数与当前队列的丢弃概率比较,
          如果大于丢弃概率则报文被丢弃。队列越长,报文被丢弃的概率越高。
     RED可以缓解TCP全局同步现象:仍有可能出现,但链路利用率已大大增加;
     缺点:RED也无法对流量进行区分

(3)加权随机嫌弃检测(WRED,Weighted Random Early Detection)——通过对不同优先级数据包或队列设置相应的丢弃策略,以实现对不同流量进行区分丢弃。

     流队列支持基于DSCP或IP优先级进行WRED丢弃。
     优点:
         打乱TCP滑动窗口的调整时间,避免TCP全局同步现象
         基于权重,实现了不同流量的区分丢弃
     WRED丢弃优先级:Color
     丢弃概率曲线
        实际应用:
            1)WRED低门限百分比建议从50%开始取值,根据不同颜色的丢弃优先级逐级调整。
            2)一般推荐绿色报文设置的丢弃概率比较小,高、低门限值比较大;
            黄色报文次之;红色报文设置的丢弃概率最大,高、低门限值最小。
            3)在网络趋近拥塞时,红色报文由于设置的低门限值比较小,丢弃概率比较大,
            红色报文最先开始被丢弃;随着队列的长度逐渐增长,最后才开始丢弃绿色报文。
            4)如果队列长度达到相应颜色的最大门限,这种颜色的报文开始实行尾丢弃。

3. 拥塞避免的应用:接口出方向

4. 配置命令(略)

拥塞管理技术

     拥塞管理:是必须采取的解决资源竞争的措施,将报文放入队列中缓存,
     并采取某种调度算法安排报文的转发次序,通常作用在接口出方向。

1. 概述

     拥塞管理的中心内容是当拥塞发生时如何制定一个策略,用于决定报文转发的处理次序和丢弃原则,一般采用队列技术。
     管理的内容包括:报文离开队列的时间、顺序,以及各个队列之间报文离开的相互关系则由队列调度算法决定。
     队列技术:
         将从一个接口发出的所有报文放入多个队列,按照各个队列的优先级进行处理。不同的队列调度算法用来解决不同的问题,并产生不同的效果。

2. 什么是队列

     队列指在缓存中对报文进行排序的逻辑。当流量的速率超过接口带宽或超过为该流量设置的带宽时,报文就以队列的形式暂存在缓存中。
     每个端口上都有8个下行队列,称为CQ(Class Queue)队列,也叫端口队列(Port-queue)
         分别为BE、AF1、AF2、AF3、AF4、EF、CS6和CS7。

3. 队列调度算法

(1)先进先出FIFO(First In First Out)——不对报文进行分类、单个队列的报文采用FIFO原则入队和出队 
     特点:
        优点:实现机制简单且处理速度快
        缺点:不能有差别地对待优先级不同的报文
(2)严格优先级SP(Strict Priority)——严格按照队列优先级的高低顺序进行调度
     特点:
        优点:对高优先级的报文提供了优先转发。
        缺点:低优先级队列可能出现“饿死”现象。
(3)加权公平队列WFQ(Weighted Fair Queuing)——按队列权重来分配每个流占有出口的带宽
     WFQ以bit为单位进行调度,是bit-by-bit调度模型。
          Bit-by-bit调度模型只是理想化的模型,实际上,NE40E实现的WFQ是按照一定的粒度,
          例如256B、1KB,或其他粒度,具体按何种粒度,与单板类型相关。
     在报文出队的时候:
         首先让高优先队列中的报文出队并发送,直到高优先队列中的报文发送完,
         然后发送中优先队列中的报文,直到发送完,接着是低优先队列。
         在调度低优先级队列时,如果高优先级队列又有报文到来,则会优先调度高优先级队列。
         这样,较高优先级队列的报文将会得到优先发送,而较低优先级的报文后发送。
     特点:
        优点:
            不同的队列获得公平的调度机会,从总体上均衡各个流的延迟。
            短报文和长报文获得公平的调度:如果不同队列间同时存在多个长报文和短报文等待发送,
            让短报文优先获得调度,从而在总体上减少各个流的报文间的抖动。
            从统计上看,权重越小,所分得的带宽越少。权重越大,所分得的带宽越多。
        缺点:低时延业务仍得不到及时调度;无法实现用户自定义分类规则。

4. 端口队列调度方式

(1)每个接口有8个端口队列,用户可以为其都配置成SP调度,或者是基于权重的调度

(2)根据队列调度算法,8个端口队列可以分为三组:
     1)PQ队列:采用SP调度算法
          缺点:报文饿死现象,如果不对高优先级的报文带宽加限制,会造成低优先级报文得不到带宽,可能得不到调度机会。
          通常情况下,只时延敏感的业务入PQ队列。
     2)WFQ队列:
          WFQ队列是按权重进行调度的,调度算法可以是WFQ调度算法,按权重进行剩余带宽的分配。
     3)LPQ队列
          LPQ队列是在高速链路(以太网)接口上实现的队列调度机制。低速链路(如Serial、MP-Group)上不支持LPQ队列。
          LPQ队列之间的调度方式与PQ队列一样,也采用SP调度。
          不同在于拥塞时PQ可以抢占WFQ的带宽,而LPQ不可以抢占WFQ的带宽。
          在PQ和WFQ队列调度结束后,如果还有剩余带宽则分配给LPQ。
          实际应用中,可以将BE流用LPQ进行调度。这样,在网络负载较重时,BE流可以完全被限制,优先满足其它业务。
(3)端口队列调度顺序:
     PQ、WFQ、LPQ之间采用SP调度算法,优先调度PQ队列,再调度WFQ队列,最后调度LPQ队列。
(4)队列间的调度流程:
     在调度出队的时候,若PQ队列中有报文,则总是优先发送PQ队列中的报文,
     直到PQ队列中没有报文时才调度发送WFQ队列中的报文。
     只要PQ队列中有报文,系统就会优先发送PQ队列中的报文。
     若PQ队列中没有报文时,则调度WFQ队列。如果在调度WFQ队列过程中,
     PQ队列又有报文到来,则会优先调度PQ队列。
     直到WFQ中的报文被发送完毕,才调度LPQ队列中的报文。
(5)调度结果:
     首先保证PQ队列的PIR带宽,剩余带宽在各WFQ队列间按权重分配。
     当满足所有WFQ队列的PIR带宽后,如果此时还有剩余带宽,则分配给LPQ。

5. 拥塞管理的应用:接口出方向

6. 配置命令(略)

HQoS介绍

1. 概述

     由于传统QoS只能将流分成8个队列进行调度控制,因此在多租户的场景下限制很大。
     HQoS基于多级队列实现层次化调度,不仅区分了业务,也区分了用户,实现了精细化的QoS服务。

2. HQoS队列

(1)Level3流队列

     每个用户的同类业务可以被认为是一个业务流,HQoS能够针对每个用户的不同业务流进行队列调度。流队列一般与业务类型相对应,包括EF、AF、BE等,用户可以配置流队列的调度方式。

(2)Level2用户队列

     来自同一用户的所有业务可以被认为是一个用户队列,HQoS可以使该用户队列下的所有业务共享一个用户队列的带宽。

(3)Level1接口队列

     每个接口(子接口,Tunnel口等)一个队列,接口队列之间进行轮询调度(RR),用户仅可以配置基于接口的流量整形,且其调度方式不可配置。

3. HQoS队列调度

     流队列调度器和用户队列调度器都支持PQ、WFQ、PQ+WFQ调度。
     接口队列调度器使用轮询调度RR(Round Robin)方式。

4. HQoS流量整形

     整形器实现报文的缓存及限速功能。
     设备支持三级整形器,即流队列整形器、用户队列整形器和接口队列整形器。
     报文进入设备后先缓存到队列,再限速从队列发送报文,整形器配合限速算法可以保证承诺速率并限制最大速率。

5. HQoS丢弃器

     丢弃器在报文入队列之前将根据丢弃策略丢弃报文。
     HQoS支持的3种队列支持不同的丢弃方式:
         接口队列:尾部丢弃
         用户队列:尾部丢弃
         流队列:尾部丢弃和WRED

6. HQoS应用

7. HQoS配置思路

     HQoS配置较为复杂,在配置时一般使用MQC方式。
     配置HQoS时会使用策略嵌套的配置方式:
         父策略区分用户,子策略区分流量。
         父策略下可以有多个子策略。
         父策略应用于接口。