通俗易懂讲一下:QOS 概念及术语

2020-01-13 17:58:27 浏览数 (1)

session 1 QOS概念及术语澄清

TOS、DSCP、PHB、COS、EXP(MPLS的)、ipv6TC(ipv6 Traffic Class)

ipv4的包头中TOS字段定义了QOS服务质量,其中的被IEEE在RFC中规定的对应关系是:

代码语言:javascript复制
xxx                      这个是 ippredence=cos=Exp

xxx xxx                  这个是dscp=ipv6TC(8bit用前6bit)

xxx xxx x x              这个是TOS字段,前3bit对应ipp=cos=exp,前6bit对应dscp=ipv6TC,后面2个xx保留

xxx dtr c ?             TOS字段,前3bit表示优先级,后面5bit中分别是D=时延,T=带宽,R=可靠性,C=cost开销(保留),?=保留

                         在PHB中前3bit表示优先级,后2个bit表示丢包,第6bit固定=0,最后2bit保留

综上所述,TOS中的bit包含了ipp、cos、exp、dscp、ipv6tc、phb所用到的bit

1、DSCP与PHB

DSCP只是个标记,PHB是每一跳执行动作。就比如DSCP有0-63=64个,但是这64个之中只有16个值被规定了有相应的PBH转发动作。这个是IEEE规定的在多个RFC文档中有记载。所以DSCP和PHB的关系是DSCP中的16个值被规定成了PHB动作,只有这个16个DSCP值默认会被设备执行相应的PHB转发动作,其余的值并没有被PHB规定,故不存在转发动作,都是按照默认的BE转发执行,这些值都是留给攻城狮可以手动定义转发动作的。

PHB有哪些?答案是16个动作,每个动作就是一个DSCP(命名),没有被PHB规定的其他DSCP值(如001 011)按照BE的优先级执行,PHB按照动作优先级的从优到次分别 如下:

所有的PHB的前3bit都是对应ippredence=cos=Exp的8个优先级,后3bit除了AF使用其中2bit做丢弃优先级用外,其余的CS、EF、BE都是固定值,详细见如下:

代码语言:javascript复制
CS7     111 000          为什么是CS7?仔细看一下发现前3bit从最低优先级BE开始到CS是0-7刚好对应了ipp中的0-7=8个优先级

CS6     110 000         按照算法xxx=421,那么111=4 2 1=7,而110=4 2 0=6,因为CS6-7(对应ipp6-7)用于网络协议要求的带宽优先级最高,因此前3bit的值最大,后3个bit000代表不允许QOS丢包,正常网络丢包有TCP重传机制来控制

EF5     101 110         EF前3bit是101=5也就是对应了ipp5,用于语音voice或视频video,要求的带宽是高,对于时延、抖动比较敏感因此前3bit仅次于CS,但是不要求丢包率,所以后3bit大以防止占用太多带宽而不丢包会压榨光其他网络流量的带宽

AF4     100 01   0     AF中前3bit分别对应了ipp的1-4(只用1-4是因为PHB规定),所以分别是001、010、011、100也就是AF1-4

        100 10   0      AF中的后2bit为丢弃率,值越大丢弃优先级越高,最后1bit固定=0

        100 11   0      所以AF的格式为xxx yy0 前面的x表示优先级,后面的y表示丢包,这样每个AF就有3种组合,4个AF就有12种组合

AF3     011 01   0     AF一般用于高优先级和中等优先级的数据业务

        011 10   0

        011 11   0

AF2     010 01  0

        010 10   0

        010 11   0

AF1     001 01  0

        001 10   0

        001 11   0

BE0     000 000         BE就是QOS中默认的FOFI先进先出型,尽力而为模型,默认的数据都是这个DSCP值
2、QOS中的PHB规定对应的业务等级

