Tworzę internetową grę wieloosobową. Działa dobrze, kiedy testuję go w sieci lokalnej, ale zanim go wypuszczę, chciałbym przetestować, jak działa środowisko użytkownika dla kogoś, kto nie ma tak dobrego połączenia z serwerem. Jak mogę zasymulować złe połączenie internetowe przy dużym opóźnieniu, niskiej przepustowości, fluktuacji i sporadycznej utracie pakietów w środowisku lokalnym?
networking
testing
Philipp
źródło
źródło
Odpowiedzi:
Myślę, że Dummynet jest tym, czego szukasz. Dummynet to narzędzie do emulacji sieci, które może symulować ograniczenia przepustowości, opóźnienia, straty pakietów i wiele innych. Możesz łatwo wybrać ruch, który chcesz przechwycić i skonfigurować ograniczenia, np. Aby ograniczyć cały przychodzący ruch TCP do 2 Mb / s, co robisz
Widzisz, że wybór ruchu odbywa się przez znaną zaporę ipfw, a potoki zapewniają funkcje ograniczenia.
Jest dostępny dla FreeBSD, Linux i Windows.
źródło
Kondycjoner łącza sieciowego
Jeśli korzystasz z komputera Mac, możesz użyć Network Link Conditioner.
Możesz symulować różne przypadki złych połączeń internetowych, w tym Edge i 3G.
Ponadto możesz tworzyć własne profile z własnymi ustawieniami:
Jest to bezpłatne pobieranie w Xcode (przejdź do Xcode → Otwórz narzędzie programistyczne → Więcej narzędzi programistycznych… i pobierz sprzętowe narzędzia IO dla Xcode ).
źródło
Jeśli korzystasz z systemu Linux, możesz użyć netem do symulacji wszystkich możliwych problemów z siecią, takich jak duże opóźnienia, niska przepustowość, straty pakietów i wiele innych.
Istnieje opcja dla systemu Windows o nazwie NetLimiter, ale nie korzystałem z niej, więc nie mogę za nią ręczyć.
Właśnie znalazłem aplikację Mac o nazwie SlowlyApp .
źródło
Niezdarny dla Windows Vista i 7.
źródło
Jeśli korzystasz z systemu Windows, możesz wypróbować emulator połączenia SoftPerfect . Zasadniczo jest to sterownik, który wstrzykuje się między twoją aplikacją a warstwą sieciową (podobną do Wireshark / WinPCAP) dla wybranej karty sieciowej i może symulować ograniczoną przepustowość, opóźnienie, utratę pakietów i inne rzeczy. Interfejs użytkownika jest prosty i jednoznaczny.
Jest to produkt komercyjny, ale wersja próbna pozwala wykonać 30-sekundowe serie „zakłóceń”, które powinny być wystarczająco dobre, abyś mógł ocenić, czy to narzędzie robi to, co chcesz.
Inną opcją dla wielu platform jest DummyNet , który zachowuje się w podobny sposób (przez ipfw), ale jest nieco mniej łatwy w użyciu.
Myślę, że tę część pytania można przekształcić w następujący sposób: „jak radzić sobie z opóźnieniami sieci w mojej aplikacji?” Jedną z powszechnie stosowanych i skutecznych technik jest Dead Reckoning . Połączony artykuł wyjaśnia to lepiej niż ja, ale podstawową ideą jest to, że Twoi klienci „symulują”, gdzie powinna być każda jednostka i co powinna robić algorytmem. Ilekroć jednostka odbiega od tego algorytmu (tj. Dane wejściowe odtwarzacza, zdarzenie po stronie serwera itp.), Wysyła aktualizację do każdego klienta.
źródło
Nie używałem go od dłuższego czasu, ale użyłem Charlesa do przetestowania tego. Jest to aplikacja z różnymi narzędziami do diagnostyki sieci, w tym symulującymi wspomniane problemy: „złe połączenie internetowe o dużym opóźnieniu, niskiej przepustowości, fluktuacji i sporadycznej utracie pakietów”
źródło
Jeśli jesteś obeznany z Fiddler i interesujesz się tylko HTTP / 1, możesz to zrobić.
Skrzypek nie obsługuje HTTP / 2, przechwycenie go spowoduje obniżenie całego ruchu HTTP do HTTP / 1.
źródło