$wgDBname<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.cablefree.net/support/radio/software/index.php?action=history&amp;feed=atom&amp;title=Manual%3AHTB</id>
	<title>Manual:HTB - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.cablefree.net/support/radio/software/index.php?action=history&amp;feed=atom&amp;title=Manual%3AHTB"/>
	<link rel="alternate" type="text/html" href="https://www.cablefree.net/support/radio/software/index.php?title=Manual:HTB&amp;action=history"/>
	<updated>2026-10-17T06:45:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.3</generator>
	<entry>
		<id>https://www.cablefree.net/support/radio/software/index.php?title=Manual:HTB&amp;diff=761&amp;oldid=prev</id>
		<title>Administrator: Created page with &quot;{{Versions|2.9, v3, v4}}  ==Theory==  ===Structure===   HTB (Hierarchical Token Bucket) is a classful queuing method that is useful for handling different kind of traffic. We...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.cablefree.net/support/radio/software/index.php?title=Manual:HTB&amp;diff=761&amp;oldid=prev"/>
		<updated>2015-11-24T10:09:38Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Versions|2.9, v3, v4}}  ==Theory==  ===Structure===   HTB (Hierarchical Token Bucket) is a classful queuing method that is useful for handling different kind of traffic. We...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Versions|2.9, v3, v4}}&lt;br /&gt;
&lt;br /&gt;
==Theory==&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTB (Hierarchical Token Bucket) is a classful queuing method that is useful for handling different kind of traffic. We have to follow three basic steps to create HTB:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Match and mark traffic&amp;#039;&amp;#039;&amp;#039; – classify traffic for further use. Consists of one or more matching parameters to select packets for the specific class.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Create rules (policy) to mark traffic&amp;#039;&amp;#039;&amp;#039; – put specific traffic class into specific queue and to define the actions that are taken for each class.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Attach policy for specific interface(-s)&amp;#039;&amp;#039;&amp;#039; – append policy for all interfaces (global-in, global-out or global-total), for specific interface or for specific parent queue.&lt;br /&gt;
&lt;br /&gt;
HTB allows to create a hierarchical queue structure and determine relations between queues, like &amp;quot;parent-child&amp;quot; or &amp;quot;child-child&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
As soon as queue has at least one child it becomes a &amp;#039;&amp;#039;&amp;#039;inner&amp;#039;&amp;#039;&amp;#039; queue, all queues without children -  &amp;#039;&amp;#039;&amp;#039;leaf&amp;#039;&amp;#039;&amp;#039; queues. &amp;#039;&amp;#039;&amp;#039;Leaf&amp;#039;&amp;#039;&amp;#039; queues make actual traffic consumption, &amp;#039;&amp;#039;&amp;#039;Inner&amp;#039;&amp;#039;&amp;#039; queues are responsible only for traffic distribution. All &amp;#039;&amp;#039;&amp;#039;leaf&amp;#039;&amp;#039;&amp;#039; queues are treated on equal basis.&lt;br /&gt;
&lt;br /&gt;
In RadioOS it is necessary to specify &amp;#039;&amp;#039;&amp;#039;parent&amp;#039;&amp;#039;&amp;#039; option to assign queue as a child to other queue&lt;br /&gt;
&lt;br /&gt;
===Dual Limitation===&lt;br /&gt;
Each queue in HTB has two rate limits:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CIR&amp;#039;&amp;#039;&amp;#039; (Committed Information Rate) – (&amp;#039;&amp;#039;&amp;#039;limit-at&amp;#039;&amp;#039;&amp;#039; in RadioOS) worst case scenario, flow will get this amount of traffic no matter what (assuming we can actually send so much data)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MIR&amp;#039;&amp;#039;&amp;#039; (Maximal Information Rate) – (&amp;#039;&amp;#039;&amp;#039;max-limit&amp;#039;&amp;#039;&amp;#039; in RadioOS) best case scenario, rate that flow can get up to, if there queue&amp;#039;s parent has spare bandwidth&lt;br /&gt;
&lt;br /&gt;
In other words, at first  &amp;#039;&amp;#039;&amp;#039;limit-at&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;CIR&amp;#039;&amp;#039;&amp;#039;) of the all queues will be satisfied, only then child queues will try to borrow the necessary data rate from their parents in&lt;br /&gt;
order to reach their &amp;#039;&amp;#039;&amp;#039;max-limit&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;MIR&amp;#039;&amp;#039;&amp;#039;). &lt;br /&gt;
&lt;br /&gt;
Note: &amp;#039;&amp;#039;&amp;#039;CIR&amp;#039;&amp;#039;&amp;#039; will be assigned to the corresponding queue no matter what. (even if max-limit of the parent is exceeded) &lt;br /&gt;
&lt;br /&gt;
That is why, to ensure optimal (as designed) usage of dual limitation feature, we suggest to stick to these rules:&lt;br /&gt;
* Sum of committed rates of all children must be less or equal to amount of traffic that is available to parent. &lt;br /&gt;
::&amp;#039;&amp;#039;CIR(parent)* ≥ CIR(child1) +...+ CIR(childN)&amp;#039;&amp;#039; &lt;br /&gt;
::: &amp;#039;&amp;#039; *in case if parent is main parent CIR(parent)=MIR(parent)&amp;#039;&amp;#039;&lt;br /&gt;
* Maximal rate of any child must be less or equal to maximal rate of the parent&lt;br /&gt;
::&amp;#039;&amp;#039;MIR (parent) ≥ MIR(child1) &amp;amp; MIR (parent) ≥ MIR(child2) &amp;amp; ... &amp;amp; MIR (parent) ≥ MIR(childN) &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Queue colors in Winbox:&lt;br /&gt;
* 0% - 50% available traffic used - green&lt;br /&gt;
* 51% - 75% available traffic used - yellow&lt;br /&gt;
* 76% - 100% available traffic used - red&lt;br /&gt;
&lt;br /&gt;
===Priority===&lt;br /&gt;
&lt;br /&gt;
We already know that &amp;#039;&amp;#039;&amp;#039;limit-at&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;CIR&amp;#039;&amp;#039;&amp;#039;) to all queues will be given out no matter what. &lt;br /&gt;
&lt;br /&gt;
Priority is responsible for distribution of remaining parent queues traffic to child queues so that they are able to reach &amp;#039;&amp;#039;&amp;#039;max-limit&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Queue with higher priority will reach its &amp;#039;&amp;#039;&amp;#039;max-limit&amp;#039;&amp;#039;&amp;#039; before the queue with lower priority. 8 is the lowest priority, 1 is the highest.&lt;br /&gt;
 &lt;br /&gt;
