流量整形介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
拥塞控制
拥塞控制在队列中使用,可以用来避免TCP全局同步的问题,具体技术为RED,WRED以及流WRED。
考虑到内存资源有限,按传统的处理方法,当队列的长度达到规定的最大长度时就会实行尾丢弃,即丢弃后来的数据包。
就TCP报文而言,如果大量的报文被丢弃将造成TCP超时,从而引发TCP的慢启动和拥塞避免机制。
而当队列同时丢弃多个TCP报文将造成多个TCP连接同时进入慢启动和拥塞避免,称之为TCP全局同步。
这样多个TCP连接发向队列的报文同时减少,使发向队列的报文的量都不及线路的发送速度,带宽利用不上,而后又同时慢启动渐渐到达峰值以至于出现拥塞,这样发向队列的报文总是忽多忽少,使线路上的流量在峰值和谷底间波动。
RED Random Early Detection
随机预检测,具体动作就是设定队列的阀值,当队列得长度小于低阀值时不丢弃报文;当队列长度在高低阀值之间时,开始随机丢弃报文,队列长度越长,丢弃概率越高;当队列长度大于高阀值时,则丢弃所有报文。
由于RED随机地丢弃报文,将避免使多个TCP连接同时降低发送速度,从而避免了TCP的全局同步现象,当某个TCP连接的报文被丢弃开始减速发送的时候,其他的TCP连接仍然有较高的发送速度,这样无论什么时候总有TCP连接在进行较快的发送,提高了线路带宽的利用率。
WRED Weighted Random Early Detection
现在所采用的基本上都是WRED(Weighted Random Early Detection)。
原理和RED一样,区别在于WRED引入了IP优先权DSCP值来区别丢弃策略,可以为不同IP优先级DSCP 设定不同的队列长度、队列阀值、丢弃概率,从而对不同优先级的报文指定不同的丢弃特性。
在设置时如果直接采用队列的长度与用户设定的阀值比较并进行丢弃,将会对突发性的数据流造成不公正的待遇,不利于数据流的传输,所以在与设定的阀值比较并进行丢弃时采用队列的平均长度。
平均队列长度= (以前的平均队列长度*(1-1/2^n)+(当前队列长度/2^n)
队列的平均长度既反映了队列的变化趋势又对队列长度的突发变化不敏感避免了对突发性的数据流造成不公正的待遇。
另外还要注意WRED不能配置在使用了基于路由交换处理器(RSP)的CQ、PQ和WFQ队列机制的接口上。
Router(config-pmap-c)#random-detect [dscp-based | prec-based] //如果既没有指定为基于dscp
也没有指定为基于prec,WRED默认为基于prec。
配置WRED后,IOS分配默认的最小门限、最大门限和MPD。
你可以使用下列命令改变默认参数:
Router(config-pmap-c)#random-detect precedence precedence_value minimum-threshold maximum-threshold mark-probability-denominator //基于prec的WRED
Router(config-pmap-c)#random-detect dscp dscp_value minimum-thresholdmaximum-threshold mark-probability-denominator //用于基于dscp的WRED
流量管理
QoS的标记不仅可以用于队列技术,还可以用于流量管理。
应用流量管理的起因在于带宽资源有限和流量本身的传输价值需要定位。
具体的技术成为承诺访问速率(CAR: Committed Access Rate)
一般来讲,用户注入网络的流量不是都有意义的,比如园区网中的清道夫流量,对公司生产没有任何价值,可能只是员工上班时间在网上看电影产生的,这样的流量没有必要传输,在网络边界进行标记后,在网络内部识别出是清道夫流量就直接丢弃,不会为这样的流量浪费带宽。
CAR提供这样的流量控制,其本身的功能是设定IP优先级来描述分组和限制速率。
CAR并不将数据保存到缓存区或使其平稳,当超过允许的突发流量时就会丢弃分组。
实施CAR的流程:
1)流量匹配匹配方式有4种:匹配所有数据,使用速率限制列表匹配某个IP
优先级,使用速率限制列表匹配某个Mac地址,使用IP标准或扩展ACL进行匹配。
2)流量检测应用令牌桶模型,令牌桶有4个关键参数:平均速率或承诺信息速率,即CIR(单位bit/s);常规突发量BC,即瞬间可以超过令牌桶的流量跑;时间间隔Ti=Bc/CIR;扩展突发量BE。
令牌桶就是一个关口,令牌以一定的速率进入令牌桶,满了就停止进入,令牌桶中的令牌数量会根据报文的长度相应的减少,当少到不能再发送时报文就会被丢弃,这样通过控制令牌进入令牌桶的速率就可以限制流量。
令牌桶能保存的最大令牌数等于BC 标准令牌桶BE=BC,没有扩展突发功能,令牌不够就直接丢弃,扩展突发功能令牌桶BE>BC,允许流量暂借更多的令牌,然后采用随机丢弃的方法,缓缓丢弃流量。
流量控制在接口进行,不过在队列技术之前。
首先依据预先设置的匹配规则对报文进行分类,如果是没有流量特性的报文就继续发送,如果有就会通过令牌桶这个关口,如果令牌桶中有足够的令牌,则允许报文通过,如果令牌不满足报文的发送条件则报文被丢弃。
在实际应用中CAR还可用于报文的标记或重标记,比如一个报文设置优先级为5,本来应该丢弃,但是现在网络空闲,传输没有问题,就把优先级改为1,后续的路由器会这样处理,如果网络依然不拥塞,就传送这个优先级为1的报文,如果出现拥塞,先丢弃优先级为1的,再丢弃优先级为5的。
CAR的使用限制:只能对IP流量做限速,不支持FastEtherChannel,不支持隧道接口,不支持ISDN PRI接口。
流量整形
流量整形(traffic shaping)典型作用是限制流出某一网络的某一连接的流量与突发,使这类报文以比较均匀的速度向外发送。
流量整形通常使用缓冲区和令牌桶来完成,当报文的发送速度过快时,首先在缓冲区进行缓存,在令牌桶的控制下再均匀地发送这些被缓冲的文。
流量整形的核心算法有以下两种,具体采用的技术为GTS(Generic Traffic Sh aping),通用流量整形:
漏桶算法(Leaky Bucket)
漏桶算法是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limitin g)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。
漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。
令牌桶算法(Token Bucket)
有时人们将漏桶算法与令牌桶算法错误地混淆在一起。
而实际上,这两种算法具有截然不同的特性并且为截然不同的目的而使用。
它们之间最主要的差别在于:漏桶算法能够强行限制数据的传输速率,而令牌桶算法能够在限制数据的平均传输速率的同时还允许某种程度的突发传输。
在某些情况下,漏桶算法不能够有效地使用网络资源。
因为漏桶的漏出速率是固定的参数,所以即使网络中不存在资源冲突(没有发生拥塞),漏桶算法也不能使某一个单独的流突发到端口速率。
因此,漏桶算法对于存在突发特性的流量来说缺乏效率。
而令牌桶算法则能够满足这些具有突发特性的流量。
通常,漏桶算法与令牌桶算法可以结合起来为网络流量提供更大的控制。
GTS 通用流量整形
流量整形通过减少外出流量的速率来强迫流量遵循某种带宽的分配限制。
不象流量监管会丢弃超过突发尺寸的流量,它是将突发的流量放入到流量整形的缓冲区
中,当带宽可用时,再将它发送出去,或者是当缓冲的数据包的数量低于配置的限制时,再将它发送出去。
流量整形使用一种令牌桶的系统来决定是否传输、延迟或者丢弃新的数据包。
使用这种令牌桶系统,每个接口都有承诺信息速率(CIR),它是在一个时间段内接口能够传输数据包的速率。
持续突发速率(Bc)定义了再一个时间间隔内令牌桶可以含有的最大令牌数。
当数据包到达一个接口后,它就会从令牌桶中取出一个令牌。
当数据包被发送后,令牌就会释放。
当过了时间间隔(Tc)后,这个令牌就会返回到令牌桶中。
如果令牌桶空了,任何新到达那个接口的数据包都会被放到队列中,知道时间间隔过去,令牌又重新填入。
如果CIR持续超过,令牌就会以大于它们添加的速度从令牌桶中挪走,而去填充队列并且导致数据包被丢弃掉。
流量整形可以应用到一些不同的二层技术中去,例如以太、ATM、HDLC、PPP(ISDN和拨号接口不支持)和帧中继。
除了帧中继以外,所有的这些技术都支持通用流量整形(GTS)。
GTS也可以整形再访问控制列表中定义的某种类型的流量,通过在流量整形中指定组来实现。
为了配置GTS必须知道对于接口的目的比特速率,即承诺信息速率(CIR),它指的时流量在正常情况下发送的速率。
持续突发速率(Bc)指的是在每个时间间隔内流量被允许突发超出正常流量速率的速率,以比特表示。
过量突发速率(Be)是指在第一个时间间隔内,流量被允许突发超出持续突发速率的速率。
每隔一个时间间隔(Tc),流量会被填充到流量整形的令牌桶中。
Tc=Bc/CIR
流量整形的时间间隔不能小于10ms或者大于125ms。
路由器基于Tc=Bc/ CIR的公式发现最好的时间间隔。
默认的时间间隔是125ms。
这个时间间隔是C IR和Bc配置的结果,用于不可配置。
思科建议Bc应当是CIR的1/8。
它将会在每秒钟内产生8个125ms的时间间隔。
对所有的接口流量配置GTS,在需要流量整形的接口上使用traffic-shaping rate命令。
对于特定的流量,使用traffic-shaping group命令和一个访问控制列表。
traffic-shaping {rate|group access-list-number} target-bit-rate [sustained] [excess][buffer-limit]
group access-list-number指定匹配访问控制列表(1-2699)的所有流量都被整形。
rate指定在这个接口上的所有流量都被整形。
target-bit-rate这个流量将被传输的正常速率(CIR),范围为8000到接口的以每秒比特位表示的完整CIR。
sustained持续比特率(Bc)指的是流量被允许突发的数值,以每个时间间隔内的比特位表示。
excess过量比特率(Be)指的是在第一个时间间隔内突发的超出持续比特速率的流量,以每个时间间隔内的比特位表示。
是个可选的参数,它会假设令牌桶已经完全满了:Be=Bc*2。
buffer用于指定一个缓存的限制,范围从1~4096。
GTS配置需要两个步骤:发现流量整形的数值,并在接口上配置流量整形。
1、找到正确的流量整形的数值。
CIR、Bc、Be
Bc指定在某个时间间隔内接口可以传输的比特位的数量。
Bc=CIR*Tc
Be指定当接口填充了足够的令牌时可以支持的突发的流量,通常时考虑在第一个时间间隔内。
Be=Bc*2
如果接口不支持突发,可以使用下面的公式:Be=Bc
2、在接口模式下,使用traffic-shaping命令启用流量整形。
为了查看GTS的配置,使用show traffic-shaping [statistics]命令
帧中继流量整形(FRTS)
在以下4种情况下使用FRTS:1中心高速,分支低速的时候。
2单条物理线路承载到不同目的地的众多VC。
3若FR发生了拥塞,想让路由器将数据流拦住(Throttle)。
4需要在同一条FR的VC上传输多种协议(IP、SNA)的数据流,并希望每种数据流都能占到一定BW。
FR中的FECN和BECN用于暗示网络上发生了拥塞,当收到带有BECN标记的数据包时,FR 流量整形(FRTS)将动态的对流量进行整形。
注意:FRTS只能
使用在FR的PVC和SVC上。
其中有一种自适应的FRTS,在每个Tc间隔内,进程将检查是否从帧中继网络中收到BECN,如果在一个Tc间隔收到BECN,那么传送速率降低25%直到降到CIR的一半为止。
当且仅当16个Tc内没收到BECN,通讯速率恢复到CIR。
FRTS配置步骤
1)建立一个MAP-CLASS,名字区分大小写。
2)定义流量整形的方法,比如设置平均速率和最高速率。
3)在接口上封装FRAME-RELAY。
4)在端口上应用MAP-CLASS 5,开启流量整形,一般用于源端接口。