Chciałbym zasymulować opóźnienie i utratę pakietów dla UDP
i TCP
na Linuksa, aby zmierzyć wydajność aplikacji. Czy istnieje prosty sposób to zrobić?
linux
tcp
throttling
George Stocker
źródło
źródło
Odpowiedzi:
netem wykorzystuje funkcje wbudowane w Linuksa i narzędzia przestrzeni użytkownika do symulacji sieci. Właśnie do tego odnosi się odpowiedź Marka pod innym imieniem.
Przykłady na ich stronie głównej pokazują już, jak możesz osiągnąć to, o co prosiłeś:
Pamiętaj , że powinieneś używać,
tc qdisc add
jeśli nie masz reguł dla tego interfejsu lubtc qdisc change
jeśli masz już reguły dla tego interfejsu. Próba użyciatc qdisc change
interfejsu bez reguł spowoduje błądRTNETLINK answers: No such file or directory
.źródło
tc -p qdisc ls dev eth0
wyświetli listę aktualnie zdefiniowanych reguł itc qdisc del dev eth0 root
je usunieW przypadku upuszczonych pakietów użyłbym po prostu iptables i modułu statystycznego .
Powyżej upuści pakiet przychodzący z prawdopodobieństwem 1%. Bądź ostrożny, wszystko powyżej 0,14 i większość z was połączeń TCP najprawdopodobniej całkowicie się zawiesi.
Spójrz na man iptables i wyszukaj „statystyki”, aby uzyskać więcej informacji.
źródło
DROP
na połączeniach wychodzących śmiesznie powoduje to, żesend()
operacje zwracają sięEPERM
, a nie po prostu odrzuca pakiety (tak jak powinno).iptables -D INPUT -m statistic --mode random --probability 0.01 -j DROP
Jeden z moich kolegów używa do tego tc. Więcej informacji znajduje się na stronie podręcznika użytkownika. Przykład jego użycia można zobaczyć tutaj .
źródło
iptables (8) ma moduł dopasowania statystycznego, którego można użyć do dopasowania każdego n-tego pakietu. Aby upuścić ten pakiet, po prostu dodaj -j DROP .
źródło
Ten samouczek na temat symulacji fizyki sieci zawiera klasę C ++ w przykładowym kodzie do symulacji opóźnień i utraty pakietów w połączeniu UDP i może być wskazówką. Zobacz publiczne opóźnienie i zmienne packetLoss klasy Connection znajdujące się w pliku Connection.h kodu źródłowego do pobrania .
źródło
Nie próbowałem tego sam, ale na tej stronie znajduje się lista modułów wtyczek, które działają w systemie Linux z wbudowanym systemem filtrowania IP iptables. Jeden z modułów nazywa się „n-ty” i pozwala ustawić regułę, która zrzuci konfigurowalną szybkość pakietów. Przynajmniej może być dobrym miejscem do rozpoczęcia.
źródło
Możesz spróbować http://snad.ncsl.nist.gov/nistnet/ To dość stary projekt NIST (ostatnie wydanie 2005), ale działa dla mnie.
źródło
Łatwym w użyciu narzędziem do wstrzykiwania uszkodzeń sieci jest Saboteur . Może symulować:
źródło
Jednym z najczęściej używanych narzędzi w tym środowisku naukowym jest DummyNet . Po zainstalowaniu
ipfw
modułu jądra, aby wprowadzić opóźnienie propagacji 50 ms między 2 maszynami, po prostu uruchom następujące polecenia:Aby również wprowadzić 50% strat pakietów, musisz uruchomić:
Tutaj więcej szczegółów.
źródło