Gibt es eine Methode zur Simulation einer hohen Latenz?

11

Dies ist eine sehr gute Antwort zum Begrenzen der Bandbreite .

Jetzt ist Bandbreite nicht mein Hauptanliegen - Latenz ist.

Was passiert, wenn ich einige hundert Kilometer zwischen meinen Anwendungsservern und ihren Datenbankservern lege?

Ich suche nach einer Möglichkeit, die erwartete Verzögerung für jedes IP-Paket zu simulieren.

Nils
quelle

Antworten:

14

Sie können dies mit tun netem. Von ihrer Homepage :

Emulieren von Verzögerungen im Weitverkehrsnetz

Dies ist das einfachste Beispiel. Es fügt lediglich allen Paketen, die aus dem lokalen Ethernet gesendet werden, eine feste Verzögerung hinzu.

# tc qdisc add dev eth0 root netem delay 100ms

Ein einfacher Ping-Test zum Hosten im lokalen Netzwerk sollte nun einen Anstieg von 100 Millisekunden anzeigen. Die Verzögerung wird durch die Taktauflösung des Kernels (Hz) begrenzt. Auf den meisten 2.4-Systemen läuft der Systemtakt mit 100 Hz, was Verzögerungen in Schritten von 10 ms ermöglicht. Bei 2.6 ist der Wert ein Konfigurationsparameter von 1000 bis 100 Hz.

Spätere Beispiele ändern nur die Parameter, ohne die qdisc neu zu laden

Reale Weitverkehrsnetze weisen Variabilität auf, sodass zufällige Variationen hinzugefügt werden können.

# tc qdisc change dev eth0 root netem delay 100ms 10ms

Dies bewirkt, dass die zusätzliche Verzögerung 100 ± 10 ms beträgt. Die Variation der Netzwerkverzögerung ist nicht rein zufällig, um zu emulieren, dass es auch einen Korrelationswert gibt.

# tc qdisc change dev eth0 root netem delay 100ms 10ms 25%

Dies bewirkt, dass die hinzugefügte Verzögerung 100 ± 10 ms beträgt, wobei das nächste zufällige Element 25% vom letzten abhängt. Dies ist keine echte statistische Korrelation, sondern eine Annäherung.

Verzögerungsverteilung

Typischerweise ist die Verzögerung in einem Netzwerk nicht einheitlich. Es ist üblicher, eine Art Normalverteilung zu verwenden, um die Variation der Verzögerung zu beschreiben. Die Netem-Disziplin kann anhand einer Tabelle eine ungleichmäßige Verteilung angeben.

# tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal

Die tatsächlichen Tabellen (normal, pareto, paretonormal) werden im Rahmen der iproute2-Kompilierung generiert und in / usr / lib / tc abgelegt. So ist es mit einigem Aufwand möglich, eine eigene Verteilung basierend auf experimentellen Daten zu erstellen.

Chris Down
quelle
3
Großartig - und tcist sogar bei aktuellen SLES- und RHEL-Systemen vorhanden.
Nils