发布网友
共1个回答
热心网友
流量整形(traffic shaping)典型作用是*流出某一网络的某一连接的流量与突发,使这类报文以比较均匀的速度向外发送。流量整形通常使用缓冲区和令牌桶来完成,当报文的发送速度过快时,首先在缓冲区进行缓存,在令牌桶的控制下再均匀地发送这些被缓冲的文。
流量整形的核心算法有以下两种,具体采用的技术为GTS(Generic Traffic Shaping),通用流量整形
漏桶算法(Leaky Bucket)
漏桶算法是网络世界中流量整形(Traffic Shaping)或速率*(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。
令牌桶算法(Token Bucket)
有时人们将漏桶算法与令牌桶算法错误地混淆在一起。而实际上,这两种算法具有截然不同的特性并且为截然不同的目的而使用。它们之间最主要的差别在于:漏桶算法能够强行*数据的传输速率,而令牌桶算法能够在*数据的平均传输速率的同时还允许某种程度的突发传输。
在某些情况下,漏桶算法不能够有效地使用网络资源。因为漏桶的漏出速率是固定的参数,所以即使网络中不存在资源冲突(没有发生拥塞),漏桶算法也不能使某一个单独的流突发到端口速率。因此,漏桶算法对于存在突发特性的流量来说缺乏效率。而令牌桶算法则能够满足这些具有突发特性的流量。通常,漏桶算法与令牌桶算法可以结合起来为网络流量提供更大的控制。
GTS
GTS可以对不规则或不符合预定流量特性的流量进行整形,使得网络上下游之间的带宽匹配。GTS与CAR一样均采用了令牌桶技术来控制流量,但主要区别在于:利用CAR进行报文流量控制时对不符合流量特性的报文进行丢弃,而GTS对于不符合流量特性的报文则是进行缓冲减少了报文的丢弃,同时满足报文的流量特性。
GTS可以对接口上指定的报文流或所有报文进行整形当报文到来的时候,首先对报文进行分类如果报文不需要进行GTS处理,就继续发送不经过令牌桶的处理;如果报文需要进行 GTS处理,则与令牌桶中的令牌进行比较。
令牌桶按用户设定的速度向桶中放置令牌,如果令牌桶中有足够的令牌可以用来发送报文,则报文直接被继续发送下去,同时令牌桶中的令牌量按报文的长度做相应的减少,当令牌桶中的令牌少到报文不能再发送时,报文将被缓存入GTS队列中。
当GTS队列中有报文的时候,GTS按一定的周期从队列中取出报文进行发送。 每次发送都会与令牌桶中的令牌数作比较。直到令牌桶中的令牌数减少到队列中的报文不能 再发送或是队列中的报文全部发送完毕为止。