QoS技术的产生

        随着网络的不断发展,网络规模及流量类型的不断增加,使得互联网流量激增,产生网络拥塞,增加转发时延,严重时还会产生丢包,导致业务质量下降甚至不可用。所以,要在IP网络上开展这些实时性业务,就必须解决网络拥塞问题,而解决网络拥塞的最直接的办法就是增加网络带宽,但从网络的建设成本考虑,这是不现实的。

传统端到端网络通信存在的问题、传统网络缺点:

先到先达,优先转发(会导致网络拥塞)


需要衡量的质量要求

       1)带宽

              最大带宽BWmax等于传输路径上的最小带宽 (木桶效应)

对于视频流量敏感,提升最小带宽值带来正收益

       2)时延

              端到端网络时延等于路径上所有时延之和

                     传输时延

                     处理时延

                     队列时延

                     串行化时延(从第一个bit到最后一个bit中间所使用的时间)

语音、视频流量敏感

语音流量对带宽不是很敏感,降低时延获得正收益

       3)抖动

              由于每个报文端到端时延不相等造成的

降低抖动获得正收益

       4)丢包率

              丢包可能在传输过程中的每一个环节发生

对于TCP流量很敏感,降低丢包率获得正收益

在带宽一定的情况下如何提升服务质量?

       1)尽力而行服务模型(能传多少传多少,传不了就丢)

              增大网络带宽

              升级网络设备

       2)综合服务模型 (相当于公交车道)

              优点:可以为某些特定业务提供带宽、延迟保证

              缺点:实现较复杂,无流量发送时仍然独占带宽,使用率低,所有设备必须运行RSVP协议

       3)区分服务模型(使用最多)

              1、在网络入口对报文进行分类,完成对报文的标记 (流量分类标记)

为什么要报文标记?

       端到端进行QoS部署时,就需要每台设备都对报文进行分类,这样就会导致耗费大量地设备处理资源,为此提出了对报文进行标记的方法,这样下游设备只需要对标记进行识别即可提供差分服务。


       收到标记,将其映射成本地对其定义的服务等级值(映射为自己本地可以使用)

      根据不同的服务等级值进入相应的缓存队列,根据队列间的调度机制,实现不同的转发服务(发送拥塞进行拥塞管理—队列技术)


    

QoS的周期 qos原理详解_网络协议

报文分类与标记

       1、简单流分类

              VLAN中802.1Q字域(PRI)

                     802.1P最多区分8类数据(0~7) ,802.1p占3bit

              MPSL中Label字域(EXP)

                     MPLS EXP最多区分8类数据(0~7), exp占3bit

              IP包头中的ToS字域(IPP/DSCP)

                     IP-Precedence字段最多区分8类数据(0~7),占一个字节大小,IP-Precedence占3bit

QoS的周期 qos原理详解_QOS_02

                     由于IP-p优先级8类不够使用,所以扩充了3bit称为DSCP(差分服务代码点)-->成为DS-field字段,占6bit大小,可区分64类(0~63)

QoS的周期 qos原理详解_QOS_03

IP头部经历过两次修改,最早的RFC791中,IP字段名称为TOS(type of service 服务类型)。

将三个字段作为IP优先级。随着IP网络的发展,IP优先级字段最多能将报文分为8类。2^3=8(0-7)

在新RFC2474中,将后三个字段加入作为DS,将IP优先级改名为DSCP,共有2^6=64个分类。(0-63)

QoS的周期 qos原理详解_网络_04

       2、复杂流分类(MQC)

              配置流分类、流行为、流策略

1)流分类(traffic classifier)

                     将流量筛选出进行分类

                            and表示流分类中各规则之间关系为“逻辑与”,必须都匹配

                            or表示流分类各规则之间是“逻辑或”,匹配一个或全部

缺省情况下,流分类中各规则之间的关系为“逻辑或”

 2)流行为(traffic behavior)

                     MQC流行为动作有:

                            报文过滤

                            重标记优先级

                            重定向

                            流量监管

                            流量统计

                     配置eg:

                            traffic behavior huawei

                            remark dscp ef

   3)流策略(traffic policy)

将流分类与流行为关联应用

配置eg:

traffic policy huawei

                     classifier huawei behavior huawei

DSCP/查分服务代码点分类:

QoS的周期 qos原理详解_运维_05

数字形式:DSCP取值范围为0~63;

关键字表达方式:用关键字标识的DSCP值。

1)CS

                            分类选择/类选择码

                                   CS6、CS7默认用于协议报文,拥有最高优先级(转发等级最高)

整个CS都是用来兼容IP优先级的,IP优先级只有3个bit 所以每个CS后3bit都为0。

所有的CS都是映射的0-7。

2)EF

                            加速转发行为(常用于语音流量报文,DSCP号为46)

                                   发包速率大于收包速率

3)AF

                            确保转发行为

                                   未超出带宽值,确保数据转发

                                   超出带宽值进行缓存,有空闲再发

AF4用于承载语音信令流量

AF3用于承载直播流量

AF2用来承载VOD/视频点播流量

AF1用来承载普通上网流量

AFij:丢弃优先级  j越大越优先丢弃

                                  

QoS的周期 qos原理详解_网络协议_06

所有AF流量最后一位bit都为0

第4 5位bit为丢弃优先级

一共为6bit 例如计算AF42:

42计算 第一位1234 第二位123

也就是第一位0100为4 第二位0010为2

因为最后一位为0 所以最后为100100-->36

4)BE

                            尽力而为转发行为

(一般将不太重要的报文设置为BE,DSCP号为0)

                                         

QoS的周期 qos原理详解_QoS的周期_07

DSCP/ IP-Precedence/ 802.1p/ EXP值表

                             

                             


拥塞管理与拥塞避免

拥塞管理与拥塞避免配置前提:

       先有报文分类,根据报文分类和标记的队列类型进行QoS优化配置

什么时候会产生拥塞?

       当多条带宽汇总到一条带宽上时,就会产生拥塞

拥塞管理的核心是什么?拥塞避免技术的前提是什么?

       核心是队列,队列的核心是调度队列调度算法

       当网络中间歇性的出现拥塞,且关键报文要求被更优先地转发时,此时就需要进行拥塞管理。

       拥塞避免技术前提是队列满了,后续发往该队列的关键报文都被全部丢弃,此时需要拥塞避免

拥塞管理方法:

通过LP本地优先级映射到队列中

 使用算法进行调度

常见队列算法

需要注意的是:缓存也成为硬件队列,硬件队列满了才会进行队列算法,否则不会拥塞。

队列算法只能称为软件队列,都是在进入缓存之前进行调度。

 1.FIFO(先进先出):默认队列算法

QoS的周期 qos原理详解_网络协议_08

先进先出,无紧急次紧急非紧急之分

2.PQ(优先级队列):分四种优先级报文

QoS的周期 qos原理详解_QOS_09

                            1、高优先级队列

                            2、中优先级队列

                            3、一般优先级队列

                            4、低优先级队列

特点:将紧急流量优先放到高优先队列,次紧急、低紧急放入中低队列,紧急流量转发完毕再转发中低流量

优点:保证了紧急报文转发,区分流量

缺点:低优先级队列饿死现象(如果高优先级队列一直有,低优先级无法转发)

3.WRR(权重轮询队列)

QoS的周期 qos原理详解_网络_10

优点:解决了PQ饿死现象

缺点:基于报文个数调度,容易造成包长尺寸不同的报文出现不平等调度,低时延业务得不到及时调度

 4.WFQ(加权公平队列):按照流特征进行分类(五元组),hash算法自动分配队列

QoS的周期 qos原理详解_QOS_11

优点:按照权重分配带宽,自动分类,配置简单

缺点:低延时业务仍得不到及时调度;无法实现用户自定义分类规则

5.PQ+WFQ:优先级队列+加权公平队列

QoS的周期 qos原理详解_运维_12

优点:可保证低时延业务得到及时调度;实现按权重分配带宽等

缺点:无法实现用户自定义灵活分类报文的需求