Make a note that priority only works:&lt;br /&gt;
*  for &amp;#039;&amp;#039;&amp;#039;leaf&amp;#039;&amp;#039;&amp;#039; queues - priority in &amp;#039;&amp;#039;&amp;#039;inner&amp;#039;&amp;#039;&amp;#039; queue have no meaning.&lt;br /&gt;
*  if &amp;#039;&amp;#039;&amp;#039;max-limit&amp;#039;&amp;#039;&amp;#039; is specified (not 0)&lt;br /&gt;
&lt;br /&gt;
== Examples==&lt;br /&gt;
&lt;br /&gt;
In this section we will analyze HTB in action. To do that we will take one HTB structure and will try to cover all the possible situations and features, by changing the amount of incoming traffic that HTB have to recycle. and changing some options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
&lt;br /&gt;
Our HTB structure will consist of 5 queues:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue01&amp;#039;&amp;#039;&amp;#039; inner queue with two children - &amp;#039;&amp;#039;&amp;#039;Queue02&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue02&amp;#039;&amp;#039;&amp;#039; inner queue with two children - &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039; leaf queue&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; leaf queue&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039; leaf queue&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039; are clients who require 10Mbps all the time&lt;br /&gt;
Outgoing interface is able to handle 10Mbps of traffic.&lt;br /&gt;
&lt;br /&gt;
===Example 1 : Usual case===&lt;br /&gt;
&lt;br /&gt;
[[Image:HTB_Example1.png|Structure|600px]]&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue01&amp;#039;&amp;#039;&amp;#039; limit-at=0Mbps  max-limit=10Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue02&amp;#039;&amp;#039;&amp;#039; limit-at=4Mbps  max-limit=10Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039; limit-at=6Mbps  max-limit=10Mbps priority=1 &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; limit-at=2Mbps  max-limit=10Mbps priority=3&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039; limit-at=2Mbps  max-limit=10Mbps priority=5&lt;br /&gt;
&lt;br /&gt;
===Result of Example 1===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039; will receive 6Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; will receive 2Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039; will receive 2Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clarification:&amp;#039;&amp;#039;&amp;#039; HTB was build in a way, that, by satisfying all &amp;#039;&amp;#039;&amp;#039;limit-at&amp;#039;&amp;#039;&amp;#039;s, main queue no longer have throughput to distribute&lt;br /&gt;
&lt;br /&gt;
===Example 2 : Usual case with max-limit===&lt;br /&gt;
&lt;br /&gt;
[[Image:HTB_Example2.png|Structure|600px]]&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue01&amp;#039;&amp;#039;&amp;#039; limit-at=0Mbps  max-limit=10Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue02&amp;#039;&amp;#039;&amp;#039; limit-at=4Mbps  max-limit=10Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039; limit-at=2Mbps  max-limit=10Mbps priority=3 &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; limit-at=2Mbps  max-limit=10Mbps priority=1&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039; limit-at=2Mbps  max-limit=10Mbps priority=5 &lt;br /&gt;
&lt;br /&gt;
===Result of Example 2===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039; will receive 2Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; will receive 6Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039; will receive 2Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clarification:&amp;#039;&amp;#039;&amp;#039; After satisfying all &amp;#039;&amp;#039;&amp;#039;limit-at&amp;#039;&amp;#039;&amp;#039;s HTB will give throughput to queue with highest priority. &lt;br /&gt;
&lt;br /&gt;
===Example 3 : Inner queue limit-at===&lt;br /&gt;
&lt;br /&gt;
[[Image:HTB_Example3.png|Structure|600px]]&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue01&amp;#039;&amp;#039;&amp;#039; limit-at=0Mbps  max-limit=10Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue02&amp;#039;&amp;#039;&amp;#039; limit-at=8Mbps  max-limit=10Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039; limit-at=2Mbps  max-limit=10Mbps priority=1 &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; limit-at=2Mbps  max-limit=10Mbps priority=3&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039; limit-at=2Mbps  max-limit=10Mbps priority=5 &lt;br /&gt;
&lt;br /&gt;
===Result of Example 3===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039; will receive 2Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; will receive 6Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039; will receive 2Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clarification:&amp;#039;&amp;#039;&amp;#039; After satisfying all &amp;#039;&amp;#039;&amp;#039;limit-at&amp;#039;&amp;#039;&amp;#039;s HTB will give throughput to queue with highest priority. But in this case &amp;#039;&amp;#039;&amp;#039;inner&amp;#039;&amp;#039;&amp;#039; queue  &amp;#039;&amp;#039;&amp;#039;Queue02&amp;#039;&amp;#039;&amp;#039; had  &amp;#039;&amp;#039;&amp;#039;limit-at&amp;#039;&amp;#039;&amp;#039; specified, by doing so, it reserved 8Mbps of throughput for queues  &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039;. From these two &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; have highest priority, that is why it gets additional throughput.&lt;br /&gt;
&lt;br /&gt;
===Example 4 : Leaf queue limit-at===&lt;br /&gt;
&lt;br /&gt;
[[Image:HTB_Example4.png|Structure|600px]]&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue01&amp;#039;&amp;#039;&amp;#039; limit-at=0Mbps   max-limit=10Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue02&amp;#039;&amp;#039;&amp;#039; limit-at=4Mbps   max-limit=10Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039; limit-at=6Mbps   max-limit=10Mbps priority=1 &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; limit-at=2Mbps   max-limit=10Mbps priority=3&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039; limit-at=12Mbps  max-limit=15Mbps priority=5 &lt;br /&gt;
&lt;br /&gt;
===Result of Example 4===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039; will receive ~3Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039; will receive ~1Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039; will receive ~6Mbps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clarification:&amp;#039;&amp;#039;&amp;#039; Only by satisfying all &amp;#039;&amp;#039;&amp;#039;limit-at&amp;#039;&amp;#039;&amp;#039;s HTB was forced to allocate 20Mbps - 6Mbps to &amp;#039;&amp;#039;&amp;#039;Queue03&amp;#039;&amp;#039;&amp;#039;, 2Mbps to &amp;#039;&amp;#039;&amp;#039;Queue04&amp;#039;&amp;#039;&amp;#039;, 12Mbps to &amp;#039;&amp;#039;&amp;#039;Queue05&amp;#039;&amp;#039;&amp;#039;, but our output interface is able to handle 10Mbps. As output interface queue is usually FIFO throughput allocation will keep ratio  6:2:12 or 3:1:6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==HTB configuration example==&lt;br /&gt;
&lt;br /&gt;
Assume that  we want to limit maximum download speed for subnet 10.1.1.0/24 to 2Mbps and distribute this amount of traffic between the server and workstations using HTB (limit upload to 2Mbps). Since HTB works in one direction and is implemented on outbound interface,  HTB for download will be on ether2 and HTB for upload will be on ether1.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:image8008.gif]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:image8009.gif]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The first, we need to classify traffic.&lt;br /&gt;
&lt;br /&gt;
Mark traffic form/to server. The first rule we will mark the outgoing connection from server and with the second one, all packets, which belong to this connection (download and upload packets for this connection): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/ip firewall mangle&amp;gt; add chain=prerouting src-address=10.1.1.1/32 action=mark-connection \&lt;br /&gt;
new-connection-mark=server_con&lt;br /&gt;
&lt;br /&gt;
/ip firewall mangle&amp;gt; add chain=forward connection-mark=server_con action=mark-packet  \&lt;br /&gt;
new-packet-mark=server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Do the same for workstation too. Match all workstation connections, mark it with the same mark (new-connection-mark=workstation_con) and after that mark all packets which belong to these workstation. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/ip firewall mangle&amp;gt; add chain=prerouting src-address=10.1.1.2 &lt;br /&gt;
action=mark-connection new-connection-mark=workstation_con&lt;br /&gt;
/ip firewall mangle&amp;gt; add chain=prerouting src-address=10.1.1.3 &lt;br /&gt;
action=mark-connection new-connection-mark=workstation_con&lt;br /&gt;
/ip firewall mangle&amp;gt; add chain=prerouting src-address=10.1.1.4 &lt;br /&gt;
action=mark-connection new-connection-mark=workstation_con&lt;br /&gt;
&lt;br /&gt;
/ip firewall mangle&amp;gt; add chain=&amp;#039;&amp;#039;&amp;#039;forward&amp;#039;&amp;#039;&amp;#039; connection-mark=workstation_con  action=mark-packet \&lt;br /&gt;
new-packet-mark=workstations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
At the end create &amp;#039;&amp;#039;&amp;#039;/queue tree&amp;#039;&amp;#039;&amp;#039; for upload and download based on figure 8.8 and figure 8.9.&lt;br /&gt;
&lt;br /&gt;
Queue tree for upload limitation is implemented on &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;ether1&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ;;; Queue_A1 creation &lt;br /&gt;
/queue tree&amp;gt; add name=Queue_A1 parent=&amp;#039;&amp;#039;&amp;#039;ether1&amp;#039;&amp;#039;&amp;#039; max-limit=2048k &lt;br /&gt;
&lt;br /&gt;
 ;;; Queue_B1 creation &lt;br /&gt;
