netem służy do emulowania opóźnień i utraty danych w sieciach komputerowych. Przy jego pomocy możemy sprawdzić czy nasze oprogramowanie jest odporne na działanie zakłóceń w sieci.
Do testów używam systemu Debian. Instalujemy emulator:
apt-get install netemul
Po instalacji możemy dodawać reguły zmieniające parametry sieci. Poniżej zamieszczam przykłady dwóch najbardziej przydatnych reguł, czyli opóźnienia oraz utraty pakietów. Wszystkie polecenia wykonujemy bezpośrednio w konsoli.
Opóźnienie
Pingujemy dowolny serwer:
PING google.pl (173.194.113.63) 56(84) bytes of data. 64 bytes from some.host.com (173.194.113.63): icmp_req=1 ttl=54 time=289 ms 64 bytes from some.host.com (173.194.113.63): icmp_req=2 ttl=54 time=280 ms 64 bytes from some.host.com (173.194.113.63): icmp_req=3 ttl=54 time=256 ms 64 bytes from some.host.com (173.194.113.63): icmp_req=4 ttl=54 time=256 ms
Dodajemy regułę:
tc qdisc add dev eth0 root netem delay 200ms
Ponownie pingujemy ten sam serwer:
PING google.pl (173.194.113.63) 56(84) bytes of data. 64 bytes from some.host.com (173.194.113.63): icmp_req=1 ttl=54 time=566 ms 64 bytes from some.host.com (173.194.113.63): icmp_req=2 ttl=54 time=519 ms 64 bytes from some.host.com (173.194.113.63): icmp_req=3 ttl=54 time=462 ms 64 bytes from some.host.com (173.194.113.63): icmp_req=4 ttl=54 time=457 ms
Jak widać czas odpowiedzi wzrósł o ok. 200 ms.
Utrata pakietów
Reguła:
tc qdisc change dev eth0 root netem loss 10%
Oraz wyniki próbkowania:
--- google.pl ping statistics --- 36 packets transmitted, 32 received, 11% packet loss, time 62492ms
Pozostałe reguły znajdziemy w dokumentacji.
Linki
http://www.linuxfoundation.org/collaborate/workgroups/networking/netem