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 [EMAIL PROTECTED]

 Adrian Penisoara
 Ady (@freebsd.ady.ro, @rofug.ro)
_______________________________________________________________________
| Programming in BASIC causes brain damage.                           |
|   (Edsger Wybe Dijkstra)                                            |


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to