ALTQ(4)
💖 ALTQ — alternate queuing of network packets 💖
okay bestie, this is ALTQ(4), the kernel interfaces manual entry that is literally about alternate queuing of network packets. Yes, we are keeping every technical detail — no cap, that is the whole point 💅✨
🌸 NAME 🌸
ALTQ — alternate queuing of network packets. periodt.
✨ SYNOPSIS ✨
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
💖 DESCRIPTION 💖
okay so the ALTQ system is a framework that provides several disciplines for queuing outgoing network packets. It does this by modifying the interface packet queues. For the deep lore, see altq(9).
The user interface for ALTQ is implemented by pfctl(8), so pls refer to pfctl(8) and pf.conf(5) for a complete description of ALTQ capabilities and how to use it.
🧚 Kernel Options 🧚
These kernel config options 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. Ngl, 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.
Important vibe check: 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 — which is required for the configuration process of ALTQ — can be loaded as a module.
🦋 SUPPORTED DEVICES 🦋
To use a certain network card with ALTQ, you need the driver modifications described in altq(9). 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 too 🫶
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
🔥 SEE ALSO 🔥
go check out pf(4), pf.conf(5), ipfw(8), pfctl(8), and altq(9).
🎀 HISTORY 🎀
The ALTQ system first appeared in March 1997 and found home in the KAME project (https://www.kame.net). It was imported to FreeBSD in 5.3.
xoxo, this Debian ALTQ(4) page is dated January 21, 2024 🫶✨
📦 where this page comes from
- freebsd 15.1: base 15.1
- nixpkgs unstable: source
- Copyright (c) 2004 Max Laier <mlaier@FreeBSD.org>
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms