Jak sfałszować odrzucone pakiety (lub sprawić, by się nie udały)?



tło

Jeden z naszych klientów cierpi na sporadyczny problem z Internetem, w wyniku którego porzuca pakiety, gdy użytkownik pobiera duży plik (jego specjaliści IT badają problem).
Mam aplikację składającą się z serwera internetowego Windows 2008 R2 IIS7.5 i klienta Chrome z systemem Windows 7, który używa długo działającego XMlHttpRequest do przekazywania „wiadomości” z serwera do klienta.

Ten problem.

Moja aplikacja powinna być w miarę odporna na tę utratę pakietów, ale w praktyce tak nie jest.
Chcę przetestować moją aplikację w różnych scenariuszach problemów z siecią, takich jak losowa utrata 1% pakietów i sporadyczna utrata pakietów, na przykład całkowita utrata pakietów 4000 ms itp.
Szukam rozwiązania, które pozwoli mi „odtworzyć” scenariusz i przetestować moją aplikację. Mógłbym użyć 3G lub odłączyć kabel sieciowy, ale efekty nie są zbyt odtwarzalne.

Pytanie.

Czy istnieje aplikacja/sterownik, który mogę zainstalować na swoim komputerze, aby symulować trudne połączenia internetowe? A może urządzenie lub serwer proxy, którego mogę używać w sieci, aby naśladować te scenariusze?
Wydaje mi się, że nie jest to łatwe do zrobienia na nowoczesnym komputerze, ponieważ spodziewam się, że większość stosu TCP zostanie wysłana na kartę sieciową, ale pomyślałbym, że jest to dość popularna rzecz do wypróbowania, ale nie miałem szczęścia z Google. Jestem bardziej zorientowany w systemie Windows, ale rozwiązanie wykorzystujące Linuksa jako klienta lub proxy byłoby mile widziane.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Prosty router linuksowy w środku może to zrobić bezbłędnie. Po prostu czytaj
         netem
... Możesz replikować wszystko, w tym utracone pakiety, pakiety ponownie uporządkowane, uszkodzone pakiety, a nawet opóźnienia. Sam używam go do symulacji kanałów satelitarnych.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użyłem do tego TMNetSim. Obsługuje dowolny port, dzięki czemu można go używać w większości aplikacji.
http://www.tmurgent.com/Tools.aspx
http://www.tmurgent.com/Tools.aspx
Możesz chcieć wykonać skorelowane przechwytywanie pakietów zarówno po stronie klienta, jak i serwera i określić, czy klient otrzymuje pakiet RST. Jeśli tak, to z twojego serwera. I czy dzieje się to w przewidywalnym czasie, na przykład po pięciu minutach bezczynności.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się