/queue tree&amp;gt; add name=Queue_B1 parent=Queue_A1 max-limit=2048k limit-at=1024k&lt;br /&gt;
&lt;br /&gt;
 ;;; Queue_C1 creation &lt;br /&gt;
/queue tree&amp;gt; add name=Queue_C1 parent=Queue_A1 max-limit=2048k limit-at=1024k priority=7 \&lt;br /&gt;
packet-mark=server&lt;br /&gt;
 &lt;br /&gt;
 ;;; Queue_D1, Queue_E1 and Queue_F1 creation &lt;br /&gt;
 /queue tree&amp;gt; add name=Queue_D1 parent=Queue_B1 max-limit=2048k limit-at=340k priority=8 \&lt;br /&gt;
 packet-mark=workstations&lt;br /&gt;
 /queue tree&amp;gt; add name=Queue_E1 parent=Queue_B1 max-limit=2048k limit-at=340k priority=8 \&lt;br /&gt;
 packet-mark=workstations&lt;br /&gt;
 /queue tree&amp;gt; add name=Queue_F1 parent=Queue_B1 max-limit=2048k limit-at=340k priority=8 \&lt;br /&gt;
 packet-mark=workstations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Priority value by default is 8 so it is not specified here.    &lt;br /&gt;
&lt;br /&gt;
Queue tree for download limitation is implemented on &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;ether2&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ;;; Queue_A2 creation&lt;br /&gt;
/queue tree&amp;gt; add name=Queue_A2 parent=&amp;#039;&amp;#039;&amp;#039;ether1&amp;#039;&amp;#039;&amp;#039; max-limit=2048k &lt;br /&gt;
&lt;br /&gt;
 ;;; Queue_B2 creation &lt;br /&gt;
