Date: Fri, 17 May 2002 02:14:17 +0300 (EEST) From: Adrian Penisoara <ady@freebsd.ady.ro> To: freebsd-current@freebsd.org, freebsd-hackers@freebsd.org Cc: freebsd-altq list <freebsd-altq@rofug.ro> Subject: HEADS UP: ALTQ integration developer preview Message-ID: <Pine.BSF.4.10.10205170211530.29826-100000@ady.warpnet.ro>
next in thread | raw e-mail | index | archive | help
We have started a "ALTQ integration in FreeBSD" project which is headed towards integrating Mr. Kejiro's ALTQ framework into FreeBSD 5.0-current (and perhaps 4-stable later). The FreeBSD Core Team has been advised and we have received on principle approval. We are looking for help with committing these bits to the CVS tree. Please have a look at the proposed ALTQ package for 5.0-current, which is found here: http://www.rofug.ro/projects/freebsd-altq/altq-freebsd-5.0-current-May14.tar.gz Installation details are found in the README file; for further details consult the documentation referenced below. Please send us any comments you have, your feedback is valuable. ALTQ integration implies some changes in the network drivers code and in the design of the the network queues management. Here is a summary of the ALTQ design document: The BSD systems need better output queueing abstraction to support packet scheduling (e.g., CBQ) or active queue management (e.g., RED). To introduce a new model, we need to convert the existing code to be conformant to the new model. But the problem is that there are too many drivers to convert all at once. This is a proposal that allows incremental transition to the new model. (If we are going to modify the existing drivers, we need to get it right.) The model is designed for ALTQ but it is general enough for other implementations so that we can make the driver conversion once and for all. The new model removes direct references to the fields within ifp->if_snd, and defines the following macros to manipulate ifp->if_snd: IFQ_ENQUEUE(ifq, m, err) IFQ_DEQUEUE(ifq, m) IFQ_POLL(ifq, m) IFQ_PURGE(ifq) IFQ_IS_EMPTY(ifq) The new model also enforces some rules regarding how to use these macros. Another requirement for a driver is to work under rate-limiting. - IFQ_DEQUEUE() could return NULL even when IFQ_IS_EMPTY() is FALSE under rate-limiting. a driver should always check if (m == NULL). - a driver is supposed to call if_start from the tx complete interrupt under late-limiting (in order to trigger the next dequeue). For most drivers, it is a simple task of replacing old-style lines by the corresponding new-style lines, and usually just a few lines need to be modified. But some drivers need more than that. The old-style drivers still work with the original FIFO queue but they cannot take advantage of new queueing disciplines. For locking an output queue to support SMP, ALTQ uses the same model as in FreeBSD-5.0. One restriction is that, if a driver uses poll-and-dequeue, the driver needs to explicitly lock the queue between the poll operation and the dequeue operation. You can find more details here: http://www.csl.sony.co.jp/person/kjc/kjc/software/altq-new-design.txt http://www.csl.sony.co.jp/person/kjc/kjc/software.html#ALTQ Current development is headed by Kenjiro Cho and myself. If you want to join our efforts please subscribe to our mailing list by sending "subscribe" in the body of a message to freebsd-altq-request@rofug.ro. Adrian Penisoara Ady (@freebsd.ady.ro, @rofug.ro) _______________________________________________________________________ | Programming in BASIC causes brain damage. | | (Edsger Wybe Dijkstra) | To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.10.10205170211530.29826-100000>