tc令牌桶限速心得


一、實驗拓撲與實驗現象

實驗拓撲如圖所示,在①號機上發送數據,③號機上接受數據,同時在④號機的eth1與eth2網口限制速率為115200kbps,命令如下

tc qdisc add dev eth1 root tbf rate 115200bps buffer 1600 limit  3000
tc qdisc add dev eth2 root tbf rate 115200bps buffer 1600 limit  3000

 

圖1 實驗拓撲

然后在④號機上使用ifstat查看網口狀態,得到結果如下:

 

我們可以看到eth1的入口速率為144KB/s左右,而eth2的出口速率為112KB/s左右,那么還有32KB/s的速率哪里去了呢?

 

二、令牌桶在端口限速的原理

首先讓我們了解下令牌桶限速的原理,如限速原理圖如下(此圖引自博文:令牌桶算法的應用 )

 

 

圖2 使用令牌桶做端口限速的原理圖

 

  圖2展示是了linux系統中寬帶管理的實現,需由端口發送的報文通過分類器分類以后,進入隊列,這個隊列的大小由上面tc tbf命令中的limit設定,若令牌桶中有這個報文大小的令牌,則將此報文發送出去,否則在緩存隊列中等待,等待有足夠多的令牌后在發送,若在這個過程中緩存隊列溢出,則將導致部分報文被丟棄,這里值得注意的是發送報文是以包為單位發送的,但是令牌桶的實現是以字節為單位,而不是針對包進行的。

  每個到來的令牌從數據隊列中收集一個數據包,然后從桶中被刪除。這個算法關聯到兩個流上——令牌流和數據流,於是我們得到3種情景:

  1、數據流以等於令牌流的速率到達TBF。這種情況下,每個到來的數據包都能無延遲地通過隊列。

  2、 數據流以小於令牌流的速度到達TBF。通過隊列的數據包只消耗了一部分令牌,剩下的令牌會在桶里積累下來,直到桶被裝滿。剩下的    令牌可以在需要以高於令牌流速率發送數據流的時候消耗掉,這種情況下會發生突發傳輸。
  3、數據流以大於令牌流的速率到達TBF。這意味着桶里的令牌很快就會被耗盡。導致TBF中斷一段時間,稱為“越限”。如果數據包持續到    來,將發生丟包。

  

  最后一種情景非常重要,因為它可以用來對數據通過過濾器的速率進行整形。
  可見,令牌的積累可以導致越限的數據進行短時間的突發傳輸而不必丟包,但是持續越限的話會導致傳輸延遲直至丟包。

博客遷到個人博客網站:http://btdog.com.cn/index.php/home/article/detail/id/3.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM