漏桶算法在计算机通信中的应用

一.什么是漏桶算法(Leaky Bucket Algorithm)

漏桶算法(Leaky Bucket)是网络世界中流量整形(TrafficShaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可 以被整形以便为网络提供一个稳定的流量。

漏桶算法的工作示意图如下图所示:

从上图可以看出,漏桶可以看作是一个带有常量服务时间的单服务器队列,如果漏桶(包缓存)溢出,那么数据包会被丢弃。

漏桶算法的基本内容如下:

  • 漏桶算法强制一个常量的输出速率而不管输入数据流的突发性。当输入空闲时,该算法不执行任何动作;
  • 主机在每一个时间片向网络注入一个数据包,因此产生了一致的数据流,平滑了突发的流量;
  • 当数据包具有相同尺寸的时候(例如ATM信元),每个时间片传输一个数据包的工作机制没有任何问题。但对于可变包长,这种工作机制可能 存在一点问题,此时,最好每个时间片传输固定数目的字节。例如:如果每个时间片传输1024字节,那么一个时间片允许传输一个1024字节的包,两个 512字节的包,或者四个256字节的包;

   在概念上,漏桶算法可以作如下理解:

  • 到达的数据包(网络层的PDU)被放置在底部具有漏孔的桶中(数据包缓存);
  • 漏桶最多可以排队b个字节,漏桶的这个尺寸受限于有效的系统内存。如果数据包到达的时候漏桶已经满了,那么数据包应被丢弃;
  • 数据包从漏桶中漏出,以常量速率(r字节/秒)注入网络,因此平滑了突发流量。

二.漏桶算法在计算机网络中的应用

       如果一个服务提供商不能管理流入其核心传输网的数据的容量和速度,那么它将很难管理和控制为终端用户所提供的基本服务。对于一个成功的服务提供商来说,要想保证与用户之间的服务等级协议sla(service level agreement)得以实现,速率限制工具是非常重要和关键的。

  服务提供商可以用速率限制工具来决定哪些流量可以进入其网络,并可以控制这些流量的容量和速度,还可以用它们来确定网络堵塞时路由器采用何种抛弃策略。

  服务提供商为用户提供接入线路时,用户按照sla的规定发送数据分组,而服务提供商则及时地将数据传送出去。为了向用户提供多样的sla,服务提供商 就必须有调节通信数据流的能力,这样它才可以保护其核心网络中的共享资源,并可以确保每个用户都不会占用超过规定的带宽。因此,服务提供商们需要一些工具来帮助它们判断用户是否遵守了sla,并使用这些工具来处理用户输入的超范围的流量。保护核心网络的基本方法有两种:流量整形(traffic shaping)和流量控制策略(traffic controlpolicy)。

流量整形的主要思想是将输入的分组数据包组成队列,采用某种算法来控制队列的输出,改变输入分组流的速度。采用流量整形的工具可以平滑分组数据流,调整进入网络的流量的速率和容量。流量整形工具有两种基本类型:一种是流量平滑工具,它可以消除数据的突发性,为核心网络提供一个稳定的固定速 率的数据流,这种工具采用的算法一般都是所谓的漏桶算法;另外一种工具是长期平均通信速率整形工具,它允许存在不超过预定大小的突发数据流量,可以为网络提供有弹性的通信数据流,它一般采用的是令牌桶算法(token bucket algorithm)。上述两种工具都支持不同速率的限制,可以提供不同特性的输出数据流。

  1.采用漏桶算法的流量平滑工具

  漏桶速率限制算法可以将突发的分组流变成一个规律的等间隔的数据流。这种算法的运行机制很像是一个底部带有一个漏洞的漏桶,水从桶口处流入桶中从漏洞流出。不管流入的水有多少,从底部的漏洞中流出的水的流速是一定的。漏桶算法将不规则的分组流送到一个由漏桶队列控制器控制的分组队列,这个队列就像是一个漏桶,队列的头就是桶的漏洞,抵达队列头部的分组被送入网络,从队列中流出的数据流的速率是固定的。当数据流量超过队列的容量时多余的数据将被抛弃。采用漏桶速率控制工具可以保证传送到网络中的分组速率不会比网络所要求的速率高。

  2.采用令牌桶算法的突发整形工具

  令牌桶算法采用令牌桶来管理队列控制器,允许突发数据存在,同时它还能保证一种长时间内稳定的平均传输速率。令牌桶算法以恒定的速率产生令牌,漏桶可以保留令牌。输入数据包进入漏桶并取得令牌后流出令牌桶,如果没有得到令牌就在桶内等待下一个令牌的产生。每一个令牌能够传送一个分组,数据流出桶后相应的令牌就消失了。这样通过控制令牌产生的速率,就可以控制流出队列的数据的平均速率了。

  流量控制策略

  流量控制策略工具允许管理者检查用户的数据流,从而决定是否要抛弃或者标识那些超出了sla的数据分组。流量控制策略功能采用令牌桶算法,与通信 整形工具不同的是它用数据分组标识函数代替了队列。如果这些函数发现数据分组属于规定的正常服务范围,分组就会被传送到网络里;如果超出了范围,那么相应的分组就会被立即抛弃或者被标识为超范围分组而再传送出去。标识分组并不改变数据分组在数据流中顺序,它仅仅是提高了核心路由器在网络拥塞时抛弃带标识的数据分组的可能性。

三.漏桶算法的应用举例-ATM网络的流量控制

传统的共享式网络,如以太网与X.25广域网,其特点是为用户提供平等的机制使之获得相应带宽。与传统共享介质网络技术不同,ATM网络的最主要特点是它能够根据网络反馈的信息调整传输速率,确保用户的通信不超过ATM网络的容量。如果用户节点的通信不受限制,就会造成缓存的溢出与数据的丢失。为了更有效地利用网络资源,在多个连接之间合理分配网络资源、避免发生拥挤,ATM论坛定义了三种ATM网络流量控制与服务方式:

●固定位速率CBR(Constant Bit Rate)

●可变位速率VBR(Variable Bit Rate)

●可用位速率ABR(AvailaBle Bit Rate)

其中CBR和VBR都使用漏桶算法来做流量整形。

1、固定位速率(CBR)在ATM网络中,在两个用户之间建立一个连接时,必须指定连接服务的类别,其中包括服务参数与服务质量。CBR是ATM服务类别中最简单的一种,当建立一个CBR连接时,必须规定信元峰值传输率PCR。PCR值是在信元不发生丢失的情况下,连接所能够支持的最大数据传输率。据此,就可在该连接上以某恒定速率进行数据传输。 CBR的特点是它能在最小信元丢失与较低的信元延迟变化下保持足够的数据吞吐率。当某个网络应用请求CBR服务时,要给出信元延迟变化的容许值,作为数据传输所容许的抖动值。CBR适用于传输实时声音与影像,同时也适用于ATM网络仿真标准的T1线路(1.544 Mb/s)。CBR连接对数据传输率并无固定的限制,因此每个ATM虚电路可以申请各不相同的数据传输率,其前提是要保证有足够的带宽。当ATM用户节点建立呼叫时,先与网络交换机协商,请求为之保留一个固定速率的ATM连接,此时交换机要核实网络是否有足够的带宽来满足用户的请求,若带宽能够满足用户的要求,则为之建立一个连接。否则该连接请求被拒绝,该节点晚些时候可再与交换机重新协商建立连接。为了确保该节点不超过带宽的分配,网络采用了漏桶算法的连续传输策略。

2、可变位速率VBR。可变位速率VBR又进一步分为实时VBR与非实时VBR。实时VBR对信元的延迟要求较为严格,用于传输影像与声音信息;非实时VBR对信元的延迟要求不那么苛刻,适用于传输猝发信息,如事务处理等。上述两种速率的VBR各使用一个漏桶。与CBR相比,VBR服务在应用与网络之间所进行的协商过程更为复杂。它除了要规定峰值速率外,还要规定另一个重要参数――承受信元速率SCR,用以定义应用程序的平均吞吐量。用户的猝发数据可以在短时间内高于SCR,甚至可以达到峰值信元传输率PCR,但VBR必须随之在某一段时间内降低传输率以满足SCR的要求。此外,VBR服务还必须对PCR速率的传输时间加以限制,以便在余下的时间传输其它类型通信如ABR通信。ATM论坛采用了一种辅助控制办法对CBR与VBR进行保护,万一CBR与VBR失效,ATM信元头标中的信元丢失优先级位置位将告知ATM交换机在网络发生严重拥挤时是否可将该信元丢失。所有ATM厂商的产品都设有信元丢失位。某些交换机厂商使用拥挤优先级控制来确保重要通信,允许用户将通信划分为优先队列。也有厂商采用大规模缓存以容纳溢出信元,这两种办法都能有效地防止信元的丢失。

3.可用位速率ABR。ABR连接能根据可用网络资源的多少在最低信元速率与峰值信元速率之间进行调节,这种调节是根据可用资源的反馈信息来实现的。ABR服务用于一般的数据传输,不适于对数据延迟较为敏感的实时应用场合。最低信元速率MCR是根据应用程序所能容许的延迟计算出每秒传输信元的数目。例如,某个应用程序需要在2秒内将1M字节(约20,000个信元)传到目标节点,MCR值应为10,000信元/秒。顺便指出,申请ABR服务的用户也可以使用网络给出的PCR与MCR的缺省值。ABR具有获知网络可用带宽的智能,因此能充分利用网络的空间带宽。ABR拥挤控制管理基于ATM的基于速率的流量控制,在定义服务方面给予网络用户与服务提供者以非常大的灵活性,当应用增加导致拥挤时能降低网络的传输率,虽然增加了某些延迟,却能保证不丢失信元。而VBR服务在当应用增加时,信元丢失的可能性也随之增加。为使ABR能正常工作,ATM交换机或网络必须使用两道(two-pass)服务算法来满足CBR、VBR与ABR的要求,通过使用这种算法,交换机能为各种类型的服务提供一定的带宽,其中CBR应满足PCR的限制,用于传输实时声音与图像;将ATM的大部分带宽分配给VBR通信,如用于传输局域网数据,VBR的通信应满足平均速率的要求。但是需要指出的是,无论通信如何繁忙,都必须为ABR指定一个最小的带宽,用以保证应用程序的正常运行。只有采取以上策略,才能保证每个连接都能正常工作且不丢失信元。

ATM终端用户通过信令建立连接时,提交网络以流量合同,若能满足则建立连接,此后ATM的流量控制都是根据用户和网络签订的流量合同来进行。流量合同由Q0S参数、流量参数和一致性定义组成。一致性定义是指依据何种算法来判断业务流量违反所签订的流量合同。ITU— T I.371建议定义了两个通用信元速率算法(GCRA): VS(虚调度)算法和漏桶算法,其中漏桶算法应用得最多也最为成熟,目前已经有实现漏桶算法的专用 ATM芯片。连续状态漏桶算法是一个有限容量的漏桶算法,漏桶以每单位时间一个容量单位的连续向外渗漏,同时,每当一个非违约信元到达时其容量增加 T,当有一个信元到达时,若漏桶里的信元数小于r时,则该信元未违约,否则认为信元违约,漏桶的最大容量是T十 r。在网络人口处可设置1个或多个漏桶,带有 CLP标记的信元到达时,可以作以下处理:设置标记(即CLP位由0改为l),丢弃或传到下一个漏桶。CLP=1的信元直接传至下一漏桶,只有 CLP=0的信元才作一致性检查。信元提交至网络入口时,如果超过了流量合同中规定的PCR或CDVT值,则信元被丢弃或CLP位置标记,CLP=0的信元被传送至下一漏桶并作SCR和UBS检查,这些信元可能被置标记并送人网络中。此过程如下面两图所示:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值