freebsd-dev/sbin
Don Lewis 91336b403a Import Dummynet AQM version 0.2.1 (CoDel, FQ-CoDel, PIE and FQ-PIE).
Centre for Advanced Internet Architectures

Implementing AQM in FreeBSD

* Overview <http://caia.swin.edu.au/freebsd/aqm/index.html>

* Articles, Papers and Presentations
  <http://caia.swin.edu.au/freebsd/aqm/papers.html>

* Patches and Tools <http://caia.swin.edu.au/freebsd/aqm/downloads.html>

Overview

Recent years have seen a resurgence of interest in better managing
the depth of bottleneck queues in routers, switches and other places
that get congested. Solutions include transport protocol enhancements
at the end-hosts (such as delay-based or hybrid congestion control
schemes) and active queue management (AQM) schemes applied within
bottleneck queues.

The notion of AQM has been around since at least the late 1990s
(e.g. RFC 2309). In recent years the proliferation of oversized
buffers in all sorts of network devices (aka bufferbloat) has
stimulated keen community interest in four new AQM schemes -- CoDel,
FQ-CoDel, PIE and FQ-PIE.

The IETF AQM working group is looking to document these schemes,
and independent implementations are a corner-stone of the IETF's
process for confirming the clarity of publicly available protocol
descriptions. While significant development work on all three schemes
has occured in the Linux kernel, there is very little in FreeBSD.

Project Goals

This project began in late 2015, and aims to design and implement
functionally-correct versions of CoDel, FQ-CoDel, PIE and FQ_PIE
in FreeBSD (with code BSD-licensed as much as practical). We have
chosen to do this as extensions to FreeBSD's ipfw/dummynet firewall
and traffic shaper. Implementation of these AQM schemes in FreeBSD
will:
* Demonstrate whether the publicly available documentation is
  sufficient to enable independent, functionally equivalent implementations

* Provide a broader suite of AQM options for sections the networking
  community that rely on FreeBSD platforms

Program Members:

* Rasool Al Saadi (developer)

* Grenville Armitage (project lead)

Acknowledgements:

This project has been made possible in part by a gift from the
Comcast Innovation Fund.

