Verwenden mehrere Nutzer einen Internetanschluss gemeinsam, dann passiert es schnell, dass große Uploads die Geschwindigkeit der Downloads anderer Teilnehmer massiv beeinträchtigen. Lädt beispielsweise ein Kollege die komplette Sammlung seiner letzten Urlaubsbilder hoch oder betreibt einen Peer-to-Peer-Client wie Edonkey oder Bittorrent, wird das Surfen für die restlichen Nutzer des Zugangs schnell zur Qual. Mit dem Wondershaper formen Sie den Netzwerkverkehr so, dass stets genügend Bandbreite für alle übrig bleibt.

Hinter den Kulissen

Hierzulande verwenden die meisten Nutzer ADSL, dessen Upload-Datenrate im Schnitt um das zehn- bis zwanzigfache unter jener der Downloads liegt. Im Normalfall stellt das kein Problem dar, denn die meisten Anwender laden deutlich größere Datenmengen herunter als hoch. Ist der Upload jedoch einmal für längere Zeit vollständig ausgelastet, bricht auch der Download ein.

Der Grund dafür liegt in der Arbeitsweise des Transmission Control Protocols (TCP). Es verlangt vom Empfänger eines Datenpaketes den Versand einer Bestätigung über das intakte Eintreffen. Erst danach schickt der Versender das nächste Datenpaket los. Ist nun der eigene Upload ausgelastet, stellt sich dieses so genannte SYN/ACK-Paket hinten in der Warteschlange der zum Versand anstehenden Datenpakete an. Dadurch unterbleiben weitere Transfers von Datenpaketen vom Sender so lange, bis das SYN/ACK-Paket verschickt und vom Sender empfangen wurde.

Traffic Shaping [1] erlaubt das Eingreifen in die Reihenfolge der zu versendenden Datenpakete. Die meisten Linux-Distributionen bringen die Voraussetzungen dafür mit dem Userspace-Programm namens tc (kurz für "Traffic Control") von Haus aus mit. Die Komplexität von Tc erfordert es aber, ein komplettes Skript schreiben, das den Netzwerkverkehr in Klassen einteilt und diese individuell priorisiert. Hier kommt Wondershaper [2] ins Spiel, das den Aufwand dabei deutlich reduziert.

Das Skript teilt den ausgehenden Netzwerkverkehr in Klassen ein und bevorzugt Datenpakete von interaktiven Anwendungen, wie VoIP oder Internet-TV. Das vermeidet Verzögerungen in der Übertragung, die der Benutzer durch Sprachaussetzer oder Bildstörungen bemerken würde. Andere Pakete, deren Zustellung warten kann – etwa Datentransfers via FTP – stellt Wondershaper bei ausgelasteter Datenleitung hinten an. Diese Technik nennt sich im Jargon der Netzwerktechniker "Quality of Service" oder kurz QoS.

Traffic Shaping

Traffic-Shaping eignet sich vornehmlich für den Einsatz auf Routern, da nur diese in der Lage sind, die Upload-Bandbreite zu regeln. Entweder Sie verwenden einen Router Marke Eigenbau – beispielsweise einen alten Rechner mit IPCop [3] – oder ein Gerät wie den Linksys WRT54GL [4] mit den alternativen Firmware-Systemen OpenWrt [5] oder DD-WRT [6]. Um Wondershaper zu nutzen, laden Sie das Paket von der Heft-DVD oder der Projektseite herunter und entpacken es. Da es sich lediglich um ein Skript handelt, ist eine Installation nicht notwendig.

Bevor Sie damit beginnen, das eigene Netzwerk in Form zu bringen, ermitteln Sie zunächst die Ping-Reaktionszeiten, um zu prüfen, ob die Einstellungen von Wondershaper greifen. Da der Test nur unter Vollast des Uploads brauchbare Informationen liefert, laden Sie beispielsweise eine große Datei auf einen eigenen Webspace hoch oder versenden eine Mail mit großem Anhang. Senden Sie währenddessen einen Ping zu Ihrem Gateway und sehen Sie sich die Reaktionszeiten an (Listing 1, unten). Die IP-Adresse des Gateways sowie die verwendete Netzwerkschnittstelle ins Internet ermittelt Sie das Kommando route -n (Listing 1, oben).

