這一課,我們繼續來學習帶寬管理,上一課,我們學習
了簡單隊列 SIMPLE QUEUE,本節課,我們一起來學習 HTB。
HTB(Hierarchical Token Bucket 分層令牌桶)比簡單
隊列復雜很多。HTB 可以用來處理不同流量的優先級及帶寬
分配。在做 HTB 的時有三個步驟:
1、流量分類及匹配、使用 Mangle 進行標記;
2、創建規則(策略),將不同的分類放入不同的 QUEUE;
3、分清上行和下行,附加到不同的“接口”或“隊列”。
在做 HTB 的時候最重要的是要弄清楚各 QUEUE 之間的關
系。父子關系(Parent-Child)
Parent Queue:父隊列,頂層 Parent;
Inner Queue:內部隊列,有 Parent 和 Child;
Leaf Queue:最下層,沒有 Child;
Inner Queue 只負責流量分配,Leaf Queue 可分配優先級。
雙重限制:
CIR:Committed Information Rate--Limit-at 保證速度
MIR:Maximal Information Rate--max-limit 最大速度
關系:
2
CIR(parent)≥ CIR(child1) +...+ CIR(childN)
MIR (parent) ≥ MIR(child1) & MIR (parent) ≥
MIR(child2) & ... & MIR (parent) ≥ MIR(childN)
也即是父隊列的 Limit-at 要大於等於所有的子隊列的
Limit-at 之和,父隊列的 Max-limit 要大於等於任何一個的
子隊列的 Max-limit。
隊列顏色:
0% - 50% --綠色
51% - 75% --黃色
76% - 100% --紅色
優先級:Priority 1-8,數字越大,優先級越低,只在 Leaf
queue 有效。
是不是不好理解?下面,我們通過實際的例子來說明。
例 1:
3
4
例 2:
5
6
例 3:
7
例 4:
8
例 5:
9
C,D,E 各 10M
例 6:
C:10M+10M D:10M+10M E:10M
例 7:
10
C:10M D:10M+10M,E:10M
注意:
1、要想做 QOS 成功,首先,要正確理解官方的 packet
flow V6;
2、正確區分 parent 和 child 之間的關系,以及優先級;
3、在做 HTB 策略,重要的是 mangle 標記,先需要標記
連接,然后再對連接標記包;
4、作為 parent(最頂層)只需配置 max-limit,配置
limit-at 無效,也不需用優先級,因為配置了優先級也是沒
有效果;
5、優先滿足 limit-at,滿足 limit-at 剩下的再看優先
級。另外,Parent的max-limit不小於各child的max-limit,
如果小於,這樣的配置是錯誤的。換言之,要求 Child 有那
么多需要,Parent 必須要至少要有那么多。Parent 的
max-limit 不能小於其 child 中最大的 max-limit。
比如,三個 child 的 max-limit 分別為 50M,70M,100M,而父
母 max-limit 為 80M,是不行的,必須滿足所有的 limit-at,
同時滿足。