Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Wiki / Kb278

Kb278

Emulab FAQ: Software Setup: Can I enable ALTQ on FreeBSD for strict priority and class-based queuing?

Emulab FAQ: Software Setup: Can I enable ALTQ on FreeBSD for strict priority and class-based queuing?

>  My experiments require simple network topologies with strict priority
>  queuing implemented at the bottleneck link.  From what I have seen in
>  Emulab, so far, strict priority queuing cannot be enforced at the
>  bottleneck interface.. (Dummynet (ipfw) can only provide WFQ with the
>  weight range in [1, 100]..)
>  
>  I came across ALTQ tool in FreeBSD, that can enable strict priority
>  queuing; is there a FreeBSD (or any other) image in Emulab that has altq
>  (or any similar tool that you know) that I can avail of?

ALTQ supports strict priority and class-based queuing, among others. It was ported from OpenBSD and merged into FreeBSD 5.3.

None of our current FreeBSD images has ALTQ configured into the kernel, but you can easily do it and save a customized image to be loaded into your Emulab experiment nodes. See https://www.emulab.net/tutorial/tutorial.php3#CustomOS.

The FreeBSD Handbook has a nice section on configuring ALTQ into the kernel, http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-pf.html .

Most importantly, the network drivers on the Emulab nodes are on the list of ones that support ALTQ: fxp (Intel 100 mbps and pc850's) and em (Intel 1 gbps.) These cover all of the normal pc types.

I looked into our FBSD62-STD image, which looks like it has all of the necessary plumbing except for the enabling the ALTQ kernel options. See the altq man page for a start. Also at http://www.freebsd.org/cgi/man.cgi?query=altq&sektion=4 .

You'll find the configuration for the standard Emulab 6.2 kernel on both the 'users' and experiment nodes in the source tree at /share/freebsd/6.2-stable/src/sys/i386/conf/GENERIC .

The pf device which supports altq can also be compiled into the kernel, or loaded as a module. pfctl and pf.conf provide the user interface to ALTQ.