Jan 182012

Sometimes it’s useful to limit the bandwidth used by some of your programs, perhaps you want to limit your Browser or FTP client, and they dont’ have a native way to limit the input and/or output bandwidth they are using, there is a small application that can solve this problem for you: Trickle

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.

It allows you to limit the bandwidth consumption of a program without requiring all kinds of kernel patches, firewall configurations or root access to the machine on which you wish to use it. Trickle can run in collaborative and stand alone mode. In collaborative mode, trickle can limit the bandwidth used by a bunch of programs at the same time. In stand alone mode, trickle simply limits the program you specify.


Trickle it’s available on Debian and Ubuntu, so to install it you can use the standard package manager:

sudo aptitude install trickle

Basic Usage

The easiest way to use Trickle it’s in the standalone mode, you use it with a single command, in this method the syntax it’s :

trickle -d Download_Bandwidth -u Upload_Bandwidth command

Example 1 : Limit the download bandwidth at 20Kbps for wget

trickle -d 20 wget http://linuxaria.com

Example 2 : Limit to 200kpbs the download bandwidth for a system update via aptitude:

trickle -d 200 aptitude upgrade

Example 3: Start Firefox limiting its upload badwidth to 10 KB/s, and download to 20 KB/s.

trickle -u 10 -d 20 firefox

Running trickle as a daemon collaborative-mode

To start trickle in daemon mode and limit all the bandwidth, use the command trickled with the following syntax:

sudo trickled -d Download_Bandwidth -u Upload_Bandwidth

Example 1; start the daemon, and limit upload and download at 100KB

 trickled -d 100 -u 100

This will start the trickle daemon that will limit the total bandwidth available to all programs run via trickle to 100 KB/s both up and down. So if you run a single program via trickle, it can consume 100 KB/s. Two programs can each consume 50 KB/s, etc.

Trickle Configuration file

Trickle’s configuration file is located at /etc/trickled.conf. It contains two values by default, which are commented out.
An example of configuration could be:

Priority = 1
Time-Smoothing = 0.1
Length-Smoothing = 1
Priority = 2
Time-Smoothing = 5
Length-Smoothing = 10
Priority = 8

Priority numbers let you set one service to have a higher priority relative to another. Services with a low number will get more bandwidth than services with higher numbers. By using priorities, you can connect to a services such as SSH remotely even if your network bandwidth is maxed out.

The smoothing time determines with what intervals trickle will try to let the application transcieve data. Smaller values will result in a more continuous (smooth) session, while larger values may produce bursts in the sending and receiving data. Smaller values (0.1 – 1 s) are ideal for interactive applications while slightly larger values (1 – 10 s) are better for applications that need bulk transfer.

The smoothing length is a fallback of the smoothing time. If trickle cannot meet the requested smoothing time, it will instead fall back on sending length KB of data. The default value is 10 KB.

Final Notes

Trickle doesn’t work with setuid programs
The reason for this is that setuid programs ignore the LD_PRELOAD functionality for security reasons. Trickle requires this functionality to do its shaping. (It also doesn’t work with statically linked programs for the same reason.)

Trickle only works with programs that use the socket interface for transmitting and receiving data
Also, it only works with TCP connections, not with UDP connections.

Author Box:
Igor it’s an enthusiast of technology in general at the moment he’s working on a project about sharepoint
and as website programmer

Popular Posts:

Flattr this!

  One Response to “Manage your bandwidth with Trickle”

  1. This is really an very interesting and informative post. Hats off to this guy for sharing the superb knowledge on Trickle. Though I was known by the ,most part of this info but the only thing amazed me is Trickle only works with programs that use the socket interface for transmitting and receiving data
    Also, it only works with TCP connections, not with UDP connections. This will really help me to take a decision on configuring/buying it now.

    Thank you So much

    Prakash Ghai

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>