1HTB(8) Linux HTB(8)
2
3
4
6 HTB - Hierarchy Token Bucket
7
9 tc qdisc ... dev dev ( parent classid | root) [ handle major: ] htb [
10 default minor-id ]
11
12 tc class ... dev dev parent major:[minor] [ classid major:minor ] htb
13 rate rate [ ceil rate ] burst bytes [ cburst bytes ] [ prio priority ]
14
15
17 HTB is meant as a more understandable and intuitive replacement for the
18 CBQ qdisc in Linux. Both CBQ and HTB help you to control the use of the
19 outbound bandwidth on a given link. Both allow you to use one physical
20 link to simulate several slower links and to send different kinds of
21 traffic on different simulated links. In both cases, you have to spec‐
22 ify how to divide the physical link into simulated links and how to
23 decide which simulated link to use for a given packet to be sent.
24
25 Unlike CBQ, HTB shapes traffic based on the Token Bucket Filter algo‐
26 rithm which does not depend on interface characteristics and so does
27 not need to know the underlying bandwidth of the outgoing interface.
28
29
31 Shaping works as documented in tc-tbf (8).
32
33
35 Within the one HTB instance many classes may exist. Each of these
36 classes contains another qdisc, by default tc-pfifo(8).
37
38 When enqueueing a packet, HTB starts at the root and uses various meth‐
39 ods to determine which class should receive the data.
40
41 In the absence of uncommon configuration options, the process is rather
42 easy. At each node we look for an instruction, and then go to the
43 class the instruction refers us to. If the class found is a barren
44 leaf-node (without children), we enqueue the packet there. If it is not
45 yet a leaf node, we do the whole thing over again starting from that
46 node.
47
48 The following actions are performed, in order at each node we visit,
49 until one sends us to another node, or terminates the process.
50
51 (i) Consult filters attached to the class. If sent to a leafnode, we
52 are done. Otherwise, restart.
53
54 (ii) If none of the above returned with an instruction, enqueue at
55 this node.
56
57 This algorithm makes sure that a packet always ends up somewhere, even
58 while you are busy building your configuration.
59
60
62 FIXME
63
64
66 The root of a HTB qdisc class tree has the following parameters:
67
68
69 parent major:minor | root
70 This mandatory parameter determines the place of the HTB
71 instance, either at the root of an interface or within an exist‐
72 ing class.
73
74 handle major:
75 Like all other qdiscs, the HTB can be assigned a handle. Should
76 consist only of a major number, followed by a colon. Optional,
77 but very useful if classes will be generated within this qdisc.
78
79 default minor-id
80 Unclassified traffic gets sent to the class with this minor-id.
81
82
84 Classes have a host of parameters to configure their operation.
85
86
87 parent major:minor
88 Place of this class within the hierarchy. If attached directly
89 to a qdisc and not to another class, minor can be omitted.
90 Mandatory.
91
92 classid major:minor
93 Like qdiscs, classes can be named. The major number must be
94 equal to the major number of the qdisc to which it belongs.
95 Optional, but needed if this class is going to have children.
96
97 prio priority
98 In the round-robin process, classes with the lowest priority
99 field are tried for packets first. Mandatory.
100
101
102 rate rate
103 Maximum rate this class and all its children are guaranteed.
104 Mandatory.
105
106
107 ceil rate
108 Maximum rate at which a class can send, if its parent has band‐
109 width to spare. Defaults to the configured rate, which implies
110 no borrowing
111
112
113 burst bytes
114 Amount of bytes that can be burst at ceil speed, in excess of
115 the configured rate. Should be at least as high as the highest
116 burst of all children.
117
118
119 cburst bytes
120 Amount of bytes that can be burst at 'infinite' speed, in other
121 words, as fast as the interface can transmit them. For perfect
122 evening out, should be equal to at most one average packet.
123 Should be at least as high as the highest cburst of all chil‐
124 dren.
125
126
128 Due to Unix timing constraints, the maximum ceil rate is not infinite
129 and may in fact be quite low. On Intel, there are 100 timer events per
130 second, the maximum rate is that rate at which 'burst' bytes are sent
131 each timer tick. From this, the minimum burst size for a specified
132 rate can be calculated. For i386, a 10mbit rate requires a 12 kilobyte
133 burst as 100*12kb*8 equals 10mbit.
134
135
137 tc(8)
138
139 HTB website: http://luxik.cdi.cz/~devik/qos/htb/
140
142 Martin Devera <devik@cdi.cz>. This manpage maintained by bert hubert
143 <ahu@ds9a.nl>
144
145
146
147iproute2 10 January 2002 HTB(8)