HCIE 面试资料-QOS

QoS简介

服务质量QoS(Quality of Service)用于评估服务方满足客户服务需求的能力。通过配置QoS,对企业的网络流量进行调控,避免并管理网络拥塞,减少报文的丢失率,同时也可以为企业用户提供专用带宽或者为不同的业务(语音、视频、数据等)提供差分服务

影响网络通信质量的因素
1、带宽
指在单位时间(一般指的是1秒钟)内能传输的数据量
传输的最大带宽是由传输路径上的最小链路带宽决定的

2、时延
指一个报文从一个网络的一端传送到另一端所需要的时间。
单个网络设备的时延包括传输时延、串行化时延、处理时延、以及队列时延。

  • 传输时延:一个数据位从发送方到达接收方所需要的时间。该时延取决于传输距离和传输介质,与带宽无关。
  • 串行化时延:指发送节点在传输链路上开始发送报文的第一个比特至发完该报文的最后一个比特所需的时间。该时延取决于链路带宽以及报文大小。
  • 处理时延:指路由器把报文从入接口放到出接口队列需要的时间。它的大小跟路由器的处理性能有关。
  • 队列时延:指报文在队列中等待的时间。它的大小跟队列中报文的大小和数量、带宽以及队列机制有关。

3、抖动
每个报文的端到端时延不一样,就会导致这些报文不能等间隔到达目的端
抖动的大小跟时延的大小直接相关,时延小则抖动的范围也小,时延大则可能抖动的范围也大

4、丢包率
指在网络传输过程中丢失报文占传输报文的百分比。丢包可用于衡量网络的可靠性。
丢包(packet loss)可能在所有环节中发生,例如:

  • 处理过程:路由器在收到报文的时候可能由于CPU繁忙,无法处理报文而导致丢包;
  • 排队过程:在把报文调度到队列的时候可能由于队列被装满而导致丢包;
  • 传输过程:报文在链路上传输的过程中,可能由于种种原因(如链路故障等)导致的丢包。

改善网络质量通信的方法
1、尽力而为服务模型(Best-Effort)
应用程序可以在任何时候,发出任意数量的报文,而且不需要通知网络。网络尽最大的可能性来发送报文,但对时延、可靠性等性能不提供任何保证
在尽力而为的服务模型的网络上可通过增大网络带宽、升级网络设备等方式来提升网络通信质量。

2、综合服务模型(Integrated Services)
使设备运行一些协议来保障关键业务的通信质量。
资源预留协议RSVP协议(传输层)工作过程:在应用程序发送报文前,需要向网络申请特定的带宽和所需的特定服务质量的请求,等收到确认信息后才发送报文。
且每个节点都需要周期性地同相邻节点交换状态信息,这样就会加大协议报文导致的开销。更关键的是,所有网络节点都需要为每个数据流保存状态信息(跟踪数据流),而当前在Internet骨干网上有着成千上万条数据流,因此IntServ模型在Internet骨干网上无法得到广泛应用。

3、区分服务模型(DiffServ)
首先将网络中的流量分成多个类,然后为每个类定义相应的处理行为,使其拥有不同的优先转发、丢包率、时延等。

报文的标记与分类

标记QoS优先级的报文字段
对于IPv4报文,基于IPv4包首部中的ToS域的前三位(即IP Precedence)或前6位(即DSCP域)来标记报文。使用IP优先级可以将报文最多分成23=8类;使用DSCP域可将报文最多分成26=64类。

在这里插入图片描述
Tos各字段含义

  • 比特0~2表示Precedence字段。代表报文传输的8个优先级,按照优先级从高到低顺序取值为7、6、……、1和0。最高优先级是7或6,经常是为路由选择或更新网络控制通信保留的,用户级应用仅能使用0~5级。
  • D比特表示延迟要求(Delay,0代表正常延迟,1代表低延迟)。
  • T比特表示吞吐量(Throughput,0代表正常吞吐量,1代表高吞吐量)。
  • R比特表示可靠性(Reliability,0代表正常可靠性,1代表高可靠性)。
  • C比特表示传输开销(Monetary Cost,0代表正常传输开销,1代表低传输开销)。
  • 比特7保留。

