Gefällt dir dieser Artikel?

Linux: Bandbreite drosseln (für Browser und Co)

erschienen in der Kategorie Webdesign, am 11.12.2014
Schnatterente
Hier kam gerade die Frage per Mail rein, ob ich eine gute Möglichkeit kenne, wie man unter Linux die für eine Anwendung verfügbare Internet-Bandbreite begrenzen kann.

Genauer gesagt geht es darum, dass jemand eine Webseite entwickelt, welche in kurzer Zeit sehr große Datenmengen (viele Full-HD-Bilder) überträgt. Der Entwickler sitzt hinter einer 1.000-MBit/s-Leitung (Studenten-Wohnheim), mit der das natürlich keine große Herausforderung ist. Nun würde er gern testen, wie sich das Ganze zum Beispiel mit einer DSL-6.000-Leitung anfühlt.

Erstaunlicherweise scheint es für diesen Zweck kaum funktionierende Browser-Plug-ins (für Firefox oder Chromium) zu geben (zumindest keine, die noch weiter gepflegt werden und mit den aktuellen Browser-Versionen funktionieren).

Browser-Bandbreite begrenzen mit Trickle

Einen Lösungsvorschlag für das Problem habe ich aber dennoch: die kleine Linux-Anwendung "Trickle". Mit Trickle kann man die mögliche Down- und Uploadrate für jede beliebige Linuxanwendung (siehe Kommentar von claw) die meisten Linuxanwendungen begrenzen, also auch die von Firefox oder Chromium.

Alles, was man dazu tun muss, ist das jeweilige Programm mithilfe von Trickle zu starten. Am Beispiel von Firefox sieht das so aus:
trickle -d 1000 -u 500 firefox

Der so gestartete Firefox-Browser kann nur 1.000 Kilobyte pro Sekunde herunter- und 500 Kilobyte pro Sekunde hochladen.

Somit lässt sich leicht testen, wie schnell eine Webseite unter verschiedenen Bedingungen geladen wird.
Trickle hat übrigens noch ein paar mehr Features parat, wie die Ausgabe von trickle -h zeigt:
Usage: trickle [-hvVs] [-d ] [-u ] [-w ] [-t ]
[-l ] [-n ] command ...
  -h Help (this)
  -v Increase verbosity level
  -V Print trickle version
  -s Run trickle in standalone mode independent of trickled
  -d Set maximum cumulative download rate to KB/s
  -u Set maximum cumulative upload rate to KB/s
  -w Set window length to KB
  -t Set default smoothing time to s
  -l Set default smoothing length to KB
  -n Use trickled socket name
  -L Set latency to milliseconds


Trickle ist in den meisten Linux-Distros (Debian, Fedora, Ubuntu) direkt im Paketmanager zu finden. Wer (wie ich) Gentoo nutzt, kann sich den Sourcecode laden und Trickle per Hand kompilieren oder auf ein Overlay zurückgreifen.

Geschnatter

4 Kommentare, selbst mitschnattern << < Seite 1/1 > >>
Karsten, am 11.12.2014 um 22:57 Uhr
Schöner Tipp. Alternativ kann man auch zur Drosselkom wechseln und einfach fix den Traffic ausschöpfen. ;)
claw, am 12.12.2014 um 07:54 Uhr
"Mit Trickle kann man die mögliche Down- und Uploadrate für jede beliebige Linuxanwendung begrenzen,"

Nein!

"Currently, trickle supports the shaping of any SOCK_STREAM (see
socket(2)) connection established via the socket(2) interface. Furthermore, trickle will not work with statically linked executables, nor with setuid(2) executables. "
Antwort: Stimmt, die Aussage oben war etwas unpräzise. Danke für den Hinweis.
Mirco, am 12.12.2014 um 08:56 Uhr
Auch nicht übel.
Ich hatte mir da mal beholfen, mit Hilfe von ipfw den passenden Port zu drosseln

sudo ipfw pipe 1 config bw 1Mbit/s
sudo ipfw add 1 pipe 1 src-port 80

oder die passende IP

ipfw pipe 1 config bw 10Kbit
ipfw add 2 pipe 1 ip from me to 64.81.84.114
Antwort: Ja, hab ich so auch schon gemacht. Aber mit trickle gehts noch ein bisschen schneller und unkomplizierter. :)
Anonym, am 29.12.2014 um 15:54 Uhr
Das es keine Browserplugins gibt, ist korrekt. Die braucht es aber auch gar nicht, wenn der Browser es von Haus aus kann. ;) Zumindest für Chrome/Chromium siehe https://developer.chrome.com/devtools/docs/device-mode#network-conditions (ist zugegebenermaßen in den Enticklertools hinter einem kleinen Smartphone oben links versteckt…)

Das Tool hat zwar nicht die großen Auswahlmöglichkeiten, aber gerade in den unteren Regionen (56kbit/s, EDGE etc.) ist es mal ganz interessant zu sehen, wie lange die eigene Website zum Laden braucht.