2012年2月29日星期三

HTB的原理

定义:

1. Class有 AR(assured rate),CR(ceil rate),priority,level和quantum Q。Class可以有parent。class的当前流量是R,对于inner class(非叶子节点),它的R是所有叶子节点的R总和。

2. Leaf是没有孩子的class,只有Leaf才有包队列。

3. Level是class在树形结构所在的层次,leaves的level是0,root是LEAVEL_COUNT-1,每个inner class的level比父节点的level要少1。

4. class的Mode可以根据R, AR, CR计算出来:
 
     -  Red: R > CR,当前流量超过最高的流量限制
     -  Yellow:  R <= CR and R > AR,当前 流量比保证的流量限制要高,但比最高的流量限制要小。
     - Green:  R <= AR

5. D(c)是所有的叶子节点,这些叶子节点都需要从c来借流量(对应上面的Yellow Mode)。

链路分享的目标:

c是class, p是parent


Rc = min(CRc, ARc + Bc)        [eq1]


Bc是指从父节点借的流量,如果没有父节点,那Bc就是0;如果有p的其他叶子节点需要借流量,并且优先级要比当前class的优先级高(数值低),那么当前的class就不应该被服务,Bc也是0;如果轮到当前的class,那么综合和当前class同一优先级的class,以这些class的Q(quantum)为权重来分配剩余的流量Rp。


       Qc Rp
Bc = -----------------------------  iff min[Pi over D(p)]>=Pc  [eq2]
     sum[Qi over D(p) where Pi=Pc]

Bc = 0   otherwise      [eq3]
 
 
 

没有评论:

发表评论