在IPv6报文中,有两个字段与QoS有关,分别为流量类别TC(Traffic Class)和流标签FL(Flow Label)字段。流量类别字段有8位,和IPv4的服务类型(ToS)字段功能相同,用于对报文的业务类别进行标识;流标签字段有20位,用于标识属于同一业务流的包。流标签和源、目的地址一起,惟一标识了一个业务流。同一个流中的所有包具有相同的流标签,以便对有同样QoS要求的流进行快速、相同的处理。

对于MPLS报文,则一般是根据MPLS报文中的EXP域进行流分类。EXP域包括3位(0~7),通常作为MPLS报文的CoS域,与IP网络的ToS或DSCP域等效。(由于IP报文的优先级字段是3bits,与Exp的长度相同,所以可以直接形成一对一的映射。但IP报文的DSCP字段是6bits,与EXP的长度不一样,所以出现多对一的情况。在IEEE标准的实现中,将DSCP的前3bits(即CSCP)与EXP进行映射,而忽略DSCP的后3bits)

对于VLAN帧,根据VLAN帧头中的PRI字段(802.1p优先级 3bit)标识了服务质量需求,进行流分类

流分类
分为简单流分类,针对IPv4、VLAN、MPLS标识QOS服务等级的字段
复杂流分类,根据五元组

简单流分类
根据IP报文的IP优先级或DSCP值、IPv6报文的TC值、MPLS报文的EXP域值、VLAN报文的802.1p值,对报文进行粗略的分类,以识别出具有不同优先级或服务等级特征的流量,实现外部优先级和内部优先级之间的映射

在报文进设备时,需要将报文携带的QoS优先级统一映射到设备内部的服务等级Service Class(也叫做调度优先级PHB)和丢弃优先级(也叫颜色Color),在设备内部,根据报文的服务等级进行拥塞管理,根据报文的颜色进行拥塞避免;在报文出设备时,需要将内部的服务等级和颜色映射为QoS优先级,以便后续网络设备能够根据QoS优先级提供相应的服务质量。

IP报文使用IP-Precedence字段标识其优先级(7/6/5是优先级,4/3/2——D延迟/T吞吐量/R可靠性,1/0未使用)
VLAN帧头中的802.1p字段(取值范围0~7)
MPLS报文中的EXP字段(取值范围0~7)

IP报文的DSCP字段到PHB的映射
数字形式:DSCP取值范围为0~63(总共6比特,csX=Xx8,EF=46,afXY=Xx8+Yx2,BE=0)
关键字表达方式:用关键字标识的DSCP值。(优先级由大到小排序cs7、cs6、ef、af43、af42、af41、af33、af32、af31、af23、af22、af21、af13、af12、af11、be没有优先级)
在这里插入图片描述
EF PHB提供的是低时延服务,应该具有最低的抖动和丢包率,因而必须限制EF的专用带宽,以免其他服务得不到可用带宽。

复杂流分类
复杂流分类是指根据五元组(源地址、目的地址、源端口号、目的端口号、协议号码)等报文信息对报文进行精细的分类(一般的分类依据都局限在封装报文的头部信息,使用报文内容作为分类的标准比较少见)。
缺省应用于网络的边缘位置。报文进入边缘节点时,网络管理者可以灵活配置分类规则。

在这里插入图片描述
MPLS复杂流分类的EXP、Lable、TTL进行匹配