6.CBQ(类加权公平队列):对WFQ的扩展

QoS的周期 qos原理详解_网络_13

1、基于分类队列,将高优先级放入EF中、低中流量放到AF、BE中

优点:提供了自定义类的支持;可谓不同的业务定义不同的调度策略

缺点:由于涉及到复杂流分类,会消耗系统资源

2、分为三个队列:EF AF BE [还有LLQ(低延迟)队列,排在第一位,专为语音流量定制]

BE队列使用接口剩余带宽和WFQ调度方式进行发送。

处理简单且快速,但是无法为紧急报文提供优先转发服务

      

QoS的周期 qos原理详解_网络_14


拥塞避免

       某一队列已经被装满时,后续向该队列发送的报文全部丢弃,直至拥塞解除这种处理方式称为尾丢弃(Tail Drop)

为什么要拥塞避免?

1、因为会导致TCP全局同步问题


怎么产生的TCP全局同步?为什么会有TCP全局同步?

        当大量TCP报文丢弃后会进行重连接,会造成TCP慢启动(滑动窗口大小的值从初始值慢慢增加),TCP确认包由于拥塞被丢掉,故发送方未收到TCP确认,则认为网络发生了拥塞,于是同时将TCP Window Size减小,则整体流量同时减小。流量减小拥塞消除。当流量越来越大时,队列满了进行尾丢弃,又会进行重连接,周而复始。

QoS的周期 qos原理详解_网络_15

QoS的周期 qos原理详解_QOS_16

2、会导致TCP饿死现象

                            TCP报文将进行尾丢弃时Window Size减小,TCP流量整体减小,而UDP流量并不会减少,反而可能会占满整个队列,造成TCP饿死现象。

3、会导致无差别丢弃

                            尾丢弃很可能导致大量非关键数据被转发,而大量关键数据被丢弃。

解决尾丢弃办法1:

              RED(早期随机检测)

QoS的周期 qos原理详解_网络协议_17

在队列未装满时先随机丢弃一部分报文。

通过预先降低一部分TCP连接的传输速率来尽可能延缓TCP全局同步的到来。

解决尾丢弃办法2:

              WRED(加权早期随机检测)

QoS的周期 qos原理详解_网络_18

通过设置报文的丢包的高门限、低门限及丢包率。

报文到达低门限时,开始丢包,

到达高门限时丢弃所有的报文,随着门限的增高,丢包率不断增加,最高丢包率不超过设置的最大丢包率。

到达高门限,报文全部丢弃。

弥补了尾丢弃的三个缺点,且大大提高了链路带宽利用率。


流量监管与流量整形

流量监管与流量整形属于流量动作,对流量规格监督来限制流量及资源使用

1)流量监管:对于超出的流量直接丢弃(只能在入方向做)

       优点:可以对不同类别的报文分别进行限速

       缺点:当链路空闲时,造成带宽浪费;丢弃的流量可能要进行重传

典型的流量监管技术

CAR(约定访问速率)

超出限定速率可能会被丢弃或者降低优先级转发

当对丢包率非常敏感的时候,不可使用流量监管,因为可能会丢弃

2)流量整形:对于超出的流量先缓存到队列中,等待空闲带宽时,将数据再进行传输(只能在出方向做)

       优点:可实现对不同报文分别进行限速,缓冲机制可减少带宽浪费,减少流量重传

       缺点:可能会增加延迟

      

典型流量整形技术

1)GTS

2)LR(接口限速)

      

超出限定速率的数据报文会放入缓存,链路空闲再发送(也会存在队列)

对延迟比较敏感的流量不可使用流量整形。

判断是否限速的工具:令牌桶

QoS的周期 qos原理详解_QoS的周期_19

为什么要有令牌桶?

要实现流量的控制,必须有一种机制可以对通过设备的流量进行度量。令牌桶是目前最常采用的一种流量测量方法,用来评估流量速率是否超过了规定值。

实现原理是什么?

每单位时间(可以设置秒)内将数据报文放入令牌桶

为什么要有两个桶?

单桶最大的问题是无法允许流量的突发(超过额定速率会丢还是存)

