流量监管和流量整形


转载自:H3C http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_Four/Home/Catalog/201104/713018_97665_0.htm

 

1 前言

本文主要阐述Qos技术中流量监管和流量整形的实现机制。本文描述现今IETF对流量规格度量的两种算法来了解令牌桶的工作原理;主要讲述我司路由器流量监管和流量整形的实现机制,由于流量限速也用到相同的令牌桶处理机制,所以也讲述了流量限速的实现机制。

2 流量监管和流量整形简介

在提供QoS服务时,网络边界路由器与内部路由器功能有所侧重,并像一个整体一样相互协作。Diff-Serv将复杂的流分类和流量控制都推至边界路由器来完成。边界路由器主要完成复杂流分类、为分组打DSCP标记、流量的接入速率监管、访问控制等动作。区域内部路由器只需进行简单流分类,对同一类流实施流量控制。这样做避免了Int-Serv模型中的基于每个流(Per-Flow)的复杂流分类及流控,从而使得区分网络内部的转发操作可以得到高效的实现。也就是说流量监管和流量整形主要是在Diff-Serv中的边缘设备上进行。

从高速链路向低速链路传输数据时,带宽会在低速链路接口处出现瓶颈,导致数据丢失严重,特别是会影响到低延时要求的数据如语音等。流量监管(traffic policing)的典型作用是限制进入或流出某一网络的某一连接的流量与突发。在报文满足一定的条件时,如某个连接的报文流量过大,流量监管就可以对该报文采取不同的处理动作,例如丢弃报文,或重新设置报文的优先级等。通常的用法是使用CAR来限制某类报文的流量,例如限制HTTP报文不能占用超过50%的网络带宽。

流量整形(traffic shaping)的典型作用是限制流出某一网络的某一连接的流量与突发,使这类报文以比较均匀的速度向外发送。流量整形通常使用缓冲区和令牌桶来完成,当报文的发送速度过快时,首先在缓冲区进行缓存,在令牌桶的控制下,再均匀地发送这些被缓冲的报文。

3 IETF的两种令牌桶算法

IETF建议采用srTCM(A Single Rate Three Color Marker,RFC2697)算法或trTCM(A Two Rate Three Color Marker,RFC2698)算法对流量进行测评,根据评估结果为报文打颜色标记,即绿色、黄色和红色。对于AF业务的报文,可根据评估结果按照报文的颜色,将报文重新标记为不同的丢弃优先级。

srTCM与trTCM算法均采用两个令牌桶对到达的报文进行评估,他们允许流量在某种级别上突发——但关注的侧重点不同,srTCM更关注报文尺寸的突发,trTCM则关注速率上的突发。srTCM与trTCM算法有两种工作模式,色盲模式(Color-Blind)与感色模式(Color-Aware),其中色盲模式是较常用的。下面我们简单介绍一下这两个算法。

3.1 srTCM算法(RFC 2697)

单速率三色标记器(srTCM) 能够度量IP分组流,并把分组标记为绿色、黄色或红色。 如果到达的分组未超过承诺突发尺寸,则把它标记为绿色;如果超过了承诺突发尺寸而未超过超额突发尺寸,则把它标记为黄色;否则,标记为红色。 单速率三色标记器可以用在网络入口处来管制服务。

单速率三色标记器有两种工作模式:色盲模式和感色模式。 在色盲模式下,假定所有的分组都是未经标记的. 在感色模式下,假定所有输入的分组已经被标记为绿色、黄色或红色。

配置单速率三色标记器时要指定3个参数:承诺信息速率CIR 、承诺突发尺寸CBS 和超额突发尺寸EBS。 其中,CBS和EBS 要大于0 ,并且至少应该大于等于最大的分组长度。

为方便,将两个令牌桶称为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,否则

 如果Te-B >= 0,则报文被标记为黄色,且Te降低B,否则

 报文被标记为红色且Tc和Te都不降低。

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

 如果报文已被标记为绿色且Tc-B >= 0,则报文被标记为绿色,且Tc降低B,否则

 如果报文已被标记为绿色或黄色且Te-B >= 0,则报文被标记为黄色,且Te降低B,否则报文被标记为红色且Tc和Te都不降低。

3.2 trTCM算法(RFC 2698)

