Trickle: A Userland Bandwidth Shaper for Unix-Like Systems
As with any finite resource, it is often necessary to apply policies to the shared usage of network resources. Existing solutions typically implement this by employing traffic management in edge routers. However, users of smaller networks regularly find themselves in need of nothing more than ad-hoc rate limiting. Furthermore, the networks in question are typically unmanaged, with no network administrator(s) to manage complicated traffic management schemes. Trickle fills this gap by providing a simple and portable solution to rate limit the TCP connections of a given process or group of processes. Trickle works by taking advantage of the Unix dynamic loader's preloading functionality to interposition itself in front of the libc API interfaces that are used for sending and receiving data through BSD network sockets.