Testowanie jakości połączenia - iperf
Serwer wolno działa… Zdarzyło Ci się kiedyś, że miałeś takie wrażenie? A może Twoi użytkownicy ciągle na to narzekali? Niby wszystko wygląda ok, a masz przeczucie, że coś jest nie tak. Może aplikacja wolno działa? Może coś się dzieje z bazą danych? A może to sieć…?
Jeśli zdarzyło Ci się mieć takie zmartwienia, to dobrze wiedzieć, w jaki sposób wyeliminować lub potwierdzić każdy z powyższych przypadków. We wpisie opiszę, w jaki sposób użyć narzędzia iperf do oceny jakości połączenia sieciowego.
Czym jest iperf?
iperf jest bezpłatnym programem, służącym do testów wydajności sieci. Jest otwartoźródłowy i bezpłatny, możesz więc swobodnie go użyć do testowania sieci. Dostępne są wersje zarówno pod Windowsa jak i Linuxa, a zapewne, korzystając z kodu źródłowego, dałoby się go też uruchomić na innych platformach.
1.1 iperf dla windows
Aplikację dla Windowsa najłatwiej pobrać korzystając z pakietów projektu jperf (https://code.google.com/p/xjperf/downloads/list). Jest do graficzna nakładka na iperfa, wymaga do działania zainstalowanej javy. Jeśli jednak nie chcesz instalować nic na testowanym serwerze, to wystarczy Ci rozpakować archiwum i z katalogu bin wyciągnąć skompilowaną binarkę iperf.exe.
Iperf do działania może wymagać uprawnień administratora (szczególnie, jeśli chciałabyś testować połączenia na portach <1024).
1.2 iperf dla Linuxa
W ubuntu iperf dostępny jest w standardowych repozytoriach, wystarczy więc wpisać:
sudo apt-get install iperf
i potwierdzić chęć instalacji, by mieć do niego dostęp. Zapewne podobnie jest dla CentOSa i Red Hata.
Jeśli nie chesz instalować iperfa, możesz pobrać skompilowane na różne platformy binarki ze strony http://iperf.fr/. Dla linuxa dostępne są pakiety deb lub po prostu binarka do uruchomienia (http://iperf.fr/download/iperf_2.0.2/iperf_2.0.2-5_i386). Aby ją uruchomić wystarczy pobrać i nadać prawa wykonania (chmod +x iperf2.0.5-2i386).
2 działanie
Iperf działa w architekturze klient-serwer. Na jednym z testowanych komputerów uruchamiany jest nasłuchujący na wybranym porcie serwer, na drugim (i na kolejnych) - klient, który wysyła dane testowe. Architektura ta pozwala na łatwe testowanie połączeń z wielu miejsc - na serwerze, którego połączenie sieciowe uruchamiamy serwer iperf-a, a potem możemy sobie już testować połączenie np. z różnych stacji roboczych.
Iperf umożliwia testowanie połączenia TCP lub UDP na wybranych portach. Podczas testu zbierze statystyki dotyczące: http://iperf.fr/download/iperf_2.0.2/iperf_2.0.2-5_i386). Aby ją uruchomić wystarczy pobrać i nadać prawa wykonania (chmod +x iperf2.0.5-2i386).
3 co można testować?
Iperf działa w architekturze klient-serwer. Na jednym z testowanych komputerów uruchamiany jest nasłuchujący na wybranym porcie serwer, na drugim (i na kolejnych) - klient, który wysyła dane testowe. Architektura ta pozwala na łatwe testowanie połączeń z wielu miejsc - na serwerze, którego połączenie sieciowe uruchamiamy serwer iperf-a, a potem możemy sobie już testować połączenie np. z różnych stacji roboczych.
Iperf umożliwia testowanie połączenia TCP lub UDP na wybranych portach. Podczas testu zbierze statystyki dotyczące:
4 jak testować?
Aby uruchomić iperf jako serwer wystarczy uruchomić polecenie:
./iperf -s -p NRPORTU
gdzie NRPORTU to numer portu, na którym serwer ma nasłuchiwać (domyślnie, jeśli nie podamy opcji -p, używany jest 5001). Uwaga! Jeśli musisz przeprowadzić analizę ruchu na konkretnym porcie (np MSSQLowym 1433), to port ten musi być wolny, a więc będziesz musiała zatrzymać pracę serwera, co może wymagać pisemnej zgody powołanej do tego osoby.
Klienta natomiast uruchomisz:
./iperf -c ADRESDOCELOWEGOSERWERA -p NRPORTU
używając numeru portu, na którym nasłuchuje serwer iperfa. Domyślnie po 10 sekundach otrzymasz podstawowe statystyki połączenia.
Jeśli chcesz uzyskać bardziej szczegółowe informacje, możesz uruchamiając i serwer i klienta dodać opcję -u (o ile ruch UDP nie zostanie zablokowany gdzieś między klientem i serwerem). W statystykach (po stronie serwera) zobaczysz, czy nie ma przypadkiem podejrzanie dużych strat pakietów (zwykle za podejrzane uważa się, jeśli tracone jest więcej niż 1% pakietów). Podobnie - duża zmienność delay jitter może wskazywać na nieprawidłową pracę sieci.
Innymi użytecznymi opcjami iperfa są:
- -i X - wyświetla statystyki co X sekund,
- -r - testuje połączenie w obu kierunkach (z przełącznikiem -l NRPORTU, który pozwala wybrać numer portu na którym będzie odbierał dane klient),
- -d - jak wyżej, test wykonywany jest jednocześnie,
- -P X - pozwala na jednoczesne wykorzystanie X wątków do wysyłania pakietów (może być użyteczne, gdy podejrzewasz że sieć ma problem z obsługą wielu połączeń jednocześnie).
Przy pomocy powyższych wskazówek powinnaś być w stanie w miarę precyzyjnie określić, czy przepustowość sieci odpowiada możliwością sprzętu, czy ruch nie jest zablokowany na konkretnych portach, czy nie ma dużych strat pakietów i niestabilnej pracy sieci (rozrzut delay jittera). W dużym stopniu ocenisz więc, czy możesz polegać na sieci, szukając dalszych problemów z wydajnością serwera.
Jeśli nie przejmujesz się oprogramowaniem instalowanym na serwerze, lub i tak masz zainstalowaną javę, warto przyjrzeć się nakładce jperf, która pozwala wszystko powyższe ładnie zobrazować w graficzny sposób.
Mam nadzieję, że czegoś się dowiedziałeś! Dziękuję za cierpliwość w czytaniu:)