配置单速率三色标记器时要指定4个参数:承诺信息速率CIR 、峰值信息速率PIR、承诺突发尺寸CBS 和超额突发尺寸EBS。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)进行评估时,遵循以下规则:

 如果Tp-B < 0,则报文被标记为红色,否则

 如果Tc-B < 0,则报文被标记为黄色,且Tp降低B,否则

报文被标记为绿色且Tc和Tp都降低B。

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

 如果报文已被标记为红色或者Tp-B < 0,则报文被标记为红色,否则

 如果报文已被标记为黄色或者Tc-B < 0,则报文被标记为黄色,且Tp降低B,否则

 报文被标记为绿色且Tc和Tp都降低B。

4 流量监管和流量整形的实现机制

4.1 流量监管(Committed Access Rate, CAR)

我司路由器实现的令牌桶算法是色盲模式srTCM,但是算法上作了一定的改进,所谓的单桶双色算法。CAR和GTS中EBS可以配置,但是没有起应有的作用,而是把这个桶放到CBS中,起加深CBS桶的作用。CBS和EBS是合起来算的,也就是说实际的CBS=配置的CBS+EBS,初始时令牌是满的。那么当有报文来时,如果报文长度B大于实际的CBS就是红,小于实际的CBS就是绿,没有黄色报文。值得注意的是:CAR和GTS中报文长度B包含二层信息的长度,如果是PPPOE链路,在VT上配置CAR和GTS报文长度应包含PPP头部。令牌桶如图所示

图表 2 令牌桶的构成图图表

CAR进行流量控制的基本处理过程  

图表 3 CAR示意图

令牌桶初始时是满的,TB=CBS+EBS。首先,根据预先设置的匹配规则来对报文进行分类,如果是没有规定流量特性的报文,就直接继续发送,并不需要经过令牌桶的处理。

其次,如果是需要进行流量控制的报文,则会进入令牌桶中进行处理。具体来说,进入令牌桶处理的包长度B –TB<0,则报文是绿色的,反之报文是红色的。具体对不同颜色报文的处理行为可以通过针对定义不同颜色的处理行为来决定,被判断为可以通过的报文被送出,在桶中取走与报文长度(bit为单位)等量的令牌,所剩令牌为TB=TB-B报文长度。

最后,如果令牌桶中的令牌不满足报文的发送条件,则报文被丢弃。

针对上面的处理流程,例如,如果对进入令牌桶处理的报文长度为800bits,

TB=CBS+EBS=30000bits,这时30000-800>0,所以报文是绿色的,否则报文是红色的。

我司向令牌桶中补充令牌不是周期性加的,当桶中令牌不够发送报文时给令牌桶加(当前的时间 - 上次加令牌的时间)* CIR个令牌,溢出的令牌丢弃。这样,就可以对某类报文的流量进行控制。 令牌桶按用户设定的速度向桶中放置令牌,并且用户可以设置令牌桶的容量。

令牌桶是一个控制数据流量的很好的工具。当令牌桶中充满令牌的时候,桶中所有的令牌代表的报文都可以被发送,这样可以允许数据的突发性传输。突发就是任何一段时间T1、T2(T1<T2)内通过的流量都不可能大于(T2-T1)*cir+cbs。

当令牌桶中没有令牌的时候,报文将不能被发送,只有等到桶中生成了新的令牌,报文才可以发送,这就可以限制报文的流量只能是小于等于令牌生成的速度,达到限制流量的目的。

在实际应用中,VRP的CAR不仅可以用来进行流量控制,还可以进行报文的标记(mark)或重新标记(re-mark)。具体来讲就是CAR可以设置IP报文的优先级或修改IP报文的优先级,达到标记报文的目的。

例如,当报文符合流量特性的时候,可以设置报文的优先级为5,当报文不符合流量特性的时候,可以丢弃,也可以设置报文的优先级为1并继续进行发送。这样,后续的处理可以尽量保证不丢弃优先级为5的报文,在网络不拥塞的情况下,也发送优先级为1的报文,当网络拥塞时,首先丢弃优先级为1的报文,然后才丢弃优先级为5的报文。

CAR可以为不同类别的报文设置不同的流量特性和标记特性。即,首先对报文进行分类,然后不同类别的报文有不同的流量特性和标记特性。

CAR能在出接口和入接口上生效。

