漏桶算法在計算機通信中的應用

一.什麼是漏桶算法(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檢查,這些信元可能被置標記並送人網絡中。此過程如下面兩圖所示:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章