Abstract |
Most of the modern operating systems of our times, either commercial or open source, have developed support for network quality of service (QoS). The BSD camp makes no exception thanks to the ALTQ framework developed by Mr. Kenjiro Cho from Sony Computer Science Labs, Japan. The OpenBSD and NetBSD folks have already integrated this framework into their core distributions, while for the FreeBSD project the integration is just about to start.
ALTQ, standing for "ALTernate Queueing", is a framework of (network) queueing disciplines and related components required to offer resource sharing and Quality of Service capabilities. It is thought to be a development framework, although it has been successfully used in production environments. ALTQ development is now taking place in the KAME repository where it has been recently imported.
Although in the recent years there were some attempts to push the ALTQ sources into the FreeBSD CVS tree, things slowed down due to unavailable developing work-time and major changes in the networking stack being scheduled in the 5-CURRENT tree. Currently work is undergoing towards integrating the ALTQ framework into the 5.3 release.
Some of the biggest challenges that ALTQ poses are the modifications to the network drivers needed to enable the shaping of the packet flows and figuring out the locking changes needed for the new fine-grained architecture of the -CURRENT branch. The standard BSD network architecture, inherited from the original BSD distribution, makes it hard to integrate alternative queueing disciplines. Instead, hooking points had to be devised in order to place the packets in controlled network queues. The task becomes even more difficult if you have to take into account the newly introduced locking semantics.
Recently work has been started and evolved quite rapidly towards the integration of the "pf" packet filter from OpenBSD; the interesting part is that the queueing functionality has been achieved using the ALTQ package proposed for integration. This offers an alternative hooking point for the packet flows and queueing disciplines management.
In the long term, I believe that a new approach is needed in the design of the networking stack which would permit using alternative queueing mechanisms and a unified method for packet tagging for various networking services (traffic shaping, firewalling, etc). Although the *BSD family is renown for its networking performance, the modern IT community demands more network versatility from the nowadays' operating systems.
The FreeBSD-ALTQ project: http://www.rofug.ro/projects/freebsd-altq/ |
Authors Description |
Adrian is a networking specialist with over ten years of industry experience into the ISP field. He has contracted the FreeBSD virus at a very young age (more exactly since the 2.1.x times) and has been stuck with it ever since (that's not to say that he has not touched some other OSes such as OpenBSD, NetBSD, Linux, Solaris, etc). More recently he has been involved in some open-source projects such as the ROFUG user group and the FreeBSD-ALTQ project. Currently he makes a living as a teaching assistant and he also has a part-time ISP job. At home he is tormented by his own network of six computers and he is a proud owner of an Apple iBook and a Power Mac G4. All he's missing now to become one of those UNIX gurus that he always worships is a horde of cats. |