» trickle
In short
trickle is a portable lightweight userspace bandwidth shaper. It can run in collaborative mode (together with trickled) or in stand alone mode.
trickle works by taking advantage of the unix loader preloading. Essentially it provides, to the application, a new version of the functionality that is required to send and receive data through sockets. It then limits traffic based on delaying the sending and receiving of data over a socket. trickle runs entirely in userspace and does not require root privileges.
trickle is known to work on OpenBSD, FreeBSD and most Linux distributions.
trickle is licensed under a BSD license and was originally developed by Marius Aamodt Eriksen. This fork of the trickle software is being maintained by Jesse Smith, following the abandonment of the original project.
Documentation
Manual pages: trickle, trickled and trickled.conf.
FREENIX paper: Trickle: A Userland Bandwidth Shaper for Unix-like Systems
Download
- trickle 1.08 (2014-12-01) Applied patches from Debian, Ubuntu and Arch. Cleaned up some compiler warnings. Added ability to set a specific schedule for throttling.
- trickle 1.06 (2003-06-02) Changes include reworking of poll() and select(), XDRing of protocol trickled messages to accomodate for inter-host cooperation. A control protocol was added and the addition of tricklectl to gather information and set parameters.
- trickle 1.05 (2003-04-23) Changes include compatibility fixes with openbsd/i386/ELF.
- trickle 1.04 (2003-04-07) Fixes a bug with nonblocking sockets.
- trickle 1.03 (2003-03-30) Fixes some small bugs, adds OpenBSD/MacPPC compatibility. fixes gnu getopt compatibility.
- trickle 1.02 (2003-03-20) Changes include the addition of OpenBSD/SPARC64 and NetBSD/Alpha compatibility. Fixes a few smaller bugs and sets nicer default options. Also trickle can now run independently of trickled.
- trickle 1.01 (2003-03-07) Changes include fixes with handling upload and download limits (thanks to jolan at cryptonomicon dot org for spotting it), addition of Solaris and OpenBSD/SPARC compatibility.
- trickle 1.0 (2003-03-05) Initial release.
trickle also has a freshmeat page and requires libevent version 0.6 or higher. trickle can be found in OpenBSD ports (/usr/ports/net/trickle) and is in Debian Unstable. There is also a package for Debian stable (Woody) here.
Thanks
Thanks go to Jolan Luff for testing and access to esoteric platforms, Tony Kurc for the awesome logo and Niels Provos, Gareth Watts, Jolan Luff and MESH for useful discussions and suggestions.
Benchmarks
A plot illustrating the effect of the smoothing algorithm used in trickle may be found here
Quirks
Note that on certain systems you may get the following error on “make”:
configure.in:220: error: do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS’ If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation.
This problem is easily circumvented by running make again.
When shaping bittorrent, it is quite slow on the “uptake” given the shaping effects of trickle.
Packages
Trickle is available in the various BSD port trees, and a few Linux distributions, kaneda@bohater.net.
- Slackware packages
Press
- Sweetcode mentioned trickle.
- There was an article about trickle in daemonnews.
- An article in the February 2005 edition of Linux Magazine.
Copyright (c) 2007 Marius Aamodt Eriksen <marius@monkey.org>