MQC概念:
模块化QoS命令行MQC(Modular QoS Command-Line Interface)是指通过将具有某类共同特征的报文划分为一类,并为同一类报文提供相同的服务,对不同类的报文提供不同的服务。

  • 流分类
    在用户视图使用指令分类 traffic classifier name
    在分类视图中添加条件 if-match [8021p 3 | acl 3000]

  • 流行为
    在用户视图使用指令标记 traffic behavior name
    在标记视图中添加条件 remark 8021p 1

  • 流策略
    在用户创建QOS调度服务 traffic policy name
    将分类和标记绑定 traffic classifier name traffic behavior name
    在接口视图下使用QOS调度服务 traffic-policy name [inbound | outbound]

随着网络中QoS业务的不断丰富,在网络规划时若要实现对不同流量(如不同业务或不同用户)的差分服务,会使部署比较复杂。MQC的出现,使用户能对网络中的流量进行精细化处理,用户可以更加便捷的针对自己的需求对网络中的流量提供不同的服务,完善了网络的服务能力。

在DS边界(DiffServ区分服务)对报文进行remark(标记),为DS域提供一个可信任的标记值。DS域内节点可根据此标记值进行QOS调度服务

1)不同的接口可以应用相同的Policy模板。
2)一个Policy模板中可以配置一个或多个Classifier & Behavior对。不同的Policy模板可以应用相同的Classifier & Behavior对。
3)一个Classifier模板中可以配置一条或多条if-match语句,if-match语句中可以引用ACL规则。不同的Classifier模板可以应用相同的ACL规则。一个ACL规则可以配置一个或多个Rule语句。
4)一个Behavior模板中可以配置一个或多个流动作。

在“非共享”模式下,这两个接口互不相干,每个接口都能出来100Mbps TCP流,200Mbps UDP流,300Mbps其他流量。
在“共享”模式下,则带宽限制的是总流量,即两个接口一共能出来100Mbps TCP流,200Mbps UDP流,300Mbps其他流量。

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

拥塞管理与避免

拥塞管理与拥塞避免概述
拥塞避免通过指定报文丢弃策略来解除网络过载,拥塞管理通过指定报文调度次序来确保高优先级业务优先被处理。

传统网络所面临的服务质量问题主要由拥塞引起,拥塞是指由于网络资源不足而造成速率下降、引入额外延时的一种现象。拥塞会造成报文的传输时延、吞吐率低及资源的大量耗费。而在IP分组交换及多业务并存的复杂环境下,拥塞又极为常见。

拥塞避免和拥塞管理就是解决网络拥塞的两种流控方式。

拥塞发生的主要场景
速率不匹配:报文从高速链路进入设备,再由低速链路转发出去。
汇聚问题:报文从多个接口同时进入设备,由一个没有足够带宽的接口转发出去。

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

拥塞管理
对于进入设备的报文:
1、设备将根据报文所携带标记对应的本地优先级值与队列索引号的映射表,来实现将不同的报文送入不同队列。
2、提供差分服务的核心就是拥塞发生时如何决定不同队列报文的转发次序,这就用到了队列的调度机制。

  • FIFO(先进先出 First In First Out)
    FIFO队列不对报文进行分类,当报文进入接口的速度大于出接口能发送的速度时,FIFO按报文到达接口的先后顺序让报文进入队列,同时,FIFO在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队。
    优点:FIFO队列处理简单,开销小。
    缺点:但FIFO不区分报文类型,采用尽力而为的服务模型,使得对时延敏感的实时应用的延迟得不到保证,关键业务的带宽也不能得到保证。

  • PQ(优先级队列 Priority Queuing)
    PQ队列是针对关键业务应用设计的,且关键业务有一个重要特点,就是需要在拥塞发生时要求优先获得服务以减少响应的延迟。
    PQ调度机制:分为4个队列,分别为高优先队列、中优先队列、正常优先队列和低优先队列,它们的优先级依次降低。在报文出队的时候,PQ会首先让高优先队列中的报文出队并发送,直到高优先队列中的报文发送完,然后发送中优先队列中的报文,同样,直到发送完,然后是正常优先队列和低优先队列。如此的话,将关键业务的报文放入较高优先级的队列,将非关键业务(如E-Mail)的报文放入较低优先级的队列,
    优点:可以保证关键业务(低时延)的报文被优先传送,非关键业务的报文在处理关键业务数据的空闲间隙被传送。
    缺点:如果高优先级队列中持续有报文等待被发送,那么后面较低优先级队列中的报文就迟迟不能得到发送,出现“饿死”现象。

  • WRR(加权循环调度 Weighted Round Robin)
    WRR(Weight Round Robin)WRR在队列之间进行轮流调度,保证每个队列都得到一定的服务时间。
    以端口有8个输出队列为例,WRR可为每个队列配置一个加权值(依次为w7、w6、w5、w4、w3、w2、w1、w0),加权值表示获取资源的比重。例如:一个100M的端口,配置它的WRR队列调度算法的加权值为50、50、30、30、10、10、10、10(依次对应w7、w6、w5、w4、w3、w2、w1、w0),这样可以保证最低优先级队列至少获得5Mbit/s带宽。
    优点:避免了PQ调度的“饿死”现象,如果某个队列为空,马上换到下一个队列调度,这样带宽资源可以得到充分的利用
    缺点:1、WRR调度按照报文个数进行调度,而用户一般关心的是带宽。当每个队列的平均报文长度相等或已知时,通过配置WRR权重,用户能够获得想要的带宽;但是,当队列的平均报文长度变化时,用户就不能通过配置WRR权重获取想要的带宽。
    缺点:2、低延时需求业务(如语音)得不到及时调度。

  • DRR (赤字循环调度 Deficit Round Robin)
    原理与WRR相似
    DRR与WRR的区别是:WRR调度是按照报文个数进行调度,而DRR是按照报文长度进行调度。如果报文长度超过了队列的调度能力,DRR调度允许出现负权重,以保证长报文也能够得到调度。但下次轮循调度时该队列将不会被调度,直到权重为正,该队列才会参与DRR调度。
    优点:DRR调度避免了采用PQ调度时低优先级队列中的报文可能长时间得不到服务的缺点,也避免了各队列报文长度不等或变化较大时,WRR调度不能按配置比例分配带宽资源的缺点。
    缺点:低延时需求业务(如语音)得不到及时调度。

  • WFQ(加权公平队列 Weighted Fair Queuing)
    WFQ能够按流的特征进行分类(协议类型、源和目的TCP或UDP端口号、源和目的IP地址、ToS域中的优先级位、具有相同的标签、EXP域值)自动进行流分类,一个流就分配到一个队列,从而在总体上均衡各个流的延迟。在出队的时候,WFQ按流的优先级(precedence)来分配每个流应占有出口的带宽。优先级的数值越小,所得的带宽越少。优先级的数值越大,所得的带宽越多。
    优点:可完全按照权重分配带宽;自动分类,配置简单
    缺点:1、低时延业务仍得不到及时调度
    缺点:2、流是自动分类,无法手工干预,故缺乏一定的灵活性,当多个流进入一个队列时无法提供精准服务

  • PQ+WFQ
    先试用PQ方式优先级调度低延时业务报文,再使用WFQ调度剩余的报文、
    优点:解决了PQ的饿死,解决了WFQ的低延时业务得不到调度
    缺点:无法实现根据用户自定义灵活分类报文的需求。

  • CBQ(基于类的队列 Class-based Queueing)
    基于类的加权公平队列CBQ(Class-based Queueing)是对WFQ功能的扩展,为用户提供了定义类的支持。CBQ首先根据IP优先级或者DSCP优先级、输入接口、IP报文的五元组等规则来对报文进行分类,然后让不同类别的报文进入不同的队列。对于不匹配任何类别的报文,送入系统定义的缺省类。
    分为EF、AF、BE队列
    1、EF队列:满足低时延业务
    EF队列是具有高优先级的队列,一个或多个类的报文可以被设定进入EF队列,不同类别的报文可设定占用不同的带宽。
    设备除了提供普通的EF队列,还支持一种特殊的EF队列—LLQ队列,时延更低。这为对时延敏感的应用(如VoIP业务)提供了良好的服务质量保证。
    由于EF队列中的报文一般是语音报文(VoIP),采用的是UDP报文,所以没有必要采用WRED的丢弃策略,采用尾丢弃策略即可。
    2、AF队列:满足需要带宽保证的关键数据业务
    每个AF队列分别对应一类报文,用户可以设定每类报文占用的带宽。在系统调度报文出队的时候,按用户为各类报文设定的带宽将报文出队发送,可以实现各个类的队列的公平调度。当接口有剩余带宽时,AF队列按照权重分享剩余带宽。同时,在接口拥塞的时候,仍然能保证各类报文得到用户设定的最小带宽。
    对于AF队列,当队列的长度达到队列的最大长度时,缺省采用尾丢弃的策略,但用户还可以选择用WRED丢弃策略。
    3、BE队列:满足不需要严格QoS保证的尽力发送业务
    当报文不匹配用户设定的所有类别时,报文被送入系统定义的缺省类。虽然允许为缺省类配置AF队列,并配置带宽,但是更多的情况是为缺省类配置BE队列。BE队列使用WFQ调度,使所有进入缺省类的报文进行基于流的队列调度。
    对于BE队列,当队列的长度达到队列的最大长度时,缺省采用尾丢弃的策略,但用户还可以选择用WRED丢弃策略。
    优点:提供了自定义类的支持;可为不同的业务定义不同的调度策略
    缺点:由于涉及到复杂的流分类,故启用CBQ会耗费一定的系统资源

