altq4
Alternate queuing of network packets
Part of ALTQ(4).
Usage
options ALTQ
options ALTQ_CBQ
options
ALTQ_CODEL
options
ALTQ_RED
options
ALTQ_RIO
options
ALTQ_HFSC
options
ALTQ_CDNR
options
ALTQ_PRIQ
options
ALTQ_FAIRQ
Overview
The ALTQ system is a framework which provides several disciplines for queuing outgoing network packets. This is done by modifications to the interface packet queues. See altq(9) for details.
The user interface for ALTQ is implemented by the pfctl(8) utility, so please refer to the pfctl(8) and the pf.conf(5) man pages for a complete description of the ALTQ capabilities and how to use it.
Kernel Options
The following options in the kernel configuration file are related to ALTQ operation:
- ALTQ
-
Enable ALTQ.
- ALTQ_CBQ
-
Build the “Class Based Queuing” discipline.
- ALTQ_CODEL
-
Build the “Controlled Delay” discipline.
- ALTQ_RED
-
Build the “Random Early Detection” extension.
- ALTQ_RIO
-
Build “Random Early Drop” for input and output.
- ALTQ_HFSC
-
Build the “Hierarchical Packet Scheduler” discipline.
- ALTQ_CDNR
-
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.
- ALTQ_PRIQ
-
Build the “Priority Queuing” discipline.
- ALTQ_FAIRQ
-
Build the “Fair Queuing” discipline.
- ALTQ_NOPCC
-
Required if the TSC is unusable.
- ALTQ_DEBUG
-
Enable additional debugging facilities.
Note that ALTQ-disciplines cannot be loaded as kernel modules. In order to use a certain discipline you have to build it into a custom kernel. The pf(4) interface, that is required for the configuration process of ALTQ can be loaded as a module.
Supported devices
The driver modifications described in altq(9) are required to use a certain network card with ALTQ. They have been applied to the following hardware drivers: ae(4), age(4), alc(4), ale(4), aue(4), axe(4), bce(4), bfe(4), bge(4), bxe(4), cas(4), dc(4), em(4), epair(4), et(4), fxp(4), gem(4), igb(4), ix(4), jme(4), le(4), liquidio(4), msk(4), mxge(4), my(4), nfe(4), nge(4), qlxgb(4), re(4), rl(4), sge(4), sis(4), sk(4), ste(4), stge(4), ti(4), udav(4), vge(4), vr(4), vte(4), and xl(4).
The tun(4), if_bridge(4), if_vlan(4), and ng_iface(4) pseudo drivers also do support ALTQ.
An example:
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
History
- FreeBSD 16.0-CURRENT (2026-10-27) to FreeBSD 15.0-RELEASE: the text shown here
- FreeBSD 14.5-RELEASE to FreeBSD 14.2-RELEASE
- FreeBSD 14.1-RELEASE to FreeBSD 14.0-RELEASE
- FreeBSD 13.5-RELEASE
- FreeBSD 13.4-RELEASE to FreeBSD 13.3-RELEASE
- FreeBSD 13.2-RELEASE to FreeBSD 13.0-RELEASE
- FreeBSD 12.4-RELEASE
- FreeBSD 12.3-RELEASE
- FreeBSD 12.2-RELEASE
- FreeBSD 12.1-RELEASE
- FreeBSD 12.0-RELEASE
- FreeBSD 11.4-RELEASE
- FreeBSD 11.3-RELEASE
- FreeBSD 11.2-RELEASE
- FreeBSD 11.1-RELEASE
- FreeBSD 11.0-RELEASE
- FreeBSD 10.4-RELEASE
- FreeBSD 10.3-RELEASE
- FreeBSD 10.2-RELEASE
- FreeBSD 10.1-RELEASE
- FreeBSD 10.0-RELEASE
- FreeBSD 9.3-RELEASE
- FreeBSD 9.2-RELEASE
- FreeBSD 9.1-RELEASE
- FreeBSD 9.0-RELEASE
- FreeBSD 8.4-RELEASE
- FreeBSD 8.3-RELEASE
- FreeBSD 8.2-RELEASE
- FreeBSD 8.1-RELEASE
- FreeBSD 8.0-RELEASE
- FreeBSD 7.4-RELEASE
- FreeBSD 7.3-RELEASE
- FreeBSD 7.2-RELEASE
- FreeBSD 7.1-RELEASE
- FreeBSD 7.0-RELEASE
- FreeBSD 6.4-RELEASE
- FreeBSD 6.3-RELEASE
- FreeBSD 6.2-RELEASE
- FreeBSD 6.1-RELEASE
- FreeBSD 6.0-RELEASE
- FreeBSD 5.5-RELEASE to FreeBSD 5.4-RELEASE
- FreeBSD 5.3-RELEASE