QOS
QOS
QOS 是服务质量的统称,好的服务质量对应低的延时、丢包率、抖动和高的带宽。QOS分为Best Effort、IntServ、DiffServ三种模型。每一种模型就是一种设计方案。
在DiffServ设计方案中,首先将报文进行分类。
1,对于二层报文的分类:是通过二层报文的tag字段里的优先级字段(priority字段)进行分类,该字段有3个bit,总共8个等级,数值范围从0-7,数值越大优先级越高。对于untag报文,会被标记为端口默认的优先级。被标记了优先级的tag报文称为802.1P报文,对二层报文打标记的机制称为COS.
2, 对于三层报文的分类:是通过IP报文的TOS字段进行分类。TOS字段总共8个bit,前三位表示ip-precedence。前6位表示DSCP。在DSCP中,前3位表示优先级,后面2位表示丢弃优先级,最后一位始终为0. COS和TOS是报文标记的一种机制,一个是对二层报文,一个是对三层报文的。
3, 对于端口可以手动指定端口的trust-mode,COS模式或者DSCP模式。
这样报文就被分为不同的类,然后再对不同的类进行打标记,也就是将同一类的报文设置相同的内部DSCP值或者内部COS值;再根据内部COS-queue、或者DSCP-queue的映射表,将报文送入不同的队列,(或者通过COS-PHB, PHB-queue,DSCP-PHB,PHB-queue映射表)再通过队列的调度技术,比如PQ/WRR/WDRR技术让队列出队列。在报文被发送之前我们引入流量监管,也就是通过令牌桶算法,将报文分为红、黄、绿三种颜色,绿包转发,红包丢弃,黄包重新打标记再转发/或者丢弃,最终实现对流量的限速。这里的令牌桶算法分为SRTCM/TRTCM。对于SRTCM算法,有C桶设E桶两个桶,算法以CIR的速率向C桶里面注入令牌,C桶里的令牌数表示为Tc,C桶的深度表示为CBS;E桶里的令牌数表示为Te,E桶的深度表示为EBS.当进来的报文B长度小于Tc的时候,报文被标记为绿色,Tc减少B;当报文长度大于Tc、并且小于Te的时候,报文被标记为黄色,TE减少B,Tc不变;当报文长度大于Te的时候,报文被标记为红色,Tc、Te不减少。对于绿色报文(即conform)采取的动作是转发;对于黄包(即exceed报文)采取的动作是从新打标记或者丢弃;对于红包(即vilolate报文)采取的动作是丢弃。这里是色盲模式下对报文的标记方式,在非色盲模式下,除了考虑报文长度外,还要考虑报文的颜色,对于进来的报文时绿色,那么在根据报文长度最终把报文标记为红黄绿;对于进来的报文如果时黄色,那么报文最终的颜色只能是黄色或者红色,如果报文长度B小于Te那么就是黄色,如果B大于Te那么最终结果是红色;对于红色报文,那么不管报文长度是多少,最终结果都是红色。
至此,高优先级的报文得到了优先转发,低优先级的报文延迟发送或者丢弃,最终实现了服务质量的要求。
QOS技术之令牌桶算法有两种工作模式
- 色盲模式(Color-Blind mode),假定所有incoming packet是无色的。
- 非色盲模式(Color-Aware mode),假定所有incoming packet已经被先前的网络元素上了色。如果Meter工作在非色盲模式,它会认为每一个packet都有一种颜色,要么绿要么黄要么红。
对于srTCM(的英文全称是Single Rate Three Color Marker,单速率三颜色标记)
CIR: Committed information Rate,承诺信息速率
CBS:Committed Burst Size,承诺突发尺寸
EBS:Excess Burst Size,超额突发尺寸
为方便,将两个令牌桶称为C桶和E桶,用Tc和Te表示桶中的令牌数量,Tc和Te初始化等于CBS和EBS。CBS比EBS要小。
Tc和Te在每秒钟内更新CIR次,更新时遵循以下规则:
如果Tc < CBS,则Tc增加1,否则
如果Te < EBS,则Te增加1,否则
Tc和Te都不增加
色盲模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:
如果Tc-B >= 0,则报文被标记为绿色,且Tc降低B,否则
如果Tp-B >= 0,则报文被标记为黄色,且Te降低B,否则
报文被标记为红色且Tc和Tp都不降低。
非色盲模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:
如果报文已被标记为绿色且Tc-B >= 0,则报文被标记为绿色,且Tc降低B,否则
如果报文已被标记为绿色或黄色且Te-B >= 0,则报文被标记为黄色,且Te降低B,否则报文被标记为红色且Tc和Te都不降低。
对于非色盲模式:
1,如果报文已经被标记为绿色,并且B<=Tc,则最终结果是,报文被标为绿色;如果B在Tc和Te之间,那最终结果是黄色;如果B>Te那最终结果是红色。
2,如果报文已经被标记为黄色,那么最终结果只能是黄色或者红色,如果B<=Te,则最终结果是黄色,如果B>Te,则最终结果是红色;
3,如果报文已经被标记为红色,那么最终结果只能是红色。此时报文最终颜色与c桶e桶令牌数无关。
4,如果报文没有被标记颜色,那么说明报文不符合匹配规则,此时不限速。(那么会被当成是绿色报文,然后按照已经被标记为绿包的规则进行处理?)
(这里已经被标记的报文颜色(非最终颜色)是通过drop precedence来标记的,drop precedence有三个值0,1,3,分别对应绿,红,黄。交换机里面有一张DSCP/cos与drop precedence的对应表。根据DSCP的值来确定对应的drop precedence的值,再根据drop precedence的值来确定报文的颜色。这里的颜色是非最终颜色,最终颜色还得根据令牌桶算法来确定。我们公司的产品,有待考证)
当往第一个桶里加了多余的令牌,会放入到第二个桶中。这里conform、exceed、violate分别对应绿、黄、红包。
对于trTcm (全称 Two Rate Three Color Marker ,双速率三颜色标记。基本思路和srTCM相同,有一些细节上的差异。)
- 配置单速率三色标记器时要指定4个参数:承诺信息速率CIR 、峰值信息速率PIR、承诺突发尺寸CBS 和超额突发尺寸PBS。trTCM算法中两个令牌桶的填充令牌的速率不同,分别为承诺的平均速率CIR(Committed Information Rate)和峰值速率PIR(Peak Information Rate)。为方便将这两个令牌桶称为C桶和P桶,这两个桶的尺寸分别为承诺突发尺寸CBS(Committed Burst Size)和峰值突发尺寸PBS(Peak Burst Size)。用Tc和Tp表示桶中的令牌数量,Tc和Tp初始化等于CBS和PBS。Tc和Tp在每秒钟内分别更新CIR和PIR次,每次更新增加一个令牌(除非桶满)。
在色盲模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:(这里默认CBS<PBS)
如果Tp-B < 0,则报文被标记为红色,否则
如果Tc-B < 0,则报文被标记为黄色,且Tp降低B,否则
报文被标记为绿色且Tc和Tp都降低B。
在非色盲模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:
如果报文已被标记为红色或者Tp-B < 0,则报文被标记为红色,否则
如果报文已被标记为黄色或者Tc-B < 0,则报文被标记为黄色,且Tp降低B,否则
报文被标记为绿色且Tc和Tp都降低B。
对于非色盲模式:
如果报文已经被标记为绿色,并且B>=Tp,则最终结果是红色,如果Tc<=B<=Tp报文最终结果被标为黄色;如果B<Tc,则报文最终结果呗标为绿色。
如果报文已经被标记为黄色,那么最终结果只能是黄色或者红色,如果B<=Tp,则最终结果是黄色,如果B>Tp,则最终结果是红色;
如果报文已经被标记为红色,那么最终结果只能是红色。
如果报文没有被标记颜色,那么会被当成是绿色报文,然后按照已经被标记为绿包的规则进行处理
(这里已经被标记的报文颜色(非最终颜色)是通过drop precedence来标记的,drop precedence有三个值0,1,3,分别对应绿,红,黄,交换机里面有一张DSCP/cos与drop precedence的对应表。根据DSCP的值来确定对应的drop precedence的值,再根据drop precedence的值来确定报文的颜色。这里的颜色是非最终颜色,最终颜色还得根据令牌桶算法来确定。本工作产品,有待考证)
QOS术语之PHB
PHB: 是单个设备对不同的数据流采取的不同转发行为,可以是确保转发、加速转发、尽力而为。PHB体现的是报文等级的高低,而不是服务质量的好坏,QOS是端到端的服务质量,PHB是单个设备的转发行为。就像酒店分为3、4、5星级,PHB只规定了入住3星级酒店,但是没有规定是入住如家还是莫泰168.所以PHB只是个笼统的概念,不是具体实现。PHB分为4类:CS、EF、AF、BE,每一类都对应一个或者一组DSCP值。
BE:尽力而为。目标可达,不保证服务质量。
AF:确保转发:视频类的数据流,要求带宽的保证。
EF:加速转发:语音类的数据流,要求低的时延,低的抖动、低的丢包率
CS:类选择器。因为现网有些设备不支持差分服务,只解析DSCP前3位,为了后向兼容,标准预留了所有格式为XXX000的DSCP值 ,这类值就对应为CS PHB。其实CS的分类,最终还是对应到EF、AF、BE相对应。所以可以认为PHB只有三种行为:加速转发、确保转发、尽力而为
QOS技术之流量监管(CAR)
CAR (Committed Access Rate):约定访问速率分类器
采用令牌桶算法对报文进行评估,对符合规定的报文采取“直接转发”;对不符合规定的报文采取“直接丢弃”;对部分符合的报文采取“重新打表记,然后再转发”
QOS技术之流量整形(GTS)
GTS (Generic Traffic Shaping):解决链路两边的接口速率不匹配
1, 利用令牌桶算法对每一类的报文进行度量,满足约定直接发送;不满足约定,入队缓存
2, 可采用多种队列技术来缓存报文,如PQ、WFQ、CBWFQ等
QOS技术之拥塞管理,即队列调度
1, 优先级队列调度(PQ Priority Queuing)
默认8个队列,0-7,优先级依次升高,只有当高优先级的队列中的报文,发送完毕,低优先级的队列报文才能发送。
缺点:低优先级的队列里的报文无法发送。
2, 加权循环调度(WRR Weight Round Robin)
设备根据每个队列的权值进行调度,每调度一轮权值减1,当权值为0时,停止调度,当所有队列的权值为0时,开始下一轮调度。
缺点:WRR调度是以报文为单位,长的报文获得的带宽要要大于短报文的实际带宽。
3, 加权赤字循环调度(WDRR Weighted Deficit Round Robin)
以报文的长度为权重来进行调度,初始情况下赤字为0,发送报文,当发送完报文后,根据报文长度重新计算赤字,如果为负值则停止调度,只有当赤字大于0的时候,才能调度成功并发送报文。
假设根据权重Q7,Q6能获取的带宽分别为400byte/s , 300byte/s
第1轮调度
Deficit[7][1] = 0+400 = 400,Deficit[6][1] = 0+300 = 300,从Q7队列取出一个900byte的报文发送,从Q6队列取出一个400byte的报文发送;发送后,Deficit[7][1] = 400–900 =–500,Deficit[6][1] = 300–400 =–100。
第2轮调度
Deficit[7][2] = -500+400 = -100,Deficit[6][2] = -100+300 = 200,Q7队列Deficit值小于0,此轮不参与调度,从Q6队列取出一个300byte的报文发送;发送后,Deficit[6][2] = 200–300 =–100。
第3轮调度
Deficit[7][3] = -100+400 = 300,Deficit[6][3] = -100+300 = 200,从Q7队列取出一个600byte的报文发送,从Q6队列取出一个500byte的报文发送;发送后,Deficit[7][3] = 300–600 =–300,Deficit[6][3] = 200–500 =–300。
这样可以使队列获取一个合理的带宽。
QOS术语之队列
队列分为硬件队列和软队列,只有当硬件队列满的时候才会启用软队列。硬件队列只有FIFI,QOS调度其实是将软队列中的报文放入硬件队列。拥塞产生时,说明硬件队列已满,此时会调用软件队列,
如果队列长度过长,丢包减少,时延增大;如果队列太短,时延减少,但是丢包增多。
流量监管:用令牌桶算法对报文进行限速,让符合规则的报文进行转发,让不符合规则的报文进行丢弃
流量整形:用令牌桶算法对不符合规则的报文缓存后再发送
拥塞管理:就是队列调度
拥塞避免:通过主动丢包避免拥塞的发生
QOS技术之拥塞避免:
1, 尾丢弃(Tail-Drop):当队列已满的时候,后来的报文全部丢弃。这种拥塞避免的方式缺点:造成TCP流量忽大忽小。
2, RED(Random Early Detection):需要设置缓存阈值,阈值有最大值和最小值,当队列长度小于缓存最小值时,不丢包;当队列长度处于缓存最大值最小值之间时,随机丢弃,按照丢包率进行丢包;
当队列长度大于缓存最大值时,全部丢弃。这里的队列长度是指报文所需要的队列长度,其实也就是报文长度。
3, WRED(Weighted Random Early Detection):就是在RED算法前加上一个权值,让优先级高的报文不容易丢弃。
文章出处:
https://www.cnblogs.com/ZCplayground/p/9451935.html
http://www.h3c.com/cn/d_201104/922145_30005_0.htm