4.2 通用流量整形(Generic Traffic Shaping, GTS)

通用流量整形(以后简称GTS)可以对不规则或不符合预定流量特性的流量进行整形,以利于网络上下游之间的带宽匹配。

 GTS与CAR一样,均采用了令牌桶技术来控制流量。GTS与CAR的主要区别在于:利用CAR进行报文流量控制时,对不符合流量特性的报文进行丢弃;而GTS对于不符合流量特性的报文则是进行缓冲,减少了报文的丢弃。

GTS的基本处理过程如图所示,其中用于缓存报文的队列称为GTS队列。

  

图表 4 GTS处理过程图 

GTS可以对接口上指定的报文流或所有报文进行整形。当报文到来的时候,首先对报文进行分类,如果报文不需要进行GTS处理,就继续发送,不需要经过令牌桶的处理;流量整形的令牌桶的构成同CAR,如果报文需要进行GTS处理,则与令牌桶中的令牌进行比较,进入令牌桶处理的包长度B –TB<0则报文被发送,否则报文被缓存,等到令牌桶中有足够的令牌时继续发送报文。令牌桶按用户设定的速度向桶中放置令牌,如果令牌桶中有足够的令牌可以用来发送报文,则报文直接被继续发送下去,同时,令牌桶中的令牌量按报文的长度做相应的减少。当令牌桶中的令牌少到报文不能再发送时,报文将被缓存入GTS队列中,这里的队列是FIFO队列,与接口上的FIFO不同,当然队列有一定的长度(以包为单位),当需要缓存的报文个数大于队列长度时报文因无法缓存而丢弃。当GTS队列中有报文的时候,GTS按一定的周期从队列中取出报文进行发送,每次发送都会与令牌桶中的令牌数作比较,直到令牌桶中的令牌数减少到队列中的报文不能再发送或是队列中的报文全部发送完毕为止。另外,GTS也允许有突发。GTS只能在出接口上生效。

GTS可用来进行网络上下游之间的带宽匹配。例如在图12所示的应用中,假设路由器1向路由器2发送报文,路由器2对路由器1发送来的报文进行了CAR流量限制。

   

图表5 GTS的应用示例图   

为了减少报文的丢失,可以在路由器1的出口对报文进行GTS处理,对于超出GTS流量特性的报文,将在路由器1中缓冲。当可以继续发送下一批报文时,GTS再从缓冲队列中取出报文进行发送。这样,发往路由器2的报文将都符合路由器2的流量规定,从而减少报文在路由器2上的丢弃。相反,如果不在路由器1的出口做GTS处理,则所有超出路由器2的CAR流量特性的报文将被路由器2丢弃。

5 物理接口总速率限制(Line rateLR

利用物理接口总速率限制(以后简称LR)可以 在一个物理接口上,限制接口发送报文(包括紧急报文)的总速率。   

LR的处理过程仍然是采用令牌桶进行流量控制。如果用户在路由器的某个接口上配置了LR,规定了流量特性,则所有经由该接口发送的报文首先要经过LR的令牌桶进行处理。如果令牌桶中有足够的令牌可以用来发送报文,则报文可以发送。如果令牌桶中的令牌不满足报文的发送条件,则报文入紧急队列等待下一次发送机会。这样,就可以对通过该物理接口的报文流量进行控制。LR的处理过程如图所示。    


 图表 7 LR处理过程图

同样的,由于采用了令牌桶控制流量,当令牌桶中积存有令牌时,可以允许报文的突发性传输。当令牌桶中没有令牌的时候,报文将不能被发送,只有等到桶中生成了新的令牌,报文才可以发送,这就可以限制报文的流量只能是小于等于令牌生成的速度,具有限制流量,同时允许突发流量通过的目的。 

注意:图7中只描述得不到令牌的报文需要入队列,也就是说能够得到令牌的报文不用入队列,直接就发送出去。 

LR能够限制在物理接口上通过的所有报文。LR相比较于GTS,不但能够对超过流量限制的报文进行缓存,而且还因为进入了QOS队列机制进行处理,所以队列调度机制更灵活。

在用户只要求对所有报文限速时,使用LR所需的配置操作简单。对于网络建设投资者,可以对客户隐藏实际带宽,客户只能严格按所购买的带宽来使用。

 

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页