Difference between revisions of "Manual:HTB"

From MikroTik Wiki
Jump to: navigation, search
Line 6: Line 6:
 
In RouterOS it is necessary to specify '''parent''' option to assign queue as a child to other queue
 
In RouterOS it is necessary to specify '''parent''' option to assign queue as a child to other queue
  
 
+
===Dual Limitation===
 
Each queue in HTB have two rate limits:
 
Each queue in HTB have two rate limits:
 
* '''CIR''' (Committed Information Rate) – ('''limit-at''' in RouterOS)in worst case scenario flow will get this amount of traffic no matter what (assuming we can actually send so much data)
 
* '''CIR''' (Committed Information Rate) – ('''limit-at''' in RouterOS)in worst case scenario flow will get this amount of traffic no matter what (assuming we can actually send so much data)
 
* '''MIR''' (Maximal Information Rate) – in best case scenario a flow can get up to '''max-limit''' if there is spare bandwidth
 
* '''MIR''' (Maximal Information Rate) – in best case scenario a flow can get up to '''max-limit''' if there is spare bandwidth
 
In another words, at first HTB will try to satisfy every child queue's '''limit-at''' ('''CIR''') only then it will try to reach '''max-limit''' ('''MIR''')
 
In another words, at first HTB will try to satisfy every child queue's '''limit-at''' ('''CIR''') only then it will try to reach '''max-limit''' ('''MIR''')
To ensure optimal usage of HTB features we suggest to stick to these rules:
+
To ensure optimal (as designed) usage of dual limitation feature we suggest to stick to these rules:
 
* Maximal rate of the parent must be equal or bigger than sum of committed rates of the children
 
* Maximal rate of the parent must be equal or bigger than sum of committed rates of the children
 
::''MIR (parent) ≥ CIR(child1) +...+ CIR(childN)''  
 
::''MIR (parent) ≥ CIR(child1) +...+ CIR(childN)''  
Line 17: Line 17:
 
::''MIR (parent) ≥ MIR(child1) & MIR (parent) ≥ MIR(child2) & MIR (parent) ≥ MIR(childN) ''  
 
::''MIR (parent) ≥ MIR(child1) & MIR (parent) ≥ MIR(child2) & MIR (parent) ≥ MIR(childN) ''  
  
 +
===Priority===
  
 +
Priority is used for creation of the strict order - who will get traffic first. Queue with higher priority will reach its '''limit-at''' before the queue with lower priority and after all '''limit-at'''s are satisfied queue with higher priority will reach its MIR before the queue with lower priority. 8 is the lowest priority, 1 is the highest.
  
 +
Make a note that priority only works:
 +
*  for child queues - as soon as you assign at least one child to the queue priority option will be ignored.
 +
*  if '''limit-at''' and/or '''max-limit''' is specified (not 0)
  
  
  
(likumi par limit-at un max-limit)
 
  
 
==Structure Description==
 
==Structure Description==

Revision as of 12:51, 2 October 2008

Theory

Structure

Hierarchical Token Bucket (HTB) allows to create hierarchical queue structure and determine relations between parent and child queues and relation between child queues. As soon as queue have at least one child it become a parent queue. All child queues (don't matter how many levels of parents they have) are treated as they were on the same (bottom) level of HTB. Child queues make actual traffic consumption, parent queues are responsible only for traffic distribution. Child queues are not able to get more traffic than parent has.

In RouterOS it is necessary to specify parent option to assign queue as a child to other queue

Dual Limitation

Each queue in HTB have two rate limits:

  • CIR (Committed Information Rate) – (limit-at in RouterOS)in worst case scenario flow will get this amount of traffic no matter what (assuming we can actually send so much data)
  • MIR (Maximal Information Rate) – in best case scenario a flow can get up to max-limit if there is spare bandwidth

In another words, at first HTB will try to satisfy every child queue's limit-at (CIR) only then it will try to reach max-limit (MIR) To ensure optimal (as designed) usage of dual limitation feature we suggest to stick to these rules:

  • Maximal rate of the parent must be equal or bigger than sum of committed rates of the children
MIR (parent) ≥ CIR(child1) +...+ CIR(childN)
  • Maximal rate of any child must be less or equal to maximal rate of the parent
MIR (parent) ≥ MIR(child1) & MIR (parent) ≥ MIR(child2) & MIR (parent) ≥ MIR(childN)

Priority

Priority is used for creation of the strict order - who will get traffic first. Queue with higher priority will reach its limit-at before the queue with lower priority and after all limit-ats are satisfied queue with higher priority will reach its MIR before the queue with lower priority. 8 is the lowest priority, 1 is the highest.

Make a note that priority only works:

  • for child queues - as soon as you assign at least one child to the queue priority option will be ignored.
  • if limit-at and/or max-limit is specified (not 0)



Structure Description

Example: Stage 1

File:Stage1 1.jpg


Example: Stage 2

File:Stage1 2.jpg


Example: Stage 3

Stage1 3.jpg