Submitted by:	Rasool Al-Saadi <ralsaadi@swin.edu.au>
X-No objection:	core
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D6388
2016-05-26 21:40:13 +00:00
..
adjkerntz Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
atm Use NULL for pointers instead of 0. 2016-04-19 00:59:15 +00:00
badsect Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
bsdlabel Use NULL instead of 0 for pointers. 2016-04-18 07:40:36 +00:00
camcontrol Fix a couple of Coverity Unintended sign extension sign extension 2016-05-25 15:49:29 +00:00
ccdconfig Create packages for atm, ccdconfig, devd, ipf, ipfw, 2016-02-09 19:30:31 +00:00
clri Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
comcontrol Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
conscontrol Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
ddb Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
devd Merge ^/user/ngie/release-pkg-fix-tests to unbreak how test files are installed 2016-05-04 23:20:53 +00:00
devfs Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
dhclient dhclient: Fix the trivial buffer overruns correctly 2016-05-18 23:41:55 +00:00
dmesg Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
dump sbin: ake use of our rounddown() macro when sys/param.h is available. 2016-05-01 02:24:05 +00:00
dumpfs Use MIN macro from sys/param.h. 2016-05-02 01:40:31 +00:00
dumpon Use nitems() instead of sizeof(name) / sizeof(*name). 2016-04-19 04:28:25 +00:00
etherswitchcfg Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
fdisk fdisk: drop unused macro and make use of roundup()/rounddown(). 2016-04-30 19:58:54 +00:00
fdisk_pc98 fdisk: drop unused macro and make use of roundup()/rounddown(). 2016-04-30 19:58:54 +00:00
ffsinfo Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
fsck strchr(3) will return NULL if it cannot find the character in the 2016-04-18 07:44:53 +00:00
fsck_ffs fsck_ffs: Don't overrun mount device buffer 2016-05-11 16:20:23 +00:00
fsck_msdosfs fsck_msdosfs: Adjust a check. 2016-05-04 22:27:22 +00:00
fsdb Use NULL instead of 0 for pointers. 2016-04-18 07:47:26 +00:00
fsirand Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
gbde MFH 2016-03-02 16:14:46 +00:00
geom sbin: ake use of our rounddown() macro when sys/param.h is available. 2016-05-01 02:24:05 +00:00
ggate Add pidfile support to ggated(8) 2016-01-28 03:24:06 +00:00
growfs Cosmetic fixes for growfs(8) - remove unneeded capitalization and a spurious 2016-05-11 09:26:23 +00:00
gvinum Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
hastctl MFH 2016-03-02 16:14:46 +00:00
hastd Improve performance and functionality of the bitstring(3) api 2016-05-04 22:34:11 +00:00
ifconfig ifconfig: set by default FCC regulatory domain for wireless interfaces. 2016-05-26 13:14:08 +00:00
init For pointers use NULL instead of 0. 2016-05-16 00:34:48 +00:00
ipf MFH 2016-03-02 16:14:46 +00:00
ipfw Import Dummynet AQM version 0.2.1 (CoDel, FQ-CoDel, PIE and FQ-PIE). 2016-05-26 21:40:13 +00:00
iscontrol Fix multiple Coverity Out-of-bounds access false postive issues in CAM 2016-05-24 00:57:11 +00:00
kldconfig Use nitems() from sys/param.h. 2016-04-19 04:52:13 +00:00
kldload Use nitems() from sys/param.h. 2016-04-19 04:52:51 +00:00
kldstat MFH 2016-04-04 23:55:32 +00:00
kldunload Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
ldconfig Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
md5 Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
mdconfig Merge ^/user/ngie/release-pkg-fix-tests to unbreak how test files are installed 2016-05-04 23:20:53 +00:00
mdmfs MFH 2016-03-14 18:54:29 +00:00
mknod Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
mksnap_ffs Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
mount Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
mount_cd9660 Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
mount_fusefs Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
mount_msdosfs Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
mount_nfs MFH 2016-04-16 02:32:12 +00:00
mount_nullfs Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
mount_udf Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
mount_unionfs Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
nandfs Create packages for atm, ccdconfig, devd, ipf, ipfw, 2016-02-09 19:30:31 +00:00
natd Create packages for atm, ccdconfig, devd, ipf, ipfw, 2016-02-09 19:30:31 +00:00
newfs Use MIN()/MAX() macros from sys/param.h. 2016-05-02 00:45:46 +00:00
newfs_msdos Use nitems() from sys/param.h. 2016-04-19 04:57:57 +00:00
newfs_nandfs sbin: use our howmany() macro when available through <sys/param.h>. 2016-05-01 02:19:49 +00:00
nfsiod Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
nos-tun Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
nvmecontrol nvmecontrol.8: minor spelling fix. 2016-05-06 03:11:34 +00:00
pfctl sbin: minor spelling fixes. 2016-04-30 19:04:59 +00:00
pflogd Create packages for atm, ccdconfig, devd, ipf, ipfw, 2016-02-09 19:30:31 +00:00
ping Check for socket creation success before calling bind(). 2016-05-12 05:43:54 +00:00
ping6 For pointers use NULL instead of 0. 2016-05-16 00:35:39 +00:00
quotacheck For pointers use NULL instead of 0. 2016-05-16 00:36:12 +00:00
rcorder Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
reboot Add missing parameters -N and -l to reroot and halt usage() 2016-05-06 20:49:14 +00:00
recoverdisk sbin: ake use of our rounddown() macro when sys/param.h is available. 2016-05-01 02:24:05 +00:00
resolvconf Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
restore restore: promote some getfiles() parameters to size_t. 2016-05-01 21:17:30 +00:00
route MFH 2016-03-02 16:14:46 +00:00
routed routed(8): Use arc4random_uniform instead of arc4random. 2016-05-15 06:06:22 +00:00
rtsol Create packages for atm, ccdconfig, devd, ipf, ipfw, 2016-02-09 19:30:31 +00:00
savecore Don't leak fd on sectorsize malloc failure 2016-04-20 00:49:49 +00:00
sconfig Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
setkey Use nitems() from sys/param.h. 2016-04-19 09:43:51 +00:00
shutdown Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
spppcontrol Add META_MODE support. 2015-06-13 19:20:56 +00:00
sunlabel Re-ident lines. 2016-04-20 01:35:09 +00:00
swapon sbin: minor spelling fixes. 2016-04-30 19:04:59 +00:00
sysctl Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
tests Merge ^/user/ngie/release-pkg-fix-tests to unbreak how test files are installed 2016-05-04 23:20:53 +00:00
tunefs Mention fsck_ffs -E in tunefs(8). It's non-obvious that one should 2016-04-19 15:08:35 +00:00
umount Explicitly add more files to the 'runtime' package. 2016-02-09 20:19:31 +00:00
Makefile Convert casperd(8) daemon to the libcasper. 2016-02-25 18:23:40 +00:00
Makefile.amd64
Makefile.arm
Makefile.i386
Makefile.inc
Makefile.mips
Makefile.pc98
Makefile.sparc64