尾丢弃
由于每个队列长度有限,当某一队列已经被装满时,传统的处理方法会将后续向该队列发送的报文全部丢弃,直至拥塞解除,这种处理方式称为尾丢弃(Tail Drop)。

缺点:
1、引发TCP全局同步现象
发生拥塞,队列排满进行尾丢弃行为,由于拥塞,大量的TCP连接包被丢弃,客户端回复的TCP确认包由于拥塞被丢掉,故发送方未收到TCP确认,造成TCP超时,(当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段)则认为网络发生了拥塞,于是同时将TCP Window Size减小,则整体流量同时减小,此时网络拥塞消除,发送方又都能收到TCP确认包,故认为网络不再拥塞,于是又都进入TCP慢启动过程,周而复始。

解决办法:RED(随机早期检测 Random Early Detection)
为避免TCP全局同步,可在队列未装满时先随机丢弃一部分报文。让多个TCP连接不同时降低发送速度,通过预先降低一部分TCP连接的传输速率来尽可能延缓TCP全局同步的到来。这种预先随机丢弃报文的行为被称为早期随机检测(RED)。
RED为每个队列的长度都设定了高低阈值门限,并规定:
当队列的长度小于低门限时,不丢弃报文。
当队列的长度大于高门限时,丢弃所有收到的报文。
当队列的长度在低门限和高门限之间时,开始随机丢弃到来的报文。方法是为每个到来的报文赋予一个随机数,并用该随机数与当前队列的丢弃概率比较,如果大于丢弃概率则报文被丢弃。队列越长,报文被丢弃的概率越高。

2、引起TCP饿死现象
队列已经被装满,后续发往该队列的大量TCP报文将进行尾丢弃,并造成Window Size减小,TCP流量整体减小,而UDP流量并不会减少,反而可能会占满整个队列,造成TCP饿死现象。

3、无差别丢弃
尾丢弃无法对流量进行区分,会丢弃关键数据

