Wonder Shaper: limit interface bandwidth usage

cool_penguin_smallWonder Shaper can control the bandwidth usage of an interface and balance uplink downlink speeds. The intention is similar to tools like NetHogs or trickle. The utility is a shell script that uses tc for traffic shaping and QoS for an interface. Outgoing requests are placed in queues of different priorities and incoming ones are controlled by packet dropping.

The stated goals of the project are:

  • Maintain low latency for interactive traffic. Services like Telnet or SSH should not appear sluggish.
  • Allow surfing at reasonable speeds during upload and download.
  • Make sure uploads don’t harm downloads, and vice versa.

Installation

To install Wonder Shaper on Ubuntu:

$ sudo apt-get install wondershaper

Usage

  • Show the status of traffic shaping on an interface
    $ wondershaper wlan0
  • Remove traffic shaping from an interface
    $ wondershaper clear wlan0
  • Shape traffic for an interface by specifying downlink and uplink speeds in kilobits per second
    $ wondershaper [ interface ] [ downlink ] [ uplink ]
    e.g.
    $ wondershaper wlan0 100000 20000

Webpage: Wonder Shaper

NetHogs: monitor per process network traffic

NetHogs shows the real-time network bandwidth usage on an interface by process. It is a useful tool for those situations when you want to know – who is using all my bandwidth? Currently NetHogs supports the following:

  • Shows TCP download and upload speed per process
  • Supports both IPv4 and IPv6
  • Supports both Ethernet and PPP

NetHogs has to be run with root privileges and target interface name as parameter. If no interface name is provided, NetHogs tries eth0. Example usage:

$ sudo nethogs wlan0

Default refresh rate is update per second. It can be controlled by using the -d option:

-d seconds

There are some interactive controls to change the display or quit:

m : cycle between display modes (kb/s, kb, b, mb)
r : sort by 'received'
s : sort by 'sent'
q : quit

Webpage: NetHogs

Disconnect: ensure online privacy

Disconnect is a browser plugin which enhances your online privacy by blocking invisible tracking websites. It has an intuitive interface and can also show you the count of blocked trackers. The number can be overwhelming sometimes, e.g. opening the Yahoo! homepage shows 45 trackers blocked! It saves your bandwidth and reduces the number of your online footprints. The types of trackers it can detect and block are Ads, Analytics, Social and Content. Works on Firefox and Google Chrome.

Disconnect Search is a Beta plugin which lets you search privately without being tracked. Currently it supports Google, Bing, Yahoo, Blekko and DuckDuckGo. It can also integrate itself to the omnibox (address bar) search or search from anywhere (now a Beta feature). It anonymizes your search terms from search engines, resulting websites and ISPs. An alternative to this plugin is to use Startpage as your default search engine.

Webpage: Disconnect, Disconnect Search

[Courtesy: Jester Raiin]

trickle: manage bandwidth usage on Linux

cool_penguin_smallEveryone encounters this common situation – one of the processes using the whole bandwidth and others starving appearing slow. trickle is the solution on Linux. It is a network bandwidth manager. Before going into the usage we’ll discuss the requirements for trickle:

  • The program you want to monitor should be dynamically linked to glibc (the libc.so shared library). The reason is that trickle is a userspace application that uses the loader preloading technique. Essentially it provides a new socket interface and the original one is masked. To know whether your program meets the requirement use ldd.
    $ ldd /usr/bin/axel|grep libc.so
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff552ce1000)

    So yes, axel can be a candidate if it meets the next requirement.

  • The program must use the TCP protocol. To check that, use netstat after running the program.
    $ netstat -pa|grep axel
    tcp 0 0 192.168.0.16:37901 alpinecurrant.cano:http ESTABLISHED 10966/axel

    axel does use TCP! axel is fit for being used with trickle.

Trickle can be used in 2 modes – as a standalone utility for each program or as a daemon that can handle multiple programs fired with trickle.

  • As a standalone program
    trickle -u 128 -d 64 myprogram

    where u denotes upload limit and d denotes download limit in KB/s.

  • As a daemon
    trickled -u 512 -d 256

    sets the cumulative limit for all the programs run using trickle.

trickle can be used by non-root users. You can run your favourite terminal session using trickle and all programs (matching trickle’s criteria) run from the terminal will be monitored by trickle.

trickle is available in the default repositories on many distros, including Ubuntu.

Webpage: trickle