1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
<table class="head">
<tr>
<td class="head-ltitle">ALTQ(4)</td>
<td class="head-vol">Device Drivers Manual</td>
<td class="head-rtitle">ALTQ(4)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">ALTQ</code> — <span class="Nd">alternate
queuing of network packets</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp"><code class="Cd">options ALTQ</code></p>
<p class="Pp">
<br/>
<code class="Cd">options ALTQ_CBQ</code>
<br/>
<code class="Cd">options ALTQ_CODEL</code>
<br/>
<code class="Cd">options ALTQ_RED</code>
<br/>
<code class="Cd">options ALTQ_RIO</code>
<br/>
<code class="Cd">options ALTQ_HFSC</code>
<br/>
<code class="Cd">options ALTQ_CDNR</code>
<br/>
<code class="Cd">options ALTQ_PRIQ</code>
<br/>
<code class="Cd">options ALTQ_FAIRQ</code></p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The <code class="Nm">ALTQ</code> system is a framework which
provides several disciplines for queuing outgoing network packets. This is
done by modifications to the interface packet queues. See
<a class="Xr">altq(9)</a> for details.</p>
<p class="Pp">The user interface for <code class="Nm">ALTQ</code> is implemented
by the <a class="Xr">pfctl(8)</a> utility, so please refer to the
<a class="Xr">pfctl(8)</a> and the <a class="Xr">pf.conf(5)</a> man pages
for a complete description of the <code class="Nm">ALTQ</code> capabilities
and how to use it.</p>
<section class="Ss">
<h2 class="Ss" id="Kernel_Options"><a class="permalink" href="#Kernel_Options">Kernel
Options</a></h2>
<p class="Pp">The following options in the kernel configuration file are related
to <code class="Nm">ALTQ</code> operation:</p>
<p class="Pp"></p>
<dl class="Bl-tag Bl-compact">
<dt id="ALTQ"><a class="permalink" href="#ALTQ"><code class="Dv">ALTQ</code></a></dt>
<dd>Enable <code class="Nm">ALTQ</code>.</dd>
<dt id="ALTQ_CBQ"><a class="permalink" href="#ALTQ_CBQ"><code class="Dv">ALTQ_CBQ</code></a></dt>
<dd>Build the “Class Based Queuing” discipline.</dd>
<dt id="ALTQ_CODEL"><a class="permalink" href="#ALTQ_CODEL"><code class="Dv">ALTQ_CODEL</code></a></dt>
<dd>Build the “Controlled Delay” discipline.</dd>
<dt id="ALTQ_RED"><a class="permalink" href="#ALTQ_RED"><code class="Dv">ALTQ_RED</code></a></dt>
<dd>Build the “Random Early Detection” extension.</dd>
<dt id="ALTQ_RIO"><a class="permalink" href="#ALTQ_RIO"><code class="Dv">ALTQ_RIO</code></a></dt>
<dd>Build “Random Early Drop” for input and output.</dd>
<dt id="ALTQ_HFSC"><a class="permalink" href="#ALTQ_HFSC"><code class="Dv">ALTQ_HFSC</code></a></dt>
<dd>Build the “Hierarchical Packet Scheduler” discipline.</dd>
<dt id="ALTQ_CDNR"><a class="permalink" href="#ALTQ_CDNR"><code class="Dv">ALTQ_CDNR</code></a></dt>
<dd>Build the traffic conditioner. This option is meaningless at the moment as
the conditioner is not used by any of the available disciplines or
consumers.</dd>
<dt id="ALTQ_PRIQ"><a class="permalink" href="#ALTQ_PRIQ"><code class="Dv">ALTQ_PRIQ</code></a></dt>
<dd>Build the “Priority Queuing” discipline.</dd>
<dt id="ALTQ_FAIRQ"><a class="permalink" href="#ALTQ_FAIRQ"><code class="Dv">ALTQ_FAIRQ</code></a></dt>
<dd>Build the “Fair Queuing” discipline.</dd>
<dt id="ALTQ_NOPCC"><a class="permalink" href="#ALTQ_NOPCC"><code class="Dv">ALTQ_NOPCC</code></a></dt>
<dd>Required if the TSC is unusable.</dd>
<dt id="ALTQ_DEBUG"><a class="permalink" href="#ALTQ_DEBUG"><code class="Dv">ALTQ_DEBUG</code></a></dt>
<dd>Enable additional debugging facilities.</dd>
</dl>
<p class="Pp">Note that <code class="Nm">ALTQ</code>-disciplines cannot be
loaded as kernel modules. In order to use a certain discipline you have to
build it into a custom kernel. The <a class="Xr">pf(4)</a> interface, that
is required for the configuration process of <code class="Nm">ALTQ</code>
can be loaded as a module.</p>
</section>
</section>
<section class="Sh">
<h1 class="Sh" id="SUPPORTED_DEVICES"><a class="permalink" href="#SUPPORTED_DEVICES">SUPPORTED
DEVICES</a></h1>
<p class="Pp">The driver modifications described in <a class="Xr">altq(9)</a>
are required to use a certain network card with
<code class="Nm">ALTQ</code>. They have been applied to the following
hardware drivers: <a class="Xr">ae(4)</a>, <a class="Xr">age(4)</a>,
<a class="Xr">alc(4)</a>, <a class="Xr">ale(4)</a>,
<a class="Xr">aue(4)</a>, <a class="Xr">axe(4)</a>,
<a class="Xr">bce(4)</a>, <a class="Xr">bfe(4)</a>,
<a class="Xr">bge(4)</a>, <a class="Xr">bxe(4)</a>,
<a class="Xr">cas(4)</a>, <a class="Xr">dc(4)</a>, <a class="Xr">em(4)</a>,
<a class="Xr">epair(4)</a>, <a class="Xr">et(4)</a>,
<a class="Xr">fxp(4)</a>, <a class="Xr">gem(4)</a>,
<a class="Xr">igb(4)</a>, <a class="Xr">ix(4)</a>, <a class="Xr">jme(4)</a>,
<a class="Xr">le(4)</a>, <a class="Xr">liquidio(4)</a>,
<a class="Xr">msk(4)</a>, <a class="Xr">mxge(4)</a>,
<a class="Xr">my(4)</a>, <a class="Xr">nfe(4)</a>, <a class="Xr">nge(4)</a>,
<a class="Xr">qlxgb(4)</a>, <a class="Xr">re(4)</a>,
<a class="Xr">rl(4)</a>, <a class="Xr">sge(4)</a>, <a class="Xr">sis(4)</a>,
<a class="Xr">sk(4)</a>, <a class="Xr">ste(4)</a>,
<a class="Xr">stge(4)</a>, <a class="Xr">ti(4)</a>,
<a class="Xr">udav(4)</a>, <a class="Xr">vge(4)</a>,
<a class="Xr">vr(4)</a>, <a class="Xr">vte(4)</a>, and
<a class="Xr">xl(4)</a>.</p>
<p class="Pp">The <a class="Xr">tun(4)</a>, <a class="Xr">if_bridge(4)</a>,
<a class="Xr">if_vlan(4)</a>, and <a class="Xr">ng_iface(4)</a> pseudo
drivers also do support <code class="Nm">ALTQ</code>.</p>
<p class="Pp">An example:</p>
<div class="Bd Pp Bd-indent Li">
<pre>altq on igb0 cbq queue { def aq }
queue def bandwidth 90% cbq (default borrow)
queue aq bandwidth 10Mb cbq
pass in on igb0.10 proto udp all queue aq keep state</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
ALSO</a></h1>
<p class="Pp"><a class="Xr">pf(4)</a>, <a class="Xr">pf.conf(5)</a>,
<a class="Xr">ipfw(8)</a>, <a class="Xr">pfctl(8)</a>,
<a class="Xr">altq(9)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp">The <code class="Nm">ALTQ</code> system first appeared in March
1997 and found home in the KAME project (https://www.kame.net). It was
imported to <span class="Ux">FreeBSD</span> in 5.3 .</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">January 21, 2024</td>
<td class="foot-os">FreeBSD 15.0</td>
</tr>
</table>
|