Index of /pub/FreeBSD/FreeBSD-current/xperimnt/ALTQ
Name Last modified Size Description
Parent Directory 19-Nov-2004 09:58 -
altq-1.0.1.tar.gz 04-Apr-1998 18:27 231k
ALTQ -- Version 1.0.1
April 4, 1998
This is a release of Alternate Queueing for BSD Unix.
The release has become fairly stable but still it is a research prototype.
So use it at your own risk!
All interfaces are likely to change in the future release.
The release includes:
alternate queueing support for FreeBSD-2.2.[1256]R kernel.
CBQ, WFQ, RED, and FIFOQ implementations
tools for CBQ
RSVP stubs for CBQ
ECN (for IPv4) support in RED and TCP
but lacks some of necessary documentation and functions. Some
functions are implemented poorly.
What's New since version 0.4.3:
- FreeBSD-2.2.6 based.
- rsvp rel4.2a3 support and several fixes are added.
- RED parameters are adjusted when a slow link is used.
- integration of RED into CBQ.
RED (and ECN) can be used on a class queue basis.
- CBQ supports more flexible filters.
(TOS based queueing, IPsec, IPv6)
- tx and lnc driver support.
- fix the performance problem of the de driver
We have made many changes and code cleanup since 0.4.3. The changes
include:
file names: ("altq_" prefix is added to the kernel files.)
style changes: (indentations, etc)
removal of unuded code: (#ifdef for the original code became
too messy and they are removed.)
So, don't forget to recompile the related tools.
IPv6 and IPsec support is under development, and it is only for IPv6
developpers at this point.
This release supports the following network drivers.
Supported network cards are:
vx: 3Com PCI Ethernet Cards (3C590, 3C595, 3C900, 3C905)
de: DEC 21040 PCI Ethernet Controller
fxp:Intel EtherExpress Pro/100B PCI Fast Ethernet
ep: 3Com 3C509 3C589
ed: Western Digital and SMC 80xx; Novell NE1000 and NE2000; 3Com 3C503
tx: SMC 9432TX
lnc: Lance/PCnet cards (Isolan, Novell NE2100, NE32-VL)
en: Efficient Network Inc. PCI ATM card.
Adaptec 155Mbps PCI ATM card.
(Chuck Cranor's driver is included in the ALTQ release.)
lo: local loop (just for testing)
sppp (synchronous ppp) devices: (Cisco HDLC supported)
sr: RISCom/N2 hdlc sync 1/2 port V.35/X.21
ar: Arnet SYNC/570i hdlc sync 2/4 port V.35/X.21
cx: Cronyx/Sigma multiport sync/async
The idea behind this package is to provide better queueing schemes
required to realize resource-sharing and quality of service.
Currently, the only queueing scheme implemented in BSD Unix is
the simple tail-drop FIFO queueing. The BSD Unix systems have no
general method to implement alternate queueing schemes, which is the
main obstacle to implement a new queueing scheme to BSD Unix.
We have designed and implemented a generic alternate queueing
framework for the BSD Unix systems, and ported Sun's CBQ onto this
framework. The system can be used for resource reservation with the
RSVP implementation from ISI.
The preliminary performance test result is encouraging; our CBQ
implementation is able to handle 100Mbps without noticeable overhead.
The goals of this project are three-fold:
- to provide a framework to implement better queueing schemes.
- to provide a link-sharing test-bed for network operators.
- to provide a traffic control kernel to the RSVP community.
You can get the latest ALTQ release from
<http://www.csl.sony.co.jp/person/kjc/programs.html>
or
<ftp://ftp.csl.sony.co.jp/pub/kjc/altq.tar.gz>
The CBQ code is based on SUN/LBNL CBQ v2.0. You can get the original
code from <http://www-nrg.ee.lbl.gov/floyd/cbq.html> or
<ftp://playground.sun.com/pub/rsvp/>.
For RSVP users:
Note that the rsvp stubs are just a port of Sun's RSVP/CBQ. So, it
does nothing better than Sun's RSVP. Also note that currently it
supports only Controlled-Load Service and takes only bandwidth (rate)
parameter to map the flow to a CBQ class.
You can find the original Sun's RSVP/CBQ at
<ftp://playground.sun.com/pub/rsvp/>
Please don't ask me questions regarding RSVP. There's a mailing-list
on RSVP implementation issues <rsvp-test@isi.edu>. To subscribe, you
can send mail to "majordomo@isi.edu" with the following command in the
body of your email message: "subscribe rsvp-test".
For ATM users:
The ATM driver is based on bsdatm1.4
<ftp://dworkin.wustl.edu/dist/bsd/bsdatm1.4.tar.gz> written by Chuck
Cranor of Washington University <http://dworkin.wustl.edu/pub/chuck/>.
Please get the original distribution and read the included documents
for how to setup ATM.
Also note that the current ATM driver doesn't support multicast so
that some work is necessary to use with RSVP.
workaround added to altq-0.4.2:
- pvc shadow interface is introduced to make each pvc looks
like a point-to-point interface.
see man pages under atm-tools for details.
(previous method using atm_flags 5 is no longer available.)
RED:
RED (Random Early Detection) is getting popular for active queue
management in the Internet community.
More information is available at <http://www-nrg.ee.lbl.gov/floyd/red.html>.
Our verion of RED experimentally supports ECN (Explicit Congestion
Notification) over IPv4.
ECN infomation is available at <http://www-nrg.ee.lbl.gov/floyd/ecn.html>.
Extensions to TCP to take advantage of ECN are also implemented.
Note that ECN has not standardized yet so that the implementation will
change in the future and the current version will not interoperate with
other implementations.
WFQ:
A sample WFQ implementation by Hiroshi Kyusojin of Keio University
(kyu@mt.cs.keio.ac.jp).
FIFOQ:
FIFOQ is implemented as a template for those who want to write their
own queueing schemes.
Other Changes to the original FreeBSD:
experimental ECN support in TCP (see comments in "netinet/tcp_input.c")
TCP window size problem fix:
FreeBSD-2.2 has a problem which resets TCP window size to the default
value even when the user specifies the window size. To avoid this
problem, "in_addroute() in netinet/in_rmx.c" is modified. A side
effect is that TCP doesn't save its ssthresh value on close, but it's
what other 4.4BSD derived systems do.
disabling the packet-drop hack in ip_output():
disabling ICMP_SOURCEQUENCH generated in ip_forward() when a packet-drop
occurs. (RFC1812 compliant).
IP_RECVIF support in rsvp_input() (ip_mroute.c) for rsvp rel4.2a1.
bpf.c to support DLT_ATM_RFC1483.
the ALTQ kernel config file: the following field is added to GENERIC:
# misc
ident ALTQ
options NMBCLUSTERS=2048
options MROUTING # Multicast routing
pseudo-device sppp #Generic Synchronous PPP
pseudo-device bpfilter 10
# altq related options
options ALTQ #alternate queueing
options CBQ #class based queueing
options WFQ #weighted fair queueing
options RED #random early detection
options ALTQ_ACCOUNT #altq accounting
# ATM (en*) support
options NATM #native mode atm
device en0
device en1
pseudo-device atm
If you use CBQ with 100baseT, you might need a fine-grained kernel timer.
options HZ=1000
Misc future plans:
- add IPv6 support to CBQ. (IPv6 stack from INRIA and/or WIDE, but
ALTQ will remain independent from the IPv6 stack.)
- rewrite the CBQ related code with a bit restrivtive license term.
- implement a better wildcard-filter handling in CBQ.
Send bug reports, suggestions, etc. to
kjc@csl.sony.co.jp
Kenjiro Cho
Sony Computer Science Laboratory Inc.
WIDE Project
The CBQ related part of the release is derived from the RSVP/CBQ
implementation of Sun Microsystems, Inc. The CBQ part is known as
SUN/UCL/LBL-CBQ.
The README file of the Sun RSVP 0.4.8 release says:
Major components of this release were contributed by USC
Information Sciences Institute (ISI), MIT Laboratory for
Computer Science (LCS), the Xerox Palo Alto Research Center
(PARC), Lawrence Berkeley Laboratories (LBL), and University
College, London (UCL). We are deeply indebted to these groups
for their kind assistance.
So, I'm also deeply indebted to these groups. Special thanks to Sally
Floyd of Lawrence Berkeley Laboratories, her papers and notes on CBQ
are most helpful.
COPYRIGHT AND CONDITIONS OF USE
-------------------------------
Many of the components are derived from publicly-available source
codes so that each file has different copyright and conditions of use.
See the copyright notices in the source files for work by other
organizations.
/*
* Copyright (C) 1997
* Sony Computer Science Laboratory Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY SONY CSL AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL SONY CSL OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
/****************************************************************************
RSVPD -- ReSerVation Protocol Daemon
Written by: Steven Berson (berson@isi.edu)
USC Information Sciences Institute
Marina del Rey, California
Original Version: Shai Herzog, Nov. 1993.
Current Version: Steven Berson, August 1994.
Copyright (c) 1993 by the University of Southern California
All rights reserved.
Permission to use, copy, modify, and distribute this software and its
documentation in source and binary forms for non-commercial purposes
and without fee is hereby granted, provided that the above copyright
notice appear in all copies and that both the copyright notice and
this permission notice appear in supporting documentation. and that
any documentation, advertising materials, and other materials related
to such distribution and use acknowledge that the software was
developed by the University of Southern California, Information
Sciences Institute. The name of the University may not be used to
endorse or promote products derived from this software without
specific prior written permission.
THE UNIVERSITY OF SOUTHERN CALIFORNIA makes no representations about
the suitability of this software for any purpose. THIS SOFTWARE IS
PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Other copyrights might apply to parts of this software and are so
noted when applicable.
********************************************************************/
/*
* Copyright (c) Sun Microsystems, Inc. 1996. All rights reserved.
*
* License is granted to copy, to use, and to make and to use derivative
* works for research and evaluation purposes, provided that Sun Microsystems is
* acknowledged in all documentation pertaining to any such copy or derivative
* work. Sun Microsystems grants no other licenses expressed or implied. The
* Sun Microsystems trade name should not be used in any advertising without
* its written permission.
*
* SUN MICROSYSTEMS MERCHANTABILITY OF THIS SOFTWARE OR THE SUITABILITY OF
* THIS SOFTWARE FOR ANY PARTICULAR PURPOSE. The software is provided "as is"
* without express or implied warranty of any kind.
*
* These notices must be retained in any copies of any part of this software.
*/
/*
* Copyright (c) 1995 The Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the Network Research
* Group at Lawrence Berkeley National Laboratory.
* 4. Neither the name of the University nor of the Laboratory may be used
* to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/