Listing 1
$ route -n
Kernel-IP-Routentabelle
Ziel         Router   Genmask         Flags […] Iface
88.66.0.1    0.0.0.0  255.255.255.255 UH    […] ppp0
192.168.0.0  0.0.0.0  255.255.255.0   U     […] eth0
169.254.0.0  0.0.0.0  255.255.0.0     U     […] eth0
0.0.0.0      0.0.0.0  0.0.0.0         U     […] ppp0
$ ping 88.66.0.1
PING 88.66.0.1 (88.66.0.1) 56(84) bytes of data.
64 bytes from 88.66.0.1: icmp_seq=1 ttl=255 time=594 ms
[…]

Während bei freier Leitung Reaktionszeiten von 10 Millisekunden üblich sind, steigen sie bei ausgelastetem Upload im Beispiel auf über 500. Webseiten laden entsprechend langsamer, Internet-Telefonie ist nicht mehr möglich. Aktivieren Sie danach Wondershaper, beachten Sie dabei aber, das richtige Netzwerkgerät (ppp0, eth0,…) zu verwenden. In diesem Fall wäre es ppp0. Generell starten Sie das Skript mit dem Aufruf

$ sudo wondershaper Interface Download-Rate Upload-Rate

Die Transferraten geben Sie in kbit/s an, also beispielsweise wondershaper ppp0 15000 900 für eine 16-Mbit/s-Anbindung. Verfügen Sie über eine 2-Mbit/s-Anbindung, geben Sie für den Download 2000 an. Sie sollten immer ein paar Prozent vom theoretisch maximalen Wert abziehen – das selbe gilt für die Upload-Bandbreite. Anschließend schicken Sie weitere Pings ab. Verbessern sich die Ping-Zeiten nicht, dann senken Sie den Upload-Wert langsam weiter ab, bis Sie akzeptable Reaktionszeiten erhalten. Im Testaufbau griffen die Einstellungen bei 15000 kbit/s Download- und 600 kbit/s Upload-Bandbreite (Listing 2). Mit diesen Einstellungen war dann auch Surfen trotz Auslastung des Uploads problemlos möglich.

Listing 2
$ sudo wondershaper ppp0 15000 900
$ ping 88.66.0.1
PING 88.66.0.1 (88.66.0.1) 56(84) bytes of data.
64 bytes from 88.66.0.1: icmp_seq=2 ttl=255 time=520 ms
[…]
$ sudo wondershaper ppp0 15000 600
$ ping 88.66.0.1
PING 88.66.0.1 (88.66.0.1) 56(84) bytes of data.
64 bytes from 88.66.0.1: icmp_seq=1 ttl=255 time=7.25 ms
[…]

Autostart

Damit Wondershaper automatisch beim Aufbau einer DSL-Verbindung startet, tragen Sie das entsprechende Kommando in die Datei /etc/ppp/ip-up.local ein:

# Set Wondershaper
wondershaper ppp0 15000 600

Alternativ passen Sie die Datei /etc/network/interfaces an. Dort führen Sie Wondershaper über die Kommandos up und down aus. In Listing 3 kontrolliert das Skript die Bandbreite der Netzwerkschnittstelle eth0. Weitere ausführliche Hilfestellungen finden Sie in der README-Datei des Programms sowie in seiner Manpage.

Listing 3
# The primary network interface
auto eth0
iface eth0 inet dhcp
up /sbin/wondershaper eth0 15000 600
down /sbin/wondershaper clear eth0

Erfolgskontrolle

Den Erfolg der Bandbreitenkontrolle überprüfen Sie mit einem Geschwindigkeitstest, wie ihn etwa Speedtest.net [7] zur Verfügung stellt. Im Beispielszenario war vor der Reglementierung praktisch kein Download mehr möglich, über die 16-Mbit/s-Anbindung gingen nur mehr müde 0,28 Mbit/s. Nach dem Start von Wondershaper stieg der Wert auf 7,50 Mbit/s (Abbildung 1). Selbst bei freier Leitung verbessert sich die Download-Geschwindigkeit zugunsten einer etwas schlechteren Upload-Leistung.

Abbildung 1: Der Einsatz von Wondershaper macht sich deutlich bezahlt. Ohne Wondershaper ist selbst das Betrachten von Webseiten unerträglich langsam.

Fazit

Wondershaper kann natürlich nicht zaubern und einen vollständig ausgefüllten Upload freimachen, doch er verhindert zuverlässig, dass Uploads den Download blockieren. Gerade, wenn mehrere Teilnehmer sich eine Leitung ins Internet teilen, lohnt sich der Einsatz des Skripts allemal.

Glossar

ADSL

Asymmetric Digital Subscriber Line. Im Gegensatz zu SDSL (Symmetric DSL) ist die Bandbreite für den Download hier deutlich größer als jene für den Upload.

Dieses Heft als PDF kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare