1/58
iperf/jperf - pomiar przepustowości TCP i UDP

Prezentacja koncentruje się na narzędziu iperf3 (oraz jego GUI nakładce jperf), będącym standardem w pomiarach przepustowości sieci TCP i UDP. Omówiono model klient-serwer, opcje testów TCP (okno, równoległość) i UDP (pasmo, datagramy) oraz zaawansowane funkcje, takie jak testy dwukierunkowe i format JSON. Przedstawiono również interpretację wyników, scenariusze testowe oraz automatyzację pomiarów.

Grafika tytułowa: logo iperf3, wykres przepustowości, ikona sieci

Dziewiąta prezentacja z cyklu "Pomiary logiczne - protokoły, przechwytywanie i analiza ruchu" koncentruje się na narzędziu iperf/jperf, które jest standardem w pomiarach przepustowości sieci TCP i UDP.

Narzędzie iperf3, rozwijane przez ESnet (Energy Sciences Network), zostało zaprojektowane z myślą o prostocie i dokładności pomiarów w nowoczesnych sieciach szkieletowych.

W tej części omówione zostaną zarówno podstawy uruchamiania serwera i klienta, jak i zaawansowane opcje konfiguracyjne, w tym testy dwukierunkowe, obsługa JSON oraz automatyzacja pomiarów.

Materiał ma charakter praktyczny - każdy slajd zawiera przykłady poleceń i interpretację wyników, co pozwala na samodzielne wykonywanie testów we własnej sieci.

Wiedza z zakresu pomiarów przepustowości jest niezbędna dla administratorów sieci, inżynierów DevOps oraz specjalistów ds. zapewnienia jakości usług (QoS).

2/58
Plan części 9

Plan części 9

  • Czym jest iperf? – historia i rozwój
  • iperf2 vs iperf3 – różnice
  • Instalacja iperf3
  • Model klient-serwer
  • Serwer iperf3 – opcje uruchamiania
  • Klient iperf3 – podstawowe testy
  • Opcje testów TCP
  • Opcje testów UDP
  • Zaawansowane opcje iperf3
  • Wynik JSON i parsowanie
  • Interpretacja wyników TCP
  • Interpretacja wyników UDP
  • Scenariusze testowe i case study
  • jperf – nakładka GUI
  • Podsumowanie i pytania kontrolne
Diagram z mapą myśli przedstawiającą plan

Plan dziewiątej części prezentacji obejmuje zarówno wprowadzenie teoretyczne do narzędzia iperf, jak i szczegółowe omówienie wszystkich kluczowych opcji wiersza poleceń.

W dalszej części przedstawione zostaną zagadnienia związane z interpretacją wyników testów TCP i UDP, ze szczególnym uwzględnieniem retransmisji, okna przeciążenia (CWND) i jittera.

Praktyczne scenariusze testowe i studia przypadków pozwolą na zrozumienie, w jaki sposób wykorzystywać iperf w codziennej diagnostyce sieci LAN, WLAN i WAN.

Osobny blok poświęcono nakładce graficznej jperf, która ułatwia konfigurację testów osobom preferującym interfejs graficzny nad wiersz poleceń.

Całość zakończy się podsumowaniem najważniejszych opcji, wskazówkami interpretacyjnymi oraz pytaniami kontrolnymi sprawdzającymi zdobytą wiedzę.

3/58
Narzędzie do pomiaru przepustowości

Czym jest iperf?

iperf to narzędzie do aktywnego pomiaru maksymalnej przepustowości sieci TCP i UDP. Działa w modelu klient-serwer – klient wysyła dane, serwer je odbiera i raportuje statystyki.

Historia:

  • iperf 2.x – rozwijany przez NLANR/DAST (2000–2003), później fork w źródłach
  • iperf3 – przepisany od podstaw przez ESnet (Energy Sciences Network) w 2014
  • Cel: prostota, wydajność, dokładność pomiarów, wsparcie dla nowoczesnych sieci

Obecnie iperf3 jest standardem w testach przepustowości w środowiskach badawczych i produkcyjnych.

iperf3 nie jest wstecznie zgodny z iperf2 – klient i serwer muszą być w tej samej głównej wersji.
Logo iperf3, logo ESnet, oś czasu rozwoju narzędzia

iperf to standardowe narzędzie do aktywnego pomiaru maksymalnej przepustowości sieci, działające w architekturze klient-serwer na protokołach TCP i UDP.

Pierwsza wersja iperf (2.x) powstała w latach 2000-2003 w NLANR/DAST, ale to iperf3, przepisany od podstaw przez ESnet w 2014 roku, stał się nowoczesnym standardem.

Główną zaletą iperf3 jest obsługa wielowątkowości, formatu JSON oraz zaawansowanych algorytmów kontroli przeciążenia TCP, takich jak BBR i CUBIC.

Narzędzie jest używane zarówno w środowiskach badawczych (np. testy łączy 100 Gb/s w sieciach naukowych), jak i produkcyjnych do weryfikacji SLA i diagnostyki.

Ważną cechą jest również niewielki rozmiar pliku wykonywalnego - iperf3 na Windows to pojedynczy plik .exe, który można uruchomić bez instalacji, idealny do testów przenośnych.

4/58
Różnice między wersjami

iperf2 vs iperf3

Cechaiperf 2.xiperf 3
DeveloperNLANR/DAST → communityESnet / Lawrence Berkeley National Lab
ArchitekturaPojedynczy wątekWielowątkowa (strumienie w osobnych wątkach)
Test obustronny-d (wbudowany)--bidir (od iperf 3.1)
JSON outputNieTak (-J)
KompatybilnośćKlient/serwer 2.xKlient/serwer 3.x
RozwójUtrzymywany (bugfixy)Aktywny, nowe funkcje

Oba narzędzia są nadal rozwijane, ale iperf3 jest zalecany dla nowych wdrożeń.

Tabela porównawcza z logami obu wersji

Podstawowa różnica między iperf2 a iperf3 leży w architekturze - iperf3 został napisany od nowa, a nie stanowi jedynie aktualizacji poprzedniej wersji.

iperf3 oferuje wbudowaną obsługę wielowątkowości, co oznacza, że każdy strumień testowy działa w osobnym wątku, poprawiając wydajność na maszynach wielordzeniowych.

Obsługa formatu JSON (-J) w iperf3 umożliwia łatwe parsowanie wyników przez skrypty w Python, bash czy PowerShell, co jest kluczowe dla automatyzacji.

Test dwukierunkowy (--bidir) dostępny od iperf3 3.1 pozwala na jednoczesny pomiar w obu kierunkach, podczas gdy iperf2 wymagał osobnej opcji -d.

Należy pamiętać, że iperf3 nie jest zgodny z iperf2 - klient i serwer muszą być w tej samej głównej wersji, aby test zadziałał poprawnie.

5/58
Instalacja w systemie Linux

Instalacja iperf3 – Linux

Większość dystrybucji Linux ma iperf3 w oficjalnych repozytoriach:

# Debian / Ubuntu / Linux Mint
sudo apt update
sudo apt install iperf3

# RHEL / CentOS / Fedora
sudo dnf install iperf3

# Arch Linux
sudo pacman -S iperf3

# openSUSE
sudo zypper install iperf3

Sprawdzenie wersji: iperf3 --version.

Na starszych dystrybucjach może być dostępna starsza wersja iperf3 (3.1 vs 3.16). Zawsze sprawdź wersję.
Zrzut ekranu terminala z instalacją i weryfikacją wersji

W systemie Debian/Ubuntu iperf3 dostępny jest w oficjalnych repozytoriach pod nazwą pakietu iperf3, instalowanego standardowym menedżerem pakietów apt.

W dystrybucjach RHEL/CentOS/Fedora starszych niż Fedora 22 należy użyć yum zamiast dnf, a w najnowszych wersjach dnf jest domyślnym menedżerem.

Po instalacji warto sprawdzić wersję poleceniem iperf3 --version, ponieważ starsze dystrybucje mogą oferować starsze wersje (np. 3.1 zamiast 3.16).

Wersja 3.16 wprowadziła m.in. ulepszoną obsługę --fq-rate, lepsze raportowanie CPU oraz poprawki stabilności dla testów wielostrumieniowych.

Alternatywną metodą instalacji jest kompilacja ze źródeł z repozytorium GitHub ESnet, co pozwala na uzyskanie najnowszej wersji z dodatkowymi łatami.

6/58
Instalacja w systemie Windows

Instalacja iperf3 – Windows

Opcje instalacji:

  • Pobranie binarnej paczki z oficjalnej strony ESnet (GitHub Releases) – plik .zip zawierający iperf3.exe
  • Chocolatey: choco install iperf3
  • Scoop: scoop install iperf3
  • WSL: instalacja przez apt w podsystemie Linux

Po pobraniu ZIP – rozpakuj do folderu (np. C:\tools\iperf3) i dodaj do PATH.

iperf3 --version
Na Windows iperf3 nie wymaga instalacji – działa jako standalone exe. Idealne do testów przenośnych (pendrive).
Strona GitHub Releases iperf3, folder z plikiem iperf3.exe

Na systemie Windows iperf3 nie wymaga instalacji w tradycyjnym rozumieniu - po rozpakowaniu archiwum ZIP plik iperf3.exe jest gotowy do użycia.

Oficjalne wydania binarne dla Windows są dostępne na stronie GitHub ESnet w zakładce Releases, gdzie znajdziemy paczki dla architektur 32-bit i 64-bit.

Dodanie ścieżki do iperf3.exe do zmiennej środowiskowej PATH pozwala na wywoływanie narzędzia z dowolnego katalogu w konsoli bez podawania pełnej ścieżki.

Menedżery pakietów Chocolatey i Scoop automatyzują proces pobierania i konfiguracji iperf3 na Windows, co jest wygodne w środowiskach korporacyjnych.

WSL (Windows Subsystem for Linux) stanowi alternatywę - pozwala na uruchomienie natywnej wersji Linux iperf3 bezpośrednio w systemie Windows.

7/58
Jak działa iperf3?

Model klient-serwer w iperf

iperf3 wykorzystuje architekturę klient-serwer:

  1. Serwer – nasłuchuje na porcie TCP (domyślnie 5201) i czeka na połączenie klienta
  2. Klient – łączy się z serwerem i wysyła dane testowe
  3. Po zakończeniu testu obie strony wyświetlają podsumowanie statystyk

Dla testu TCP – klient wysyła dane (lub odbiera, jeśli użyto -R). Dla testu UDP – klient wysyła datagramy, serwer raportuje straty i jitter.

Serwer można uruchomić także w trybie jednorazowym (-s) lub jako demona (-s -D).

Serwer iperf3 domyślnie akceptuje tylko jedno połączenie na raz – użyj -s -p 5201 i wielu serwerów na różnych portach dla wielu testów jednocześnie.
Schemat: komputery A (klient) → strzałka → komputer B (serwer iperf3), port 5201

Architektura klient-serwer iperf3 opiera się na tym, że serwer nasłuchuje na określonym porcie TCP (domyślnie 5201), a klient inicjuje połączenie i wysyła dane testowe.

W teście TCP klient wysyła strumień danych, który serwer odbiera i po zakończeniu testu obie strony wyświetlają podsumowanie statystyk - transfer, przepustowość, retransmisje, CWND.

Dla testu UDP klient wysyła datagramy z określoną przepływnością (-b), a serwer raportuje dodatkowo jitter i procent utraconych pakietów (Lost/Total).

Opcja -R (reverse) odwraca kierunek testu - serwer wysyła dane do klienta, co pozwala na pomiar przepustowości w dół (download) bez zmiany ról.

Serwer iperf3 domyślnie akceptuje tylko jedno połączenie na raz, ale można uruchomić wiele instancji na różnych portach dla jednoczesnych testów od wielu klientów.

8/58
Uruchamianie serwera

Serwer iperf3 – podstawowe uruchomienie

Najprostsze uruchomienie serwera iperf3:

iperf3 -s

Serwer nasłuchuje na domyślnym porcie TCP 5201.

Wyjście serwera po podłączeniu klienta:

-----------------------------------------------------------
  Server listening on 5201
  -----------------------------------------------------------
  Accepted connection from 192.168.1.100, port 54321
  [  5] local 192.168.1.1 port 5201 connected to 192.168.1.100 port 54322
  [ ID] Interval           Transfer     Bandwidth
  [  5]   0.00-10.00  sec  1.09 GBytes   938 Mbits/sec
  -----------------------------------------------------------
Po zakończeniu testu serwer wraca do nasłuchiwania na kolejne połączenie. Aby zatrzymać – Ctrl+C.
Zrzut ekranu terminala z uruchomionym serwerem i raportem po teście

Najprostsze wywołanie iperf3 -s uruchamia serwer w trybie interaktywnym, który po przyjęciu połączenia i zakończeniu testu wraca do nasłuchiwania na kolejne połączenie.

Serwer domyślnie nasłuchuje na porcie TCP 5201, który powinien być otwarty w firewallu po stronie serwera, aby klient mógł się połączyć.

