流量整形(traffic shaping)典型作用是限制流出某一网络的某一连接的流量与突发,使这类
报文以比较均匀的速度向外发送。流量整形通常使用缓冲区和令牌桶来完成,当报文的发送速度过快时,首先在缓冲区进行缓存,在令牌桶的控制下再均匀地发送这些被缓冲的报文。
流量整形的定义
流量整形(Traffic Shaping)是一种主动调整流量输出速率的措施。
一个典型应用是基于下游
网络结点的TP指标来控制本地流量的输出。流量整形与流量监管的主要区别在于,流量整形对流量监管中需要丢弃的
报文进行缓存——通常是将它们放入缓冲区或
队列内,也称流量整形(Traffic Shaping,简称TS)。当令牌桶有足够的令牌时,再均匀的向外发送这些被
缓存的报文。流量整形与流量监管的另一区别是,整形可能会增加延迟,而监管几乎不引入额外的延迟。
如上图所示,当报文到达接口时,首先对报文进行分类,按照以下几种情况进行处理。
当报文到达接口发现整形队列已满时,将报文丢弃。
流量整形的核心算法
流量整形的核心算法有以下两种,具体采用的技术为GTS(Generic Traffic Shaping),通用流量整形:
漏桶算法
漏桶算法(Leaky Bucket)
漏桶算法是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。
漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。
令牌桶算法
有时人们将
漏桶算法与令牌桶算法错误地混淆在一起。而实际上,这两种算法具有截然不同的特性并且为截然不同的目的而使用。它们之间最主要的差别在于:
漏桶算法能够强行限制数据的传输速率,而
令牌桶算法能够在限制数据的平均传输速率的同时还允许某种程度的突发传输。
在某些情况下,
漏桶算法不能够有效地使用网络资源。因为漏桶的漏出速率是固定的参数,所以即使网络中不存在资源冲突(没有发生拥塞),
漏桶算法也不能使某一个单独的流突发到
端口速率。因此,
漏桶算法对于存在突发特性的流量来说缺乏效率。而
令牌桶算法则能够满足这些具有突发特性的流量。通常,
漏桶算法与
令牌桶算法可以结合起来为
网络流量提供更大的控制。
常见流量整形分类
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。这个时间间隔是CIR和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。
1)建立一个MAP-CLASS,名字区分大小写。
2)定义流量整形的方法,比如设置平均速率和最高速率。
4)在端口上应用MAP-CLASS 5,开启流量整形,一般用于源端接口。
流量监管
路由器 A 向 路由器B 发送报文,为了减少报文的无谓丢失,可以在路由器 A的出口对报文进行流量整形处理。将超出流量整形特性的报文缓存在路由器 A 中。当整形算法允许继续发送下一批报文时,再从缓冲队列中取出报文进行发送。这样,发向路由器B 的报文将都符合路由器B 的流量规定。
流量整形与流量监管的主要区别在于: