Jak symulować środowisko o niskiej przepustowości i dużym opóźnieniu?

201

Muszę zasymulować połączenie z serwerem o niskiej przepustowości i dużym opóźnieniu, aby emulować warunki VPN na zdalnej stronie. Przepustowość i opóźnienie powinny być dostrajane, aby znaleźć najlepszą kombinację, aby uruchomić nasz pakiet oprogramowania.

Nic
źródło
7
Świetne pytanie! Chciałbym usłyszeć odpowiedzi związane z tworzeniem stron ASP .NET.
Carl

Odpowiedzi:

79

W systemie macOS dostępny jest Network Link Conditioner, który symuluje konfigurowalną przepustowość, opóźnienie i utratę pakietów. Jest on zawarty w pakiecie Dodatkowe narzędzia dla Xcode . Zrzut ekranu

Jon Colverson
źródło
12
Panel preferencji „Network Link Conditioner” jest częścią Hardware IO Tools for XCode, którą można pobrać ze strony developer.apple.com/downloads
avernet
nie działa z Genymotion. (Czarny ekran)
Bruno,
1
Link do pobrania dla nowszych wersji XCode: developer.apple.com/download/more/?q=Additional%20Tools
jstorm31
@ jstorm31 Dziękuję. Zaktualizowałem odpowiedź aktualną nazwą pakietu i aktualnym linkiem.
Jon Colverson,
37

Konfigurowanie maszyny FreeBSD do tego celu jest doskonałe - weź stary standardowy pulpit, wrzuć dodatkową kartę sieciową i skompiluj.

Zapis jest dostępny na stronie http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html .

W kroku 5 powyższych instrukcji włączasz zaporę. Aby tylko symulować inne połączenie IP, możesz (na przykład) wykonać następujące czynności:

Utwórz plik, /etc/rc.firewall.56kktóry zawiera następujące elementy:

ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in    
ipfw pipe 1 config bw 56Kbit/s   
ipfw pipe 2 config bw 56Kbit/s

I zmień /etc/rc.conf... zastąp linię

firewall_type="open"

z

firewall_type="/etc/rc.firewall.56k"

zrestartuj komputer, a uzyskasz most 56 KB!

Jeśli akurat pracujesz na komputerze Macintosh, ten system operacyjny ma domyślnie wbudowany ipfw. Zrobiłem to samo, kierując ruch sieciowy przez lotnisko i sieć Ethernet, ustawiając go tak, aby wszystko, co nadchodziło na lotnisko, miało takie same cechy, jak wszystko, co próbuję naśladować. Możesz wywoływać polecenia ipfw bezpośrednio z terminala i uzyskać te same efekty.

heckj
źródło
27

W przeszłości korzystałem z mostu przy użyciu funkcji Linux Netem (emulacji sieci). Jest wysoce konfigurowalny - pozwala wprowadzić opóźnienia (pierwszy przykład dotyczy sieci WAN), utratę pakietów, uszkodzenie itp.

EDYCJA: Istnieje również interfejs internetowy MasterShaper do sterowania ustawieniami.

Zauważam, że Netem działał bardzo dobrze w moich aplikacjach, ale kilkakrotnie skończyłem również z WANem . Dostarczony rozruchowy obraz ISO (i obrazy urządzeń wirtualnych) sprawił, że był całkiem przydatny.

Kris Kumler
źródło
Idealny dla moich potrzeb i dostępny od razu na moim serwerze Ubuntu 14.04!
RobM,
21

Charles

Natknąłem się na Charles, internetową aplikację proxy do debugowania i odniosłem wielki sukces w emulacji opóźnień w sieci. Działa w systemach Windows, Mac i Linux.

Charles na Macu

Przepustnica przepustowa / symulator przepustowości

Charlesa można użyć do dostosowania przepustowości i opóźnienia połączenia internetowego. Umożliwia to symulowanie warunków modemu za pomocą szybkiego połączenia.

Przepustowość może być dławiona do dowolnego dowolnego bajtu na sekundę. Umożliwia to symulację dowolnej prędkości połączenia.

Opóźnienie można również ustawić na dowolną liczbę milisekund. Opóźnienie opóźnienia symuluje opóźnienie występujące przy wolniejszych połączeniach, to znaczy opóźnienie między złożeniem żądania a otrzymaniem żądania na drugim końcu.

DummyNet

Możesz także użyć vmware do uruchomienia BSD lub Linux i wypróbować ten artykuł (DummyNet) lub ten.

Eugene Yokota
źródło
2
Charles jest serwerem proxy HTTP i dlatego nadaje się tylko do testowania aplikacji HTTP. Dla każdego z nich, ale moim zdaniem jest to prawdopodobnie najgorsze oprogramowanie, z jakiego kiedykolwiek korzystałem. Użyłem go tylko przez krótki czas, gdy musiałem pracować na komputerze Mac. Użytkownikom Windows polecam Fiddler, jeśli potrzebujesz serwera proxy do debugowania HTTP. Niestety nie znalazłem nic innego jak Charles dla OSX.
Brad
6
Cześć Brad. Czy możesz wspomnieć, jakie masz problemy?
Ante
17

Znalazłem ten mały schludny program dla systemu Windows o nazwie niezdarny . Ma trochę status alfa, ale wydaje mi się, że działa dobrze i jest open source.

Edycja: Inni zauważyli, że nie można ograniczyć przepustowości niezdarnym i to prawda. Możesz dodać tylko Opóźnienie i kilka innych błędów związanych z siecią. To zdyskwalifikuje tę odpowiedź jako prawidłową odpowiedź na pytanie, ale ponieważ miałem dobry użytek, gdy chciałem zasymulować złą sieć, więc zostawiam ją tutaj, o ile ma ona> 0 głosów lub podobnie.

Markus
źródło
Jak kontrolować przepustowość za pomocą niezdarnego?
user3731622,
3
Doskonały program. Dokładnie to, czego potrzebowałem. Polecam to. Działa jak urok i jest bardzo łatwy.
Jh62
1
Kiedy większość ludzi mówi „ogranicz przepustowość”, prawdopodobnie jest więcej niż zadowolona z dodania ogromnych opóźnień i utraty pakietów, ponieważ skutecznie ograniczają przepustowość. Również ten program jest niezwykle prosty w użyciu, bije wszystko, co wypróbowałem na Windowsie.
rzuca
13

Wypróbuj WANem

WANem to emulator sieci rozległej, który ma zapewnić rzeczywiste wrażenia z korzystania z sieci rozległej / Internetu podczas opracowywania / testowania aplikacji w środowisku LAN.

epatel
źródło
1
Próbowałem tego i nie mogę tego zrobić. Z jakiegoś powodu nie otrzyma adresu IP z naszej sieci, podczas gdy żaden inny komputer nie ma z nim problemów.
Michael Beck
7

Spróbowałbym użyć Netem na Linuksie. Za jego pomocą możesz symulować dodatkowe opóźnienia, uszkodzenia, utratę pakietów i duplikację. Działa nawet na urządzeniu z pętlą zwrotną.

Josh
źródło
Hej, czy masz jakieś równoważne polecenie systemu Windows jako netem?
Shashi Ranjan
6

Innym programem po stronie klienta (tylko Windows) jest NetLimiter - http://www.netlimiter.com

kaliatech
źródło
2
Netlimiter jest dobry, ale myślę, że działa tylko z małą przepustowością - nie może zmienić opóźnienia?
Nathan
Plany beta dla v3 wymieniały symulację opóźnienia jako planowaną funkcję. Został niedawno wydany i jeszcze go nie użyłem, aby sprawdzić, czy ta funkcja się sprawdziła.
kaliatech
Ta funkcja nie dotarła do wersji beta 9. Ugh.
cacba
4
Nawet bieżąca wersja beta (NetLimiter 4) nie pozwala zmienić opóźnienia.
wpływowy
5

Używam NetBalancer na moim komputerze z systemem Windows.

http://seriousbit.com/netbalancer/

Aktualizacje w dniu 2017-10-07 : Ostatnia darmowa wersja NetBalancer to 9.2.7. Program ma określoną datę ważności. Przed uruchomieniem usługi NetBalancer należy cofnąć zegar systemowy przed 18.10.2016. Szczegółowe informacje można znaleźć w tym artykule .

Tony
źródło
Dziękuję Ci!! NetBalancer to jedyne narzędzie wymienione na tej stronie, które udało mi się zabrać do pracy i które może kontrolować opóźnienia.
wpływowy
4

Myślę, że tcmoże wykonać to zadanie na platformie UNIX.

tcsłuży do konfigurowania kontroli ruchu w jądrze systemu Linux
http://lartc.org/manpages/tc.txt

Sawan
źródło
3

Aby zasymulować połączenie o niskiej przepustowości do testowania stron internetowych przy użyciu Google Chrome, możesz przejść do karty Sieć w Narzędziach F12 i wybrać poziom przepustowości do symulacji lub utworzyć niestandardową przepustowość do symulacji.

