[gelöst] Künstlich Latenz am Interface erzeugen

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
marting
Beiträge: 61
Registriert: 30.09.2008 17:31:05

[gelöst] Künstlich Latenz am Interface erzeugen

Beitrag von marting » 20.06.2012 18:13:42

Hi,
ich möchte an einem Interface künstliche Latenz erzeugen (von 20ms auf ca. 1000ms). Also, dass ein ping auf google.de nich mehr 20ms, sondern 1000ms dauert.
Kann mir jemand einen Ansatzpunkt liefern, womit ich das erreichen könnte? Mein erster Gedanke war iptables, aber eigentlich hat das damit wenig zu tun.
Viele Grüße
Martin
Zuletzt geändert von marting am 21.06.2012 12:26:42, insgesamt 1-mal geändert.

marting
Beiträge: 61
Registriert: 30.09.2008 17:31:05

Re: Künstlich Latenz am Interface erzeugen

Beitrag von marting » 20.06.2012 18:17:48

Für Mac gibt es das hier:
http://www.maclife.de/mac/software/util ... internetve

Auf die Gui kann ich verzichten, aber sonst sieht das sehr gut aus. Ginge ggf. auch mit Gui, ich habe noch nen Rechner mit X da, den ich dafür hernehmen könnte.

Edit: Für Windows sehe ich auch grad was:
http://www.softperfect.com/products/connectionemulator/
Da wird es doch auch was passendes für Linux geben ...

marting
Beiträge: 61
Registriert: 30.09.2008 17:31:05

Re: Künstlich Latenz am Interface erzeugen

Beitrag von marting » 20.06.2012 18:30:31

Ich werde es jetzt mal mit tc und netem probieren.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Künstlich Latenz am Interface erzeugen

Beitrag von Cae » 20.06.2012 20:15:45

If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

marting
Beiträge: 61
Registriert: 30.09.2008 17:31:05

Re: Künstlich Latenz am Interface erzeugen

Beitrag von marting » 21.06.2012 12:26:18

Ich habe es jetzt mit tc und netem hinbekommen, das ist etwas vielfältiger als der gepostete Link - aber vielen Dank.
Meine Schwierigkeit war, dass das Kommando
tc qdisc change dev eth0 root netem delay 100ms 10ms
immer den Fehler "RNETLINK answers: No such file or directory" brachte. Deshalb habe ich den Kernel neu kompiliert und NETEM von Modul auf ON geändert. Hat aber auch nicht funktioniert.
Irgendwann bin ich drauf gekommen, dass ich das Interface erst mal adden muss - folgendes funktioniert also auch mit dem Standardkernel auf Anhieb :-)
tc qdisc add dev eth0 root netem delay 100ms 10ms

Aber vielen Dank!

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: [gelöst] Künstlich Latenz am Interface erzeugen

Beitrag von Cae » 03.07.2012 23:00:44

Ich hatte heute mit diesem Thema zu tun und habe ebenfalls tc verwendet, das Beispiel aus tc-tbf(8) mit abgewandelten Werten. Allerdings ist latency da wohl eher als ein Mittelwert zu sehen, zumindest habe ich das in der Kürze nicht auf einen halbwegs konstanten Wert festnageln können.
marting hat geschrieben:dass ich das Interface erst mal adden muss
Andersherum: Das Interface hat bestimmte Vorgaben, die man ändern (change) kann. Am Anfang ist die Liste der Vorgaben leer, also kommt es zu dem eher irreführenden Fehler, bis man eine Vorgabe ge-add-et hat.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

marting
Beiträge: 61
Registriert: 30.09.2008 17:31:05

Re: [gelöst] Künstlich Latenz am Interface erzeugen

Beitrag von marting » 04.07.2012 13:32:45

Cae hat geschrieben:
marting hat geschrieben:dass ich das Interface erst mal adden muss
Andersherum: Das Interface hat bestimmte Vorgaben, die man ändern (change) kann. Am Anfang ist die Liste der Vorgaben leer, also kommt es zu dem eher irreführenden Fehler, bis man eine Vorgabe ge-add-et hat.
Das ist natürlich, was ich ausdrücken wollte.
Cae hat geschrieben:Ich hatte heute mit diesem Thema zu tun und habe ebenfalls tc verwendet, das Beispiel aus tc-tbf(8) mit abgewandelten Werten. Allerdings ist latency da wohl eher als ein Mittelwert zu sehen, zumindest habe ich das in der Kürze nicht auf einen halbwegs konstanten Wert festnageln können.
Ne, das funktioniert wunderbar und es wird genau der angegebene Wert verwendet:

Code: Alles auswählen

root@mg4:~# ping -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=51 time=12.7 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=51 time=14.3 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=51 time=12.4 ms
64 bytes from 8.8.8.8: icmp_req=4 ttl=51 time=14.3 ms
64 bytes from 8.8.8.8: icmp_req=5 ttl=51 time=12.5 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 12.443/13.274/14.357/0.875 ms
root@mg4:~# tc qdisc add dev eth0 root netem delay 100ms
root@mg4:~# ping -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=51 time=112 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=51 time=112 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=51 time=112 ms
64 bytes from 8.8.8.8: icmp_req=4 ttl=51 time=114 ms
64 bytes from 8.8.8.8: icmp_req=5 ttl=51 time=113 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4002ms
rtt min/avg/max/mdev = 112.572/113.161/114.110/0.627 ms
root@mg4:~# tc qdisc add dev eth0 root netem delay 1000ms
RTNETLINK answers: File exists
root@mg4:~# tc qdisc change dev eth0 root netem delay 1000ms
root@mg4:~# ping -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=51 time=1014 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=51 time=1014 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=51 time=1012 ms
64 bytes from 8.8.8.8: icmp_req=4 ttl=51 time=1012 ms
64 bytes from 8.8.8.8: icmp_req=5 ttl=51 time=1012 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4012ms
rtt min/avg/max/mdev = 1012.672/1013.395/1014.492/1.342 ms, pipe 2
root@mg4:~# tc qdisc del dev eth0
Was ich mir vorstellen könnte: Mein Beispiel im letzten Post hatte noch eine zweite Zahl dabei (10ms). Diese zweite Zahl macht genau das, was Du nicht willst - sie ist der Wert, um die Latenz zufällig schwanken soll (also meine 12ms Latenz + extra Latenz von 90-110ms):

Code: Alles auswählen

root@mg4:~# tc qdisc add dev eth0 root netem delay 100ms 10ms
root@mg4:~# ping -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=51 time=118 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=51 time=117 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=51 time=111 ms
64 bytes from 8.8.8.8: icmp_req=4 ttl=51 time=120 ms
64 bytes from 8.8.8.8: icmp_req=5 ttl=51 time=110 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 110.917/115.609/120.102/3.878 ms
root@mg4:~# tc qdisc del dev eth0 root
Bei meiner ca. 12ms Latenz kann der Ping also zwischen 102 und 122 schwanken.

Frage geklärt?

Viele Grüße
Martin

Antworten