---
name: "ALTQ"
section: "4"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/ALTQ"
---

# ALTQ(4)

alternate queuing of network packets

## NAME

**ALTQ** – alternate queuing of network packets

## 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

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)](/altq/9.md) for details.

The user interface for **ALTQ** is implemented by the [pfctl(8)](/pfctl/8.md) utility, so please refer to the [pfctl(8)](/pfctl/8.md) and the [pf.conf(5)](/pf.conf/5.md) 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)](/pf/4.md) 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)](/altq/9.md) are required to use a certain network card with **ALTQ**. They have been applied to the following hardware drivers: [ae(4)](/ae/4.md), [age(4)](/age/4.md), [alc(4)](/alc/4.md), [ale(4)](/ale/4.md), [aue(4)](/aue/4.md), [axe(4)](/axe/4.md), [bce(4)](/bce/4.md), [bfe(4)](/bfe/4.md), [bge(4)](/bge/4.md), [bxe(4)](/bxe/4.md), [cas(4)](/cas/4.md), [dc(4)](/dc/4.md), [em(4)](/em/4.md), [epair(4)](/epair/4.md), [et(4)](/et/4.md), [fxp(4)](/fxp/4.md), [gem(4)](/gem/4.md), [igb(4)](/igb/4.md), [ix(4)](/ix/4.md), [jme(4)](/jme/4.md), [le(4)](/le/4.md), [liquidio(4)](/liquidio/4.md), [msk(4)](/msk/4.md), [mxge(4)](/mxge/4.md), [my(4)](/my/4.md), [nfe(4)](/nfe/4.md), [nge(4)](/nge/4.md), [qlxgb(4)](/qlxgb/4.md), [re(4)](/re/4.md), [rl(4)](/rl/4.md), [sge(4)](/sge/4.md), [sis(4)](/sis/4.md), [sk(4)](/sk/4.md), [ste(4)](/ste/4.md), [stge(4)](/stge/4.md), [ti(4)](/ti/4.md), [udav(4)](/udav/4.md), [vge(4)](/vge/4.md), [vr(4)](/vr/4.md), [vte(4)](/vte/4.md), and [xl(4)](/xl/4.md).

The [tun(4)](/tun/4.md), [if\_bridge(4)](/if_bridge/4.md), [if\_vlan(4)](/if_vlan/4.md), and [ng\_iface(4)](/ng_iface/4.md) 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
```

## SEE ALSO

[pf(4)](/pf/4.md), [pf.conf(5)](/pf.conf/5.md), [ipfw(8)](/ipfw/8.md), [pfctl(8)](/pfctl/8.md), [altq(9)](/altq/9.md)

## 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 .