1、单桶单速率流量监管

QoS的周期 qos原理详解_QOS_20

                     实现原理:每单位时间(可以设置秒)内将数据报文放入令牌桶,若超过CIR,可能会丢也可能会存入缓存,却决于配置的流量监管还是流量整形技术。

2、双桶单速率流量监管

QoS的周期 qos原理详解_网络_21

CBS:C桶的大小    EBS:E桶的大小

E桶里存放的速率都是上一秒C桶剩余的速率,每过一秒E桶都会清空

当EBS≠0时,称为单速双桶。当EBS=0,E桶的令牌数始终为0,相当于只使用了一个令牌桶——C桶,这种情况也称为单速单桶。单速单桶中,报文只标记为绿、红两色。

QoS的周期 qos原理详解_运维_22

QoS的周期 qos原理详解_运维_23

如上图使用双桶单速令牌桶,速率令牌转发过程:

配置每秒放入10M速率

第一秒C桶放入10M速率,假设有3M流量经过,10M-3M=7M,剩余7M放入E桶中做缓存。

第二秒C桶再次放入10M速率,此时所有速率为10M+7M=17M。假设有4M流量经过,10M-4M=6M,在这里E桶的速率会清空并放入刚得到C桶的6M。

第三秒C桶再次放入10M速率,此时所有速率为10M+6M=16M,假设此时有12M流量经过,直接调用C桶E桶中所有速率,16M-12M=4M,此时E桶会清空并放入C桶的速率0M。

第四秒C桶再放入10M速率令牌,此时所有速率为10M,E桶为0M,假设此时有13M流量经过,直接调用C桶所有速率令牌,剩余3M根据流量监管或流量整形进行丢弃或者缓存。

如果在C桶中就超出了CIR,具体丢还是缓存在于配置了流量监管还是流量整形

缺点是不能持续突发,只能断续突发

单速率令牌桶名词:

                            CIR(Committed Information Rate):承诺信息速率

                            CBS(Committed Burst Size):承诺突发尺寸

                            EBS(Extended burst size):超额突发尺寸

流量评估规则:

如果C桶能满足超出CIR标志(未超过C桶)为绿色

如果超过C桶没超过E桶CIR标志为黄色

如果C桶+E桶不能满足超出CIR标志(C桶E桶都超出)为红色


默认情况下,green、yellow进行转发,red报文丢弃

3、双桶双速率流量监管(使用最多)

QoS的周期 qos原理详解_QoS的周期_24

CBS:C桶的大小    PBS:P桶的大小

可以实现基于报文速率的突发

与双桶单速不同的是,将双桶单速的E桶换成了P桶,跟C桶一样按照单位时间向令牌桶内放入速率令牌。C桶的约定信息速率为CIR,P桶为PIR。

C桶与E桶可以叠加使用,C桶与P桶不会叠加使用。

QoS的周期 qos原理详解_QOS_25

 

QoS的周期 qos原理详解_QOS_26

如上图使用双桶双速令牌桶,速率令牌转发过程:

配置C桶每秒防入10M,P桶每秒放入20M

第一秒C桶放入10M,P桶放入20M,假设有3M流量经过,C桶P桶都可满足,10-3=7M,20-3=17M。携带绿色标记出。

第二秒C桶依旧放入10M,P桶放入20M,叠加上限为10M、20M不会超过上限。此时假设有15M流量经过,C桶无法满足会转交给P桶,20M-15M=5M。携带黄色标记出

第二秒C桶依旧放入10M,P桶放入20M,叠加上限为10M、20M不会超过上限。假设有21M流量经过,C桶无法满足,转交给P桶也无法满足,流量会携带红色标记出。

双速率令牌桶名词:

                            CIR(Committed Information Rate):承诺信息速率

                            CBS(Committed Burst Size):承诺突发尺寸

                            PIR(Peak Information Rate):表示峰值信息速率

                            PBS(Peak Burst Size):表示峰值突发尺寸

流量评估规则:

绿色

黄色

红色

默认情况下,green、yellow进行转发,red报文丢弃