Trickle

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Trickle ist eine Traffic Shaping-Software, mit der die Datenübertragungsrate beeinflusst werden kann.

Um den Verkehr in einem Rechnernetz zu regeln benötigt Trickle nicht einmal Administratorrechte. Normalerweise stellt Glibc den Anwendungen einige Netzwerkfunktionen zur Verfügung, mit denen diese Internetverbindungen herstellen, Daten übertragen und so weiter. Trickle lädt beim Start über den LC_PRELOAD-Mechanismus (eine Umgebungsvariable, die das Laden dynamischer Bibliotheken steuert) eine eigene dynamische Bibliothek, die Netzwerkfunktionen enthält. Sie funktionieren so wie die originalen, führen aber zusätzlich über den Datenverkehr Buch.

Installation

Vorbedingung

$ tar xzf trickle-1.06.tar.gz
$ cd trickle-1.06
$ ./configure
$ make
In file included from trickled.c:33:
/usr/include/netinet/in.h:136: error: two or more data types in declaration specifiers
/usr/include/netinet/in.h:136: error: two or more data types in declaration specifiers
make: *** [trickled.o] Fehler 1

So ist eine Installation natürlich nicht möglich... Um kurzfristig dennoch zum Ziel zu kommen, wurde Zeile 136 der Datei "/usr/include/netinet/in.h" für die Dauer des make-Vorgangs auf einen Datentyp verkürzt. Statt

typedef uint32_t in_addr_t;

wurde die Zeile verkürzt zu:

typedef in_addr_t;

Nach erfolgreichem Durchlauf von make muss die Zeile natürlich wieder in den ursprünglichen Zustand gebracht werden.

$ make
# checkinstall
# yast -i /usr/src/packages/RPMS/i386/trickle-1.06-1.i386.rpm

FAQ

Einschränkungen

Trickle funktioniert zwar mit den meisten, aber nicht mit allen Programmen. Weil der LC_PRELOAD-Mechanismus dynamische Bibliotheken benutzt, funktioniert Trickle nicht mit sogenannten statischen Bibliotheken, die nicht die Glibc verwenden. Welcher Art das Programm ist, das Trickle kontrollieren soll, kann mit ldd ermittelt werden.

$ ldd /usr/bin/wget | grep libc.so
       libc.so.6 => /lib/tls/libc.so.6 (0x40166000)

Gibt ldd nichts aus, so handelt es sich vermutlich um ein statisches Programm.

Das kann mit dem Befehl "file <Programmname>" verifiziert werden, das den tatsächlichen Dateityp des Programms ausgibt. Genauso versagt Trickle bei sogenannten SUID-Programmen, bei denen der LC_PRELOAD-Mechanismus aus Sicherheitsgründen ausgeschaltet ist.

Weblinks