Wynik wyjścia serwera po teście zawiera informacje o adresie źródłowym klienta, porcie źródłowym i docelowym oraz szczegółowe statystyki przepustowości.

Aby zatrzymać serwer działający w trybie interaktywnym, należy użyć kombinacji klawiszy Ctrl+C - serwer zakończy działanie po odebraniu sygnału SIGINT.

W środowiskach produkcyjnych zaleca się uruchamianie serwera jako demona (-D) z zapisem logu do pliku (--logfile), co zapewnia trwałość i możliwość audytu.

9/58
Zaawansowane uruchomienie serwera

Serwer z opcjami

# Serwer na konkretnym porcie
iperf3 -s -p 5202

# Serwer jako demon (background)
iperf3 -s -D

# Serwer z zapisem logu
iperf3 -s --logfile /var/log/iperf3.log

# Serwer z limitem czasu (auto-stop po N sekundach bez klienta)
iperf3 -s --idle-timeout 60

# Serwer działający na wielu portach - wiele instancji
iperf3 -s -p 5201 & iperf3 -s -p 5202 &

Opcja -D (daemon) uruchamia serwer w tle – idealne do długotrwałych testów.

Schemat: jeden fizyczny serwer, trzy instancje iperf3 na portach 5201, 5202, 5203

Uruchomienie serwera na niestandardowym porcie (np. -p 5202) jest przydatne w sytuacjach, gdy domyślny port 5201 jest już zajęty lub zablokowany przez firewall.

Opcja -D (daemon) uruchamia serwer w tle, co pozwala na kontynuowanie pracy w terminalu bez blokowania go przez proces iperf3 -s.

Zapis logu do pliku (--logfile) jest szczególnie ważny w przypadku długotrwałych testów - umożliwia późniejszą analizę i audyt wykonanych pomiarów.

Opcja --idle-timeout serwera z wartością czasu powoduje automatyczne zakończenie serwera po N sekundach bez aktywności klienta, co zapobiega wiszącym procesom.

Uruchomienie wielu instancji serwera na różnych portach (np. 5201, 5202, 5203) pozwala na jednoczesną obsługę wielu klientów i testów równoległych.

10/58
Pierwszy test iperf3

Klient – podstawowy test TCP

Najprostsze wywołanie klienta:

iperf3 -c 192.168.1.100

Domyślnie: test trwa 10 sekund, raport co 1 sekundę, jeden strumień TCP.

Przykładowy wynik:

Connecting to host 192.168.1.100, port 5201
  [  4] local 192.168.1.1 port 54322 connected to 192.168.1.100 port 5201
  [ ID] Interval           Transfer     Bandwidth
  [  4]   0.00-1.00   sec   113 MBytes   945 Mbits/sec
  [  4]   1.00-2.00   sec   112 MBytes   940 Mbits/sec
  [  4]   2.00-3.00   sec   112 MBytes   940 Mbits/sec
  ...
  [  4]   0.00-10.00  sec  1.09 GBytes   938 Mbits/sec

  [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
  [  4]   0.00-10.00  sec  1.09 GBytes   938 Mbits/sec  0    552 KBytes
Zrzut terminala z wynikami testu TCP iperf3, podświetlone wartości Bitrate, Retr, Cwnd

Podstawowe wywołanie iperf3 -c 192.168.1.100 uruchamia 10-sekundowy test TCP z jednym strumieniem i raportowaniem co 1 sekundę.

Wynik testu TCP zawiera kolumny: ID strumienia, przedział czasu (Interval), ilość przesłanych danych (Transfer), przepustowość (Bandwidth), retransmisje (Retr) oraz rozmiar okna przeciążenia (Cwnd).

W idealnych warunkach (sieć LAN, łącze 1 Gb/s) spodziewana przepustowość to około 940 Mbit/s, co wynika z narzutu protokołu TCP (nagłówki, ACK).

Retransmisje (Retr) powinny wynosić 0 w sieci LAN - każda wartość dodatnia wskazuje na utratę pakietów lub przeciążenie buforów pośrednich.

Rozmiar okna CWND (congestion window) pokazywany na końcu wiersza wyniku TCP informuje o aktualnym rozmiarze okna przeciążenia w bajtach - wyższe wartości oznaczają lepsze wykorzystanie łącza.

11/58
Opcja -t – czas trwania testu

-t – czas testu

Ustawia czas testu w sekundach (domyślnie 10).

# Test trwający 30 sekund
iperf3 -c 192.168.1.100 -t 30

# Test długotrwały – 300 sekund (5 minut)
iperf3 -c 192.168.1.100 -t 300

# Krótki test – 2 sekundy (szybka weryfikacja)
iperf3 -c 192.168.1.100 -t 2

Dlaczego czas testu ma znaczenie?

  • Krótki test (<10s) – może nie ustabilizować okna TCP
  • Długi test (>60s) – lepiej oddaje rzeczywistą przepustowość średnią
  • Test dobowy (86400s) – monitoring jakości łącza
Do diagnostyki okresowych spadków wydajności używaj długich testów (>60s) z interwałem 1s.
Wykres słupkowy: przepustowość w czasie dla testu 10s vs 60s

Parametr -t definiuje czas trwania testu w sekundach i ma kluczowe znaczenie dla wiarygodności pomiarów przepustowości TCP.

Krótkie testy (poniżej 10 sekund) mogą nie dać stabilnych wyników, ponieważ faza powolnego startu TCP (slow start) może nie zostać ukończona przed zakończeniem pomiaru.

Testy długotrwałe (60-300 sekund) lepiej oddają średnią przepustowość i pozwalają na zaobserwowanie ewentualnych wahań wydajności w czasie.

W monitorowaniu jakości łącza stosuje się testy dobowe (86400 sekund), które wykonywane cyklicznie co godzinę pozwalają na stworzenie profilu dobowego obciążenia.

Wybór czasu testu zależy od celu pomiaru: szybka weryfikacja łącza (2-5 s), standardowy test (10-30 s), dokładna analiza (60-300 s), monitoring ciągły (86400 s).

12/58
Opcja -i – częstotliwość raportów

-i – interwał raportowania

Ustawia co ile sekund wyświetlany jest raport cząstkowy (domyślnie 1).

# Raport co 0.5 sekundy (dwa raporty na sekundę)
iperf3 -c 192.168.1.100 -i 0.5

# Raport co 5 sekund
iperf3 -c 192.168.1.100 -i 5

# Raport co 10 sekund (czysty wynik końcowy)
iperf3 -c 192.168.1.100 -i 10

Mniejszy interwał = więcej danych do analizy, ale większy narzut na wyjście.

W testach długotrwałych interwał 5–10s daje czytelne wyniki.

Tabela z wynikami cząstkowymi dla różnych interwałów

Opcja -i (interval) określa co ile sekund wyświetlany jest raport cząstkowy z bieżącymi statystykami przepustowości dla każdego strumienia.

Domyślny interwał 1 sekundy daje 10 raportów cząstkowych w standardowym teście 10-sekundowym, co pozwala na zaobserwowanie wahań przepustowości w czasie.

Interwał 0.5 sekundy może być przydatny przy analizie krótkotrwałych fluktuacji, ale generuje dwa razy więcej danych wyjściowych do przetworzenia.

W testach długotrwałych (powyżej 60 sekund) interwał 5-10 sekund daje czytelne wyniki bez nadmiernego rozbudowania wyjścia.

W przypadku testów automatycznych zapisywanych do pliku warto użyć interwału 1 sekundy i formatu JSON (-J), co ułatwia późniejsze przetwarzanie danych.

13/58
Opcja -p – port serwera

-p – port serwera

Ustawia port serwera (domyślnie 5201). Klient i serwer muszą używać tego samego portu.

# Serwer na porcie 5202
iperf3 -s -p 5202

# Klient łączący się na port 5202
iperf3 -c 192.168.1.100 -p 5202

# Test na niestandardowym porcie (np. 9000)
iperf3 -c 192.168.1.100 -p 9000

Przydatne, gdy port 5201 jest zablokowany przez firewall lub chcemy uruchomić wiele serwerów.

Schemat: firewall przepuszcza port 5202, blokuje 5201

Opcja -p pozwala na określenie niestandardowego portu TCP, na którym nasłuchuje serwer i do którego łączy się klient.

Domyślny port 5201 dla iperf3 różni się od domyślnego portu iperf2 (5001), co należy uwzględnić przy testach między różnymi wersjami narzędzia.

Wybór niestandardowego portu jest konieczny, gdy port 5201 jest blokowany przez reguły firewall w sieci lokalnej lub na routerze brzegowym.

Uruchomienie wielu serwerów na różnych portach (np. 5201-5210) pozwala na obsługę wielu klientów jednocześnie, co jest przydatne w środowiskach laboratoryjnych.

Przy wyborze portu należy unikać portów zarejestrowanych (0-1023) oraz portów używanych przez inne usługi, aby nie powodować konfliktów.

14/58
Opcja -P – wiele strumieni

-P – równoległe strumienie

Uruchamia równoległe strumienie TCP/UDP w jednym teście (domyślnie 1).

# 4 równoległe strumienie TCP
iperf3 -c 192.168.1.100 -P 4

# 8 strumieni – większe obciążenie sieci
iperf3 -c 192.168.1.100 -P 8

# 2 strumienie UDP z ograniczeniem pasma
iperf3 -c 192.168.1.100 -u -b 100M -P 2

Zalety wielu strumieni:

  • Zwiększa przepustowość w sieciach z wieloma ścieżkami (ECMP, link aggregation)
  • Pozwala sprawdzić skalowalność TCP
  • Symuluje ruch wielu użytkowników
Każdy strumień osobno raportuje wyniki – na końcu podawana jest suma.
Diagram: jeden klient → 4 strumienie → jeden serwer

Opcja -P (parallel) uruchamia wiele równoległych strumieni TCP lub UDP w ramach jednego testu, co może zwiększyć sumaryczną przepustowość.

Każdy strumień działa w osobnym wątku i raportuje własne statystyki, a na końcu testu podawana jest suma wszystkich strumieni.

W sieci LAN z pojedynczym łączem zwiększenie liczby strumieni nie zwiększy sumarycznej przepustowości, ponieważ ograniczeniem jest fizyczna przepustowość łącza.

W sieciach z agregacją łączy (LAG/LACP) lub równoważeniem obciążenia (ECMP) wiele strumieni pozwala na wykorzystanie wszystkich dostępnych ścieżek.

Testy z wieloma strumieniami symulują ruch wielu użytkowników i są przydatne do sprawdzenia skalowalności TCP oraz zachowania mechanizmów QoS.

15/58
Opcja -R – tryb odwrócony

-R – odwrócony kierunek

Domyślnie klient wysyła dane do serwera. Opcja -R odwraca kierunek – serwer wysyła dane do klienta.

# Test odwrócony – serwer wysyła do klienta
iperf3 -c 192.168.1.100 -R

# Odwrócony z wieloma strumieniami
iperf3 -c 192.168.1.100 -R -P 4

Przydatne do:

  • Pomiaru przepustowości w dół (download) dla klienta
  • Testów asymetrycznych łączy (ADSL, 5G, SAT)
  • Porównania wydajności w obu kierunkach
W trybie -R serwer nadal musi być uruchomiony na maszynie docelowej, ale to klient inicjuje połączenie i serwer wysyła dane.
Schemat: klient ← strzałka ← serwer (odwrócony kierunek)

Opcja -R (reverse) odwraca domyślny kierunek testu - serwer wysyła dane do klienta, co symuluje ruch pobierania (download).

W domyślnym teście (bez -R) klient wysyła dane do serwera, co odpowiada ruchowi wysyłania (upload) z perspektywy klienta.

Testy z -R są szczególnie przydatne w przypadku łączy asymetrycznych (ADSL, 5G, LTE, łącza satelitarne), gdzie przepustowość wysyłania i pobierania różni się znacząco.

Porównanie wyników testu normalnego i odwróconego pozwala na określenie symetrii łącza - różnica powyżej 20% wskazuje na asymetrię.

W trybie -R serwer nadal musi być uruchomiony na maszynie docelowej, ale to klient inicjuje połączenie kontrolne, po którym serwer rozpoczyna wysyłanie danych.

16/58
Test dwukierunkowy (bidirectional)

--bidir – test obustronny

Od iperf3 3.1 dostępna jest opcja --bidir, która symultanicznie testuje oba kierunki.

# Test dwukierunkowy
iperf3 -c 192.168.1.100 --bidir

# Dwukierunkowo z wieloma strumieniami
iperf3 -c 192.168.1.100 --bidir -P 2

Różnica między -R a --bidir:

  • -R – tylko jeden kierunek (od serwera do klienta)
  • --bidir – oba kierunki jednocześnie
Test dwukierunkowy obciąża sieć dwa razy bardziej – może ujawnić problemy z symetrią łącza.
Schemat: strzałka w lewo + strzałka w prawo (jednoczesny transfer)

Opcja --bidir dostępna od iperf3 3.1 umożliwia jednoczesny pomiar przepustowości w obu kierunkach, co lepiej oddaje rzeczywiste obciążenie sieci.

W przeciwieństwie do -R, który testuje tylko jeden kierunek na raz, --bidir wysyła dane jednocześnie w obie strony na osobnych strumieniach.

Test dwukierunkowy obciąża sieć dwa razy bardziej niż test jednokierunkowy, co może ujawnić problemy z symetrią buforów na przełącznikach.

Wyniki testu --bidir pokazują osobno przepustowość w każdym kierunku, co pozwala na identyfikację asymetrii w łączach światłowodowych (różne długości fal dla TX/RX).

Przy interpretacji wyników testu dwukierunkowego należy pamiętać, że sumaryczna przepustowość może być niższa niż suma testów jednokierunkowych z powodu współdzielenia buforów.

17/58
Test UDP z iperf3

-u – test UDP

Opcja -u przełącza na protokół UDP (zamiast domyślnego TCP).

# Podstawowy test UDP
iperf3 -c 192.168.1.100 -u

# Test UDP z określoną przepływnością
iperf3 -c 192.168.1.100 -u -b 100M

Wynik testu UDP zawiera dodatkowe statystyki:

  • Jitter – odchylenie opóźnienia (ms)
  • Lost/Total – liczba utraconych/wysłanych datagramów
  • Datagrams – liczba datagramów na sekundę
W teście UDP domyślnie przepływność wynosi 1 Mbit/s – zawsze używaj -b z oczekiwaną przepływnością.
Zrzut terminala z wynikiem testu UDP – podświetlone Jitter, Lost/Total

Opcja -u przełącza iperf3 w tryb UDP, w którym klient wysyła datagramy UDP zamiast strumienia TCP, co pozwala na pomiar przepustowości przy braku kontroli przeciążenia.

Dla testu UDP domyślna przepływność wynosi zaledwie 1 Mbit/s - zawsze należy użyć opcji -b z odpowiednią wartością dopasowaną do oczekiwanej przepustowości łącza.

Wynik testu UDP zawiera dodatkowe kolumny: Jitter (odchylenie opóźnienia w ms), Lost/Total (liczba utraconych do wysłanych datagramów) oraz Datagrams (liczba datagramów na sekundę).

Jitter obliczany jest według algorytmu z RFC 3550 (RTP) i mierzy zmienność opóźnienia między kolejnymi datagramami - niska wartość oznacza stabilne łącze.

Testy UDP są szczególnie przydatne do oceny przydatności łącza dla aplikacji czasu rzeczywistego, takich jak VoIP, wideokonferencje i strumieniowanie wideo na żywo.

18/58
Opcja -b – przepływność docelowa

-b – przepływność docelowa dla UDP

Ustawia docelową przepływność wysyłania. Dla UDP jest to jedyna kontrola nad szybkością (TCP sam reguluje).

# UDP z limitem 10 Mbit/s
iperf3 -c 192.168.1.100 -u -b 10M

# UDP z limitem 500 Mbit/s
iperf3 -c 192.168.1.100 -u -b 500M

# UDP z limitem 1 Gbit/s (maks dla Fast Ethernet)
iperf3 -c 192.168.1.100 -u -b 1000M

# UDP z limitem w Kbit/s
iperf3 -c 192.168.1.100 -u -b 512K

Jeśli ustawisz -b wyższe niż dostępna przepustowość – zaczną się straty pakietów.

Wykres: przepływność zadana vs rzeczywista – strata przy przekroczeniu limitu

Opcja -b (bandwidth) ustawia docelową przepływność wysyłania dla testu UDP, co jest jedynym sposobem kontroli szybkości transmisji w tym protokole - TCP reguluje ją sam.

Wartość -b może być podana w różnych jednostkach: 10M (10 megabitów/s), 500M (500 megabitów/s), 1000M (1 gigabit/s), 512K (512 kilobitów/s).

Jeśli ustawiona wartość -b przekracza rzeczywistą przepustowość łącza, w wynikach testu UDP pojawią się straty pakietów (Lost/Total > 0%), co sygnalizuje przeciążenie.

Można użyć opcji -b do stopniowego zwiększania przepływności (np. 10M, 50M, 100M, 200M, 500M) w seriach testów, aby znaleźć maksymalną przepustowość UDP bez strat.

Dla TCP opcja -b działa inaczej - ogranicza przepływność na poziomie aplikacji, co może być przydatne do symulacji łącza o niższej przepustowości.

19/58
Opcja -l – długość bufora

-l – rozmiar bufora/datagramu

Ustawia rozmiar bufora odczytu/zapisu. Dla TCP – rozmiar bloku danych, dla UDP – rozmiar datagramu.

# TCP: mniejszy bufor (8 KB)
iperf3 -c 192.168.1.100 -l 8K

# TCP: większy bufor (256 KB)
iperf3 -c 192.168.1.100 -l 256K

# UDP: większe datagramy (1470 B – MTU 1500 minus nagłówki)
iperf3 -c 192.168.1.100 -u -b 100M -l 1470

# UDP: małe datagramy (100 B – symulacja VoIP)
iperf3 -c 192.168.1.100 -u -b 1M -l 100

Domyślnie: TCP = 128 KB, UDP = 8 KB (8192 B) lub 1460 B zależnie od wersji.

Porównanie: duży datagram vs małe datagramy – różnica w liczbie pakietów na sekundę

Opcja -l (length) ustawia rozmiar bufora odczytu/zapisu, co dla TCP oznacza rozmiar bloku danych, a dla UDP rozmiar pojedynczego datagramu.

Dla TCP domyślny rozmiar bufora wynosi 128 KB, co jest wartością optymalną dla większości zastosowań - większe bufory mogą poprawić wydajność na łączach o dużym BDP.

Dla UDP domyślny rozmiar datagramu to 8 KB (8192 B) lub 1460 B w zależności od wersji - mniejsze datagramy (np. 100 B) symulują ruch VoIP, większe (1460 B) maksymalizują wydajność.

Przy ustawianiu -l dla UDP należy uwzględnić MTU łącza - datagramy większe niż MTU będą fragmentowane na poziomie IP, co zwiększa ryzyko utraty pakietów.

Zmiana rozmiaru bufora TCP może wpłynąć na liczbę retransmisji - zbyt mały bufor zwiększa liczbę segmentów i tym samym ryzyko utraty, zbyt duży może powodować nieefektywne wykorzystanie pamięci.

20/58
Opcja -w – rozmiar okna TCP

-w – okno TCP (socket buffer)

Ustawia rozmiar okna TCP (socket buffer) w bajtach. To kluczowy parametr dla wydajności TCP.

# Okno TCP 64 KB – domyślne w starszych systemach
iperf3 -c 192.168.1.100 -w 64K

# Okno TCP 256 KB – dla łączy o większym BDP
iperf3 -c 192.168.1.100 -w 256K

# Okno TCP 1 MB – dla szybkich łączy WAN
iperf3 -c 192.168.1.100 -w 1M

Bandwidth-Delay Product (BDP) = przepustowość × RTT. Okno TCP powinno być ≥ BDP dla pełnego wykorzystania łącza.

Dla 1 Gb/s i RTT 100 ms: BDP = 1e9 × 0.1 / 8 = 12.5 MB.

Zbyt małe okno TCP = niewykorzystane łącze. Używaj -w z wartością ≥ BDP dla maksymalnej wydajności.
Wykres przepustowości w funkcji okna TCP

Opcja -w ustawia rozmiar okna TCP (socket buffer) w bajtach, co jest jednym z najważniejszych parametrów wpływających na wydajność TCP.

Rozmiar okna TCP określa maksymalną ilość danych, jaka może być wysłana bez potwierdzenia (ACK) - im większe okno, tym wyższa potencjalna przepustowość przy danym RTT.

Bandwidth-Delay Product (BDP) to iloczyn przepustowości i RTT, wyrażony w bitach - okno TCP powinno być co najmniej równe BDP dla pełnego wykorzystania łącza.

Dla łącza 1 Gb/s z RTT 100 ms BDP wynosi 12,5 MB, co oznacza, że okno TCP poniżej tej wartości będzie ograniczać przepustowość.

W nowoczesnych systemach Linux okno TCP jest automatycznie skalowane (TCP window scaling zgodnie z RFC 1323), ale -w pozwala na ręczne ustawienie wartości dla konkretnych testów.

21/58
Opcja -M – rozmiar MTU

-M – MTU i jumbo frames

Ustawia MTU (Maximum Transmission Unit) dla pakietów TCP/UDP. Opcja -M ustawia flagę DF (Don't Fragment) i sugeruje MTU.

# Standardowy MTU 1500
iperf3 -c 192.168.1.100 -M 1500

# Jumbo frames – wymaga obsługi po obu stronach
iperf3 -c 192.168.1.100 -M 9000

# MTU 4000 – niestandardowe
iperf3 -c 192.168.1.100 -M 4000

Jumbo frames (MTU 9000) mogą zwiększyć przepustowość nawet o 10–20% przez redukcję nagłówków.

Jumbo frames wymagają wsparcia od przełączników – jeśli choć jeden przełącznik nie obsługuje, pakiety będą dzielone (fragmentacja) lub odrzucane.
Porównanie: MTU 1500 (96 pakietów dla 1 MB) vs MTU 9000 (16 pakietów) – mniej nagłówków

Opcja -M ustawia wartość MTU (Maximum Transmission Unit) dla pakietów TCP/UDP, ustawiając flagę DF (Don't Fragment) w nagłówku IP.

Standardowe MTU dla Ethernet wynosi 1500 bajtów, co oznacza, że każda ramka może przenosić maksymalnie 1500 bajtów danych warstwy sieciowej.

Jumbo frames z MTU 9000 pozwalają na zmniejszenie liczby pakietów potrzebnych do przesłania danej ilości danych - dla 1 MB danych potrzeba ~117 pakietów zamiast ~710.

Redukcja liczby pakietów zmniejsza narzut na nagłówki i obciążenie CPU, co może zwiększyć przepustowość nawet o 10-20% w sieciach LAN.

Jumbo frames wymagają wsparcia na wszystkich urządzeniach na trasie (hosty, przełączniki, routery) - jeśli choć jeden przełącznik nie obsługuje MTU 9000, pakiety będą odrzucane.

22/58
Opcja -N – brak opóźnienia

-N – algorytm Nagle

-N wyłącza algorytm Nagle (TCP_NODELAY). Algorytm Nagle grupuje małe pakiety w większe dla oszczędności nagłówków.

# Wyłączenie algorytmu Nagle (mniejsze opóźnienie)
iperf3 -c 192.168.1.100 -N

Kiedy używać -N:

  • Testy wrażliwe na opóźnienie (np. VoIP, gry)
  • Benchmarkowanie z małymi pakietami
  • Porównanie z normalnym działaniem TCP

Domyślnie algorytm Nagle jest włączony – może zafałszować wyniki w testach z małymi buforami.

Schemat: pakiety bez Nagle (wysyłane od razu) vs z Nagle (grupowane)

Opcja -N wyłącza algorytm Nagle (TCP_NODELAY), który domyślnie grupuje małe pakiety TCP w większe segmenty w celu redukcji liczby nagłówków.

Algorytm Nagle opóźnia wysyłanie małych pakietów (poniżej MSS) do momentu otrzymania potwierdzenia dla poprzednich danych lub zgromadzenia wystarczającej ilości danych do wysłania.

Wyłączenie algorytmu Nagle (-N) powoduje natychmiastowe wysyłanie każdego zapisu do gniazda, co zmniejsza opóźnienie kosztem większej liczby małych pakietów w sieci.

W testach iperf3 opcja -N jest przydatna do symulowania aplikacji wrażliwych na opóźnienie (VoIP, gry online, aplikacje interaktywne), które wysyłają małe pakiety.

Należy pamiętać, że wyłączenie algorytmu Nagle może zwiększyć obciążenie sieci i CPU z powodu większej liczby małych pakietów, co jest akceptowalne w testach laboratoryjnych.

23/58
Opcja -Z – algorytm kontroli przeciążenia

-Z – kontrola przeciążenia TCP

Ustawia algorytm kontroli przeciążenia TCP dostępny w systemie.

# CUBIC – domyślny w Linux (od 2.6.19)
iperf3 -c 192.168.1.100 -Z cubic

# BBR – nowoczesny, Google, dobre na WAN
iperf3 -c 192.168.1.100 -Z bbr

# Reno – klasyczny (działający w każdym systemie)
iperf3 -c 192.168.1.100 -Z reno

# Sprawdzenie dostępnych algorytmów w systemie
sysctl net.ipv4.tcp_available_congestion_control

Wybór algorytmu wpływa na:

  • Szybkość zwiększania okna (CUBIC vs Reno)
  • Zachowanie przy utracie pakietów (BBR vs CUBIC)
  • Sprawiedliwość wobec innych połączeń
Wykres porównawczy: przepustowość w czasie dla CUBIC, BBR, Reno

Opcja -Z pozwala na wybór algorytmu kontroli przeciążenia TCP spośród dostępnych w systemie operacyjnym, co wpływa na sposób reagowania na utratę pakietów.

CUBIC jest domyślnym algorytmem w Linux od wersji 2.6.19 i jest zoptymalizowany pod kątem sieci o dużym BDP, stosując sześcienną funkcję wzrostu okna.

BBR (Bottleneck Bandwidth and Round-trip propagation time) opracowany przez Google modeluje przepustowość wąskiego gardła i RTT, zamiast reagować na utratę pakietów jak tradycyjne algorytmy.

BBR jest szczególnie skuteczny w sieciach WAN o dużej przepustowości i zmiennym opóźnieniu, gdzie tradycyjne algorytmy (Reno, CUBIC) mogą nie w pełni wykorzystać dostępne pasmo.

Sprawdzenie dostępnych algorytmów w Linux wykonuje się poleceniem sysctl net.ipv4.tcp_available_congestion_control, a załadowanie dodatkowych wymaga modprobe.

24/58
Opcja --cport – źródłowy port klienta

--cport – port źródłowy

Ustawia port źródłowy, z którego klient nawiązuje połączenie (domyślnie losowy).

# Ustawienie stałego portu źródłowego
iperf3 -c 192.168.1.100 --cport 50000

Zastosowania:

  • Reguły firewall wymagające stałego portu źródłowego
  • Testy z QoS opartym na porcie źródłowym
  • Unikanie blokad na określonych zakresach portów
Schemat: klient z portem 50000 → serwer na porcie 5201

Opcja --cport (client port) umożliwia ustawienie stałego portu źródłowego, z którego klient nawiązuje połączenie z serwerem - domyślnie system wybiera losowy port źródłowy.

Użycie stałego portu źródłowego jest przydatne w środowiskach ze ścisłymi regułami firewalla, które wymagają ruchu z określonego portu lub zakresu portów.

Mechanizmy QoS (Quality of Service) często klasyfikują ruch na podstawie portów źródłowych - stały port ułatwia przypisanie odpowiedniej polityki do ruchu testowego.

W testach automatyzowanych stały port źródłowy pozwala na łatwiejsze filtrowanie i identyfikację ruchu iperf w logach firewall lub systemów monitorujących.

Należy unikać używania portów zarezerwowanych (poniżej 1024) jako portów źródłowych, ponieważ mogą być używane przez inne usługi systemowe.

25/58
Opcja --fq-rate – ograniczenie przepływności

--fq-rate – ograniczenie przepływności

Wymusza limit przepływności na poziomie warstwy transportowej przy użyciu mechanizmu Fair Queuing (FQ) w jądrze Linux.

# Ograniczenie do 100 Mbit/s (TCP lub UDP)
iperf3 -c 192.168.1.100 --fq-rate 100M

# Ograniczenie do 10 Mbit/s z 4 strumieniami
iperf3 -c 192.168.1.100 --fq-rate 10M -P 4

Różnica między -b a --fq-rate:

  • -b – ogranicza aplikację iperf (działa tylko w UDP)
  • --fq-rate – ogranicza na poziomie jądra (działa dla TCP i UDP)
--fq-rate wymaga obsługi FQ w jądrze (moduł sch_fq). Działa tylko w Linux.
Schemat warstw: aplikacja → --fq-rate (jądro) → karta sieciowa

Opcja --fq-rate (Fair Queuing rate) umożliwia ograniczenie przepływności na poziomie kolejki jądra Linux przy użyciu mechanizmu Fair Queuing (sch_fq).

W przeciwieństwie do -b, które działa na poziomie aplikacji i tylko dla UDP, --fq-rate działa na poziomie jądra i obsługuje zarówno TCP, jak i UDP.

Mechanizm FQ w jądrze Linux zapewnia sprawiedliwe rozdzielanie pasma między strumienie, co pozwala na precyzyjne ograniczenie przepływności bez wpływu na inne procesy.

Opcja --fq-rate jest szczególnie przydatna w testach, w których chcemy symulować łącze o niższej przepustowości (np. 100 Mb/s na łączu 1 Gb/s) bez zmiany konfiguracji sieci.

Wymagany jest moduł jądra sch_fq, który jest domyślnie dostępny w nowoczesnych dystrybucjach Linux (jądro 3.13+), ale nie jest dostępny w systemie Windows.

26/58
Opcja -J – wynik JSON

-J – wynik JSON

Wypisuje wyniki w formacie JSON – idealne do parsowania przez skrypty i narzędzia.

iperf3 -c 192.168.1.100 -J

Przykładowy fragment wyniku JSON:

{
    "start": {
      "connected": [{"local_host": "192.168.1.1", "local_port": 54322, "remote_host": "192.168.1.100", "remote_port": 5201}]
    },
    "intervals": [
      {"streams": [{"id": 4, "bytes": 118000000, "bits_per_second": 944000000, "retransmits": 0, "snd_cwnd": 565248}]}
    ],
    "end": {
      "sum_sent": {"bits_per_second": 938000000, "bytes": 1170000000, "retransmits": 0},
      "cpu_utilization_percent": {"host_total": 12.5, "host_user": 8.3, "host_system": 4.2, "remote_total": 8.1}
    }
}
Zrzut terminala z wynikiem JSON, kolorowanie składni JSON

Opcja -J (JSON) wypisuje wyniki testu w formacie JSON, co umożliwia łatwe parsowanie przez skrypty w dowolnym języku programowania.

Format JSON zawiera wszystkie dane dostępne w trybie tekstowym: informacje o połączeniu, raporty cząstkowe (intervals), podsumowanie (end) oraz wykorzystanie CPU.

Raporty cząstkowe w JSON zawierają dla każdego interwału i każdego strumienia: liczbę bajtów, przepustowość w bitach na sekundę, liczbę retransmisji i rozmiar okna CWND.

Podsumowanie (end) zawiera zagregowane dane: sumaryczny transfer, średnią przepustowość, retransmisje oraz wykorzystanie CPU po stronie klienta i serwera.

Parsowanie JSON iperf3 w Python z użyciem biblioteki json i subprocess pozwala na automatyzację testów i tworzenie systemów monitorowania przepustowości.

27/58
Automatyczna analiza wyników

Parsowanie JSON w Python

Parsowanie JSON iperf3 w Python – prosta analiza przepustowości:

import json
import subprocess

result = subprocess.run(['iperf3', '-c', '192.168.1.100', '-J'],
                        capture_output=True, text=True)
data = json.loads(result.stdout)

bw = data['end']['sum_sent']['bits_per_second']
retr = data['end']['sum_sent']['retransmits']
cwnd = data['end']['streams'][0]['sender']['snd_cwnd']

print(f'Bandwidth: {bw/1e6:.2f} Mbps')
print(f'Retransmits: {retr}')
print(f'CWND: {cwnd} bytes')

Można rozszerzyć o zapis do bazy danych, wykresy (matplotlib), alerty.

JSON output to potężne narzędzie do automatyzacji testów i monitorowania sieci.
Zrzut ekranu IDE z kodem Python i wynikiem parsowania

Parsowanie wyników iperf3 w formacie JSON przy użyciu Pythona umożliwia tworzenie skryptów do automatyzacji testów i analizy statystycznej przepustowości.

Biblioteka subprocess pozwala na uruchomienie iperf3 z Pythona i przechwycenie standardowego wyjścia, które następnie jest przetwarzane przez json.loads().

Po sparsowaniu danych można wyodrębnić kluczowe metryki: bits_per_second (przepustowość), retransmits (retransmisje) oraz snd_cwnd (rozmiar okna przeciążenia).

Dane można rozszerzyć o zapis do bazy danych InfluxDB lub PostgreSQL, co pozwala na tworzenie wykresów w Grafanii i monitorowanie trendów przepustowości w czasie.

Skrypt można również rozbudować o wysyłanie alertów e-mail lub powiadomień Webhook w przypadku wykrycia przepustowości poniżej zadanego progu.

28/58
Opcja --logfile – zapis wyników

--logfile – zapis do pliku

Zapisuje wynik testu do pliku zamiast na stdout.

# Zapis do pliku tekstowego
iperf3 -c 192.168.1.100 --logfile wynik.txt

# Zapis z timestampem w nazwie pliku (przez skrypt)
iperf3 -c 192.168.1.100 --logfile iperf_$(date +%Y%m%d_%H%M%S).log

# Również dla serwera
iperf3 -s --logfile serwer.log

Przydatne przy długotrwałych testach i automatyzacji – wyniki są automatycznie przechowywane.

Folder z plikami logów iperf, otwarty plik w edytorze

Opcja --logfile umożliwia zapisanie wyniku testu bezpośrednio do pliku, zamiast wyświetlania na standardowym wyjściu konsoli.

Zapis do pliku jest szczególnie przydatny w przypadku długotrwałych testów (300+ sekund), gdzie wynik mógłby zostać obcięty przez bufor terminala.

W skryptach automatyzujących warto użyć nazwy pliku z timestampem (np. iperf_$(date +%Y%m%d_%H%M%S).log), co zapobiega nadpisywaniu poprzednich wyników.

Opcja --logfile działa zarówno dla klienta, jak i serwera - serwer zapisuje wszystkie zdarzenia (połączenia, wyniki testów) do wskazanego pliku logu.

W połączeniu z opcją -J (JSON) i --logfile można tworzyć strukturę plików z wynikami gotowymi do automatycznego przetworzenia przez skrypty analityczne.

29/58
Opcja --get-server-output

--get-server-output

Dołącza do wyniku klienta szczegółowe statystyki z serwera.

iperf3 -c 192.168.1.100 --get-server-output

W wynikach JSON pojawia się dodatkowe pole server_output_json zawierające m.in.:

  • Wykorzystanie CPU serwera
  • Szczegóły połączenia widziane z serwera
  • Statystyki dla każdego strumienia na serwerze

Przydatne, gdy nie masz dostępu do konsoli serwera, ale chcesz zobaczyć jego perspektywę.

Serwer musi działać w wersji iperf3 ≥ 3.1, aby obsługiwać tę opcję.
Schemat: klient otrzymuje własny wynik + wynik serwera

Opcja --get-server-output dołącza do wyniku klienta szczegółowe statystyki z perspektywy serwera, co pozwala na porównanie obu perspektyw tego samego testu.

Dane z serwera obejmują te same metryki co wynik klienta: transfer, przepustowość, retransmisje i CWND, ale mierzone po stronie odbiorcy.

W wynikach JSON opcja --get-server-output dodaje pole server_output_json zawierające kompletne statystyki serwera.

Porównanie wyników klienta i serwera pozwala na wykrycie problemów asymetrycznych, takich jak różnice w wykorzystaniu CPU lub przeciążenie interfejsu sieciowego po jednej stronie.

Opcja wymaga serwera iperf3 w wersji co najmniej 3.1 - starsze wersje nie obsługują przesyłania statystyk serwera do klienta.

30/58
Opcja --forceflush

--forceflush

Wymusza opróżnienie bufora stdout po każdym interwale raportowania.

iperf3 -c 192.168.1.100 --forceflush

Domyślnie iperf3 buforuje wyjście – przy długich testach wyniki cząstkowe mogą nie być widoczne od razu.

Zastosowania:

  • Gdy wyniki są przetwarzane w czasie rzeczywistym (pipe do innego programu)
  • Gdy test jest uruchomiony w tle i log jest tailowany
  • Debugowanie i monitorowanie na żywo
Porównanie: stdout z forceflush (wyniki pojawiają się natychmiast) vs bez (bufory)

Opcja --forceflush wymusza opróżnienie (flush) bufora standardowego wyjścia po każdym interwale raportowania, co zapewnia dostęp do wyników w czasie rzeczywistym.

Domyślnie iperf3 buforuje wyjście dla wydajności, co oznacza, że w długich testach wyniki cząstkowe mogą być widoczne dopiero po zakończeniu całego testu.

Opcja jest szczególnie przydatna, gdy wynik iperf3 jest przetwarzany w czasie rzeczywistym przez inny program poprzez pipe (|) lub przekierowanie do tail -f.

W testach monitorujących (continuous testing) --forceflush zapewnia, że każdy interwał jest natychmiast dostępny do analizy i zapisu do bazy danych.

Należy pamiętać, że wymuszanie opróżnienia bufora po każdym interwale zwiększa obciążenie systemu, ale w praktyce różnica jest pomijalna dla typowych testów.

31/58
Opcja --title – etykieta testu

--title – tytuł sesji

Dodaje etykietę tekstową do wyników testu – ułatwia identyfikację w logach.

iperf3 -c 192.168.1.100 --title "Test_LAN_GbE_2026-05-23"

Etykieta pojawia się w nagłówku wyjścia:

iperf 3.16 (cJSON 1.7.15)
  Linux 6.8.0-amd64
  Test_LAN_GbE_2026-05-23
  -------------------------------------------------

Przydatne przy automatyzacji – wiele testów zapisanych do jednego pliku log.

Plik log z wieloma testami, każdy opatrzony tytułem

Opcja --title dodaje etykietę tekstową do nagłówka wyjścia testu, co ułatwia identyfikację konkretnego pomiaru w plikach logu.

Etykieta pojawia się w nagłówku między informacją o wersji iperf3 i systemie operacyjnym a linią separatora, co pozwala na szybkie odróżnienie testów w pliku zbiorczym.

W testach automatyzowanych --title może zawierać nazwę testu, datę, lokalizację lub identyfikator sesji, co ułatwia późniejsze sortowanie i wyszukiwanie.

Przy zapisie wielu testów do jednego pliku logu (np. w pętli skryptu) opcja --title pozwala na jednoznaczne oddzielenie wyników poszczególnych pomiarów.

Etykieta może zawierać spacje, polskie znaki i inne znaki specjalne, co pozwala na tworzenie opisowych nazw w języku polskim.

32/58
Co mówią wyniki TCP?

Interpretacja wyników TCP

Wynik testu TCP zawiera kluczowe kolumny:

PoleZnaczenieInterpretacja
TransferIlość danych przesłanych w interwaleNp. 1.09 GB w 10s = dobry wynik
BandwidthPrzepustowość chwilowa/średnia938 Mbit/s – blisko 1 Gb/s
RetrLiczba retransmisji w interwale0 = idealnie, >0 = możliwe problemy
CwndRozmiar okna przeciążenia TCP (bytes)Większe = lepsza przepustowość

Retr (retransmits) – liczba retransmisji TCP. Wartość > 0 wskazuje na utratę pakietów, przeciążenie lub problemy z łączem.

W idealnych warunkach Retr = 0. Wartość Retr > 5 w interwale 1s = potencjalny problem.
Zrzut terminala z wynikiem TCP, strzałki wskazujące Transfer, Bandwidth, Retr, Cwnd

Interpretacja wyników TCP w iperf3 wymaga zrozumienia znaczenia każdej kolumny: Transfer, Bandwidth, Retr i Cwnd, które razem dają pełny obraz wydajności łącza.

Transfer określa całkowitą ilość danych przesłanych w danym interwale - dla 10-sekundowego testu na łączu 1 Gb/s spodziewamy się około 1,09 GB.

Bandwidth (przepustowość) to szybkość transmisji w bitach na sekundę - wartość 938 Mbit/s dla 1 Gb/s Ethernet jest prawidłowa, różnica wynika z narzutu TCP/IP.

Retr (retransmits) to liczba retransmitowanych segmentów TCP - wartość 0 oznacza idealne warunki, wartości powyżej 0 wskazują na utratę pakietów lub przeciążenie.

Cwnd (congestion window) to rozmiar okna przeciążenia TCP w bajtach - wyższe wartości (powyżej 256 KB) oznaczają stabilne połączenie z dobrą przepustowością.

33/58
Interpretacja retransmisji

Retransmisje TCP – wskaźnik problemów

Retransmisje TCP występują, gdy:

  • Pakiet został zgubiony w sieci (przepełnienie bufora, błędy transmisji)
  • Potwierdzenie (ACK) nie dotarło w terminie (timeout)
  • Potrójny duplikat ACK (szybka retransmisja)

Jak analizować Retr w iperf3:

  • Retr = 0 przez cały test – łącze ma wystarczającą przepustowość i niskie opóźnienie
  • Retr sporadyczne (1–2) – normalne w sieciach WAN, może być okazjonalny packet loss
  • Retr wysokie (>10/s) – problem z łączem, przeciążenie buforów, zła konfiguracja
  • Retr rosnące w czasie – problem narasta (np. przeciążenie przełącznika)
W sieci LAN z dobrą jakością spodziewaj się Retr = 0. W WAN dopuszczalne nieliczne retransmisje.
Wykres: liczba retransmisji w czasie – nagły skok wskazujący na problem

Retransmisje TCP są naturalnym mechanizmem zapewniającym niezawodność transmisji, ale ich wysoka liczba wskazuje na problemy z jakością łącza.

W sieci LAN (Ethernet 1 Gb/s) przy braku obciążenia retransmisje powinny wynosić 0 przez cały czas trwania testu - każda wartość dodatnia wymaga diagnostyki.

W sieci WAN okazjonalne retransmisje (1-2 na interwał) są normalne, ale wartości powyżej 5 na interwał 1-sekundowy sugerują przeciążenie lub problemy z okablowaniem.

Retransmisje rosnące w czasie (trend wzrostowy) wskazują na narastający problem, taki jak przepełnienie bufora przełącznika (bufferbloat) lub przeciążenie łącza.

Do diagnostyki retransmisji warto użyć jednocześnie iperf3 i Wiresharka - iperf3 pokaże zagregowaną liczbę retransmisji, a Wireshark pozwoli na analizę przyczyn na poziomie pakietów.

34/58
Cwnd – congestion window

Okno TCP (CWND) w iperf

Cwnd (congestion window) – rozmiar okna przeciążenia TCP pokazywany w wynikach iperf3 (w bajtach).

Znaczenie Cwnd:

  • Określa ile danych może być wysłanych bez potwierdzenia
  • Rośnie podczas fazy powolnego startu i unikania przeciążenia
  • Maleje przy utracie pakietów (retransmisja)

Wynik Cwnd w iperf3:

[  4]   0.00-10.00  sec  1.09 GBytes   938 Mbits/sec  0    552 KBytes

Cwnd = 552 KB na końcu testu – oznacza stabilne okno przeciążenia.

Jeśli Cwnd jest małe (np. 16 KB) – może oznaczać małe okno odbiorcy lub problemy z łączem.

Wykres Cwnd w czasie – faza powolnego startu, plateau, spadek przy retransmisji

Okno przeciążenia TCP (CWND) jest mechanizmem służącym do kontroli ilości danych wysyłanych bez potwierdzenia, zapobiegającym przeciążeniu sieci.

Podczas fazy powolnego startu (slow start) CWND rośnie wykładniczo (podwaja się co RTT) aż do osiągnięcia progu ssthresh lub wystąpienia utraty pakietów.

Po osiągnięciu progu ssthresh TCP przechodzi w fazę unikania przeciążenia (congestion avoidance), w której CWND rośnie liniowo (o 1 MSS na RTT).

W iperf3 CWND pokazywane jest w bajtach na końcu wiersza wyniku - stabilna wartość na poziomie 256-1024 KB dla łącza 1 Gb/s wskazuje na prawidłowe działanie.

Gwałtowny spadek CWND w trakcie testu oznacza utratę pakietów i aktywację mechanizmów redukcji okna - im częstsze spadki, tym gorsza jakość łącza.

35/58
Co mówią wyniki UDP?

Interpretacja wyników UDP

Wynik testu UDP zawiera dodatkowe kolumny:

PoleZnaczenieInterpretacja
JitterOdchylenie opóźnienia (ms)Niski (<1 ms) = stabilne łącze
Lost/TotalStraty pakietów (utracone/całkowite)0% = idealnie, >1% = problem
DatagramsLiczba datagramów w interwaleZależy od -l i -b
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total  Datagrams
  [  5]   0.00-10.00  sec   125 MBytes   105 Mbits/sec  0.034 ms  0/89286 (0%)  89286

Interpretacja: jitter 0.034 ms (świetny), 0% strat (brak utraty).

W teście UDP spodziewaj się strat, gdy -b przekracza rzeczywistą przepustowość łącza.
Zrzut terminala z wynikiem UDP, podświetlone Jitter, Lost/Total

Wynik testu UDP w iperf3 różni się od TCP dodatkowymi kolumnami: Jitter (odchylenie opóźnienia) i Lost/Total (stosunek utraconych do wysłanych datagramów).

Jitter mierzony w milisekundach według RFC 3550 (RTP) określa zmienność opóźnienia między kolejnymi datagramami - wartość poniżej 1 ms oznacza bardzo stabilne łącze.

Lost/Total przedstawia liczbę utraconych datagramów w stosunku do całkowitej liczby wysłanych oraz procent strat - 0/89286 (0%) oznacza brak utraty.

W idealnych warunkach na łączu 1 Gb/s test UDP z przepływnością do 800 Mbit/s powinien wykazać 0% strat - wyższe wartości wskazują na przeciążenie łącza.

Interpretacja strat UDP zależy od rodzaju aplikacji: dla VoIP dopuszczalne jest do 1% strat, dla strumieniowania wideo do 0,1%, dla transmisji danych 0%.

36/58
Jitter – odchylenie opóźnienia

Jitter w iperf

Jitter to zmienność opóźnienia pakietów (delay variation). iperf3 oblicza jitter według RFC 3550 (RTP).

Wzór (uproszczony): jitter = średnie odchylenie różnicy opóźnień między kolejnymi datagramami.

Interpretacja wartości jitter:

  • < 0.1 ms – doskonałe łącze (LAN, światłowód)
  • 0.1 – 1 ms – dobre łącze (przełącznik zarządzalny)
  • 1 – 10 ms – akceptowalne (sieć WAN, VPN)
  • > 10 ms – problematyczne dla VoIP i streamingu

Wysoki jitter = buforowanie odtwarzania (de-jitter buffer) w aplikacjach czasu rzeczywistego.

Jitter powyżej 30 ms powoduje zauważalne problemy w komunikacji głosowej (VoIP).
Wykres: opóźnienie każdego pakietu w czasie – zmiany to jitter

Jitter (zmienność opóźnienia) jest krytycznym parametrem dla aplikacji czasu rzeczywistego, ponieważ określa stabilność opóźnienia między kolejnymi pakietami.

iperf3 oblicza jitter według algorytmu zdefiniowanego w RFC 3550 dla protokołu RTP - wartości poniżej 1 ms są doskonałe, 1-10 ms akceptowalne, powyżej 10 ms problematyczne.

W sieci LAN z przełącznikami zarządzalnymi jitter powinien być niższy niż 0,1 ms, podczas gdy w sieci WLAN wartości 1-5 ms są typowe ze względu na mechanizm CSMA/CA.

Wysoki jitter (powyżej 30 ms) powoduje zauważalne problemy w komunikacji głosowej VoIP - bufor odtwarzania (de-jitter buffer) musi być zwiększony, co wprowadza dodatkowe opóźnienie.

Diagnostyka wysokiego jittera wymaga analizy węzłów pośrednich na trasie pakietów - narzędzia takie jak ping z opcją -f (flood) lub mtr mogą pomóc w lokalizacji źródła problemu.

37/58
Packet loss – utrata pakietów

Utrata pakietów w UDP

W teście UDP iperf3 raportuje liczbę utraconych datagramów (Lost) i procent strat.

[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total  Datagrams
  [  5]   0.00-10.00  sec   125 MBytes   105 Mbits/sec  0.034 ms  0/89286 (0%)  89286

Strata 0% = brak utraty.

Jeśli strata > 0%:

  • < 0.1% – dopuszczalne (okazjonalne tło szumów)
  • 0.1 – 1% – wymaga analizy (może być przeciążenie)
  • 1 – 5% – problem (aplikacje czasu rzeczywistego zaczynają mieć kłopoty)
  • > 5% – poważny problem (łącze przeciążone lub uszkodzone)
W sieci Ethernet 1 Gb/s bez obciążenia strata powinna wynosić 0% dla UDP z -b do 800 Mbit/s.
Wykres: procent strat w funkcji zadanej przepływności (-b)

Utrata pakietów (packet loss) w teście UDP oznacza, że część wysłanych datagramów nie dotarła do serwera, co jest jednoznacznym wskaźnikiem przeciążenia lub problemów z łączem.

W przeciwieństwie do TCP, UDP nie ma mechanizmów retransmisji ani kontroli przeciążenia - straty są akceptowane i zależą od pojemności buforów na trasie transmisji.

Strata na poziomie poniżej 0,1% jest uznawana za dopuszczalne tło szumów w sieci przewodowej, ale w sieci WLAN może być normalna nawet do 1-2% przy słabym sygnale.

Dla aplikacji czasu rzeczywistego (VoIP, wideokonferencje) strata powyżej 1% zaczyna być odczuwalna jako zniekształcenia dźwięku lub obrazu, a powyżej 5% czyni połączenie praktycznie niezrozumiałym.

Aby zminimalizować straty w teście UDP, należy użyć opcji -b z wartością nieprzekraczającą rzeczywistej przepustowości łącza - stopniowe zwiększanie -b pozwala znaleźć punkt krytyczny.

38/58
Test przepustowości maksymalnej TCP

Scenariusz: test maksymalnej przepustowości

Cel: zmierzyć maksymalną przepustowość TCP między dwoma hostami w sieci LAN.

# Serwer
iperf3 -s

# Klient – test 30s, interwał 1s, okno 256 KB
iperf3 -c 192.168.1.100 -t 30 -i 1 -w 256K

Interpretacja:

  • Dla 1 Gb/s Ethernet: oczekiwana przepustowość ~940–990 Mbit/s
  • Dla 10 Gb/s: ~9.4–9.9 Gbit/s
  • Różnica wynika z narzutów TCP/IP (nagłówki, ACK)

Jeśli wynik jest znacząco niższy – sprawdź: okno TCP, RTT, retransmisje, MTU.

Maksymalna przepustowość TCP dla 1 Gb/s Ethernet to praktycznie ~940 Mbit/s – narzut protokołu TCP to ~6%.
Schemat: dwa komputery połączone przełącznikiem GbE z wynikiem testu

Test maksymalnej przepustowości TCP między dwoma hostami w sieci LAN jest podstawowym scenariuszem użycia iperf3 do walidacji wydajności sieci.

Przed testem należy upewnić się, że oba hosty mają wyłączoną kontrolę przeciążenia w sensie testowym - użycie domyślnych ustawień systemowych jest zalecane dla realistycznych wyników.

Dla łącza 1 Gb/s Ethernet rzeczywista przepustowość TCP wynosi około 940-990 Mbit/s, co wynika z narzutu protokołów: Ethernet (~2%), IP (~2%) i TCP (~2%).

Jeśli wynik testu jest znacząco niższy niż oczekiwana wartość (np. poniżej 800 Mbit/s dla 1 Gb/s), należy sprawdzić kolejno: okablowanie, przełącznik, ustawienia karty sieciowej, obciążenie CPU.

Test należy wykonać kilkakrotnie (minimum 3 razy) i uśrednić wyniki, ponieważ pojedynczy pomiar może być zafałszowany przez chwilowe wahania w sieci.

39/58
Test łącza z ograniczeniem pasma

Scenariusz: test z ograniczeniem pasma UDP

Cel: sprawdzić, jak łącze zachowuje się przy różnych poziomach obciążenia UDP.

# Testy UDP z rosnącą przepływnością
iperf3 -c 192.168.1.100 -u -b 10M -t 10
iperf3 -c 192.168.1.100 -u -b 50M -t 10
iperf3 -c 192.168.1.100 -u -b 100M -t 10
iperf3 -c 192.168.1.100 -u -b 200M -t 10
iperf3 -c 192.168.1.100 -u -b 500M -t 10

Analiza:

  • Przy 10M – strata 0%, jitter niski
  • Przy 500M – mogą pojawić się straty (przeciążenie łącza)
  • Punkt, w którym pojawiają się straty = maksymalna przepustowość UDP
Testy UDP z rosnącym -b to najlepszy sposób na znalezienie maksymalnej przepustowości UDP łącza.
Tabela: przepływność zadana vs rzeczywista, strata, jitter

Testy UDP z rosnącą przepływnością (-b) stanowią metodę znajdowania maksymalnej przepustowości łącza dla protokołu UDP, który nie ma wbudowanych mechanizmów kontroli przeciążenia.

Wykonując serię testów z wartościami -b 10M, 50M, 100M, 200M, 500M, można zaobserwować punkt, w którym pojawiają się pierwsze straty datagramów - jest to maksymalna przepustowość UDP.

Wyniki testów zapisane w tabeli (przepływność zadana, przepływność rzeczywista, strata, jitter) pozwalają na stworzenie charakterystyki łącza i określenie jego wydajności.

W sieci Ethernet 1 Gb/s bez obciążenia test UDP z -b 800M powinien wykazać 0% strat - straty pojawiające się przy niższych wartościach wskazują na problemy z łączem.

Testy UDP są również używane do weryfikacji limitów QoS na routerach i przełącznikach - jeśli operator ograniczył przepustowość do 100 Mb/s, test z -b 200M wykaże straty na poziomie około 50%.

40/58
Automatyzacja testów iperf3

Test w pętli – automatyzacja

Prosty skrypt bash do wykonywania cyklicznych testów:

#!/bin/bash
SERVER="192.168.1.100"
PORT=5201
LOGFILE="iperf_test_$(date +%Y%m%d).log"

for i in {1..5}; do
  echo "Test $i: $(date)" >> $LOGFILE
  iperf3 -c $SERVER -p $PORT -t 10 -i 1 -J >> $LOGFILE 2>&1
  echo "---" >> $LOGFILE
  sleep 5
done

Skrypt wykonuje 5 testów z 5-sekundową przerwą między nimi.

Można rozszerzyć o:

  • Różne opcje (-P, -R, -u -b) w każdej iteracji
  • Wysyłanie alertów przy niskiej przepustowości
  • Zapis do bazy danych (InfluxDB, PostgreSQL)
Zrzut ekranu skryptu bash i wyników

Automatyzacja testów iperf3 pozwala na wykonywanie cyklicznych pomiarów o stałych porach, co umożliwia monitorowanie przepustowości w czasie i wykrywanie trendów.

Przedstawiony skrypt bash wykonuje 5 testów z 5-sekundową przerwą, zapisując wyniki w formacie JSON do pliku z datą w nazwie, co ułatwia archiwizację i późniejszą analizę.

Skrypt można rozbudować o pętlę nieskończoną (while true) z testami co godzinę, co pozwala na stworzenie dobowego profilu przepustowości i identyfikację godzin szczytu.

Do zaawansowanej automatyzacji warto użyć narzędzi takich jak Ansible (do zdalnego uruchamiania iperf3 na wielu hostach) lub systemd timery (Linux) do planowania testów.

Wyniki zapisane w formacie JSON mogą być automatycznie przetwarzane przez skrypt Python i wysyłane do bazy danych InfluxDB, a następnie wizualizowane w Grafanii w czasie rzeczywistym.

41/58
Wizualizacja wyników iperf3

iperf3 + gnuplot – wizualizacja

Parsowanie JSON iperf3 do gnuplot:

#!/bin/bash
# Ekstrakcja danych z JSON iperf3
iperf3 -c 192.168.1.100 -t 30 -i 1 -J > wynik.json

# Parsowanie z jq
cat wynik.json | jq -r '.intervals[].streams[0].bits_per_second' > bw_data.txt

# Gnuplot
gnuplot -e "
  set terminal png size 1024,768;
  set output 'wykres.png';
  plot 'bw_data.txt' with lines title 'Throughput (bps)';
"

Alternatywy: Python + matplotlib, grafana + influxdb, excel.

Wizualizacja pomaga dostrzec wzorce (okresowe spadki, trendy) – nie polegaj tylko na średniej.
Wykres gnuplot: przepustowość w czasie

Wizualizacja wyników iperf3 za pomocą gnuplot, Pythona z matplotlib lub Grafanii pozwala na szybką identyfikację wzorców i anomalii w przepustowości.

Skrypt z użyciem jq wyodrębnia z pliku JSON wartości bits_per_second dla każdego interwału, które następnie są zapisywane do pliku tekstowego gotowego do wykreślenia.

Wykres przepustowości w czasie może ujawnić okresowe spadki (np. co godzinę podczas backupów), trendy wzrostowe (zwiększające się obciążenie łącza) lub skoki (chwilowe przeciążenia).

Python z bibliotekami matplotlib, pandas i numpy pozwala na tworzenie zaawansowanych wykresów z naniesionymi wartościami średnimi, medianami i percentylami.

W środowiskach produkcyjnych zaleca się używanie Grafany z InfluxDB jako backendem - dane z iperf3 są przesyłane do bazy i natychmiast widoczne na dashboardzie monitorującym.

42/58
Badanie symetrii łącza

Testy dwukierunkowe – symetria łącza

Większość łączy (światłowód, Ethernet) jest symetryczna. ADSL, 5G, LTE, SAT mogą być asymetryczne.

# Test w obie strony
iperf3 -c 192.168.1.100 -t 30
iperf3 -c 192.168.1.100 -t 30 -R

# Test jednocześnie w obie strony
iperf3 -c 192.168.1.100 -t 30 --bidir

Interpretacja:

  • W łączu symetrycznym wyniki w obu kierunkach są zbliżone
  • Różnica > 20% = asymetria (może być celowa lub problem)
  • Asymetria może być spowodowana QoS, limitami dostawcy, problemem z kartą
W testach dwukierunkowych przepustowość całkowita może być mniejsza niż suma kierunków z osobna (współdzielenie buforów).
Wykres słupkowy: download vs upload

Testy dwukierunkowe pozwalają na pomiar symetrii łącza, czyli porównanie przepustowości w kierunku wysyłania (upload) i pobierania (download).

Większość łączy światłowodowych i Ethernet jest symetryczna - przepustowość w obu kierunkach powinna być zbliżona, z różnicą nieprzekraczającą 5-10%.

Łącza asymetryczne, takie jak ADSL (typowy stosunek 1:10), 5G/LTE (zależny od warunków radiowych) i łącza satelitarne (znacząca asymetria), wymagają testów w obu kierunkach.

Do pomiaru symetrii należy wykonać osobne testy z opcją -R (download) i bez (upload), a następnie porównać wyniki - różnica powyżej 20% wskazuje na asymetrię.

Test dwukierunkowy jednoczesny (--bidir) daje obraz zachowania łącza przy pełnym obciążeniu w obu kierunkach, co lepiej oddaje rzeczywiste warunki pracy sieci.

43/58
Wpływ liczby strumieni na przepustowość

Testy z wieloma strumieniami

Test dla 1, 2, 4, 8 strumieni TCP:

iperf3 -c 192.168.1.100 -P 1 -t 30
iperf3 -c 192.168.1.100 -P 2 -t 30
iperf3 -c 192.168.1.100 -P 4 -t 30
iperf3 -c 192.168.1.100 -P 8 -t 30

Efekt w sieci LAN:

  • 1 strumień: ~940 Mbit/s (limit pojedynczego TCP)
  • 2–8 strumieni: ~940 Mbit/s (całość ograniczona przepustowością łącza)

Efekt w sieci z ECMP/LAG:

  • Więcej strumieni = więcej ścieżek = wyższa sumaryczna przepustowość
W sieci LAN z pojedynczym łączem 1 Gb/s więcej strumieni nie zwiększy sumy – ograniczeniem jest fizyczna przepustowość.
Wykres: przepustowość w funkcji liczby strumieni

Testy z wieloma strumieniami (-P) pozwalają na sprawdzenie, jak łącze zachowuje się przy równoczesnym ruchu z wielu źródeł, co symuluje rzeczywiste obciążenie sieci.

W sieci LAN z pojedynczym łączem 1 Gb/s zwiększenie liczby strumieni nie zwiększa sumarycznej przepustowości powyżej ~940 Mbit/s - ograniczeniem jest fizyczne łącze.

W sieciach z agregacją łączy (Link Aggregation Group - LAG) lub równoważeniem obciążenia (ECMP) wiele strumieni może być rozłożonych na różne ścieżki, zwiększając sumaryczną przepustowość.

Testy z 1, 2, 4 i 8 strumieniami pozwalają na określenie, czy sieć korzysta z wielu ścieżek - jeśli przepustowość rośnie liniowo z liczbą strumieni, oznacza to ECMP/LAG w działaniu.

W interpretacji wyników należy uwzględnić, że każdy strumień osobno raportuje wyniki, a na końcu podawana jest suma wszystkich strumieni dla danego interwału.

44/58
Porównanie środowisk

Testy w LAN vs WLAN vs WAN

ParametrLAN (1 GbE)WLAN (Wi-Fi 6)WAN (Internet)
Przepustowość max~940 Mbit/s~600–900 Mbit/sZależy od łącza
RTT< 1 ms1–5 ms10–200 ms
Jitter< 0.1 ms1–10 ms1–50 ms
Retr00–50–50+
StabilnośćBardzo wysokaZmiennaZmienna

WLAN: interfejs współdzielony, interferencje, zasięg – wyniki zmieniają się w czasie.

WAN: większe RTT, większa zmienność, możliwe throttling przez ISP.

Trzy scenariusze: kabel Ethernet, Wi-Fi, chmura – z przykładowymi wynikami

Porównanie wyników testów w różnych środowiskach (LAN, WLAN, WAN) pozwala na zrozumienie, jakie parametry są typowe dla każdego z nich i gdzie szukać problemów.

Sieć LAN charakteryzuje się najwyższą przepustowością (do 940 Mbit/s dla 1 GbE), najniższym opóźnieniem (poniżej 1 ms) i zerowymi retransmisjami w idealnych warunkach.

Sieć WLAN (Wi-Fi 6) oferuje przepustowość 600-900 Mbit/s w idealnych warunkach, ale opóźnienie 1-5 ms i wyższy jitter wynikają ze współdzielonego medium i mechanizmu CSMA/CA.

Sieć WAN (Internet) charakteryzuje się największą zmiennością parametrów: opóźnienie od 10 ms do 200+ ms, retransmisje od 0 do 50+ na interwał, przepustowość zależna od technologii dostępu.

Wyniki testów w WAN należy zawsze interpretować w kontekście pory dnia, obciążenia łącza i trasy routingu - pomiar jednorazowy może być niemiarodajny dla całego łącza.

45/58
Bandwidth-Delay Product (BDP)

Wpływ okna TCP na przepustowość (BDP)

BDP = przepustowość × RTT (w bitach). To minimalny rozmiar okna TCP dla pełnego wykorzystania łącza.

Przykład:

ŁączePrzepustowośćRTTBDP
LAN1 Gb/s0.5 ms62.5 KB
WAN100 Mb/s50 ms625 KB
SAT50 Mb/s600 ms3.75 MB

Jeśli okno TCP < BDP – łącze nie jest w pełni wykorzystane.

# Test z odpowiednim oknem dla łącza WAN
iperf3 -c serwer -t 30 -w 1M
Zawsze oblicz BDP dla swojego łącza i użyj -w z wartością ≥ BDP. Komenda: iperf3 -c serwer -w $(bc <<< "przepustowsc_bps * rtt_sec / 8").
Wykres: przepustowość w funkcji rozmiaru okna TCP dla różnych RTT

Bandwidth-Delay Product (BDP) to kluczowa koncepcja w sieciach TCP, określająca ilość danych jaka może znajdować się w locie (in-flight) przy danym RTT i przepustowości.

BDP oblicza się jako iloczyn przepustowości (w bitach na sekundę) i RTT (w sekundach) - wynik w bitach należy podzielić przez 8, aby otrzymać wartość w bajtach.

Dla łącza LAN 1 Gb/s z RTT 0,5 ms BDP wynosi zaledwie 62,5 KB, co oznacza, że nawet małe okno TCP jest wystarczające do pełnego wykorzystania łącza.

Dla łącza satelitarnego 50 Mb/s z RTT 600 ms BDP wynosi 3,75 MB - okno TCP musi być co najmniej tak duże, aby łącze było w pełni wykorzystane.

Polecenie iperf3 z opcją -w pozwala na ręczne ustawienie okna TCP na wartość >= BDP, co jest szczególnie ważne w testach na łączach o dużym RTT (WAN, SAT).

46/58
Jumbo frames – czy warto?

Wpływ MTU na przepustowość

Większe MTU = mniej pakietów do wysłania = mniej nagłówków = wyższa przepustowość.

Porównanie dla 1 MB danych:

MTULiczba pakietówNarzut nagłówków
1500~710~42 KB (4.2%)
4000~260~15 KB (1.5%)
9000~117~7 KB (0.7%)
# Test z MTU 1500
iperf3 -c 192.168.1.100 -M 1500

# Test z jumbo frames (MTU 9000)
iperf3 -c 192.168.1.100 -M 9000
Jumbo frames wymagają konfiguracji na wszystkich przejściach (hosty + przełączniki). Jeśli nie jesteś pewien – trzymaj się MTU 1500.
Wykres: przepustowość dla MTU 1500 vs 9000

Wybór odpowiedniego MTU ma wpływ na wydajność sieci, ponieważ większe ramki oznaczają mniej nagłówków na tę samą ilość danych przesyłanych.

Dla MTU 1500 (standard Ethernet) przesłanie 1 MB danych wymaga około 710 ramek, z czego około 42 KB to nagłówki (4,2% narzutu).

Dla jumbo frames (MTU 9000) ta sama ilość danych wymaga tylko około 117 ramek, a narzut na nagłówki wynosi około 7 KB (0,7% narzutu).

Testy iperf3 z opcją -M 1500 i -M 9000 pozwalają na porównanie wydajności w obu trybach - różnica może sięgać 10-20% na korzyść jumbo frames.

Jumbo frames należy stosować tylko w zamkniętych sieciach LAN, gdzie wszystkie urządzenia są skonfigurowane na MTU 9000 - w sieci WAN i internecie standardem pozostaje MTU 1500.

47/58
jperf – GUI dla iperf

jperf – nakładka graficzna

jperf to graficzna nakładka na iperf napisana w Javie. Umożliwia konfigurację testów przez GUI i wyświetlanie wyników w czasie rzeczywistym.

Funkcje:

  • Wybór trybu: klient/serwer
  • Konfiguracja wszystkich opcji iperf3 w GUI
  • Wykresy przepustowości na żywo
  • Zapis wyników do pliku

Wady:

  • Wymaga JRE (Java Runtime Environment)
  • Projekt nieaktualny (ostatnia wersja 2.0.2 z 2013)
  • Działa z iperf2, nie z iperf3 (chyba że podłożysz iperf3 jako iperf.exe)
jperf jest przestarzały – rozważ nowsze alternatywy: iperf3-ng (frontend GTK), JSpeedtest (web), Ostinato.
Zrzut ekranu okna jperf z konfiguracją testu

jperf to graficzna nakładka na iperf napisana w języku Java, która umożliwia konfigurację i uruchamianie testów przepustowości bez znajomości opcji wiersza poleceń.

Nakładka oferuje intuicyjny interfejs z podziałem na sekcje: konfiguracja serwera/klienta, opcje TCP i UDP, wyświetlanie wyników w formie wykresów i tabel.

Główną wadą jperf jest to, że ostatnia wersja (2.0.2) pochodzi z 2013 roku i natywnie obsługuje iperf2, a nie iperf3 - do użycia z iperf3 wymaga podłożenia pliku iperf3.exe.

Wymaganie JRE (Java Runtime Environment) może być problematyczne w środowiskach serwerowych, gdzie Java nie jest domyślnie zainstalowana.

Alternatywami dla jperf są: iperf3-ng (nowa nakładka GTK3), webowe interfejsy JSpeedtest oraz narzędzie Ostinato oferujące zaawansowane możliwości generowania ruchu sieciowego.

48/58
Konfiguracja testu w jperf

jperf – konfiguracja testów

Okno jperf dzieli się na sekcje:

  • Application Layer – wybór iperf wersji 2.0.x (ścieżka do pliku)
  • Server Address – adres IP serwera
  • Server Port – port (domyślnie 5001 dla iperf2, 5201 dla iperf3)
  • Options – czas (-t), interwał (-i), równoległe strumienie (-P), kierunek (-R)
  • UDP Options – włączenie UDP, przepływność (-b), rozmiar bufora (-l)
  • TCP Options – okno TCP (-w), MTU (-M), wyłączenie Nagle (-N)
  • Output Display – wykresy na żywo, lista wyników

Po skonfigurowaniu – przycisk Run Iperf! uruchamia test.

jperf używa domyślnie iperf2 (port 5001). Do iperf3 zmień port na 5201 i wskaż iperf3.exe.
Zrzut ekranu jperf z zaznaczonymi polami konfiguracji

Okno konfiguracyjne jperf dzieli się na logiczne sekcje odpowiadające kolejnym krokom konfiguracji testu, co ułatwia nawigację osobom początkującym.

Sekcja Application Layer pozwala na wskazanie pliku wykonywalnego iperf (iperf2 lub iperf3), co jest pierwszym krokiem przed rozpoczęciem konfiguracji testu.

W sekcji Server Address należy podać adres IP lub nazwę DNS serwera, a w Server Port odpowiedni port (5001 dla iperf2, 5201 dla iperf3).

Sekcje Options, UDP Options i TCP Options odpowiadają bezpośrednio opcjom wiersza poleceń iperf: -t, -i, -P, -u, -b, -l, -w, -M, -N.

Po skonfigurowaniu wszystkich opcji przycisk Run Iperf! uruchamia test, a wyniki pojawiają się w czasie rzeczywistym na wykresach i w tabeli wyników.

49/58
Wizualizacja na żywo w jperf

jperf – wykresy w czasie rzeczywistym

jperf wyświetla dwa wykresy w czasie rzeczywistym:

  • Wykres przepustowości (bits per second) – każdy interwał dodaje punkt
  • Wykres retransmisji (tylko TCP) – liczba retransmisji na interwał

Zalety wizualizacji na żywo:

  • Natychmiastowe wykrycie wahań przepustowości
  • Widoczność retransmisji w czasie rzeczywistym
  • Możliwość przerwania testu przy problemach

jperf zapisuje też surowe dane do pliku CSV – można je później analizować.

Zrzut ekranu jperf z wykresami przepustowości i retransmisji

jperf wyświetla w czasie rzeczywistym dwa główne wykresy: przepustowości (bits per second) i retransmisji (dla TCP), co pozwala na natychmiastową ocenę jakości łącza.

Wykres przepustowości aktualizuje się po każdym interwale raportowania, dodając nowy punkt, co pozwala na obserwację trendów i wahań w trakcie testu.

Wykres retransmisji (dostępny tylko dla TCP) pokazuje liczbę retransmitowanych segmentów na interwał - nagły wzrost wskazuje na problem z łączem.

Zalety wizualizacji na żywo obejmują: możliwość natychmiastowego przerwania testu w przypadku wykrycia problemów, obserwację fazy slow start i stabilizacji TCP.

jperf zapisuje również surowe dane do pliku CSV, co umożliwia późniejszą szczegółową analizę w arkuszach kalkulacyjnych lub narzędziach statystycznych.

50/58
Alternatywy dla iperf

iperf vs netperf vs nuttcp vs qperf

NarzędzieCechyZastosowanie
iperf3Proste, standard, JSON, aktywny rozwójTesty przepustowości ogólne
netperfBardziej zaawansowane testy (TCP_RR, UDP_STREAM, latency)Benchmarki, testy wydajności
nuttcpLekki, szybki, mniej narzutówWbudowane systemy, automatyzacja
qperfPomiar przepustowości i opóźnieniaTesty RDMA, InfiniBand

Porównanie:

  • iperf3 – najprostszy, najlepszy dla 90% użyć
  • netperf – więcej opcji (np. test RR, UDP latency)
  • nuttcp – mniej narzutów, lepszy dla szybkich sieci
  • qperf – wyspecjalizowany (RDMA, high-performance computing)
Tabela porównawcza z logami narzędzi

Oprócz iperf3 istnieje kilka alternatywnych narzędzi do pomiaru przepustowości, z których każde ma swoje unikalne cechy i obszary zastosowania.

netperf oferuje bardziej zaawansowane testy, takie jak TCP_RR (request-response), UDP_STREAM i pomiar opóźnienia, co jest przydatne w benchmarkach porównawczych.

nuttcp jest lżejszy od iperf3 (mniejszy plik wykonywalny, mniej zależności) i charakteryzuje się mniejszym narzutem obliczeniowym, co jest zaletą w systemach wbudowanych.

qperf jest wyspecjalizowany w testach dla technologii RDMA (Remote Direct Memory Access) i InfiniBand, oferując pomiary przepustowości i opóźnienia z bardzo niskim narzutem.

Wybór narzędzia zależy od konkretnego zastosowania: iperf3 jest najlepszy dla ogólnych testów, netperf dla zaawansowanych benchmarków, nuttcp dla systemów wbudowanych, qperf dla HPC.

51/58
Testy przepustowości między regionami chmury

iperf w chmurze – testy między regionami

Scenariusz: pomiar przepustowości między dwoma instancjami w różnych regionach AWS/Azure/GCP.

# Na instancji w regionie eu-west-1 (serwer)
iperf3 -s -p 5201

# Na instancji w regionie us-east-1 (klient)
iperf3 -c 10.0.1.100 -t 60 -i 5 -w 4M

Czego się spodziewać:

  • RTT między regionami: 50–150 ms
  • Przepustowość: zależna od typu instancji (do 10 Gb/s lub więcej)
  • Wysokie RTT = potrzeba dużego okna TCP (-w)
W chmurze sprawdź limit przepustowości dla danej instancji (burst vs baseline). iperf3 pokaże rzeczywistą dostępną przepustowość.
Mapa: region AWS eu-west-1 → us-east-1 z wynikiem testu

Testy przepustowości między regionami chmury obliczeniowej są kluczowe dla projektowania architektur rozproszonych i szacowania kosztów transferu danych.

Przed testem należy upewnić się, że grupy bezpieczeństwa (security groups) w AWS/Azure/GCP zezwalają na ruch na porcie 5201 między testowanymi instancjami.

Typowe RTT między regionami chmury: wewnątrz regionu < 1 ms, między regionami w tym samym kontynencie 10-50 ms, między kontynentami 100-200 ms.

Instancje w chmurze mają często limit przepustowości (np. 5 Gb/s dla instancji średniej wielkości) - iperf3 pokaże rzeczywistą dostępną przepustowość, która może być niższa niż teoretyczna.

Testy należy wykonywać o różnych porach dnia, aby uwzględnić zmienne obciążenie infrastruktury chmury - wyniki w szczycie mogą być znacząco niższe niż poza godzinami szczytu.

52/58
Studium przypadku: test LAN 1 Gb/s

Studium przypadku: LAN 1 Gb/s

Konfiguracja:

  • Host A: iperf3 server, Gigabit Ethernet, Linux
  • Host B: iperf3 client, Gigabit Ethernet, Linux
  • Przełącznik: zarządzalny, wszystkie porty 1 Gb/s
# Serwer
iperf3 -s

# Klient – test standardowy
iperf3 -c 192.168.1.100 -t 30 -i 1 -w 256K

Wynik:

[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
  [  4]   0.00-30.00  sec  3.27 GBytes   938 Mbits/sec  0    552 KBytes

Wnioski:

  • 938 Mbit/s – blisko teoretycznego maksimum (~940 Mbit/s)
  • Retr = 0 – brak retransmisji, dobra jakość łącza
  • Cwnd = 552 KB – stabilne okno przeciążenia
Wynik ~940 Mbit/s dla 1 Gb/s jest prawidłowy. Jeśli widzisz ~1 Gb/s – prawdopodobnie użyłeś UDP, nie TCP.
Schemat sieci laboratoryjnej z wynikami

Studium przypadku sieci LAN 1 Gb/s ilustruje typowe wyniki testu w idealnych warunkach laboratoryjnych, które służą jako punkt odniesienia dla innych testów.

Konfiguracja zakłada dwa hosty z systemem Linux podłączone do tego samego zarządzalnego przełącznika Gigabit Ethernet, bez innych obciążeń w sieci.

Wynik 938 Mbit/s z retransmisjami 0 i oknem CWND 552 KB wskazuje na prawidłowo działające łącze z dobrą konfiguracją TCP.

Różnica między teoretyczną przepustowością 1 Gb/s a rzeczywistą 938 Mbit/s (~6%) wynika z narzutu protokołów: preambuły Ethernet, nagłówków IP i TCP oraz pakietów ACK.

Jeśli wynik testu LAN jest niższy niż 900 Mbit/s, należy sprawdzić: typ kabla (Cat5e vs Cat6), ustawienia duplex na interfejsach, obciążenie CPU oraz obecność innych procesów.

53/58
Studium przypadku: test WAN z limitem 100 Mbit/s

Studium przypadku: WAN z ograniczeniem pasma

Konfiguracja:

  • Klient: biuro domowe, łącze 100 Mbit/s
  • Serwer: VPS w centrum danych
  • RTT: ~30 ms (światłowód + szkielet)
iperf3 -c vps.example.com -t 30 -i 1 -w 1M

Wynik:

[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
  [  4]   0.00-30.00  sec   366 MBytes   102 Mbits/sec  2     462 KBytes

Wnioski:

  • 102 Mbit/s – wykorzystanie pełnego łącza
  • Retr = 2 – minimalne retransmisje (normalne dla WAN)
  • Cwnd = 462 KB – niższe niż w LAN
W teście UDP z limitem 100M spodziewaj się 0% strat. Jeśli są straty przy 100M – dostawca nie wywiązuje się z umowy.
Schemat: biuro → Internet → VPS, z wynikami

Studium przypadku łącza WAN z limitem 100 Mbit/s ilustruje typową konfigurację łącza internetowego w biurze lub domu, weryfikowaną za pomocą iperf3.

Klientem jest komputer w biurze domowym z łączem światłowodowym 100 Mbit/s, a serwerem maszyna VPS w centrum danych, obie z systemem Linux.

Wynik 102 Mbit/s z zaledwie 2 retransmisjami na 30-sekundowy test wskazuje na stabilne łącze, które w pełni wykorzystuje przepustowość zamówioną u dostawcy.

Okno CWND 462 KB jest niższe niż w teście LAN, co wynika z większego RTT (30 ms) i mechanizmów kontroli przeciążenia TCP ograniczających okno przy większych opóźnieniach.

Test UDP z limitem 100M powinien wykazać 0% strat - pojawienie się strat przy 100 Mb/s sugerowałoby, że dostawca nie wywiązuje się z umowy SLA.

54/58
Studium przypadku: retransmisje obniżają przepustowość

Studium przypadku: diagnostyka spadku przepustowości przez retransmisje

Objaw: użytkownicy zgłaszają wolne działanie aplikacji przez VPN.

Test iperf3:

iperf3 -c 10.0.0.1 -t 30 -i 1 -w 256K

  [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
  [  4]   0.00-1.00   sec  10.1 MBytes  84.7 Mbits/sec  12    128 KBytes
  [  4]   1.00-2.00   sec  9.8 MBytes   82.2 Mbits/sec  15    112 KBytes
  [  4]   2.00-3.00   sec  8.5 MBytes   71.3 Mbits/sec  18    96 KBytes
  ...
  [  4]   0.00-30.00  sec   285 MBytes   79.8 Mbits/sec  412   96 KBytes

Diagnoza:

  • Wysokie retransmisje (412 w 30s = ~14/s)
  • Cwnd spada (128 KB → 96 KB) – okno przeciążenia maleje
  • Przepustowość spada do 80 Mbit/s (zamiast oczekiwanych 200+)
Przyczyna: przeciążenie bufora routera VPN (bufferbloat). Rozwiązanie: QoS, ograniczenie bufora, upgrade łącza.
Wykres: retransmisje (linia czerwona, oś lewa) i przepustowość (linia niebieska, oś prawa)

Studium przypadku z wysokimi retransmisjami ilustruje typowy problem diagnostyczny związany z przeciążeniem bufora routera VPN - zjawisko znane jako bufferbloat.

Bufferbloat polega na nadmiernym buforowaniu pakietów w routerach i przełącznikach, co prowadzi do wzrostu opóźnień i retransmisji TCP bez widocznej utraty pakietów.

Wynik testu pokazuje systematyczny spadek przepustowości (z 84,7 Mb/s do 71,3 Mb/s w ciągu 3 sekund) i wzrost retransmisji (z 12 do 18 na sekundę).

Okno CWND maleje (128 KB do 96 KB), co oznacza, że mechanizm kontroli przeciążenia TCP aktywnie redukuje ilość danych w locie w odpowiedzi na utratę pakietów.

Rozwiązanie problemu bufferbloat obejmuje: włączenie QoS na routerze (ograniczenie bufora), zastosowanie algorytmu TCP BBR (odpornego na bufferbloat), aktualizację oprogramowania routera.

55/58
Najważniejsze opcje iperf3

Podsumowanie 1 – najważniejsze opcje iperf3

OpcjaZnaczeniePrzykład
-sTryb serweraiperf3 -s
-cTryb klienta (adres serwera)iperf3 -c 10.0.0.1
-tCzas testu (s)-t 30
-iInterwał raportowania (s)-i 1
-pPort serwera-p 5201
-PRównoległe strumienie-P 4
-ROdwrócony kierunek-R
-uTryb UDP-u -b 100M
-bDocelowa przepływność-b 100M
-wOkno TCP (socket buffer)-w 256K
-lRozmiar bufora-l 128K
-MMTU-M 9000
-JWynik JSON-J
Tabela opcji z ikonami

Tabela podsumowująca najważniejsze opcje iperf3 stanowi szybką ściągawkę dla administratorów i inżynierów sieciowych podczas codziennej pracy diagnostycznej.

Opcje -s (serwer) i -c (klient) są fundamentalne - bez nich nie można rozpocząć żadnego testu, niezależnie od wybranego protokołu.

Parametry czasowe (-t, -i) i port (-p) są używane w praktycznie każdym teście, definiując czas trwania, częstotliwość raportowania i punkt dostępowy serwera.

Opcje specyficzne dla protokołu: -u (UDP), -b (docelowa przepływność), -w (okno TCP), -M (MTU) - wymagają zrozumienia wpływu na wyniki i odpowiedniego doboru wartości.

Format JSON (-J) jest zalecany dla wszystkich testów automatyzowanych, ponieważ umożliwia programowe przetwarzanie wyników bez konieczności parsowania tekstu.

56/58
Interpretacja wyników – wskazówki

Podsumowanie 2 – interpretacja wyników

  • TCP – Retr = 0 → łącze ma dobrą jakość, brak utraty pakietów
  • TCP – Retr > 0 → sprawdź: przeciążenie, błędy, buforowanie
  • TCP – Cwnd stabilne → przepustowość jest w pełni wykorzystana
  • TCP – Cwnd malejące w czasie → problem narasta (bufferbloat, congestion)
  • UDP – strata 0% → łącze wytrzymuje zadaną przepływność
  • UDP – strata > 0% → łącze przeciążone, zmniejsz -b lub szukaj problemu
  • UDP – jitter < 1 ms → stabilne opóźnienie
  • UDP – jitter > 10 ms → problem dla aplikacji czasu rzeczywistego
Zawsze wykonaj test kilka razy – pojedynczy test może być niemiarodajny. Średnia z 3–5 testów daje wiarygodny wynik.
Lista kontrolna z kolorami: zielony (OK), żółty (ostrzeżenie), czerwony (problem)

Wskazówki interpretacyjne zebrane w tym slajdzie stanowią praktyczny przewodnik do szybkiej oceny jakości łącza na podstawie wyników iperf3.

Dla TCP kluczowe wskaźniki: Retr = 0 oznacza idealne łącze, Retr > 0 wymaga analizy przyczyn, Cwnd stabilne oznacza pełne wykorzystanie przepustowości.

Dla UDP kluczowe wskaźniki: strata 0% oznacza że łącze wytrzymuje zadaną przepływność, strata > 0% wymaga redukcji -b lub diagnostyki problemów.

Jitter < 1 ms oznacza stabilne opóźnienie odpowiednie dla VoIP i streamingu, jitter > 10 ms jest problematyczny dla aplikacji czasu rzeczywistego.

Wykonanie testu tylko raz może dać niemiarodajne wyniki - zaleca się serię 3-5 testów i uśrednienie wyników, a także porównanie z baseline dla danego łącza.

57/58
Sprawdź swoją wiedzę

Pytania kontrolne

  1. Pytanie: Jaka jest różnica między iperf2 a iperf3?

Odpowiedź: iperf3 został przepisany od podstaw przez ESnet. Obsługuje JSON, wielowątkowość, nowe algorytmy. Nie jest zgodny z iperf2.

  1. Pytanie: Do czego służy opcja -R w iperf3?

Odpowiedź: Odwraca kierunek testu – serwer wysyła dane do klienta zamiast klient do serwera (test download).

  1. Pytanie: Co oznacza kolumna Retr w wynikach testu TCP?

Odpowiedź: Liczba retransmisji TCP w interwale. Wysoka wartość wskazuje na utratę pakietów lub przeciążenie łącza.

  1. Pytanie: Czym różni się wynik testu UDP od TCP w iperf3?

Odpowiedź: UDP raportuje dodatkowo jitter (odchylenie opóźnienia) i procent utraty datagramów (Lost/Total).

  1. Pytanie: Jakie znaczenie ma opcja -w w teście TCP?

Odpowiedź: Ustawia rozmiar okna TCP (socket buffer). Powinien być ≥ BDP (Bandwidth-Delay Product) dla pełnego wykorzystania łącza.

  1. Pytanie: Co to jest jperf?

Odpowiedź: Graficzna nakładka na iperf napisana w Javie – umożliwia konfigurację testów przez GUI i podgląd wyników na wykresach.

Ikona znaku zapytania

Pytania kontrolne sprawdzają znajomość kluczowych koncepcji iperf3, w tym różnic między wersjami, znaczenia opcji i interpretacji wyników.

Pytanie o różnicę między iperf2 a iperf3 wymaga znajomości zmian architektonicznych: iperf3 został przepisany od podstaw przez ESnet z obsługą JSON, wielowątkowości i nowych algorytmów TCP.

Opcja -R odwraca kierunek testu - serwer wysyła dane do klienta, co odpowiada testowi download i jest przydatne do pomiaru asymetrii łącza.

Retransmisje (Retr) w teście TCP to liczba segmentów, które musiały zostać wysłane ponownie z powodu braku potwierdzenia - wysoka wartość wskazuje na utratę pakietów.

Opcja -w ustawia rozmiar okna TCP (socket buffer), który powinien być co najmniej równy BDP (Bandwidth-Delay Product) dla pełnego wykorzystania łącza.

58/58
Koniec części 9

Zakończenie części 09

Dziękujemy za uwagę. W następnej części poznamy zaawansowane techniki pomiarów logicznych z wykorzystaniem skryptów automatyzujących.

Praca własna:

  • Zainstaluj iperf3 na swoim komputerze i wykonaj test między dwoma urządzeniami
  • Przetestuj różne opcje: -P 4, -R, -u -b 100M
  • Zinterpretuj wyniki – zwróć uwagę na Retr, Jitter, Lost/Total
  • Oblicz BDP dla swojego łącza i sprawdź czy -w jest odpowiednie
  • Spróbuj zapisać wynik w JSON i odczytać w Python
Zapowiedź następnej części – ikona automatyzacji

Dziewiąta część prezentacji dostarczyła kompleksowej wiedzy na temat narzędzia iperf3, od instalacji i podstawowych testów po zaawansowane scenariusze i interpretację wyników.

Zadania do samodzielnej pracy obejmują instalację iperf3, wykonanie testów w różnych konfiguracjach oraz analizę wyników ze szczególnym uwzględnieniem Retr, Jitter i Lost/Total.

Obliczenie BDP dla własnego łącza i dobór odpowiedniego okna TCP (-w) to praktyczne ćwiczenie, które pozwala na zrozumienie wpływu tego parametru na przepustowość.

Parsowanie wyników JSON w Python to krok w kierunku automatyzacji testów i budowy własnego systemu monitorowania przepustowości sieci.

Następna część cyklu (część 10) poświęcona będzie zaawansowanym technikom pomiarów logicznych z wykorzystaniem skryptów automatyzujących i narzędzi programistycznych.