1. Alternate Queueing (ALTQ) for BSD UNIX including CBQ, HFSC, PRIQ, WFQ, JoBS, RED, RIO, Blue

  2. Aguri : An Aggregation-based Traffic Profiler

  3. Tele Traffic Tapper (ttt) : Real-time Graphical Remote Traffic Monitor

ALTQ: Alternate Queueing for BSD UNIX (version 3.1)

This is a release of Alternate Queueing for BSD UNIX. ALTQ provides queueing disciplines and other QoS related components required to realize resource-sharing and quality of service. The ALTQ release is intended to be a flexible platform to promote network research and gain field experience.

ALTQ consists of a system framework, QoS components, and management tools. The system framework provides an abstraction of QoS components and interfaces QoS components into the existing operating system. The QoS components realizes actual service differentiation mechanisms. The management tools include altq daemon and altqstat monitoring tool. Note that ALTQ controls only outgoing traffic since queueing disciplines work only on outgoing interfaces.

Now that ALTQ is being developed in the KAME repository, this standalone ALTQ release is back-ported from KAME, and supports only FreeBSD-4.5, NetBSD-1.5.2 and OpenBSD-3.0. (some tools and documents haven't been merged into KAME, and are available only in this release. OpenBSD-3.0 already integrates ALTQ so that this packages updates the ALTQ part. ALTQ in OpenBSD-current as of February 26 isn't much different from altq-3.1.)

The release includes:

What's New since version 3.0:

The latest version is altq-3.1. (520KB) release date: 2002/02/28; Errata
a kernel patch for FreeBSD-4.6. release date: 2002/07/08; updated 2002/7/22; (a merge error which leads to a panic was found in the original patch. if you downloaded the patch before 7/22, apply this to sys-altq/net/if.c.)
a kernel patch for FreeBSD-4.7. release date: 2002/10/17
a kernel patch for FreeBSD-4.8. release date: 2003/04/18
An experimental FreeBSD-5.x support is available at here. The KAME development tree also has FreeBSD-5.x support.

ALTQ is integrated into KAME IPv6 and being developed under the KAME CVS repository.
New features and bug fixes are committed first to the KAME repository, and an ALTQ release is created out of the KAME respository.
You can get latest changes through KAME-snap kit.
ALTQ is also available in OpenBSD-3.0 and NetBSD-current.
OpenBSD-3.3 or later has ALTQ integrated into pf (OpenBSD's packet filter) so that you can take advantage of pf's stateful packet filtering and set up ALTQ as part of the pf configuration file. (more on pf:queueing)

ALTQ resources:

[CBQ traffic trace] This graph shows a trace of ALTQ/CBQ traffic control on 150M ATM.

6 TCP streams oscillate with FIFO queueing. At time 18, CBQ is enabled. The CBQ configuration gives 20Mbps to two TCP streams, 15Mbps to two TCPs, and 10Mbps to 2 TCPs (total 90Mbps); the streams are classified by port number.

Click here for more about ALTQ/CBQ performance.
Click here to see ALTQ/RED and ECN performance.

Aguri: An Aggregation-based Traffic Profiler (version 0.7)

joint work with
Ryo Kaizaki
(a beta version for BSD UNIX and doesn't support other platforms very well.)

Aguri is an aggregation-based traffic profiler targeted for near real-time, long-term, and wide-area traffic monitoring. Aguri adapts itself to spatial traffic distribution by aggregating small volume flows into aggregates, and achieves temporal aggregation by creating a summary of summaries applying the same algorithm to its outputs. A set of scripts are used for archiving and visualizing summaries in different time scales. Aguri does not need a predefined rule set and is capable of detecting an unexpected increase of unknown protocols or DoS attacks, which considerably simplifies the task of network monitoring.

Aguri produces four separate profiles for source addresses, destination addresses, source protocols and destination protocols. IP addresses are designed to be hierarchical and aggregatable so that it is natural to apply aggregation. Both IPv4 and IPv6 are supported in address profiles. Although protocol numbers are not hierarchical, the same technique can be used to identify port ranges. We concatenate the IP version, the protocol number and the TCP/UDP port number to create a 32-bit key for a protocol profile.

Aguri monitors network traffic using libpcap(3), and produces a summary when it receives a HUP signal. Periodic summaries can be obtained by sending HUP signals from cron(8) to the running aguri program.

Archive and Visualization:
Aguri's summary output is in a plain text format. Scripts are used to archive aguri outputs, and to plot graphs. Here are sample graphs: a plot graph and a traffic density graph.

The latest version is aguri-0.7. (48KB) release date: 2003/03/13;

Here is a paper on aguri. Also, sample daily plot graphs from the WIDE backbone are available.

TTT: Tele Traffic Tapper (version 1.8.1)

ttt is yet another descendant of tcpdump but it is capable of real-time, graphical, and remote traffic-monitoring. ttt won't replace tcpdump, rather, it helps you find out what to look into with tcpdump. ttt monitors the network and automatically picks up the main contributors of the traffic within the time window. The graphs are updated every second by default.


I have tested this version on FreeBSD-4.9, NetBSD-1.6, Debian-linux-3.0.

Click on ttt-1.8.1.tar.gz to download the program. (135K bytes) release date: 2004/5/20

ttt is part of FreeBSD ports collection and NetBSD packages collection.
libBLT is also in the ports/packages collection.

What's new since 1.8.

ttt uses two portable libraries for packet-capturing and graph-drawing. For packet capturing, "libpcap" of tcpdump from Lawrence Berkeley Laboratory is used. For auto-scale graphs, "libBLT" for Tcl/Tk from AT&T Bell Laboratories is used. So, if you already have tcpdump and Tcl/Tk on your machine, there would be no problem to install ttt. Here is a graphical image of ttt.

ALTQ for PPP (version 0.1) (OBSOLETE)

This release is a port of ALTQ (kernel version) to the userland ppp (aka iij-ppp). Since the bottleneck of ppp is the serial link (not the tun interface), alternative queueing is implemented within the ppp program. This release is an alpha version and is not for general users but to ask for comments and suggestions. Testers are supposed to have control of both ends of a dialup link. This version supports CBQ and is intended to be used at the server side (upstream side) of a dialup link (the current implementation controls only outgoing packets). The ppp part is based on the verion in FreeBSD-2.2.6-RELEASE.


Click on altq4ppp-0.1.tar.gz to download the program. (208K bytes) release date: 1998/06/10

Links to Related Work

CBQ, RED and ECN Home Pages at LBNL by Sally Floyd
RSVP Home Page at ISI
HFSC Home page at CMU by Hui Zhang
Blue Home Page at University of Michigan by Wu-chang Feng
QoSbox project homepage at the University of Virginia. Includes information about the JoBS queuing discipline.
FreeBSD Home Page
NetBSD Home Page
OpenBSD Home Page
BSD ATM Driver by Chuck Cranor
ATM Switch Tools
ATM Switch Management Tools by Yasutaka Miwa
Network performance benchmark
Packet Capture Library by LBNL
Sun's RSVP
Sun's RSVP and CBQ related ftp site
Differentiated Service WG at IETF
KAME IPv6 stack for FreeBSD/NetBSD/BSD/OS
INRIA IPv6 stack for FreeBSD/NetBSD
Mobile IP at NUS
NUS ported ALTQ to linux as part of their Mobile IP research
Kuma Project
a joint effort to build a QoS policy framework

Send bug reports, suggestions, etc. to kjc at

Back to my home page

$Date: 2006/09/28 03:00:40 $