Czasami w pracy administratora przychodzi taki moment, kiedy potrzebujemy w miarę prosto, szybko i dobrze przetestować przepustowość sieci między np. dwoma sieciami, dwoma urządzeniami w różnych sieciach. Istnieje wiele narzędzi do tego typu testów, ale jednym z najlepszych, najprostszych i jednocześnie najbardziej miarodajnych – jest iperf3. Za jego pomocą możemy przetestować połączenie sieciowe między serwerami w tej samej sieci (testując połączenie lokalne), jak i w dwóch zdalnych sieciach, o ile komunikacja będzie między nimi otwarta.

Z reguły iperf3 jest dostępny we wszystkich popularnych dystrybucjach w menadżerze pakietów i wystarczy odpowiednia komenda dla apt’a czy yum’a, aby go zainstalować. Narzędzie to pracuje zarówno dla ipv4 jak i sieci ipv6, co również w dobie rozwijającej się technologii nie jest bez znaczenia.

Z pewnością doświadczeni sieciowcy wiedzą jak zoptymalizować przepustowość i przepływność sieci, jakie parametry dostosować i tak dalej, ale zawsze na początku trzeba wykonać jakieś testy, aby mieć pojęcie o tym jak nasza sieć jest wydajna na teraz. Czasami, jeśli otrzymujemy środowisko w chmurze między dwoma instancjami, nie do końca nawet możemy mieć wpływ na wszystkie parametry i konfiguracje, ale możemy na pewno sieć zmierzyć i testować, aby mieć pojęcie i na przykład wiedzieć o co zapytać suport lub z czym się do suportu zwrócić.

Dzięki iperf3 można mierzyć nie tylko sam transfer, ale także szereg dodatkowych parametrów takich jak: timing, bufor, protokoły tcp i udp i wiele więcej.

Jak już wspomniałem, instalacja jest prosta i w zależności od systemu sprowadza się do wydania komendy:

Dla Debiana:

apt-get install iperf3

Dla RedHat, CentOS:

yum install iperf3

Testowanie iperf3

Kiedy mamy już zainstalowany pakiet iperf3, możemy przejść do właściwej części testowania sieci między serwerami. Iperf3 powinien być zainstalowany na obu serwerach. Jeden będzie pełnił funkcję serwera, drugi będzie pełnił funkcję klienta.

Po stronie serwera

Wybieramy jeden z serwerów – dowolny. Nie ma znaczenie, który będzie pełnił funkcję serwera, a który klienta. Na tym wybranym jako serwer  – po zainstalowaniu iperfa wykonujemy:

iperf3 -s -f K

Domyślnie będzie on nasłuchiwał na porcie 5201 w debianie. W tym przypadku port ten powinien być otwarty między serwerami i udrożniony. Jeśli port 5201 jest zamknięty z jakiegoś powodu lub coś innego nasłuchują na nim, można port zmienić za pomocą przełącznika -p (małe p).

Pozostałe przełączniki użyte do testu:

-s – uruchom jako server mode

-f K – format. K (Kb), M (Mb), G (Gb), T (Tb) czyli kilobity, megabity, itd…

Po stronie klienta:

Jeśli nasz serwer nasłuchuje na wspomnianym porcie np. 6000 to wydajemy po stronie klienta polecenie:

iperf3 -c 10.0.0.3 -f K -p 6000

Pokaże nam się okienko po stronie klienta:

A po stronie serwera:

Rozpocznie się testowanie sieci. Musimy poczekać do końca testu.

Jeśli przestawimy się na inny przełącznik pokazujący np. Megabity na sekundę, będzie to wyglądać tak:

Jak widać, między moimi serwerami połączenie lokalne wynosi mniej więcej 250-320 MB/s.

W innym teście wyniki są dwukrotnie lepsze.

Aby zmaksymalizować utylizację sieci i przetestować wydajność, na przykład na kilku jednoczesnych połączeniach, możemy dodać przełącznik do pararelizacji czyli jednoczesnych połączeń.

iperf3 -c 10.0.0.3 -f M -p 6000 -P 10

-P 10 – oznacza 10 jednoczesnych połączeń

W zaznaczonym obszarze znajduje się podsumowanie wszystkich sesji. Jak widać – sieć wyciska maksymalnie 500 Mb/s.

Możemy, jeśli mamy taką potrzebę, przekierować na przykład wyniki do logu używając znanego przełącznika >

iperf3 -c 10.0.0.3 -f G -p 6000 -P 10 > test.log

Wtedy wszystkie te informacje wyświetlane na ekranie zostaną zapisane bezpośrednio do pliku z logiem. Z innych przydatnych przełączników, możemy na przykład zwrócić nieco więcej informacji poprzez dodanie przełącznika -V czyli verbose.

Z kolei przełączniki:

4 (–version 4)

-6 (–version 6)

określą czy korzystamy z sieci ipv4 czy ipv6.

Przełącznik -D z kolei pozwoli nam uruchomić iperfa w trybie daemon i zamknąć okno z sesją otwartą do serwera, jeśli zależy nam na przykład na stałym, cyklicznym testowaniu przepustowości naszej sieci (np. z monitoringu).