解决办法WRED(Weighted Random Early Detection)(针对不同优先级设置不同的高低阈值和丢包率)
基于RED技术,可实现每一种优先级都能独立设置报文的丢包的高门限、低门限及丢包率,报文到达低门限时,开始丢包,到达高门限时丢弃所有的报文,随着门限的增高,丢包率不断增加,最高丢包率不超过设置的最大丢包率,直至到达高门限,报文全部丢弃。这样按照一定的丢弃概率主动丢弃队列中的报文,从一定程度上避免了尾丢弃带来的所有缺点。

拥塞管理指令
drop-profile name
在系统视图下,创建丢弃模板并进入丢弃模板视图
wred dscp
用来指定当前WRED丢弃模板基于DSCP优先级或IP优先级进行丢弃。
dscp af31 low-limit 40 high-limit 60 discard-percentage 40
配置基于DSCP优先级的WRED模板参数,包括丢弃上下门限百分比和最大丢弃概率。
qos queue-profile queue-profile1
在队列模板中为指定队列绑定丢弃模板。
queue 3 drop-profile name
在队列模板中为指定队列绑定丢弃模板。
schedule wfq 3 to 4 pq 5
在队列模板中配置各队列之间的调度关系。

流量监管与整形

流量监管:
流量监管TP(Traffic Policing)就是对流量进行控制,通过监督进入网络的流量速率,对超出部分的流量进行“惩罚”,使进入的流量被限制在一个合理的范围之内,从而保护网络资源和用户的利益。
CAR使用令牌桶算法进行流量速率的评估,依据评估结果,实施预先设定好的监管动作
监管的动作:

  • 转发(pass):对测量结果不超过CIR的报文通常处理为继续正常转发。
  • 丢弃(discard):对测量结果超过PIR的报文通常进行丢弃。
  • 重标记(remark):对处于承诺速率(CIR)与峰值速率(PIR)之间的流量通常执行Remark动作,此时的报文不丢弃,而是通过Remark降低优先级进行尽力而为转发。

流量监管采用承诺访问速率CAR(Committed Access Rate,令牌产生的速率)来对流量进行控制。CAR利用令牌桶来衡量每个数据报文是超过还是遵守所规定的报文速率。
CAR主要有两个功能:

  • 流量速率限制:通过使用令牌桶对流经端口的报文进行度量,使得在特定时间内只有得到令牌的流量通过,从而实现限速功能。
  • 流分类:通过令牌桶算法对流量进行测量,根据测量结果给报文打上不同的流分类内部标记(包括服务等级与丢弃优先级)

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

流量整形与流量监管的主要区别在于,流量整形对原本要被丢弃的报文进行缓存,当令牌桶有足够的令牌时,再均匀的向外发送这些被缓存的报文。流量整形与流量监管的另一区别是,整形可能会增加延迟,而监管几乎不引入额外的延迟。

整形的方式

  • LR line-Rate
    针对所有流量
    基于接口
    可以在路由器和交换机上配置
  • GTS
    针对IP流量
    基于接口和队列,也可以用MQC对特定的流量进行整形(基于类)
    只能在路由器上做
  • qos queue x shaping
    在交换机上基于队列的整形,基于简单流分类或复杂流分类将优先级进行标记,让不同的业务进入不同的队列

路由器使用 CAR 进行监管时,只能使用双桶单速和双桶双速;
使用 GTS 进行整形时,只能使用单桶单速。

交换机使用流策略的 CAR 进行监管,只能使用双桶单速和双桶双速;
使用 LR 进行监管时,只能使用单桶单速;
使用 LR 进行整形(qos lr outbound)时,只能使用单桶单速;
使用 qos queue x shaping 进行整形时,只能使用双桶双速。

路由器上,流量整形中令牌添加方式是周期性添加,添加的时间间隔为CBS/CIR,每次添加的令牌数为CBS个。

