标准令牌漏桶算法
漏桶算法
漏桶算法(Leaky Bucket)是网络世界中流量整形(Trac Shaping)或速率限制
(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,
平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可 以被整形以便为
网络提供一个稳定的流量。
漏桶可以看作是一个带有常量服务时间的单服务器队列,如果漏桶(包缓存)溢出,
那么数据包会被丢弃。
漏桶算法的基本内容如下:
* 漏桶算法强制一个常量的输出速率而不管输入数据流的突发性。当输入空闲时,该
算法不执行任何动作;
* 主机在每一个时间片向网络注入一个数据包,因此产生了一致的数据流,平滑了突
发的流量;
* 当数据包具有相同尺寸的时候(例如 ATM 信元),每个时间片传输一个数据包的工
作机制没有任何问题。但对于可变包长,这种工作机制可能存在一点问题,此 时,最好每
个时间片传输固定数目的字节。例如:如果每个时间片传输 1024 字节,那么一个时间片
允许传输一个 1024 字节的包,两个 512 字节的包,或者 四个 256 字节的包;
在概念上,漏桶算法可以作如下理解:
* 到达的数据包(网络层的 PDU)被放置在底部具有漏孔的桶中(数据包缓存);
* 漏桶最多可以排队 b 个字节,漏桶的这个尺寸受限于有效的系统内存。如果数据包
到达的时候漏桶已经满了,那么数据包应被丢弃;
* 数据包从漏桶中漏出,以常量速率(r 字节/秒)注入网络,因此平滑了突发流量。
在流量整形中还存在另外一个流行的算法:令牌桶算法(Token Bucket)。有时人
们将漏桶算法与令牌桶算法错误地混淆在一起。而实际上,这两种算法具有截然不同的特
性并且为截然不同的目的而使用。它们之间最主要 的差别在于:漏桶算法能够强行限制数
据的传输速率,而令牌桶算法能够在限制数据的平均传输速率的同时还允许某种程度的突
发传输。
在某些情况下,漏桶算法不能够有效地使用网络资源。因为漏桶的漏出速率是固定的
参数,所以,即 使网络中不存在资源冲突(没有发生拥塞),漏桶算法也不能使某一个单
独的流突发到端口速率。因此,漏桶算法对于存在突发特性的流量来说缺乏效率。而令牌
桶 算法则能够满足这些具有突发特性的流量。通常,漏桶算法与令牌桶算法可以结合起来
为网络流量提供更大的控制。
漏桶算法的应用实例:
在 ATM 网络的交换层,漏桶算法可以用来实现 CBR 业务。当数据流量超过协商速率
一段 时间后,漏桶(缓存)将会溢出。这时需要检查每一个信元中的信元丢失优先级
(CLP)字段,低优先级的信元将会被丢弃并被原始发送设备重新传输。
令牌桶算法
评论1
最新资源