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:

3.1 dla TCP

  • bandwidth,
  • wielkość MSS/MTU i obserwowane wielkości odczytu.

3.2 dla UDP

  • odsetek utraconych pakietów,
  • jitter opóźnienia,

Dla obydwu typów połączeń możliwa jest wielowątkość - klient może nawiązywać wiele połączeń.

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:)

Date: 2014-05-12T20:04+0200

Author: wrobel

Org version 7.9.3f with Emacs version 24

Validate XHTML 1.0