użytkownik1785960
źródło
1
Dzięki! Jeśli nie możesz go znaleźć, znajduje się w konsoli Chrome na karcie Sieć po prawej stronie przycisku „Wyłącz pamięć podręczną”. Jego wartość domyślna to „Bez ograniczania”.
Alan Willms
1

Jeśli korzystasz z systemu Linux, uważam, że program Traffic Control jest świetną pomocą w tego typu sprawach.

smo
źródło
1

Istnieje produkt z http://www.shunra.com o nazwie VE Desktop, którego można użyć do symulacji różnych warunków sieciowych. Pozwala na dostosowanie opóźnień, przepustowości i utraty pakietów za pomocą prostego interfejsu użytkownika. Jedynym zastrzeżeniem jest to, że nie jest bezpłatne. Mam nadzieję że to pomoże.

Shreedhar Kotekar
źródło
1

Od jakiegoś czasu szukam łatwego w użyciu narzędzia do tego typu testów. Właśnie tego dnia spotkałem: Network Delay Simulator

Jeśli korzystasz z systemu Windows, powinieneś to sprawdzić. To było bardzo łatwe do skonfigurowania i uruchomienia i wydaje się, że działa naprawdę dobrze. Pozwala zdefiniować przepustowość, opóźnienie i utratę pakietów w każdym kierunku. Inną naprawdę miłą rzeczą jest to, że możesz zdefiniować „Warunki dopasowania przepływu”, tak aby wpływało to tylko na ruch, który chcesz. O tak, i to za darmo.

znak
źródło
1

myślę, że znalazłem to, czego potrzebuję. może możesz użyć serwera proxy charles lub slowy . mam nadzieję, że to pomoże.

Moh Hasbi Assidiqi
źródło
1

Spójrz na emulator sieci NE-ONE, który pozwala skonfigurować przepustowość, opóźnienie, utratę pakietów, zmianę kolejności pakietów, duplikację pakietów, fragmentację pakietów, przeciążenie sieci i wiele innych ograniczeń, abyś mógł stworzyć rzeczywiste warunki sieciowe w laboratorium . Różne upośledzenia mogą być skonfigurowane dla łącza w górę i w dół, dzięki czemu możesz mieć naprawdę dobre łącze w górę, ale naprawdę złe doświadczenie w łączu w dół, świetne do zobaczenia, jak aplikacja obsługuje kolejkowanie TCP, ponieważ wady nie wracają w odpowiednim czasie i ogólne opóźnienie dlatego wzrasta!

Tutaj znajduje się film poglądowy http://www.youtube.com/watch?v=DwtqlE7LcrQ specjalnie przeznaczony dla twórców gier, ale pokazuje, o co chodzi. NE-ONE jest konfigurowane za pomocą przeglądarki internetowej, więc instalacja i konfiguracja jest naprawdę łatwa - nie musisz być guru sieci :-)

Dostępna jest wersja sprzętowa - http://www.itrinegy.com/index.php/products/network-emulators/ne-one - lub można pobrać wersję Virtual Appliance (oprogramowania) działającą na serwerze VMware ESXi Server. Urządzenie wirtualne można pobrać z Exchange Solution firmy VMware - solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator

Peter White
źródło
0

LANforge ICE to emulator sieci z naciskiem na wirtualny routing, fluktuacje, uszkodzenia i opóźnienia. Projekty wykorzystały go do emulacji łącza satelitarnego, połączeń kablowych i modemowych oraz emulacji wysokiej prędkości (10 Gb / s). Za pomocą graficznego interfejsu użytkownika Java można budować sieci wirtualne i generować bardzo szczegółowe raporty o ruchu. Produkty LANforge zapewniają także funkcje generowania ruchu: ramkę, ethernet, warstwę-3 i ruch stanowy (NFS, http). Najnowsze edycje LANforge mają również zaawansowane funkcje testowania WiFi.

memnoch_proxy
źródło
0

Możesz spróbować: CovenantSQL / GNTE po prostu napisz YAML w następujący sposób:

group:
  - 
    name: china
    nodes:
      - 
        ip: 10.250.1.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.1.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "100ms 10ms 30%"
    loss: "1% 10%"
  - 
    name: us
    nodes:
      - 
        ip: 10.250.2.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.2.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "1000ms 10ms 30%"
    loss: "1% 10%"

network:
  -
    groups:
      - china
      - us
    delay: "200ms 10ms 1%"
    corrupt: "0.2%"
    rate: "10mbit"

biegać ./generate scripts/your.yaml

auxten
źródło