监管和整形的区别:

  • 应用方式:
    1、监管可以同时应用在接口的入方向inbound。
    2、整形值能用在接口的出方向outbound。
  • 重标记的支持
    1、监管可以实现报文的重标记(remake,重新设置服务等级和丢弃优先级标记)。
    2、整形不支持报文的重标记。
  • 超出的流量处理方式
    1、监管针对超出的流量采用直接丢弃的方式。
    2、整形针对超出的流量不直接丢弃,而是放入缓存(shaping queue(默认使用WFQ队列机制))中并等待后续发送,如果缓存占满后执行Tail-Drop,丢弃方式可以更改为wred.
  • 适用的场景
    1、监管比较适合用于对延时要求较高的业务,例如:语音。但是会带来数据的重传。
    2、整形比较适合用于对可靠性要求较高的业务,但是不适合对延时要求较高的业务,因为缓存的数据会造成延时的增大。

交换机和路由器上流量整形有什么不同?
路由器上可以使用 GTS 进行流量整形,而且路由器可以基于类进行整形(使用流策略),如果出现拥塞,可以使用队列技术。基于软件进行整形。
交换机上只能使用 qos lr outbound 进行流量整形 ,如果出现拥塞,队列技术只有FIFO,基于硬件进行整形

令牌桶技术

令牌桶可以看作是一个存放一定数量令牌的容器。系统按设定的速度向桶中放置令牌,当桶中令牌满时,多出的令牌溢出,桶中令牌不再增加。

在使用令牌桶对流量进行评估时,是以令牌桶中的令牌数量是否足够满足报文的转发为依据的。如果桶中存在足够的令牌可以用来转发报文,称流量遵守或符合约定值,否则称为流量超标或不符合约定值。

关于令牌桶处理报文的方式,RFC中定义了两种标记算法:

单速双桶算法,主要关注报文尺寸的突发。
双速双桶算法,主要关注报文速率的突发。
两种算法的评估结果都是为报文打上红、黄、绿三种颜色的标记,所以称为“三色标记”。QoS会根据报文的颜色做相应的处理,两种算法都可以工作于色盲模式和色敏模式下。

令牌桶算法的带宽参数设置取决于实际网络业务的限速需要。桶深是一个重要参数,具体该如何设置,则取决于具体的业务流量情况。原则上,桶深需要满足如下条件:
1、桶深>=MTU
2、桶深>=业务流量的正常突发

单速率参数
CIR(Committed Information Rate):承诺信息速率,单位是kbit/s,表示向令牌桶中投放令牌的速率。
CBS(Committed Burst Size):承诺突发尺寸,单位为byte,用来定义在部分流量超过CIR之前的最大突发流量,即为令牌桶的容量(深度)。承诺突发尺寸必须大于报文的最大长度(最大时一个分组可以领取桶中的全部令牌)。CBS越大,表示所允许的突发量越大。
EBS(Extended burst size):表示峰值突发尺寸,用来定义每次突发所允许的最大的流量尺寸,单位为byte。

如果到达的分组未超过CBS,则把它标记为绿色;如果超过了CBS而未超过EBS,则把它标记为黄色;否则,标记为红色。在网络流量比较简单的情况下,单速率三色标记算法可以用在网络入口处来测量流量。

单速率令牌添加方式
单速率标记算法中,初始状态时两桶是满的。先往桶1中添加令牌,等桶1满了,再往桶2中添加令牌(桶2的令牌用做以后临时超过CIR的突发流量),当两桶都被填满时,新产生的令牌将会被丢弃。

色盲模式下,在对到达报文(假设报文大小为B,Tc=CBS承诺突发尺寸,Te=EBS峰值突发尺寸)进行评估时,遵循以下规则:

  • 对于单速单桶:
    如果报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tc=Tc-B,
    如果报文长度超过C桶中的令牌数Tc,报文被标记为红色,Tc值不变。
  • 对于单速双桶:
    如果报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tc=Tc-B,
    如果报文长度超过C桶中的令牌数Tc但不超过E桶中的令牌数Te,则报文被标记为黄色,且Te=Te-B,
    如果报文长度超过E桶中的令牌数Te,报文被标记为红色,但Tc和Te不变。

