Netzwerkverbindungen simulieren

Nicht in allen Regionen steht DSL als Internetanbindung zur Verfügung und viele Anwender sind auf langsame Verbindungen mit Modem oder ISDN angewiesen. Auch breitbandiger Datenfunk mit UMTS oder WiMAX steht nicht überall zur Verfügung und die 2-Wege-Satellitenverbindung ist mit der prinzipbedingten hohen Latenzzeit nicht immer ein Geschwindigkeitswunder. Betrachtet man dagegen aktuelle Websites oder „Internetanwendungen“, kann man zwar sicher sein, dass die Webdesigner und Programmierer selbst über Internanbindungen mit hohen Datenraten verfügen, dabei aber Verdrängen, dass er Benutzer gibt denen dieser Luxus fehlt.

Diesen fehlenden Blick über den Tellerrand beobachtet man schon seit Jahren beim Ressourcenverbrauch von Software. Wie sonst wollte man erklären, dass mit Vista ein Betriebssystem auf den Markt gebracht wird, das über kaum sinnvolle technische Neuerungen verfügt und trotzdem Hardware die älter als ein Jahr ist auf den Schrott verdammt. Nicht viel besser sieht es mit den Officeprogrammen des gleichen Herstellers aus und auch in der Open-Source-Welt finden sich in der Beschreibung neuer Versionen nur selten Begriffe wie „geringerer Speicherverbrauch“ und „niedrigere CPU-Auslastung“. Dabei könnte man, den Willen dafür vorausgesetzt, bei der Entwicklung sehr einfach mit langsamen Rechner testen. Im Fundus findet sich bestimmt ein Pentium II mit 128 MB und die Entwickler könnten am eigenen Leib erfahren wie sich ihre Programme von Benutzern bedienen lassen, die nicht jedes Jahr in neue Computerhardware investieren. Schwieriger wird es wenn es darum geht langsame Internetanbindungen zu simulieren und zu testen ob eine Anwendung Modem-kompatibel ist oder mit der hohen Latenzzeit einer Satellitenverbindung klar kommt.


Für den professionelen Einsatz gibt es dafür Leitungssimulatoren, deren Kosten sich nur für große Entwicklungsabteilungen lohnen dürften. Wer seine Webseiten oder Anwendungen unter Linux entwickelt ist fein raus und kann auf ein kostenloses Programm zurückgreifen, das eigentlich in jeder aktuellen Distribution zur Verfügung steht. Mit tc aus dem Paket iproute2 kann man sehr einfach Netzwerkverbindungen simulieren bzw. emulieren. Am Beispiel von Ubuntu will ich ein paar einfache Fälle beschreiben.

Angenommen der Rechner ist mit der Ethernetschnittstelle eth0 zum Internet verbunden und man möchte eine Modem-Verbindung simulieren, dann lautet der zugehörige Befehl (im Terminal eingeben):

sudo tc qdisc add dev wlan0 root tbf rate 16kbit buffer 1000 limit 2000

Meiner Erfahrung nach ist es sinnvoll der Wert für die Bandbreite, hier 16kbit, so zu wählen, dass er etwa 1/3 bis 1/4 der Modemleistung entspricht. Im konkreten Beispiel wären das 56 kBit/s.

In einigen Fällen ist nicht die Bandbreite der Internetanbindung das Problem, sondern die Latenzzeit. Diese wird vor allem durch die Gesamtlänge aller Leitungen durch die die Pakete geschickt werden bestimmt und zusätzlich durch die beteiligten Netzknoten (Router etc.) erhöht. So ist z.B. bei einem Zugriff auf einen Webserver in den USA die Latenzzeit mindestens dreimal so hoch wie bei Zugriff auf einen Server der in Deutschland steht. Subjektiv wird diese Latenzzeit auch als langsam empfunden, ob wohl es sich faktisch „nur“ um eine Verzögerung handelt. Bei interaktiven Anwendungen (RDP, X11) können schon 200ms Verzögerung als lästig emfunden werden, mehr als 500ms machen das Arbeiten schon fast unmöglich. Um zu testen ob man mit einem Terminalserver in den USA noch zurecht kommt, hilft dieser Befehl weiter:

sudo tc qdisc add dev eth0 root netem delay 200msec

Die Ausgabe von ping auf einen gut erreichbaren Server sieht dann so aus.

PING www.heise.de (193.99.144.85) 56(84) bytes of data.
64 bytes from www.heise.de (193.99.144.85): icmp_seq=1 ttl=249 time=252 ms

Wird die zusätzliche Latenzzeit wieder mit dem dem Befehl

sudo tc qdisc del dev eth0 root

gelöscht, so ist der ping wieder „schneller“:

PING www.heise.de (193.99.144.85) 56(84) bytes of data.
64 bytes from www.heise.de (193.99.144.85): icmp_seq=1 ttl=249 time=50.5 ms

ping lässt dabei natürlich keine Aussage auf die Benutzerbarkeit von RDP über eine solche Leitung zu und dient hier nur zur Veranschaulichung. Um die Benutzbarkeit richtig zu testen sollte man über die „verlangsamte“ Leitung einfach auf den Terminalserver um die Ecke zugreifen. Unter Linux gibt es daür das Programm rdesktop.

Mit tc lässt sich auch die Schwankung der Latenzzeit und Paketverlust simulieren. Beides Dinge die im Ideal eigentlich nicht vorkommen sollten, in der Praxis aber recht häufig sind. Um z.B. eine Satellitenverbindung zu emulieren, die zwar eine ähnlich hohe Bandbreite wie DSL hat, dafür aber viel höhere Latenzzeiten und Verlustraten hat, würde ich folgenden Befehl verwenden:

sudo tc qdisc add dev wlan0 root netem delay 600ms 100msec loss 0.3%

Beginnen wir mit dem letzten Parameter. Mit „loss 0.3%“ sorgt tc dafür, dass die simulierte Leitung einen Paketverlust von 0,3% hat und „delay 600ms 100msec“ führt zu einer schwankenen Latenzzeit von 500ms – 700ms (600ms +/- 100ms). Wie man sieht, lassen sich damit auch komplexe Leitungsfehler simulieren.

Wer gefallen an tc und der Netzwerksimulation gefunden hat sollte sich die ausführliche Anleitung bei der linux-foundation durchlesen. Dort findet sich auch eine Beschreibung wie die Simulation der Bandbreite und der Latenzzeit kombiniert werden kann.
Wer zwar gerne die Aspeke der Netzwerkqualität in seinen persönlichen Testzyklus aufnehmen will, aber auf seinem PC kein Linux booten will, dem sei WANEM empfohlen. Mit WANEM kann ein Router aus normaler PC Hardware aufgebaut werden, der einfach zwischen den eigenen Rechner und der Internetanbindung geschaltet wird. Über eine webbasierte Benutzeroberfläche können dann diverse Leitungsparameter eingestellt werden.

Posted in IT | Tagged , , , , , , | Permalink

4 Antworten auf Netzwerkverbindungen simulieren

  1. Stefan R. sagt:

    Trotzdem wäre es mir ganz recht wenn ich endlich volle DSL Geschwindigkeit hätte und nicht nur dieses kastrierte T-DSL light. Weisst Du vielleicht irgend eine Alternative?

  2. @Stefan R.
    So ein Zufall, das Thema hatte ich gestern an anderer Stelle schon einmal und in der aktuellen c’t gibt es ein paar Artikel dazu. Kurz zusammengefasst die Alternativen:
    1. TV-Kabel
    In den Städten verfügbar und meist auch in größeren Gemeinden auf dem Land. Aber dort wo gar kein DSL möglich ist, klappt es mit dem TV-Kabel meist auch nicht. Dort wo es erhältlich ist, ist es eine gute Alternative zu DSL.
    2. UMTS (HSDPA)
    Versorgung noch nicht flächendeckend möglich. Sofern eine Verbindung möglich ist, hat man mit relativ hohen Latenzzeiten zu rechnen. Das macht beim Surfen nichts, für interaktive Anwendungen oder Online-Spiele wie WoW ist es nur bedingt zu gebrauchen.
    3. Ein-Wege-Satellit (skyDSL)
    Flächendeckend möglich. Zusätzlich zum SAT Anschluss ist ein Modem oder ISDN für den Upstream notwendig. Wirklich sinnvoll nur zum Surfen bzw. Mails abrufen.
    4. Zwei-Wege-Satellit (Astra2connect)
    Flächendeckend möglich, Up- und Downstream gehen über die Satellitenverbindung. Recht hohe Latenzzeiten (500-700ms) machen es für Anwendungen und Online-Spiele unbrauchbar. Für alles andere ist es wunderbar geeignet.
    5. WiMAX
    Netz befindet sich erst im Aufbau. Technisch gesehen ist es die Konkurrenz zu UMTS/HSDPA.
    6. SDSL Verbindung (Standleitung)
    Eigentlich das Ideal für die Internetanbindung, aber sehr teuer (> 150€ im Monat). Lohnt sich aber evtl. wenn mehrere die Leitung gemeinsam nutzen. Die Verfügbarkeit ist schwierig zu beurteilen. Teilweise bekommt man SDSL Anschlüsse an Orten wo die T-Com schon seit Jahren kein DSL mehr anschliesst, auf der anderen Seite kann es selbst in Ballungszentren schwierig werden eine Standleitung zu bekommen.

    Was man bei den potentiellen Alternativen immer bedenken sollte sind die Hardwarekosten. Eine Datenfähige Satellitenanlage oder eine WiMAX Empfangseinheit kostet schon mal 300€.
    Bzgl. WiMAX lohnt es vielleicht bei den Anbietern mal nachzufragen wie es um den Ausbau steht. Vielleicht lässt sich ja das eine oder andere Dorf schneller anbinden wenn schon ein paar potentielle Kunden da sind.

  3. @Stefan R.
    Da mir für die Werbung keiner Geld gibt natürlich nicht 😉
    Im Endeffekt ist es ja auch die Frage was tatsächlich verfügbar ist. Wenn ein TV-Kabel im Haus liegt würde ich wahrscheinlich das nehmen. Falls man darüber auch telefonieren will würde ich mich aber auf ein wenig Hackelei bei der Umstellung gefasst machen.
    Satellit kommt für mich nicht in Frage da ich auf kurze Latenzzeiten angewiesen bin (nein, nicht zum Spielen!). Würde ich nur surfen, wäre Astra2connect meine Wahl.
    In der DSL-Diaspora würde ich anfangen zu improvisieren und mich mit ein paar Nachbarn zusammentun. Vielleicht schafft man es damit sogar eine Funkstrecke zur nächsten DSL-Zone aufzubauen. Bei Freifunk finden sich möglichweise sogar Mitstreiter, die das gleiche Problem haben oder technische Ratschläge geben können.

  4. Stefan R. sagt:

    Gibt es eine Lösung oder einen Anbieter den Du empfehlen könntest?