/queue tree&amp;gt; add name=Queue_B2 parent=Queue_A2 max-limit=2048k limit-at=1536k&lt;br /&gt;
&lt;br /&gt;
 ;;; Queue_C creation &lt;br /&gt;
 /queue tree&amp;gt; add name=Queue_C2 parent=Queue_A2 max-limit=2048k limit-at=512k priority=7 \&lt;br /&gt;
 packet-mark=server&lt;br /&gt;
&lt;br /&gt;
 ;;; Queue_D2, Queue_E2 and Queue_F2 creation&lt;br /&gt;
 /queue tree&amp;gt; add name=Queue_D2 parent=Queue_B2 max-limit=2048k limit-at=512k priority=8 \&lt;br /&gt;
 packet-mark=workstations&lt;br /&gt;
 /queue tree&amp;gt; add name=Queue_E2 parent=Queue_B2 max-limit=2048k limit-at=512k priority=8 \&lt;br /&gt;
 packet-mark=workstations&lt;br /&gt;
 /queue tree&amp;gt; add name=Queue_F2 parent=Queue_B2 max-limit=2048k limit-at=512k priority=8 \&lt;br /&gt;
 packet-mark=workstations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cont}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|HTB]]&lt;br /&gt;
[[Category:QoS|HTB]]&lt;br /&gt;
[[Category:Case Studies|HTB]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
</feed>