|.TH HTB 8 "10 January 2002" "iproute2" "Linux"
|HTB \- Hierarchy Token Bucket
|.B tc qdisc ... dev
|.B ( parent
|.B | root) [ handle
|.B ] htb [ default
|.B tc class ... dev
|.B [ classid
|.B ] htb rate
|.B [ ceil
|.B ] burst
|.B [ cburst
|.B ] [ prio
|HTB is meant as a more understandable and intuitive replacement for
|the CBQ qdisc in Linux. Both CBQ and HTB help you to control the use
|of the outbound bandwidth on a given link. Both allow you to use one
|physical link to simulate several slower links and to send different
|kinds of traffic on different simulated links. In both cases, you have
|to specify how to divide the physical link into simulated links and
|how to decide which simulated link to use for a given packet to be sent.
|Unlike CBQ, HTB shapes traffic based on the Token Bucket Filter algorithm
|which does not depend on interface characteristics and so does not need to
|know the underlying bandwidth of the outgoing interface.
|.SH SHAPING ALGORITHM
|Shaping works as documented in
|.B tc-tbf (8).
|Within the one HTB instance many classes may exist. Each of these classes
|contains another qdisc, by default
|.BR tc-pfifo (8).
|When enqueueing a packet, HTB starts at the root and uses various methods to
|determine which class should receive the data.
|In the absence of uncommon configuration options, the process is rather easy.
|At each node we look for an instruction, and then go to the class the
|instruction refers us to. If the class found is a barren leaf-node (without
|children), we enqueue the packet there. If it is not yet a leaf node, we do
|the whole thing over again starting from that node.
|The following actions are performed, in order at each node we visit, until one
|sends us to another node, or terminates the process.
|Consult filters attached to the class. If sent to a leafnode, we are done.
|If none of the above returned with an instruction, enqueue at this node.
|This algorithm makes sure that a packet always ends up somewhere, even while
|you are busy building your configuration.
|.SH LINK SHARING ALGORITHM
|The root of a HTB qdisc class tree has the following parameters:
|parent major:minor | root
|This mandatory parameter determines the place of the HTB instance, either at the
|of an interface or within an existing class.
|Like all other qdiscs, the HTB can be assigned a handle. Should consist only
|of a major number, followed by a colon. Optional, but very useful if classes
|will be generated within this qdisc.
|Unclassified traffic gets sent to the class with this minor-id.
|Classes have a host of parameters to configure their operation.
|Place of this class within the hierarchy. If attached directly to a qdisc
|and not to another class, minor can be omitted. Mandatory.
|Like qdiscs, classes can be named. The major number must be equal to the
|major number of the qdisc to which it belongs. Optional, but needed if this
|class is going to have children.
|In the round-robin process, classes with the lowest priority field are tried
|for packets first. Mandatory.
|Maximum rate this class and all its children are guaranteed. Mandatory.
|Maximum rate at which a class can send, if its parent has bandwidth to spare.
|Defaults to the configured rate, which implies no borrowing
|Amount of bytes that can be burst at
|speed, in excess of the configured
|Should be at least as high as the highest burst of all children.
|Amount of bytes that can be burst at 'infinite' speed, in other words, as fast
|as the interface can transmit them. For perfect evening out, should be equal to at most one average
|packet. Should be at least as high as the highest cburst of all children.
|Due to Unix timing constraints, the maximum ceil rate is not infinite and may in fact be quite low. On Intel,
|there are 100 timer events per second, the maximum rate is that rate at which 'burst' bytes are sent each timer tick.
|From this, the minimum burst size for a specified rate can be calculated. For i386, a 10mbit rate requires a 12 kilobyte
|burst as 100*12kb*8 equals 10mbit.
|.SH SEE ALSO
|.BR tc (8)
|HTB website: http://luxik.cdi.cz/~devik/qos/htb/
|Martin Devera <email@example.com>. This manpage maintained by bert hubert <firstname.lastname@example.org>