注意下表是ipp对应phb,因为phb就是按照ipp进行划分的所以是1对1的关系,而ipp对应dscp的就是1对8的关系,1个ipp=8个dscp值,因为dscp的后3bit是2的3次方=8中排列(前3bit中ipp与dscp是1对1,后面dscp多了3bit的8中组合,在加上前3bit的话就是8种,所以是1对8),如ipp0对应dscp的0-7(8个)

代码语言:javascript复制
ipp =cos=exp          phb.dscp=ipv6tc

7         111                      CS7

6         110                      CS6

5         101                      EF(5)

4         100                      AF4

3          011                     AF3

2          010                     AF2

1          001                     AF1

0          000                     BE

ipp与dscp的对应关系

代码语言:javascript复制
ipp                            dscp

7          111               111   000             56

                             111  001              57

                             111  010              58

                             111  011              59

                             111  100              60

                             111  101              61

                             111  110              62

                             111  111              63

6          110               110  xxx              48-55     剩余的1ipp与8DSCP的对应如法炮制
3、简单的流分类和复杂的流分类

简单的流分类是指,使用默认的PHB的转发优先级去转发,所有设备是默认都支持默认的PHB的,需要开启QOS功能。

也就是说,我们不去手工指定数据包的优先级(ipp、dscp、cos等),而是以数据包自己的qos优先级属性去转发,比如一个voice的报文默认就是EF的phb.dscp值,那么它进入一个开启qos功能的设备后就会被按照默认的phb(EF)优先级进行转发,而一个http的数据包文默认就是BE的phb.dscp值,那么它就会被按照默认的phb(BE)优先级进行转发。

但是简单的流分类并不简单,反而更加复杂。复杂在你需要事先了解这所有的默认QOS的属性和规则,如PHB、DSCP、ipp等

4、复杂的流分类

这个虽然叫复杂的流分类,但是相对于简单流分类反而还简单些,这种操作模式是有攻城狮手工去配置数据的转发优先级和动作的,最常见的是按照数据包的五元组、特征信息等使用ACL、traffic-class、behavior、traffic-policy等工具来直接定义数据包的优先级和转发动作,比较浅显和易理解

5、Service Class服务类和标准QOS的映射

服务类也叫做内部标记(内部自定义的转发优先级和转发动作PHB),对应的默认的QOS属性(通用的ipp、dscp、PHB等的值)也叫做外部标记

通常数据在进入(上行)设备的时候,会将外部标记转换成内部标记,而出去(下行)设备的时候,会将内部标记恢复为外部标记以便下个设备能够得到数据本身的标准的QOS属性,如下图中,一个voice数据包默认的QOS属性是ipp=5、phb=ef,而本地的内部标记Service Class可将它定义为ipp=0、phb=be执行转发(当然没有人会这样做,这里只是举例说明内部标记和外部标记的概念,不然容易懵逼),如果不进行转发的话,那么在有内部标记(自定义QOS)的情况下,出去到下游的设备的数据包的QOS会携带内部标记的QOS,不会恢复成标准的QOS外部标记

6、QOS的端口信任

下游设备可以在端口上配置QOS的信任(trust)或不信任,来信任/不信任(继承)上游设备发来的带有QOS优先级的报文,就如上图中假设AR1出去的报文没有进行内部标记到外部标记的恢复映射,那么从AR1出来的voice报文的ipp=0、phb=be。这时AR2可以选择信任或者不信任AR1发来的数据包的qos优先级,如果信任则继承voice报文ipp=0、phb=be的qos属性,如果不信任则会按照标准的qos来恢复这个voice报文ipp=5、phb=ef的qos属性。接口默认都是untrust不信任的。

但如果AR2中有内部标记service class定义voice报文的ipp=1、phb=af11的话,那么进入AR2的voice报文的qos属性就会表位ipp=1、phb=af11这样的qos属性

本文为CSDN博主「alone_map」的原创文章 原文链接:https://blog.csdn.net/alone_map/article/details/81106610

0 人点赞