色敏模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:

  • 对于单速单桶:
    如果报文已被标记为绿色但报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tc=Tc-B;
    如果报文已被标记为绿色且报文长度超过C桶中的令牌数Tc,则报文被标记为红色,Tc保持不变;
    如果报文已被标记为黄色或红色,都直接将报文标记为红色,Tc保持不变。
  • 对于单速双桶:
    如果报文已被标记为绿色且报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tc=Tc-B,
    如果报文已被标记为绿色且报文长度超过C桶中的令牌数Tc但不超过E桶中的令牌数Te,则报文被标记为黄色,且Te=Te-B,
    如果报文已被标记为黄色但报文长度不超过E桶中的令牌数Te,则报文被标记为黄色,且Te=Te-B,
    如果报文已被标记为黄色且报文长度超过E桶中的令牌数Te,则报文被标记为红色,且Te保持不变,
    如果报文已被标记为红色,直接将报文标记为红色,Tc和Te不变。

双速率令牌桶参数
CIR(Committed Information Rate):承诺信息速率,表示端口允许的信息流平均速率,单位是kbit/s。
CBS(Committed Burst Size):承诺突发尺寸,用来定义在部分流量超过CIR之前的最大突发流量,单位为byte。承诺突发尺寸必须不小于报文的最大长度。
PIR(Peak Information Rate):表示峰值信息速率,表示端口允许的突发流量的最大速率,单位是kbit/s。该值必须不小于CIR的设置值。
PBS(Peak Burst Size):表示峰值突发尺寸,用来定义每次突发所允许的最大的流量尺寸,单位为byte。

双速率令牌添加方式
初始状态时两桶是满的。往C桶和P桶分别以CIR和PIR的速率填充令牌。因这两个令牌桶是相互独立的,当其中一个桶被填满时,这个桶新产生的令牌将会被丢弃,另一个桶继续填令牌。

双速率流量评估规则
双速率三色标记算法关注的是速率的突发,首先评估的是数据流的速率是否符合规定的突发要求,其规则是先比较P桶,再比较C桶。

双速率三色标记算法也有色盲模式和色敏模式两种。为方便用Tc和Tp表示桶中的令牌数量,Tc和Tp初始化等于CBS和PBS。

色盲模式下,在对到达报文(假设数据包大小为B)进行评估时,遵循以下规则:

  • 如果报文长度超过P桶中的令牌数Tp,则报文被标记为红色,且Tc和Tp保持不变,
    如果报文长度不超过P桶中的令牌数Tp但超过C桶中的令牌数Tc,则报文被标记为黄色,且Tp=Tp-B,
    如果报文长度不超过C桶中的令牌数Tc,报文被标记为绿色,且Tp=Tp-B,Tc=Tc-B。

色敏模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:

  • 如果报文已被标记为绿色且报文长度超过P桶中的令牌数Tp,则报文被标记为红色,且Tp和Tc不变。
    如果报文已被标记为绿色且报文长度不超过P桶中的令牌数Tp但超过C桶中的令牌数Tc,则报文被标记为黄色,且Tp=Tp-B,Tc不变。
    如果报文已被标记为绿色且报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tp=Tp-B,Tc=Tc-B。
    如果报文已被标记为黄色,则只比较P桶,如果报文长度超过P桶中的令牌数Tp,则报文被标记为红色,且Tp和Tc不变。
    如果报文已被标记为黄色,且报文长度不超过P桶的令牌数,则报文被标记为黄色,且Tp=Tp-B,Tc不变。
    如果报文已被标记为红色,直接将报文标记为红色,Tc和Tp不变。

QOS会根据不同的颜色来设置不同的丢弃率

猜你喜欢

转载自blog.csdn.net/PanJWei/article/details/115170132