Ich weiß, dass dies eine seltsame Frage ist. Da ich normalerweise Anwendungen entwickle, die auf der "Annahme" basieren, dass alle Benutzer eine langsame Internetverbindung haben. Aber glaubt jemand, dass es eine Möglichkeit gibt, eine langsame Internetverbindung programmgesteuert zu simulieren, damit ich "sehen" kann, wie eine Anwendung unter verschiedenen "Verbindungsgeschwindigkeiten" funktioniert?
Ich mache mir keine Sorgen darüber, welche Sprache verwendet wird. Und ich suche keine Codebeispiele oder ähnliches, sondern interessiere mich nur für die Logik dahinter.
quelle
Ab Chrome 38 können Sie dies ohne Plugins tun. Klicken Sie einfach F12auf " Element überprüfen" (oder " Hotkey") und dann auf "Gerätemod umschalten". Daraufhin wird Folgendes angezeigt :
Neben vielen anderen Funktionen können Sie eine bestimmte Internetverbindung (3G, GPRS) simulieren.
PS für Leute, die versuchen, die Upload-Geschwindigkeit zu begrenzen. Leider ist dies derzeit nicht möglich.
PS2 jetzt musst du nichts mehr umschalten. Das Drosselklappenfeld ist direkt im Netzwerkfeld verfügbar.
Beachten Sie, dass Sie beim Klicken auf Keine Drosselung Ihre benutzerdefinierten Drosselungsoptionen erstellen können.
quelle
Google empfiehlt :
quelle
Auf Linux-Rechnern können Sie verwenden
wondershaper
{down} und {up} sind Bandbreiten in kpbs
Wenn Sie beispielsweise die Bandbreite der Schnittstelle eth1 auf 256 kbit / s Uplink und 128 kbit / s Downlink beschränken möchten,
Um das Limit zu löschen,
quelle
Ich habe http://www.netlimiter.com/ verwendet und es funktioniert sehr gut. Begrenzen Sie nicht nur die Geschwindigkeit für einzelne Prozesse, sondern zeigen Sie auch die tatsächlichen Übertragungsraten an.
quelle
Es gibt TCP-Proxys wie iprelay und Sloppy, die Bandbreitenformen durchführen, um langsame Verbindungen zu simulieren. Sie können auch Bandbreitenformung durchführen und Paketverluste mithilfe von IP-Filtertools wie ipfw und iptables simulieren.
quelle
Sie können Dummynet ausprobieren , es kann Warteschlangen- und Bandbreitenbeschränkungen, Verzögerungen, Paketverluste und Mehrwegeffekte simulieren
quelle
Verwenden Sie einen Web-Debugging-Proxy mit Drosselungsfunktionen wie Charles oder Fiddler .
Sie finden sie im Allgemeinen nützliche Webentwicklung. Der Hauptunterschied besteht darin, dass Charles Shareware ist, während Fiddler kostenlos ist.
quelle
Um eine langsame Verbindung auf einigen * nixen zu simulieren, können Sie auch versuchen, ipfw zu verwenden . Weitere Informationen liefert Ben Newmans Antwort auf diese Quora- Frage
quelle
Verwenden Sie ein Tool wie TCPMon . Es kann eine langsame Verbindung vortäuschen.
Grundsätzlich fordern Sie genau dasselbe an und es leitet nur genau dieselbe Anforderung an den realen Server weiter und verzögert dann die Antwort nur mit der festgelegten Anzahl von Bytes.
quelle
Sie können NetEm (Network Emulation) als Proxyserver verwenden, um viele Netzwerkeigenschaften (Geschwindigkeit, Verzögerung, Paketverlust usw.) zu emulieren . Es steuert das Netzwerk mithilfe des iproute2- Pakets und ist im Kernel der meisten Linux-Distributionen aktiviert.
Es wird von der
tc
Befehlszeilenanwendung (aus dem iproute2- Paket) gesteuert , es gibt jedoch auch einige Webschnittstellen-GUIs für NetEm, z. B. PHPnetemGUI2 .Der Vorteil ist, dass es, wie ich geschrieben habe, nicht nur unterschiedliche Netzwerkgeschwindigkeiten emulieren kann, sondern auch beispielsweise Paketverlust, Duplizierung und / oder Beschädigung, zufällige oder definierte Verzögerung usw., sodass Sie verschiedene Netzwerke mit schlechter Leistung emulieren können.
Für Ihre Anwendung ist es absolut transparent. Sie können das Betriebssystem so konfigurieren, dass es den NetEm-Proxyserver verwendet, sodass alle Verbindungen von diesem Computer über NetEm hergestellt werden. Oder Sie können nur Ihre Anwendung so konfigurieren, dass sie als Proxy verwendet wird.
Ich habe es verwendet, um die Leistung einer Android-App in verschiedenen emulierten Netzwerken mit schlechter Leistung zu testen.
quelle
Mac OSX hat seit 10.10 eine App namens Murus Firewall , die als GUI für pf fungiert, den Ersatz für ipfw.
Es funktioniert sehr gut für systemweite oder domänenspezifische Drosselung. Ich konnte es nur verwenden, um meine Download-Geschwindigkeit zwischen 300 Kbit / s und 30 Mbit / s zu verschieben und zu testen, wie sich ein Streaming-Videoplayer anpasst.
quelle
Es gibt auch ein anderes Tool namens WIPFW - http://wipfw.sourceforge.net/
Es ist ein bisschen altmodisch, aber Sie können es verwenden, um eine langsamere Verbindung zu simulieren. Es basiert auf Windows und das Tool ermöglicht es dem Administrator, beispielsweise zu überwachen, wie viel Verkehr der Router von einem bestimmten Computer erhält oder wie viel WWW-Verkehr er weiterleitet.
quelle
Das Aktualisieren (9 Jahre nachdem es gefragt wurde) als Antwort, die ich suchte, wurde nicht erwähnt:
Firefox verfügt auch über Voreinstellungen für die Drosselung der Verbindungsgeschwindigkeit. Suchen Sie sie auf der Registerkarte Netzwerkmonitor der Entwicklertools. Die Standardeinstellung ist "Keine Drosselung".
Am langsamsten ist GPRS ( Download-Geschwindigkeit: 50 Kbit / s, Upload-Geschwindigkeit: 20 Kbit / s, Mindestlatenz (ms): 500 ), von "gut" und " normal " 2G, 3G und 4G bis zu DSL und WiFi ( Download-Geschwindigkeit: 30 Mbit / s, Upload) Geschwindigkeit: 15 Mbit / s, Mindestlatenz (ms): 2 ).
Mehr in den Dev Tools-Dokumenten .
quelle
Für Linux kann die folgende Liste von Artikeln hilfreich sein:
Persönlich, während Dummynet gut ist, finde ich NetEm die meisten vielseitig zu sein für meine Anwendungsfälle; Normalerweise interessieren mich eher die Auswirkungen von Verzögerungen als die Bandbreite (dh Probleme mit der WLAN-Verbindung), und es ist sehr einfach, zufälligen Paketverlust / -beschädigung usw. zu emulieren. Außerdem ist es sehr zugänglich und kostenlos (im Gegensatz zur hardwarebasierten Linktropie) ).
Nebenbei bemerkt, für Windows ist Clumsy fantastisch. Ich möchte auch hinzufügen, dass die Browser-Drosselung (in Bezug auf Websites) keine genaue Methode zur Emulation realer Netzwerkprobleme ist (ich denke, "TKK" hat einige der oben genannten Gründe kommentiert).
Hoffe das hilft jemandem!
quelle
Ein häufiger Fall beim Formen einer einzelnen TCP-Verbindung kann tatsächlich aus zwei Paaren von
socat
undcpipe
auf UNIX-Weise wie folgt zusammengesetzt werden:socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'
Dies simuliert eine Verbindung mit einer Bandbreite von ca. 300 kB / s von Ihrem Dienst bei
:5000
und bis ca. 10 kB / s und wartet auf:5555
eingehende Verbindungen. Vorsichtsmaßnahme : Beachten Sie, dass diese pro Verbindung , so dass jede einzelne TCP-Verbindung diesen Betrag erhält.Erläuterung: Der äußere (links)
socat
lauscht mit den angegebenen Optionen:5555
als Forking-Server. Der erstecpipe
Befehl in derSYSTEM:...
Option drosselt dann die Daten, die in den Socketsocat
eingegangen sind : 5555 (und kommt aus dem ersten äußeren ) auf höchstens 10 kByte / s. Diese Daten werden dann über einen anderen weitergeleitet, mitsocat
dem eine Verbindung hergestellt wirdlocalhost:5000
(wobei der Dienst, den Sie verlangsamen möchten, abgehört werden soll). Daten vonlocalhost:5000
werden dann in den richtigencpipe
Befehl eingegeben, der sie (mit den angegebenen Werten) auf etwa 300 kB / s drosselt.Die Option
-ngr
zucpipe
ist wichtig. Es bewirkt, dass cpipe nicht gierig aus seinem Eingabedateideskriptor liest. Andernfalls bleiben möglicherweise Daten in den Puffern hängen, die nicht weitergeleitet werden, und warten auf eine Antwort.Die Verwendung des gängigeren
buffer
Tools anstelle voncpipe
ist wahrscheinlich ebenfalls möglich.(Credits: Dies basiert auf dem "Double-Tee" -Rezept von Christophe Loor aus der
socat
Dokumentation)quelle